<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools/git-repo.git, branch stable</title>
<subtitle>Mirror of gerrit.googlesource.com/git-repo</subtitle>
<id>https://git.enea.com/cgit/tools/git-repo.git/atom?h=stable</id>
<link rel='self' href='https://git.enea.com/cgit/tools/git-repo.git/atom?h=stable'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/'/>
<updated>2026-04-20T22:34:07+00:00</updated>
<entry>
<title>sync: Refactor to use _RunOneGC and fix config leakage</title>
<updated>2026-04-20T22:34:07+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-20T17:57:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=baa281d99e59dbf1447524e6fd95b384cadbc06e'/>
<id>urn:sha1:baa281d99e59dbf1447524e6fd95b384cadbc06e</id>
<content type='text'>
Extract _RunOneGC to handle GC on a single project. This refactoring
makes it easier to invoke GC from parallel worker tasks.

Also, avoid modifying the passed-in config dictionary in _RunOneGC by
creating a local copy, preventing unintended side effects on other
commands sharing the same config.

Bug: 498290329
Change-Id: I7b77ed6629b14b5ee3322870b9c6c8ce2bfd6ea2
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574923
Reviewed-by: Becky Siegel &lt;beckysiegel@google.com&gt;
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>sync: Switch to using self._bloated_projects</title>
<updated>2026-04-20T21:07:14+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-20T17:56:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=7e9079b7cf79988dd978d04bfb79250564829cc3'/>
<id>urn:sha1:7e9079b7cf79988dd978d04bfb79250564829cc3</id>
<content type='text'>
Store bloated projects in self._bloated_projects and print warnings at
the end of execution. This sets up for moving the check to workers.

Bug: 498290329
Change-Id: I993f1fd741db2994d480994861588eb18f6c5503
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574922
Reviewed-by: Becky Siegel &lt;beckysiegel@google.com&gt;
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>tests: Add tests for _CheckForBloatedProjects and _GCProjects</title>
<updated>2026-04-20T20:31:41+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-20T20:11:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=61bd6b3ccb26bc695ea85ae3004c50e7434e20cf'/>
<id>urn:sha1:61bd6b3ccb26bc695ea85ae3004c50e7434e20cf</id>
<content type='text'>
Change-Id: I6790a13929b8fc06a3197ca405dedf08d39d54c9
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574926
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Becky Siegel &lt;beckysiegel@google.com&gt;
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>upload: Clarify partial sync message on hook failure</title>
<updated>2026-04-20T08:52:25+00:00</updated>
<author>
<name>Marty Heavey</name>
<email>mheavey@google.com</email>
</author>
<published>2026-04-17T11:14:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=32e7327ca6c420c5117e8b0eaa0219eb8f062d37'/>
<id>urn:sha1:32e7327ca6c420c5117e8b0eaa0219eb8f062d37</id>
<content type='text'>
Demote the partial sync warning from error to info and rephrase it to
be a tip rather than an error. This prevents users from thinking that
a partial sync is the cause of their hook failures when it is often a linting failure.

The message now suggests that a full sync might help if there are
cross-project dependencies, instead of implying it will fix any issue.

Change-Id: I5d8c52b53ac315aa9f145ed069798bf201fa0815
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574262
Tested-by: Marty Heavey &lt;mheavey@google.com&gt;
Commit-Queue: Marty Heavey &lt;mheavey@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>sync: Provide feedback during post-sync operations</title>
<updated>2026-04-17T22:47:15+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-17T20:31:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=4f707ff91e16af5b19565504df67351c4d28370e'/>
<id>urn:sha1:4f707ff91e16af5b19565504df67351c4d28370e</id>
<content type='text'>
After the main sync progress bar finishes, there's a pause while some
post-sync operations run. Print something to provide feedback so the
user doesn't think repo has hung.

Bug: 503869525
Change-Id: I695fd560e60dcb394e6844a56c8a336ca1f71c74
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574425
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Becky Siegel &lt;beckysiegel@google.com&gt;
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>progress: Ignore updates after progress ends</title>
<updated>2026-04-17T22:43:14+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-17T20:31:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=e2671c184e41ac77544809486e994095e3574138'/>
<id>urn:sha1:e2671c184e41ac77544809486e994095e3574138</id>
<content type='text'>
This addresses the occasional "..working.." message at the end of sync.

