repo download: add --ff-only option
Allows to ff-only a gerrit patch
This patch is necessary to automatically ensure that the patch will
be correctly submitted on ff-only gerrit projects
You can now use:
repo download (--ff-only|-f) project changeid/patchnumber
This is useful to automate verification of fast forward status of a patch
in the context of build automation, and commit gating (e.g. buildbot)
Change-Id: I403a667557a105411a633e62c8eec23d93724b43
Signed-off-by: Erwan Mahe <erwan.mahe@intel.com>
Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
diff --git a/project.py b/project.py
index 1b0769a..65fefd9 100644
--- a/project.py
+++ b/project.py
@@ -1670,8 +1670,10 @@
if GitCommand(self, cmd).Wait() != 0:
raise GitError('%s rebase %s ' % (self.name, upstream))
- def _FastForward(self, head):
+ def _FastForward(self, head, ffonly=False):
cmd = ['merge', head]
+ if ffonly:
+ cmd.append("--ff-only")
if GitCommand(self, cmd).Wait() != 0:
raise GitError('%s merge %s ' % (self.name, head))
diff --git a/subcmds/download.py b/subcmds/download.py
index f79f485..0ea45c3 100644
--- a/subcmds/download.py
+++ b/subcmds/download.py
@@ -39,6 +39,9 @@
p.add_option('-r','--revert',
dest='revert', action='store_true',
help="revert instead of checkout")
+ p.add_option('-f','--ff-only',
+ dest='ffonly', action='store_true',
+ help="force fast-forward merge")
def _ParseChangeIds(self, args):
if not args:
@@ -87,5 +90,7 @@
project._CherryPick(dl.commit)
elif opt.revert:
project._Revert(dl.commit)
+ elif opt.ffonly:
+ project._FastForward(dl.commit, ffonly=True)
else:
project._Checkout(dl.commit)