git-diff à ignorer ^M

Dans un projet où certains des fichiers contient des ^M que le saut de ligne séparateurs. Comparaison de ces fichiers sont apparemment impossible, depuis git-diff voit que le fichier entier est une seule ligne.

Comment un diff avec la version précédente?

Est-il une option comme "traiter ^M que de retour à la ligne lors de la comparaison" ?

prompt> git-diff "HEAD^" -- MyFile.as 
diff --git a/myproject/MyFile.as b/myproject/MyFile.as
index be78321..a393ba3 100644
--- a/myproject/MyFile.cpp
+++ b/myproject/MyFile.cpp
@@ -1 +1 @@
-<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
+<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
prompt>

Mise à JOUR:

maintenant, j'ai écrit un script qui vérifie les 10 dernières révisions et les convertit en CR à LF.

require 'fileutils'

if ARGV.size != 3
  puts "a git-path must be provided"
  puts "a filename must be provided"
  puts "a result-dir must be provided"
  puts "example:"
  puts "ruby gitcrdiff.rb project/dir1/dir2/dir3/SomeFile.cpp tmp_somefile"
  exit(1)
end

gitpath = ARGV[0]
filename = ARGV[1]
resultdir = ARGV[2]

unless FileTest.exist?(".git")
  puts "this command must be run in the same dir as where .git resides"
  exit(1)
end

if FileTest.exist?(resultdir)
  puts "the result dir must not exist"
  exit(1)
end
FileUtils.mkdir(resultdir)

10.times do |i|
  revision = "^" * i
  cmd = "git show HEAD#{revision}:#{gitpath}#{filename} | tr '\\r' '\\n' > #{resultdir}/#{filename}_rev#{i}"
  puts cmd 
  system cmd
end
  • vous avez peut-être voulu git diff -b - j'ai montré dans ce stackoverflow.com/a/46265081/58794
  • Avec Git 2.16 (T1 2018), vous aurez git diff --ignore-cr-at-eol. Voir ma réponse ci-dessous.
  • et pour les futurs Googlers: j'ai dû chercher les git diff -b est identique à git diff --ignore-space-change.
InformationsquelleAutor neoneye | 2009-12-11