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

Side by Side Diff: gclient_scm.py

Issue 432017: gclient: handle case for upstream has rebased (Closed)
Patch Set: Fixed some corner cases. Created 11 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Gclient-specific SCM-specific operations.""" 5 """Gclient-specific SCM-specific operations."""
6 6
7 import logging 7 import logging
8 import os 8 import os
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 128
129 if not os.path.exists(self.checkout_path): 129 if not os.path.exists(self.checkout_path):
130 self._Run(['clone', url, self.checkout_path], 130 self._Run(['clone', url, self.checkout_path],
131 cwd=self._root_dir, redirect_stdout=False) 131 cwd=self._root_dir, redirect_stdout=False)
132 if revision: 132 if revision:
133 self._Run(['reset', '--hard', revision], redirect_stdout=False) 133 self._Run(['reset', '--hard', revision], redirect_stdout=False)
134 files = self._Run(['ls-files']).split() 134 files = self._Run(['ls-files']).split()
135 file_list.extend([os.path.join(self.checkout_path, f) for f in files]) 135 file_list.extend([os.path.join(self.checkout_path, f) for f in files])
136 return 136 return
137 137
138 self._Run(['remote', 'update'], redirect_stdout=False)
139 new_base = 'origin' 138 new_base = 'origin'
140 if revision: 139 if revision:
141 new_base = revision 140 new_base = revision
141 cur_branch = self._Run(['symbolic-ref', 'HEAD']).split('/')[-1]
142 merge_base = self._Run(['merge-base', 'HEAD', new_base])
143 self._Run(['remote', 'update'], redirect_stdout=False)
142 files = self._Run(['diff', new_base, '--name-only']).split() 144 files = self._Run(['diff', new_base, '--name-only']).split()
143 file_list.extend([os.path.join(self.checkout_path, f) for f in files]) 145 file_list.extend([os.path.join(self.checkout_path, f) for f in files])
144 self._Run(['rebase', '-v', new_base], redirect_stdout=False) 146 self._Run(['rebase', '-v', '--onto', new_base, merge_base, cur_branch],
147 redirect_stdout=False)
145 print "Checked out revision %s." % self.revinfo(options, (), None) 148 print "Checked out revision %s." % self.revinfo(options, (), None)
146 149
147 def revert(self, options, args, file_list): 150 def revert(self, options, args, file_list):
148 """Reverts local modifications. 151 """Reverts local modifications.
149 152
150 All reverted files will be appended to file_list. 153 All reverted files will be appended to file_list.
151 """ 154 """
152 __pychecker__ = 'unusednames=args' 155 __pychecker__ = 'unusednames=args'
153 path = os.path.join(self._root_dir, self.relpath) 156 path = os.path.join(self._root_dir, self.relpath)
154 if not os.path.isdir(path): 157 if not os.path.isdir(path):
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 self.ReplaceAndPrint(line) 458 self.ReplaceAndPrint(line)
456 else: 459 else:
457 if (line.startswith(self.original_prefix) or 460 if (line.startswith(self.original_prefix) or
458 line.startswith(self.working_prefix)): 461 line.startswith(self.working_prefix)):
459 self.ReplaceAndPrint(line) 462 self.ReplaceAndPrint(line)
460 else: 463 else:
461 print line 464 print line
462 465
463 filterer = DiffFilterer(self.relpath) 466 filterer = DiffFilterer(self.relpath)
464 self.RunAndFilterOutput(command, path, False, False, filterer.Filter) 467 self.RunAndFilterOutput(command, path, False, False, filterer.Filter)
OLDNEW
« 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