Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2303)

Unified Diff: checkout.py

Issue 2446013002: Continue to the next file after a conflict in apply_patch. (Closed)
Patch Set: address nit Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: checkout.py
diff --git a/checkout.py b/checkout.py
index 7c497612e16d5e9e6cb4f9807f4972a8c6a78c4b..2c599674c40ed535e7814bb7a3395978da9cfff1 100644
--- a/checkout.py
+++ b/checkout.py
@@ -77,24 +77,21 @@ def align_stdout(stdout):
class PatchApplicationFailed(Exception):
"""Patch failed to be applied."""
- def __init__(self, p, status):
- super(PatchApplicationFailed, self).__init__(p, status)
- self.patch = p
- self.status = status
-
- @property
- def filename(self):
- if self.patch:
- return self.patch.filename
+ def __init__(self, errors, verbose):
+ super(PatchApplicationFailed, self).__init__(errors, verbose)
+ self.errors = errors
+ self.verbose = verbose
def __str__(self):
out = []
- if self.filename:
- out.append('Failed to apply patch for %s:' % self.filename)
- if self.status:
- out.append(self.status)
- if self.patch:
- out.append('Patch: %s' % self.patch.dump())
+ for e in self.errors:
+ p, status = e
+ if p and p.filename:
+ out.append('Failed to apply patch for %s:' % p.filename)
+ if status:
+ out.append(status)
+ if p and self.verbose:
+ out.append('Patch: %s' % p.dump())
return '\n'.join(out)
@@ -251,6 +248,7 @@ class GitCheckout(CheckoutBase):
['checkout', '-b', self.working_branch, '-t', self.remote_branch,
'--quiet'])
+ errors = []
for index, p in enumerate(patches):
stdout = []
try:
@@ -293,14 +291,15 @@ class GitCheckout(CheckoutBase):
print p.filename
print align_stdout(stdout)
except OSError, e:
- raise PatchApplicationFailed(p, '%s%s' % (align_stdout(stdout), e))
+ errors.append((p, '%s%s' % (align_stdout(stdout), e)))
except subprocess.CalledProcessError, e:
- raise PatchApplicationFailed(
- p,
+ errors.append((p,
'While running %s;\n%s%s' % (
' '.join(e.cmd),
align_stdout(stdout),
- align_stdout([getattr(e, 'stdout', '')])))
+ align_stdout([getattr(e, 'stdout', '')]))))
+ if errors:
+ raise PatchApplicationFailed(errors, verbose)
found_files = self._check_output_git(
['diff', '--ignore-submodules',
'--name-only', '--staged']).splitlines(False)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698