Chromium Code Reviews| Index: gclient_scm.py |
| =================================================================== |
| --- gclient_scm.py (revision 135255) |
| +++ gclient_scm.py (working copy) |
| @@ -16,11 +16,11 @@ |
| import subprocess2 |
| -class DiffFilterer(object): |
| +class DiffFiltererWrapper(object): |
| """Simple class which tracks which file is being diffed and |
| replaces instances of its file name in the original and |
| working copy lines of the svn/git diff output.""" |
| - index_string = "Index: " |
| + index_string = None |
| original_prefix = "--- " |
| working_prefix = "+++ " |
| @@ -28,15 +28,15 @@ |
| # Note that we always use '/' as the path separator to be |
| # consistent with svn's cygwin-style output on Windows |
| self._relpath = relpath.replace("\\", "/") |
| - self._current_file = "" |
| - self._replacement_file = "" |
| + self._current_file = None |
| def SetCurrentFile(self, current_file): |
| self._current_file = current_file |
| - # Note that we always use '/' as the path separator to be |
| - # consistent with svn's cygwin-style output on Windows |
| - self._replacement_file = posixpath.join(self._relpath, current_file) |
| + @property |
| + def _replacement_file(self): |
| + return posixpath.join(self._relpath, self._current_file) |
| + |
| def _Replace(self, line): |
| return line.replace(self._current_file, self._replacement_file) |
| @@ -51,6 +51,27 @@ |
| print(line) |
| +class SvnDiffFilterer(DiffFiltererWrapper): |
| + """Simple class which tracks which file is being diffed and |
|
M-A Ruel
2012/05/04 02:07:31
Remove the docstring, it's not informative.
haitao.feng
2012/05/04 09:46:22
Done.
|
| + replaces instances of its file name in the original and |
| + working copy lines of the svn diff output.""" |
| + index_string = "Index: " |
| + |
| + |
| +class GitDiffFilterer(DiffFiltererWrapper): |
| + """Simple class which tracks which file is being diffed and |
| + replaces instances of its file name in the original and |
| + working copy lines of the git diff output.""" |
| + index_string = "diff --git " |
| + |
| + def SetCurrentFile(self, current_file): |
| + # Get filename by parsing "a/<filename> b/<filename>" |
| + self._current_file = current_file[:(len(current_file)/2)][2:] |
|
M-A Ruel
2012/05/04 02:07:31
~/src/chrome/src> git mv AUTHORS foo
~/src/chrome/
haitao.feng
2012/05/04 09:46:22
There is no option "-C" in the git diff command. T
|
| + |
| + def _Replace(self, line): |
| + return re.sub("[a|b]/" + self._current_file, self._replacement_file, line) |
| + |
| + |
| def ask_for_data(prompt): |
| try: |
| return raw_input(prompt) |
| @@ -177,7 +198,7 @@ |
| gclient_utils.CheckCallAndFilter( |
| ['git', 'diff', merge_base], |
| cwd=self.checkout_path, |
| - filter_fn=DiffFilterer(self.relpath).Filter) |
| + filter_fn=GitDiffFilterer(self.relpath).Filter) |
| def update(self, options, args, file_list): |
| """Runs git to update or transparently checkout the working copy. |
| @@ -830,7 +851,7 @@ |
| ['svn', 'diff', '-x', '--ignore-eol-style'] + args, |
| cwd=self.checkout_path, |
| print_stdout=False, |
| - filter_fn=DiffFilterer(self.relpath).Filter) |
| + filter_fn=SvnDiffFilterer(self.relpath).Filter) |
| def update(self, options, args, file_list): |
| """Runs svn to update or transparently checkout the working copy. |