2011-09-24 20 views
10

git diff, * .tex hariç tüm dosyalar için düzenli farklar vermek istiyorum. * .tex dosyaları için, git diff --word-diff çıktısını görmek istiyorum.Latex dosyaları için git kelimesini kullanın

.gitattributes ve .gitconfig ile uğraşıyordum, ancak en aldığım tek bir .tex dosyası için kısmi bir görüntü almaktı, ardından bir kilitlenme oldu.

Bu davranışa ulaşmak mümkün mü?

Benim .gitattributes:

*.tex diff=latex 

.gitconfig:

[diff "latex"] 
    wordRegex = "\\\\[a-zA-Z]+|[{}]|\\\\.|[^\\{}[:space:]]+" 
    command = ~/bin/word-diff.sh 

ve word-diff.sh:

#!/bin/sh 
git --no-pager diff --color-words "$2" "$5" 
+0

nasıl "$ 2" ve "5 $" ile ortaya çıktı: Her zaman başarılı çıkmak için diff-words.sh senaryoyu değiştirirseniz

, her şey daha iyi çalışmak gerekir? Bunun hakkında herhangi bir yerde bilgi bulamıyorum. – silvenon

+0

Bunu buldum, üzgünüm. Merak eden kişiler için, [git man sayfa] 'nda GIT_EXTERNAL_DIFF dosyasını arayın (http://git-scm.com/docs/git). – silvenon

+0

Bir yan not olarak, [hizli] olması gereken (http://git-scm.com/docs/gitattributes/1.9.0#_defining_a_custom_hunk_header) yerleşik bir fark desen "tex" mevcuttur, bu da size makul bir hunk vermelidir. -headers. Ama bu benim için çalışmıyor gibi görünüyor. –

cevap

6

tam bir örnek (veya bağlantı) gönderebilir miyim? Tam olarak anlattığın şeyi ayarladım ve iyi çalışıyor gibi görünüyor. Yani, diff çıktısı satırlardan ziyade sözcükleri vurgular ve yaptığım tüm değişiklikler dahil edildi (yani, erken ya da herhangi bir şey yapmıyordu). Sadece anomali olduğunu fark olur hep çıkışla: sıfırdan farklı bir çıkış kodu ile çıkar:

external diff died, stopping at foo.tex. 

Bu olursa, kimin içinde kullanmakta olduğunuz şekilde çalıştırmak bağımsız diff aracı gibi davranır git diff, çünkü dosyalar farklıysa. Git bu davranışı beklemez; Özel komutunuzun her zaman başarılı bir şekilde yürütüldüğünü ve bu hata çıkış kodlarının gerçek bir sorunu gösterdiğini varsayar. Git, zaten dosyaların farkının olduğunu ve bu kararlılığı yapmak için harici komut gerektirmediğini zaten biliyordur. Harici komut kesinlikle bir biçimlendirme aracıdır.

#!/bin/sh 
git --no-pager diff --color-words "$2" "$5" 
exit 0 
+0

Bu, aldığım tam hata mesajıydı. 'Çıkış 0' eklemek hile yaptı, teşekkürler! –