diff options
author | Mike Frysinger <vapier@google.com> | 2020-09-06 15:51:21 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@google.com> | 2020-09-09 05:46:07 +0000 |
commit | 50a81de2bc9f2074d56c368f651cf9f50c8d8a87 (patch) | |
tree | b72dbba8f5915686c8c10f6de501949003685164 /subcmds/init.py | |
parent | 0501b29e7ae072e0b10ea9ddd913ec6d5975f690 (diff) | |
download | git-repo-50a81de2bc9f2074d56c368f651cf9f50c8d8a87.tar.gz |
init: use the remote default manifest branch
Instead of hardcoding "master" as our default, use the remote server's
default branch instead. For most people, this should be the same as
"master" already. For projects moving to "main", it means we'll use
the new name automatically rather than forcing people to use -b main.
For repositories that never set up a default HEAD, we should still use
the historical "master" default.
Bug: https://crbug.com/gerrit/13339
Change-Id: I4117c81a760c9495f98dbb1111a3e6c127f45eba
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/280799
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Tested-by: Mike Frysinger <vapier@google.com>
Diffstat (limited to 'subcmds/init.py')
-rw-r--r-- | subcmds/init.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/subcmds/init.py b/subcmds/init.py index 41578076..5ba0d074 100644 --- a/subcmds/init.py +++ b/subcmds/init.py | |||
@@ -54,7 +54,8 @@ from the server and is installed in the .repo/ directory in the | |||
54 | current working directory. | 54 | current working directory. |
55 | 55 | ||
56 | The optional -b argument can be used to select the manifest branch | 56 | The optional -b argument can be used to select the manifest branch |
57 | to checkout and use. If no branch is specified, master is assumed. | 57 | to checkout and use. If no branch is specified, the remote's default |
58 | branch is used. | ||
58 | 59 | ||
59 | The optional -m argument can be used to specify an alternate manifest | 60 | The optional -m argument can be used to specify an alternate manifest |
60 | to be used. If no manifest is specified, the manifest default.xml | 61 | to be used. If no manifest is specified, the manifest default.xml |
@@ -215,24 +216,27 @@ to update the working directory files. | |||
215 | 216 | ||
216 | m._InitGitDir(mirror_git=mirrored_manifest_git) | 217 | m._InitGitDir(mirror_git=mirrored_manifest_git) |
217 | 218 | ||
218 | if opt.manifest_branch: | ||
219 | m.revisionExpr = opt.manifest_branch | ||
220 | else: | ||
221 | m.revisionExpr = 'refs/heads/master' | ||
222 | else: | ||
223 | if opt.manifest_branch: | ||
224 | m.revisionExpr = opt.manifest_branch | ||
225 | else: | ||
226 | m.PreSync() | ||
227 | |||
228 | self._ConfigureDepth(opt) | 219 | self._ConfigureDepth(opt) |
229 | 220 | ||
221 | # Set the remote URL before the remote branch as we might need it below. | ||
230 | if opt.manifest_url: | 222 | if opt.manifest_url: |
231 | r = m.GetRemote(m.remote.name) | 223 | r = m.GetRemote(m.remote.name) |
232 | r.url = opt.manifest_url | 224 | r.url = opt.manifest_url |
233 | r.ResetFetch() | 225 | r.ResetFetch() |
234 | r.Save() | 226 | r.Save() |
235 | 227 | ||
228 | if opt.manifest_branch: | ||
229 | m.revisionExpr = opt.manifest_branch | ||
230 | else: | ||
231 | if is_new: | ||
232 | default_branch = m.ResolveRemoteHead() | ||
233 | if default_branch is None: | ||
234 | # If the remote doesn't have HEAD configured, default to master. | ||
235 | default_branch = 'refs/heads/master' | ||
236 | m.revisionExpr = default_branch | ||
237 | else: | ||
238 | m.PreSync() | ||
239 | |||
236 | groups = re.split(r'[,\s]+', opt.groups) | 240 | groups = re.split(r'[,\s]+', opt.groups) |
237 | all_platforms = ['linux', 'darwin', 'windows'] | 241 | all_platforms = ['linux', 'darwin', 'windows'] |
238 | platformize = lambda x: 'platform-' + x | 242 | platformize = lambda x: 'platform-' + x |