<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools/git-repo.git/man, branch v2.69</title>
<subtitle>Mirror of gerrit.googlesource.com/git-repo</subtitle>
<id>https://git.enea.com/cgit/tools/git-repo.git/atom?h=v2.69</id>
<link rel='self' href='https://git.enea.com/cgit/tools/git-repo.git/atom?h=v2.69'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/'/>
<updated>2026-10-01T10:13:33+00:00</updated>
<entry>
<title>sync: Support manifest-driven default smart sync</title>
<updated>2026-10-01T10:13:33+00:00</updated>
<author>
<name>Rahul Yadav</name>
<email>yadavrah@google.com</email>
</author>
<published>2026-08-11T09:38:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=d53a4278f5156d57d71fe401ba87efcd8435886a'/>
<id>urn:sha1:d53a4278f5156d57d71fe401ba87efcd8435886a</id>
<content type='text'>
Add support for enabling smart sync by default via the
sync-smartsync="true" attribute on the manifest &lt;default&gt; element.

When sync-smartsync is set to true in the manifest defaults:
- Plain `repo sync` triggers Smart Sync automatically.
- If that implicit Smart Sync fails (manifest server unreachable, or
  the returned manifest cannot be parsed), repo silently falls back to
  a regular ToT sync. The reason is logged with --verbose.
- `--no-smart-sync` CLI flag overrides the manifest default and
  syncs to ToT.
- Passing explicit `-s` / `--smart-sync` forces Smart Sync as before,
  and its failures are still fatal.
- `-t`, `--smart-tag`, `-m`, `--manifest-name`, and
  `--superproject-revision` disable the default smart sync.
- `-l` / `--local-only` and `--no-manifest-update` skip the manifest
  server and reuse the existing smart_sync_override.xml, if any.

Update docs, completion, regenerate man pages, and add tests for XML
parsing, serialization, CLI option resolution, and the fallback and
reuse paths.

Bug: 545137090
Change-Id: If75569c58dd525d170e9801e70ccbf02206a52f2
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/617641
Tested-by: Rahul Yadav &lt;yadavrah@google.com&gt;
Commit-Queue: Rahul Yadav &lt;yadavrah@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>gc: add --keep-manifest-projects</title>
<updated>2026-09-30T08:11:40+00:00</updated>
<author>
<name>Victor Pushkarev</name>
<email>corvinus.v@gmail.com</email>
</author>
<published>2026-09-10T16:13:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=5d4149f32e3eb776ab3575a0d8db1ca51d6bb1b2'/>
<id>urn:sha1:5d4149f32e3eb776ab3575a0d8db1ca51d6bb1b2</id>
<content type='text'>
By default, `repo gc` treats projects excluded by the configured
manifest groups as unused. This matches the active project set, but it
can remove cached Git data for projects that might be used again after
changing groups.

Add `--keep-manifest-projects` to keep Git data for projects that are
still in the manifests, even if the current groups exclude them or their
checkout is missing. Git data for projects no longer in the manifests
can still be removed.

Change-Id: I63ae18ce1c6acc2463be86f81921476b12fb27d7
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/629741
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Tested-by: Victor Pushkarev &lt;corvinus.v@gmail.com&gt;
Commit-Queue: Victor Pushkarev &lt;corvinus.v@gmail.com&gt;
</content>
</entry>
<entry>
<title>sync: keep generated jobs-checkout help host-independent</title>
<updated>2026-09-16T11:51:54+00:00</updated>
<author>
<name>Victor Pushkarev</name>
<email>corvinus.v@gmail.com</email>
</author>
<published>2026-09-03T12:31:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=4b3ada1781c7dc855858582a2b8f47fb0fc7f412'/>
<id>urn:sha1:4b3ada1781c7dc855858582a2b8f47fb0fc7f412</id>
<content type='text'>
The default shown for `--jobs-checkout` comes from `DEFAULT_LOCAL_JOBS`,
which depends on the host CPU count. As a result, regenerating the sync
and smartsync manpages on a different machine can change their output
even though repo's behavior has not changed.

Use shared CPU-based help formatting for `--jobs` and `--jobs-checkout`.
Interactive help still shows the actual default, while generated
manpages describe it without including a host-specific value.
Runtime job selection is unchanged.

Add coverage for both help modes and regenerate the affected manpages.

Change-Id: Ia60e6fcc17b6f4618c52a76217c128eddead8848
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/625381
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Commit-Queue: Victor Pushkarev &lt;corvinus.v@gmail.com&gt;
Tested-by: Victor Pushkarev &lt;corvinus.v@gmail.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>hooks: add --fix option to auto-apply hook fixes</title>
<updated>2026-08-27T10:28:58+00:00</updated>
<author>
<name>Rahul Yadav</name>
<email>yadavrah@google.com</email>
</author>
<published>2026-08-14T15:09:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=e6ad7080098a0db0cb304812c8603856da2bebf2'/>
<id>urn:sha1:e6ad7080098a0db0cb304812c8603856da2bebf2</id>
<content type='text'>
Pass the --fix flag as a keyword argument "fix" to the hook main
function. This allows hooks (such as git-repohooks) to decouple
automated fix application from the -y/--yes flag so that -y can
answer yes to upload confirmation prompts without triggering file
mutations.

Companion change in git-repohooks:
https://gerrit-review.googlesource.com/c/git-repohooks/+/621761

Bug: 546510319
Test: python3 -m pytest tests/test_hooks.py

Change-Id: If0288d4791fc0a2aba6e88854e3aa81b0923b664
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/619281
Commit-Queue: Rahul Yadav &lt;yadavrah@google.com&gt;
Tested-by: Rahul Yadav &lt;yadavrah@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>sync: allow syncing groups with repo sync -g group</title>
<updated>2026-07-21T20:42:38+00:00</updated>
<author>
<name>Andrew Chant</name>
<email>achant@google.com</email>
</author>
<published>2026-07-17T22:09:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=0b82311632d14d3f49675fb6a017c20f7a7dee37'/>
<id>urn:sha1:0b82311632d14d3f49675fb6a017c20f7a7dee37</id>
<content type='text'>
Similar to how repo init -g can restrict repo syncs to
a subset of the manifest globally, allow "repo sync -g" to only sync a
subset of projects from the manifest when running that specific
sync command.

Change-Id: I4929aad109de05c73a7db42bb27fd8d47eea32fc
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/609481
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Commit-Queue: Andrew Chant &lt;achant@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Tested-by: Andrew Chant &lt;achant@google.com&gt;
</content>
</entry>
<entry>
<title>sync: Deprecate fetch-submodules flag names</title>
<updated>2026-07-21T07:19:21+00:00</updated>
<author>
<name>Josef Malmström</name>
<email>josef.malmstrom@arm.com</email>
</author>
<published>2026-07-16T09:09:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=dd1130352be015979413da0caa3cbd882ee5bf87'/>
<id>urn:sha1:dd1130352be015979413da0caa3cbd882ee5bf87</id>
<content type='text'>
The names for flags --fetch-submodules / --no-fetch-submodules are
misleading, since they impact the full sync operation (fetch and
checkout), not just the fetching.

Introduce new flags --recurse-submodules / --no-recurse-submodules
and treat the old ones as deprecated aliases.

Change-Id: I78339a3e0496a855c222c1869b27b578507886a7
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/608881
Commit-Queue: Josef Malmstrom &lt;Josef.Malmstrom@arm.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Tested-by: Josef Malmstrom &lt;Josef.Malmstrom@arm.com&gt;
</content>
</entry>
<entry>
<title>sync: Add CLI flag for globally disabling submodule fetch</title>
<updated>2026-07-16T08:19:51+00:00</updated>
<author>
<name>Josef Malmström</name>
<email>josef.malmstrom@arm.com</email>
</author>
<published>2026-07-13T10:50:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=978adb7ea504ae5c9238d03cea63f916035765c4'/>
<id>urn:sha1:978adb7ea504ae5c9238d03cea63f916035765c4</id>
<content type='text'>
A global setting for disabling fetching of submodules is useful
since this can currently otherwise only be done by modifying
the manifest, or by explicitly providing projects on command line.

