<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools/git-repo.git/man, branch v2.65</title>
<subtitle>Mirror of gerrit.googlesource.com/git-repo</subtitle>
<id>https://git.enea.com/cgit/tools/git-repo.git/atom?h=v2.65</id>
<link rel='self' href='https://git.enea.com/cgit/tools/git-repo.git/atom?h=v2.65'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/'/>
<updated>2026-06-30T18:13:14+00:00</updated>
<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>
<entry>
<title>project: Add REPO_PROJECT_FETCH_URL environment variable</title>
<updated>2026-06-16T17:30:47+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-06-15T23:22:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=cd307a6089f136e8f4f0fe85ce0393782cf99af1'/>
<id>urn:sha1:cd307a6089f136e8f4f0fe85ce0393782cf99af1</id>
<content type='text'>
Add REPO_PROJECT_FETCH_URL to Project.GetEnvVars(), which resolves to
the remote fetch URL of the project. This is useful for exposing the
URL to custom fetch commands or other external scripts.

Bug: 513329573
Change-Id: Ic2b0a83493934d16bb1152366ee4e1a2c35ea2dc
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/596121
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>
<entry>
<title>init: Add --use-local-gitdirs for standard Git layouts</title>
<updated>2026-05-26T17:26:25+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-03T01:11:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=b8531133deb053b333a3e90ce3b91a6f448b034e'/>
<id>urn:sha1:b8531133deb053b333a3e90ce3b91a6f448b034e</id>
<content type='text'>
Introduce --use-local-gitdirs to bypass repo's symlink-based layouts in
favor of standard local .git directories.

Bug: 513329573
Bug: 508146070
Change-Id: I53d1602e61be0b86964529bcbea3dc801471f9c9
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/569001
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Dan Willemsen &lt;dwillemsen@google.com&gt;
</content>
</entry>
<entry>
<title>sync: Add --superproject-rev flag to sync to specific revision</title>
<updated>2026-05-20T19:28:55+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-04-22T00:39:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=2d54384a5e59fddd0626ec091cc0ad11511d834e'/>
<id>urn:sha1:2d54384a5e59fddd0626ec091cc0ad11511d834e</id>
<content type='text'>
Allow syncing the outer manifest to a state defined by a specific
superproject revision. It updates the superproject, reads the manifest
commit from .supermanifest, and checks out the outer manifest project
to that commit.

Submanifests are then processed normally, allowing them to be updated
to the revisions specified in the new outer manifest state.

Bug: 416589884
Change-Id: I304c37a2b8794f9b74cb7e5e209a8a93762bdb52
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/576321
Commit-Queue: Gavin Mak &lt;gavinmak@google.com&gt;
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
</content>
</entry>
<entry>
<title>run_tests: leverage cipd when available for help2man</title>
<updated>2026-05-12T17:45:13+00:00</updated>
<author>
<name>Mike Frysinger</name>
<email>vapier@google.com</email>
</author>
<published>2026-05-12T17:17:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=67e52a120b210f70b7a5de06996d9036f9f68011'/>
<id>urn:sha1:67e52a120b210f70b7a5de06996d9036f9f68011</id>
<content type='text'>
This tool isn't installed on CI bot images so we've been skipping it,
but this is causing people to not run tests locally, and ignore errors.
Use cipd to pull the tool in when available.

Then revert a recent man change that the tool rejects.

Change-Id: I1030d0070fd5a624656eba7434ae6ec99b2e3f2d
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/582401
Reviewed-by: Greg Edelston &lt;gredelston@google.com&gt;
Tested-by: Mike Frysinger &lt;vapier@google.com&gt;
</content>
</entry>
<entry>
<title>info: Parallelize repo info to improve performance</title>
<updated>2026-05-12T16:59:07+00:00</updated>
<author>
<name>Greg Edelston</name>
<email>gredelston@google.com</email>
</author>
<published>2026-05-11T23:13:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=12ad396f6708fa31cc4a979580a9456114b4beaa'/>
<id>urn:sha1:12ad396f6708fa31cc4a979580a9456114b4beaa</id>
<content type='text'>
For a large checkout like chromiumos or android, `repo info` takes a
really long time! On my machine it took ~6 minutes. On a randomly
selected ChromiumOS cq-orchestrator build it took 4.1 minutes:
https://ci.chromium.org/b/8682060180498819729. This adds up to a lot of
wasted runtime for both humans and bots.

The problem is that `repo info` was single-threaded, which causes poor
performance when the checkout has 1000+ projects. We already have a
pattern for parallelization; let's use it.

BUG=None
TEST=Manually run, ensure no diff

Change-Id: I6b82b9495eb2a0e602a142dd3a16f09217871e1b
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/581921
Tested-by: Greg Edelston &lt;gredelston@google.com&gt;
Commit-Queue: Greg Edelston &lt;gredelston@google.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
</content>
</entry>
<entry>
<title>forall: Document REPO_UPSTREAM and REPO_DEST_BRANCH envvars</title>
<updated>2026-05-08T03:27:08+00:00</updated>
<author>
<name>Gavin Mak</name>
<email>gavinmak@google.com</email>
</author>
<published>2026-05-07T22:30:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=11428ae984a141e3671f3d9f4df9e2b16314ff54'/>
<id>urn:sha1:11428ae984a141e3671f3d9f4df9e2b16314ff54</id>
<content type='text'>
Change-Id: I74365295152f8828587c6b4ed93029efc6000881
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/580761
Tested-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
</content>
</entry>
<entry>
<title>info: add --format and --include-summary/--include-projects options</title>
<updated>2026-05-08T02:23:24+00:00</updated>
<author>
<name>Carlos Fernandez</name>
<email>carlosfsanz@meta.com</email>
</author>
<published>2026-04-03T15:00:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/tools/git-repo.git/commit/?id=27d2232eb3cc4ec91fe6143b5d5c0d6f72861248'/>
<id>urn:sha1:27d2232eb3cc4ec91fe6143b5d5c0d6f72861248</id>
<content type='text'>
Add --format={text,json} to produce machine-readable output, and
boolean options to control which sections are displayed:
  --include-summary / --no-include-summary (default: on)
  --include-projects / --no-include-projects (default: on)

The JSON output respects the include flags, so callers can request
only the fields they need (e.g. `repo info --format=json
--no-include-projects` for manifest metadata only).

Change-Id: I9641bc4023b630d9c61c5170eb86e5f3b787236f
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/569203
Commit-Queue: Carlos Fernandez &lt;carlosfsanz@meta.com&gt;
Reviewed-by: Mike Frysinger &lt;vapier@google.com&gt;
Reviewed-by: Gavin Mak &lt;gavinmak@google.com&gt;
Reviewed-by: Carlos Fernandez &lt;carlosfsanz@meta.com&gt;
Tested-by: Carlos Fernandez &lt;carlosfsanz@meta.com&gt;
</content>
</entry>
</feed>
