download: add a --branch option
This allows people to quickly create new branches when pulling down
changes rather than having to juggle the git calls themselves.
Bug: https://crbug.com/gerrit/11609
Change-Id: Ie6a4d05e9f4e9347fe7f7119c768e6446563ae65
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259855
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
Tested-by: Mike Frysinger <vapier@google.com>
diff --git a/subcmds/download.py b/subcmds/download.py
index badd9ab..723124f 100644
--- a/subcmds/download.py
+++ b/subcmds/download.py
@@ -37,6 +37,8 @@
"""
def _Options(self, p):
+ p.add_option('-b', '--branch',
+ help='create a new branch first')
p.add_option('-c', '--cherry-pick',
dest='cherrypick', action='store_true',
help="cherry-pick instead of checkout")
@@ -119,6 +121,11 @@
else:
mode = 'checkout'
+ # We'll combine the branch+checkout operation, but all the rest need a
+ # dedicated branch start.
+ if opt.branch and mode != 'checkout':
+ project.StartBranch(opt.branch)
+
try:
if opt.cherrypick:
project._CherryPick(dl.commit, ffonly=opt.ffonly,
@@ -128,7 +135,10 @@
elif opt.ffonly:
project._FastForward(dl.commit, ffonly=True)
else:
- project._Checkout(dl.commit)
+ if opt.branch:
+ project.StartBranch(opt.branch, revision=dl.commit)
+ else:
+ project._Checkout(dl.commit)
except GitError:
print('[%s] Could not complete the %s of %s'