summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2020-03-22 13:36:27 -0400
committerMike Frysinger <vapier@google.com>2020-03-23 00:28:54 +0000
commit05097c622231eeb095c17c5f5c4e791c57f382bc (patch)
tree5f7f474f64cbfb85ebcc179475fcb2bb232cc632
parent915fda130efa14b9314b500d122f9af707518508 (diff)
downloadgit-repo-05097c622231eeb095c17c5f5c4e791c57f382bc.tar.gz
download: unify error handling with sub git calls
We gracefully handle cherry-pick errors, but none of the others which means people get confusing Python tracebacks. Move the main logic in a single GitError try block so we can show pretty error messages for all of them. Change-Id: I52cdf6468d21a98de7f65b86d5267b3caabd5af8 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259854 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
-rw-r--r--subcmds/download.py32
1 files changed, 21 insertions, 11 deletions
diff --git a/subcmds/download.py b/subcmds/download.py
index db9595a2..badd9ab3 100644
--- a/subcmds/download.py
+++ b/subcmds/download.py
@@ -109,18 +109,28 @@ If no project is specified try to use current directory as a project.
109 file=sys.stderr) 109 file=sys.stderr)
110 for c in dl.commits: 110 for c in dl.commits:
111 print(' %s' % (c), file=sys.stderr) 111 print(' %s' % (c), file=sys.stderr)
112 if opt.cherrypick:
113 try:
114 project._CherryPick(dl.commit, ffonly=opt.ffonly,
115 record_origin=opt.record_origin)
116 except GitError:
117 print('[%s] Could not complete the cherry-pick of %s'
118 % (project.name, dl.commit), file=sys.stderr)
119 sys.exit(1)
120 112
113 if opt.cherrypick:
114 mode = 'cherry-pick'
121 elif opt.revert: 115 elif opt.revert:
122 project._Revert(dl.commit) 116 mode = 'revert'
123 elif opt.ffonly: 117 elif opt.ffonly:
124 project._FastForward(dl.commit, ffonly=True) 118 mode = 'fast-forward merge'
125 else: 119 else:
126 project._Checkout(dl.commit) 120 mode = 'checkout'
121
122 try:
123 if opt.cherrypick:
124 project._CherryPick(dl.commit, ffonly=opt.ffonly,
125 record_origin=opt.record_origin)
126 elif opt.revert:
127 project._Revert(dl.commit)
128 elif opt.ffonly:
129 project._FastForward(dl.commit, ffonly=True)
130 else:
131 project._Checkout(dl.commit)
132
133 except GitError:
134 print('[%s] Could not complete the %s of %s'
135 % (project.name, mode, dl.commit), file=sys.stderr)
136 sys.exit(1)