diff --git a/apply_issue.py b/apply_issue.py index b4ad8946f..690db0d32 100755 --- a/apply_issue.py +++ b/apply_issue.py @@ -162,7 +162,7 @@ def main(): scm_obj = checkout.SvnCheckout(full_dir, None, None, None, None) elif scm_type == 'git': scm_obj = checkout.GitCheckout(full_dir, None, None, None, None, - base_ref=options.base_ref) + base_ref=options.base_ref,) elif scm_type == None: scm_obj = checkout.RawCheckout(full_dir, None, None) else: @@ -179,7 +179,10 @@ def main(): print('\nApplying the patch.') try: - scm_obj.apply_patch(patchset, verbose=True) + scm_obj.apply_patch( + patchset, verbose=True, + email=properties.get('owner_email', 'chrome-bot@chromium.org'), + name=properties.get('owner', 'chrome-bot')) except checkout.PatchApplicationFailed, e: print(str(e)) print('CWD=%s' % os.getcwd()) diff --git a/checkout.py b/checkout.py index cc570082c..2c9c68a7f 100644 --- a/checkout.py +++ b/checkout.py @@ -131,7 +131,8 @@ class CheckoutBase(object): """ raise NotImplementedError() - def apply_patch(self, patches, post_processors=None, verbose=False): + def apply_patch(self, patches, post_processors=None, verbose=False, + name=None, email=None): """Applies a patch and returns the list of modified files. This function should throw patch.UnsupportedPatchFormat or @@ -165,7 +166,8 @@ class RawCheckout(CheckoutBase): """Stubbed out.""" pass - def apply_patch(self, patches, post_processors=None, verbose=False): + def apply_patch(self, patches, post_processors=None, verbose=False, + name=None, email=None): """Ignores svn properties.""" post_processors = post_processors or self.post_processors or [] for p in patches: @@ -349,7 +351,8 @@ class SvnCheckout(CheckoutBase, SvnMixIn): (self.project_name, self.project_path)) return self._revert(revision) - def apply_patch(self, patches, post_processors=None, verbose=False): + def apply_patch(self, patches, post_processors=None, verbose=False, + name=None, email=None): post_processors = post_processors or self.post_processors or [] for p in patches: stdout = [] @@ -628,7 +631,8 @@ class GitCheckout(CheckoutBase): """Gets the current revision (in unicode) from the local branch.""" return unicode(self._check_output_git(['rev-parse', 'HEAD']).strip()) - def apply_patch(self, patches, post_processors=None, verbose=False): + def apply_patch(self, patches, post_processors=None, verbose=False, + name=None, email=None): """Applies a patch on 'working_branch' and switches to it. Also commits the changes on the local branch. @@ -708,6 +712,9 @@ class GitCheckout(CheckoutBase): # Once all the patches are processed and added to the index, commit the # index. cmd = ['commit', '-m', 'Committed patch'] + if name and email: + author = '%s <%s>' % (name, email) + cmd.extend(['--author', author]) if verbose: cmd.append('--verbose') self._check_call_git(cmd) @@ -818,7 +825,8 @@ class ReadOnlyCheckout(object): def get_settings(self, key): return self.checkout.get_settings(key) - def apply_patch(self, patches, post_processors=None, verbose=False): + def apply_patch(self, patches, post_processors=None, verbose=False, + name=None, email=None): return self.checkout.apply_patch( patches, post_processors or self.post_processors, verbose)