From 1829101e285cf7956d045cf7a04a8adb7f4c0109 Mon Sep 17 00:00:00 2001 From: Rob Ward Date: Sun, 2 Feb 2014 11:42:05 +0000 Subject: [PATCH] Add error message for download -c conflicts Currently if you run repo download -c on a change and the cherry-pick runs into a merge conflict a Traceback is produced: rob@rob-i5-lm ~/Programming/repo_test/repo1 $ repo download -c repo1 3/1 From ssh://rob-i5-lm:29418/repo1 * branch refs/changes/03/3/1 -> FETCH_HEAD error: could not apply 0c8b474... 2 hint: after resolving the conflicts, mark the corrected paths hint: with 'git add ' or 'git rm ' hint: and commit the result with 'git commit' Traceback (most recent call last): File "/home/rob/Programming/git-repo/main.py", line 408, in _Main(sys.argv[1:]) File "/home/rob/Programming/git-repo/main.py", line 384, in _Main result = repo._Run(argv) or 0 File "/home/rob/Programming/git-repo/main.py", line 143, in _Run result = cmd.Execute(copts, cargs) File "/home/rob/Programming/git-repo/subcmds/download.py", line 90, in Execute project._CherryPick(dl.commit) File "/home/rob/Programming/git-repo/project.py", line 1943, in _CherryPick raise GitError('%s cherry-pick %s ' % (self.name, rev)) error.GitError: repo1 cherry-pick 0c8b4740f876f8f8372bbaed430f02b6ba8b1898 This amount of error message is confusing to users and has the side effect of the git message telling you the actual issue being ignored. This change introduces a message stating that the cherry-pick couldn't be completed removing the Traceback. To reproduce the issue create a change that causes a conflict with one currently in review and use repo download -c to cherry-pick the conflicting change. Change-Id: I8ddf4e0c8ad9bd04b1af5360313f67cc053f7d6a --- subcmds/download.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/subcmds/download.py b/subcmds/download.py index 471e88b5..098d8b43 100644 --- a/subcmds/download.py +++ b/subcmds/download.py @@ -18,6 +18,7 @@ import re import sys from command import Command +from error import GitError CHANGE_RE = re.compile(r'^([1-9][0-9]*)(?:[/\.-]([1-9][0-9]*))?$') @@ -87,7 +88,12 @@ makes it available in your project's local working directory. for c in dl.commits: print(' %s' % (c), file=sys.stderr) if opt.cherrypick: - project._CherryPick(dl.commit) + try: + project._CherryPick(dl.commit) + except GitError: + print('[%s] Could not complete the cherry-pick of %s' \ + % (project.name, dl.commit), file=sys.stderr) + elif opt.revert: project._Revert(dl.commit) elif opt.ffonly: