Index: gclient_scm.py |
diff --git a/gclient_scm.py b/gclient_scm.py |
index 2b3f7aa702acf5ede91064c3f4714fa1938fe5bc..d36a95bb4e1918db3af4f3819503b8b63f40ff29 100644 |
--- a/gclient_scm.py |
+++ b/gclient_scm.py |
@@ -135,13 +135,16 @@ class GitWrapper(SCMWrapper, scm.GIT): |
file_list.extend([os.path.join(self.checkout_path, f) for f in files]) |
return |
- self._Run(['remote', 'update'], redirect_stdout=False) |
new_base = 'origin' |
if revision: |
new_base = revision |
+ cur_branch = self._Run(['symbolic-ref', 'HEAD']).split('/')[-1] |
+ merge_base = self._Run(['merge-base', 'HEAD', new_base]) |
+ self._Run(['remote', 'update'], redirect_stdout=False) |
files = self._Run(['diff', new_base, '--name-only']).split() |
file_list.extend([os.path.join(self.checkout_path, f) for f in files]) |
- self._Run(['rebase', '-v', new_base], redirect_stdout=False) |
+ self._Run(['rebase', '-v', '--onto', new_base, merge_base, cur_branch], |
+ redirect_stdout=False) |
print "Checked out revision %s." % self.revinfo(options, (), None) |
def revert(self, options, args, file_list): |