| Index: gclient_scm.py
|
| ===================================================================
|
| --- gclient_scm.py (revision 135306)
|
| +++ gclient_scm.py (working copy)
|
| @@ -16,11 +16,11 @@
|
| import subprocess2
|
|
|
|
|
| -class DiffFilterer(object):
|
| - """Simple class which tracks which file is being diffed and
|
| +class DiffFiltererWrapper(object):
|
| + """Simple base 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,21 @@
|
| print(line)
|
|
|
|
|
| +class SvnDiffFilterer(DiffFiltererWrapper):
|
| + index_string = "Index: "
|
| +
|
| +
|
| +class GitDiffFilterer(DiffFiltererWrapper):
|
| + 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:]
|
| +
|
| + 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 +192,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 +845,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.
|
|
|