From 05097c622231eeb095c17c5f5c4e791c57f382bc Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 22 Mar 2020 13:36:27 -0400 Subject: 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 Tested-by: Mike Frysinger --- subcmds/download.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'subcmds/download.py') 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. file=sys.stderr) for c in dl.commits: print(' %s' % (c), file=sys.stderr) - if opt.cherrypick: - try: - project._CherryPick(dl.commit, ffonly=opt.ffonly, - record_origin=opt.record_origin) - except GitError: - print('[%s] Could not complete the cherry-pick of %s' - % (project.name, dl.commit), file=sys.stderr) - sys.exit(1) + if opt.cherrypick: + mode = 'cherry-pick' elif opt.revert: - project._Revert(dl.commit) + mode = 'revert' elif opt.ffonly: - project._FastForward(dl.commit, ffonly=True) + mode = 'fast-forward merge' else: - project._Checkout(dl.commit) + mode = 'checkout' + + try: + if opt.cherrypick: + project._CherryPick(dl.commit, ffonly=opt.ffonly, + record_origin=opt.record_origin) + elif opt.revert: + project._Revert(dl.commit) + elif opt.ffonly: + project._FastForward(dl.commit, ffonly=True) + else: + project._Checkout(dl.commit) + + except GitError: + print('[%s] Could not complete the %s of %s' + % (project.name, mode, dl.commit), file=sys.stderr) + sys.exit(1) -- cgit v1.2.3-54-g00ecf