| 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
|
|
|