diff options
| author | Mike Frysinger <vapier@google.com> | 2020-03-22 13:36:27 -0400 |
|---|---|---|
| committer | Mike Frysinger <vapier@google.com> | 2020-03-23 00:28:54 +0000 |
| commit | 05097c622231eeb095c17c5f5c4e791c57f382bc (patch) | |
| tree | 5f7f474f64cbfb85ebcc179475fcb2bb232cc632 /subcmds | |
| parent | 915fda130efa14b9314b500d122f9af707518508 (diff) | |
| download | git-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>
Diffstat (limited to 'subcmds')
| -rw-r--r-- | subcmds/download.py | 32 |
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) | ||
