Index: trunk/tools/depot_tools/scm.py |
=================================================================== |
--- trunk/tools/depot_tools/scm.py (revision 195421) |
+++ trunk/tools/depot_tools/scm.py (working copy) |
@@ -790,16 +790,15 @@ |
# 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 e.g. Windows cmd users may not have a "diff" executable in |
- # their path at all. So we use an empty temporary directory as the config |
- # directory, which gets around these problems. |
+ # 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() |
- command = ['diff', '--config-dir', bogus_dir] |
try: |
# Cleanup filenames |
filenames = [RelativePath(f, root) for f in filenames] |
# Get information about the modified items (files and directories) |
- data = dict((f, SVN.CaptureLocalInfo([f], root)) for f in filenames) |
+ data = dict([(f, SVN.CaptureLocalInfo([f], root)) for f in filenames]) |
diffs = [] |
if full_move: |
# Eliminate modified files inside moved/copied directory. |
@@ -832,7 +831,7 @@ |
# revision the file was deleted. |
srcinfo = {'Revision': rev} |
if (srcinfo.get('Revision') != rev and |
- SVN.Capture(command + ['-r', '%d:head' % rev, srcurl], cwd)): |
+ SVN.Capture(['diff', '-r', '%d:head' % rev, srcurl], cwd)): |
metaheaders.append("#$ svn cp -r %d %s %s " |
"### WARNING: note non-trunk copy\n" % |
(rev, src, filename)) |
@@ -845,9 +844,9 @@ |
diffs.extend(metaheaders) |
diffs.append("### END SVN COPY METADATA\n") |
# Now ready to do the actual diff. |
- for filename in sorted(data): |
+ for filename in sorted(data.iterkeys()): |
diffs.append(SVN._DiffItemInternal( |
- filename, cwd, data[filename], command, full_move, revision)) |
+ filename, cwd, data[filename], bogus_dir, full_move, revision)) |
# Use StringIO since it can be messy when diffing a directory move with |
# full_move=True. |
buf = cStringIO.StringIO() |
@@ -860,9 +859,9 @@ |
gclient_utils.RemoveDirectory(bogus_dir) |
@staticmethod |
- def _DiffItemInternal(filename, cwd, info, diff_command, full_move, revision): |
+ def _DiffItemInternal(filename, cwd, info, bogus_dir, full_move, revision): |
"""Grabs the diff data.""" |
- command = diff_command + [filename] |
+ command = ["diff", "--config-dir", bogus_dir, filename] |
if revision: |
command.extend(['--revision', revision]) |
data = None |