Bug: 503869525
Change-Id: I489d29fa8ae588d77abb7fee5f157800d4abb368
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574482
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Becky Siegel &lt;beckysiegel@google.com&gt;
</content>
</entry>
<entry>
<title>project: Avoid skipping fetches for shallow clones without .git/shallow</title>
<updated>2026-04-17T16:16:36+00:00</updated>
<author>
<name>Becky Siegel</name>
<email>beckysiegel@google.com</email>
</author>
<published>2026-04-16T03:16:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=b43a20b859fa6d1e0b5e5dfc35a268d2098ac95b'/>
<id>urn:sha1:b43a20b859fa6d1e0b5e5dfc35a268d2098ac95b</id>
<content type='text'>
When optimizing fetches for projects with immutable revisions, the fetch
should not be skipped if the project is configured for a shallow clone
(depth &gt; 0) but the .git/shallow file is missing. The absence of the
.git/shallow file means the repository is not a shallow clone, or the
shallow clone is incomplete, so a fetch is necessary to ensure the
revision is present.

Bug: 503081454
Change-Id: Ic3549612bcd69050a926652ee4e522c79ad8124c
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/573821
Tested-by: Becky Siegel &lt;beckysiegel@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Commit-Queue: Becky Siegel &lt;beckysiegel@google.com&gt;
</content>
</entry>
<entry>
<title>project: Drop --no-deref from update-ref --stdin</title>
<updated>2026-04-12T23:39:28+00:00</updated>
<author>
<name>Miyako.Enei</name>
<email>miyako.enei@alpsalpine.com</email>
</author>
<published>2026-04-09T12:29:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=8869a30283d3f175053db780e58846b650de7d9b'/>
<id>urn:sha1:8869a30283d3f175053db780e58846b650de7d9b</id>
<content type='text'>
repo calls `git update-ref --stdin` when updating multiple refs during
repo init and repo sync. Historically, `--no-deref` was also passed.

Older Git 2.17 which we still support rejects the combination of
`--stdin` and `--no-deref`, emitting a usage error even when the stdin
input is valid.

The `--no-deref` option is only meaningful when updating symbolic refs
such as HEAD. The stdin-based update-ref path only operates on explicit
refs (tags, remote refs, alternates) and never symbolic refs.

Remove the unnecessary option to restore compatibility with Git 2.17
while preserving identical behavior on newer Git versions.

Tested with:
  - Git 2.17.1
  - Git 2.34.1

Change-Id: I22001de03800f5699b26a40bc1fb1fec002ed048
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/571721
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Commit-Queue: Enei &lt;miyako.enei@alpsalpine.com&gt;
Tested-by: Enei &lt;miyako.enei@alpsalpine.com&gt;
</content>
</entry>
<entry>
<title>project: implement stateless sync pruning logic</title>
<updated>2026-04-09T19:09:40+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-01T23:03:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=3b0eebeccfd4447e4a50ae143f37d0f7817723be'/>
<id>urn:sha1:3b0eebeccfd4447e4a50ae143f37d0f7817723be</id>
<content type='text'>
Implement in-situ shallow re-fetching and garbage collection logic.
Enables repositories with sync-strategy="stateless" to reclaim disk
space by running reflog expire and git gc --prune=now if the working
tree is clean and has no local commits.

Bug: 498730431
Change-Id: I940bdc9b74da29d3f7b13566667dcddea769ebd3
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/568463
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>manifest: Add `sync-strategy` attribute to project elements</title>
<updated>2026-04-09T19:09:28+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-01T23:03:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=00991bfb42c4f3b0b7a50aa8f475ac1c8369924b'/>
<id>urn:sha1:00991bfb42c4f3b0b7a50aa8f475ac1c8369924b</id>
<content type='text'>
The only supported sync-strategy is "stateless". The intent is to keep
the local workspace as small as possible by not keeping history during
syncs. This prevents disk space waste for projects with large binaries
where we only care about the current version.

A follow up change will implement the logic.

Bug: 498730431
Change-Id: I84a436a9ca2492893163c6cfda6c28dc62a568f0
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/568462
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
</feed>
