From d7ebdf56be6095338ea37bd4b52533c5bd7774e7 Mon Sep 17 00:00:00 2001 From: Kaushik Lingarkar Date: Thu, 5 Sep 2024 15:34:48 -0700 Subject: [PATCH] init: add --manifest-upstream-branch When a sha1 is provided to '--manifest-branch', the ref which is expected to contain that sha1 can be provided using the new '--manifest-upstream-branch' option. This is useful with '--current-branch' to avoid having to sync all heads and tags, or with a commit that comes from a non-head/tag ref (like a Gerrit change ref). Change-Id: I46a3e255ca69ed9e809039e58b0c163e02af94ef Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/436717 Reviewed-by: Josip Sokcevic Commit-Queue: Kaushik Lingarkar Tested-by: Kaushik Lingarkar --- man/repo-init.1 | 11 ++++++++++- repo | 8 +++++++- subcmds/init.py | 11 +++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/man/repo-init.1 b/man/repo-init.1 index cf93de1f..37411752 100644 --- a/man/repo-init.1 +++ b/man/repo-init.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man. -.TH REPO "1" "October 2022" "repo init" "Repo Manual" +.TH REPO "1" "September 2024" "repo init" "Repo Manual" .SH NAME repo \- repo init - manual page for repo init .SH SYNOPSIS @@ -28,6 +28,11 @@ manifest repository location \fB\-b\fR REVISION, \fB\-\-manifest\-branch\fR=\fI\,REVISION\/\fR manifest branch or revision (use HEAD for default) .TP +\fB\-\-manifest\-upstream\-branch\fR=\fI\,BRANCH\/\fR +when a commit is provided to \fB\-\-manifest\-branch\fR, this +is the name of the git ref in which the commit can be +found +.TP \fB\-m\fR NAME.xml, \fB\-\-manifest\-name\fR=\fI\,NAME\/\fR.xml initial manifest file .TP @@ -163,6 +168,10 @@ The optional \fB\-b\fR argument can be used to select the manifest branch to che and use. If no branch is specified, the remote's default branch is used. This is equivalent to using \fB\-b\fR HEAD. .PP +The optional \fB\-\-manifest\-upstream\-branch\fR argument can be used when a commit is +provided to \fB\-\-manifest\-branch\fR (or \fB\-b\fR), to specify the name of the git ref in +which the commit can be found. +.PP The optional \fB\-m\fR argument can be used to specify an alternate manifest to be used. If no manifest is specified, the manifest default.xml will be used. .PP diff --git a/repo b/repo index b2114e56..9cedcbf9 100755 --- a/repo +++ b/repo @@ -124,7 +124,7 @@ if not REPO_REV: BUG_URL = "https://issues.gerritcodereview.com/issues/new?component=1370071" # increment this whenever we make important changes to this script -VERSION = (2, 45) +VERSION = (2, 48) # increment this if the MAINTAINER_KEYS block is modified KEYRING_VERSION = (2, 3) @@ -282,6 +282,12 @@ def InitParser(parser): metavar="REVISION", help="manifest branch or revision (use HEAD for default)", ) + group.add_option( + "--manifest-upstream-branch", + help="when a commit is provided to --manifest-branch, this " + "is the name of the git ref in which the commit can be found", + metavar="BRANCH", + ) group.add_option( "-m", "--manifest-name", diff --git a/subcmds/init.py b/subcmds/init.py index 7617bc1f..fb6d3eb5 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -52,6 +52,10 @@ The optional -b argument can be used to select the manifest branch to checkout and use. If no branch is specified, the remote's default branch is used. This is equivalent to using -b HEAD. +The optional --manifest-upstream-branch argument can be used when a commit is +provided to --manifest-branch (or -b), to specify the name of the git ref in +which the commit can be found. + The optional -m argument can be used to specify an alternate manifest to be used. If no manifest is specified, the manifest default.xml will be used. @@ -135,6 +139,7 @@ to update the working directory files. # manifest project is special and is created when instantiating the # manifest which happens before we parse options. self.manifest.manifestProject.clone_depth = opt.manifest_depth + self.manifest.manifestProject.upstream = opt.manifest_upstream_branch clone_filter_for_depth = ( "blob:none" if (_REPO_ALLOW_SHALLOW == "0") else None ) @@ -317,6 +322,12 @@ to update the working directory files. " be used with --standalone-manifest." ) + if opt.manifest_upstream_branch and opt.manifest_branch is None: + self.OptionParser.error( + "--manifest-upstream-branch cannot be used without " + "--manifest-branch." + ) + if args: if opt.manifest_url: self.OptionParser.error(