W projekcie, w którym niektóre pliki zawierają ^ M jako separatory nowego wiersza. Zróżnicowanie tych plików jest pozornie niemożliwe, ponieważ git-diff widzi je, ponieważ cały plik jest tylko jedną linią.
Jak się różni od poprzedniej wersji?
Czy istnieje opcja typu „traktuj ^ M jak nowy wiersz przy różnicowaniu”?
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>
AKTUALIZACJA:
teraz napisałem skrypt Ruby, który sprawdza najnowsze 10 wersji i konwertuje CR na 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
git diff --ignore-cr-at-eol
. Zobacz moją odpowiedź poniżej .
git diff -b
jest identyczne git diff --ignore-space-change
.
git diff -b
- pokazałem to na stackoverflow.com/a/46265081/58794