mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
diff: handle errors gracefully
If `git diff` fails in any project checkout (e.g. an incomplete sync), make sure we print that error clearly rather than blowing up, and exit non-zero in the process. Bug: https://crbug.com/gerrit/11613 Change-Id: I12f278427cced20f23f8047e7e3dba8f442ee25e Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/239236 Reviewed-by: David Pursehouse <dpursehouse@collab.net> Tested-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
parent
dc1b59d2c0
commit
0a9265e2d6
19
project.py
19
project.py
@ -230,6 +230,7 @@ class DiffColoring(Coloring):
|
|||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
Coloring.__init__(self, config, 'diff')
|
Coloring.__init__(self, config, 'diff')
|
||||||
self.project = self.printer('header', attr='bold')
|
self.project = self.printer('header', attr='bold')
|
||||||
|
self.fail = self.printer('fail', fg='red')
|
||||||
|
|
||||||
|
|
||||||
class _Annotation(object):
|
class _Annotation(object):
|
||||||
@ -1136,10 +1137,18 @@ class Project(object):
|
|||||||
cmd.append('--src-prefix=a/%s/' % self.relpath)
|
cmd.append('--src-prefix=a/%s/' % self.relpath)
|
||||||
cmd.append('--dst-prefix=b/%s/' % self.relpath)
|
cmd.append('--dst-prefix=b/%s/' % self.relpath)
|
||||||
cmd.append('--')
|
cmd.append('--')
|
||||||
p = GitCommand(self,
|
try:
|
||||||
cmd,
|
p = GitCommand(self,
|
||||||
capture_stdout=True,
|
cmd,
|
||||||
capture_stderr=True)
|
capture_stdout=True,
|
||||||
|
capture_stderr=True)
|
||||||
|
except GitError as e:
|
||||||
|
out.nl()
|
||||||
|
out.project('project %s/' % self.relpath)
|
||||||
|
out.nl()
|
||||||
|
out.fail('%s', str(e))
|
||||||
|
out.nl()
|
||||||
|
return False
|
||||||
has_diff = False
|
has_diff = False
|
||||||
for line in p.process.stdout:
|
for line in p.process.stdout:
|
||||||
if not hasattr(line, 'encode'):
|
if not hasattr(line, 'encode'):
|
||||||
@ -1150,7 +1159,7 @@ class Project(object):
|
|||||||
out.nl()
|
out.nl()
|
||||||
has_diff = True
|
has_diff = True
|
||||||
print(line[:-1])
|
print(line[:-1])
|
||||||
p.Wait()
|
return p.Wait() == 0
|
||||||
|
|
||||||
|
|
||||||
# Publish / Upload ##
|
# Publish / Upload ##
|
||||||
|
@ -37,5 +37,8 @@ to the Unix 'patch' command.
|
|||||||
help='Paths are relative to the repository root')
|
help='Paths are relative to the repository root')
|
||||||
|
|
||||||
def Execute(self, opt, args):
|
def Execute(self, opt, args):
|
||||||
|
ret = 0
|
||||||
for project in self.GetProjects(args):
|
for project in self.GetProjects(args):
|
||||||
project.PrintWorkTreeDiff(opt.absolute)
|
if not project.PrintWorkTreeDiff(opt.absolute):
|
||||||
|
ret = 1
|
||||||
|
return ret
|
||||||
|
Loading…
Reference in New Issue
Block a user