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

Unified Diff: scm.py

Issue 14241038: Removes DiffItem, which was unused, and moves _DiffItemInternal below GenerateDiff, now its lone ca… (Closed) Base URL: http://src.chromium.org/svn/trunk/tools/depot_tools/
Patch Set: Created 7 years, 8 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/scm_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scm.py
===================================================================
--- scm.py (revision 195256)
+++ scm.py (working copy)
@@ -772,90 +772,6 @@
return ''
@staticmethod
- def DiffItem(filename, cwd, full_move, revision):
- """Diffs a single file.
-
- Should be simple, eh? No it isn't.
- Be sure to be in the appropriate directory before calling to have the
- expected relative path.
- full_move means that move or copy operations should completely recreate the
- files, usually in the prospect to apply the patch for a try job."""
- # If the user specified a custom diff command in their svn config file,
- # then it'll be used when we do svn diff, which we don't want to happen
- # since we want the unified diff. Using --diff-cmd=diff doesn't always
- # work, since they can have another diff executable in their path that
- # gives different line endings. So we use a bogus temp directory as the
- # config directory, which gets around these problems.
- bogus_dir = tempfile.mkdtemp()
- try:
- # Use "svn info" output instead of os.path.isdir because the latter fails
- # when the file is deleted.
- return SVN._DiffItemInternal(
- filename,
- cwd,
- SVN.CaptureLocalInfo([filename], cwd),
- bogus_dir,
- full_move,
- revision)
- finally:
- gclient_utils.RemoveDirectory(bogus_dir)
-
- @staticmethod
- def _DiffItemInternal(filename, cwd, info, bogus_dir, full_move, revision):
- """Grabs the diff data."""
- command = ["diff", "--config-dir", bogus_dir, filename]
- if revision:
- command.extend(['--revision', revision])
- data = None
- if SVN.IsMovedInfo(info):
- if full_move:
- if info.get("Node Kind") == "directory":
- # Things become tricky here. It's a directory copy/move. We need to
- # diff all the files inside it.
- # This will put a lot of pressure on the heap. This is why StringIO
- # is used and converted back into a string at the end. The reason to
- # return a string instead of a StringIO is that StringIO.write()
- # doesn't accept a StringIO object. *sigh*.
- for (dirpath, dirnames, filenames) in os.walk(filename):
- # Cleanup all files starting with a '.'.
- for d in dirnames:
- if d.startswith('.'):
- dirnames.remove(d)
- for f in filenames:
- if f.startswith('.'):
- filenames.remove(f)
- for f in filenames:
- if data is None:
- data = cStringIO.StringIO()
- data.write(GenFakeDiff(os.path.join(dirpath, f)))
- if data:
- tmp = data.getvalue()
- data.close()
- data = tmp
- else:
- data = GenFakeDiff(filename)
- else:
- if info.get("Node Kind") != "directory":
- # svn diff on a mv/cp'd file outputs nothing if there was no change.
- data = SVN.Capture(command, cwd)
- if not data:
- # We put in an empty Index entry so upload.py knows about them.
- data = "Index: %s\n" % filename.replace(os.sep, '/')
- # Otherwise silently ignore directories.
- else:
- if info.get("Node Kind") != "directory":
- # Normal simple case.
- try:
- data = SVN.Capture(command, cwd)
- except subprocess2.CalledProcessError:
- if revision:
- data = GenFakeDiff(filename)
- else:
- raise
- # Otherwise silently ignore directories.
- return data
-
- @staticmethod
def GenerateDiff(filenames, cwd, full_move, revision):
"""Returns a string containing the diff for the given file list.
@@ -943,6 +859,61 @@
gclient_utils.RemoveDirectory(bogus_dir)
@staticmethod
+ def _DiffItemInternal(filename, cwd, info, bogus_dir, full_move, revision):
+ """Grabs the diff data."""
+ command = ["diff", "--config-dir", bogus_dir, filename]
+ if revision:
+ command.extend(['--revision', revision])
+ data = None
+ if SVN.IsMovedInfo(info):
+ if full_move:
+ if info.get("Node Kind") == "directory":
+ # Things become tricky here. It's a directory copy/move. We need to
+ # diff all the files inside it.
+ # This will put a lot of pressure on the heap. This is why StringIO
+ # is used and converted back into a string at the end. The reason to
+ # return a string instead of a StringIO is that StringIO.write()
+ # doesn't accept a StringIO object. *sigh*.
+ for (dirpath, dirnames, filenames) in os.walk(filename):
+ # Cleanup all files starting with a '.'.
+ for d in dirnames:
+ if d.startswith('.'):
+ dirnames.remove(d)
+ for f in filenames:
+ if f.startswith('.'):
+ filenames.remove(f)
+ for f in filenames:
+ if data is None:
+ data = cStringIO.StringIO()
+ data.write(GenFakeDiff(os.path.join(dirpath, f)))
+ if data:
+ tmp = data.getvalue()
+ data.close()
+ data = tmp
+ else:
+ data = GenFakeDiff(filename)
+ else:
+ if info.get("Node Kind") != "directory":
+ # svn diff on a mv/cp'd file outputs nothing if there was no change.
+ data = SVN.Capture(command, cwd)
+ if not data:
+ # We put in an empty Index entry so upload.py knows about them.
+ data = "Index: %s\n" % filename.replace(os.sep, '/')
+ # Otherwise silently ignore directories.
+ else:
+ if info.get("Node Kind") != "directory":
+ # Normal simple case.
+ try:
+ data = SVN.Capture(command, cwd)
+ except subprocess2.CalledProcessError:
+ if revision:
+ data = GenFakeDiff(filename)
+ else:
+ raise
+ # Otherwise silently ignore directories.
+ return data
+
+ @staticmethod
def GetEmail(cwd):
"""Retrieves the svn account which we assume is an email address."""
try:
« no previous file with comments | « no previous file | tests/scm_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698