| Index: scm.py
 | 
| ===================================================================
 | 
| --- scm.py	(revision 195262)
 | 
| +++ scm.py	(working copy)
 | 
| @@ -790,15 +790,16 @@
 | 
|      # 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.
 | 
| +    # 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.
 | 
|      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.
 | 
| @@ -831,7 +832,7 @@
 | 
|                # revision the file was deleted.
 | 
|                srcinfo = {'Revision': rev}
 | 
|              if (srcinfo.get('Revision') != rev and
 | 
| -                SVN.Capture(['diff', '-r', '%d:head' % rev, srcurl], cwd)):
 | 
| +                SVN.Capture(command + ['-r', '%d:head' % rev, srcurl], cwd)):
 | 
|                metaheaders.append("#$ svn cp -r %d %s %s "
 | 
|                                   "### WARNING: note non-trunk copy\n" %
 | 
|                                   (rev, src, filename))
 | 
| @@ -844,9 +845,9 @@
 | 
|            diffs.extend(metaheaders)
 | 
|            diffs.append("### END SVN COPY METADATA\n")
 | 
|        # Now ready to do the actual diff.
 | 
| -      for filename in sorted(data.iterkeys()):
 | 
| +      for filename in sorted(data):
 | 
|          diffs.append(SVN._DiffItemInternal(
 | 
| -            filename, cwd, data[filename], bogus_dir, full_move, revision))
 | 
| +            filename, cwd, data[filename], command, full_move, revision))
 | 
|        # Use StringIO since it can be messy when diffing a directory move with
 | 
|        # full_move=True.
 | 
|        buf = cStringIO.StringIO()
 | 
| @@ -859,9 +860,9 @@
 | 
|        gclient_utils.RemoveDirectory(bogus_dir)
 | 
|  
 | 
|    @staticmethod
 | 
| -  def _DiffItemInternal(filename, cwd, info, bogus_dir, full_move, revision):
 | 
| +  def _DiffItemInternal(filename, cwd, info, diff_command, full_move, revision):
 | 
|      """Grabs the diff data."""
 | 
| -    command = ["diff", "--config-dir", bogus_dir, filename]
 | 
| +    command = diff_command + [filename]
 | 
|      if revision:
 | 
|        command.extend(['--revision', revision])
 | 
|      data = None
 | 
| 
 |