Add this setting as --no-fetch-submodules to mirror the existing
--fetch-submodules.

Change-Id: Ic727c54f11a594aa52315751284b87138cf246bb
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/607641
Commit-Queue: Josef Malmstrom &lt;Josef.Malmstrom@arm.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Tested-by: Josef Malmstrom &lt;Josef.Malmstrom@arm.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
</content>
</entry>
<entry>
<title>status: Show ahead/behind info for local branches</title>
<updated>2026-06-30T18:13:14+00:00</updated>
<author>
<name>Brian Gan</name>
<email>brgan@google.com</email>
</author>
<published>2026-06-29T20:15:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=e7cac4bca6b8e4276a5a64287653b5c56555d6f4'/>
<id>urn:sha1:e7cac4bca6b8e4276a5a64287653b5c56555d6f4</id>
<content type='text'>
When viewing `repo status`, it is difficult to distinguish between branches that have active unpushed changes and stale branches that are fully synced. Previously, developers had to run commands like `repo forall -c "git status"` to see their ahead/behind counts.

This change updates Project.PrintWorkTreeStatus to automatically calculate and display the number of commits a branch is ahead and/or behind its upstream tracking branch. We use `git rev-list --left-right --count` to fetch this information natively and efficiently.

If the branch is completely synced with upstream, no extra text is shown.

Added tests for ahead-only, behind-only, diverged, no-tracking, and fully-synced branch states.

Bug: 319412954
Change-Id: I23879b2d472c7a7e11d01b565428a84b1b4f09c1
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/602423
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Tested-by: Brian Gan &lt;brgan@google.com&gt;
Commit-Queue: Brian Gan &lt;brgan@google.com&gt;
</content>
</entry>
<entry>
<title>man: disable line wrapping</title>
<updated>2026-06-25T23:07:53+00:00</updated>
<author>
<name>Brian Gan</name>
<email>brgan@google.com</email>
</author>
<published>2026-06-25T20:48:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=6586efe79ab12e59466b67eaf59d19002abdf268'/>
<id>urn:sha1:6586efe79ab12e59466b67eaf59d19002abdf268</id>
<content type='text'>
When help2man runs the repo script to generate man pages, the argparse
module relies on the COLUMNS environment variable to wrap help text.
This wrapping can cause URLs and descriptions to be awkwardly broken
across lines. Setting COLUMNS="10000" prevents argparse from wrapping
the output, keeping URLs intact in the generated man pages.

Additionally, this fixes a broken git documentation URL fragment for
--partial-clone in the repo script.

Bug: 295374161
Change-Id: I0c79f37fbfe2bebe71ff90585f2e5e1f88ea33cb
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/601482
Tested-by: Brian Gan &lt;brgan@google.com&gt;
Commit-Queue: Brian Gan &lt;brgan@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
<entry>
<title>sync: Support pluggable remote helpers for smart sync manifest server.</title>
<updated>2026-06-18T16:48:49+00:00</updated>
<author>
<name>Rahul Yadav</name>
<email>yadavrah@google.com</email>
</author>
<published>2026-06-08T15:28:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=39c0b6090071c1039faf9dea2be9ca285054e4f6'/>
<id>urn:sha1:39c0b6090071c1039faf9dea2be9ca285054e4f6</id>
<content type='text'>
Introduce support for pluggable remote helpers (declared via the
optional 'helper' attribute in &lt;manifest-server&gt;) to dynamically resolve
proxy addresses. Route the XML-RPC manifest server connection through
the resolved proxy.

Bug: b/517477903
Change-Id: I3b6b8ea2640bb077521df4b4a9e8a34a8c6ecdad
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/591642
Tested-by: Rahul Yadav &lt;yadavrah@google.com&gt;
Commit-Queue: Rahul Yadav &lt;yadavrah@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
</content>
</entry>
</feed>
