2014-06-11 19 views
43

Git farklılığı, girinti ve sözdizimine göre ayarlanabilir mi? Girintiyi ve boşlukları göz ardı etmekten bahsetmiyorum, eski satırları yeni satırlarla eşleştirmeye yardımcı olmak için boş satırlar, girinti düzeyleri ve muhtemelen parantezler kullanıyorum.git işlevleri birbirinden ayrı tutmayan fark algoritması? (dil duyarlı fark)

E.g. diff genellikle fonksiyonları arasından geçerek onların kısmı içermelidir, örneğin:

class C { 

    /** 
+ * Goes to the bar. 
+ */ 
+ function bar() { 
+ return 'bar'; 
+ } 
+ 
+ /** 
    * Gets your foo up to date. 
    */ 
    function foo() { 

Ben hala oldukça zararsızdır Bu örnekte

class C { 
+ 
+ /** 
+ * Goes to the bar. 
+ */ 
+ function bar() { 
+ return 'bar'; 
+ } 

    /** 
    * Gets your foo up to date. 
    */ 
    function foo() { 

tercih ediyorum, ama işlevleri ve bunların kısmı içermelidir olan örnekler vardır açgözlü ve naif fark uygulama nedeniyle gerçekten sökük.

Not: ~/.gitattributes'da zaten *.php diff=php'u yapılandırdım.

DÜZENLEME: Başka bir örnek:

/** 
- * @var int 
+ * @param string $str 
    */ 
+0

ben hangisini seçtiğiniz diff algoritması içinde cevap olacak bir şüphe var, ama istediğiniz şekilde çalışmış bulamadı. – sevenseacat

+1

Nasıl bir algoritma seçersiniz? – donquixote

+2

- Sabırlılıkla ilgili bir şey var mı? – donquixote

cevap

4

O GIT'de yalnız nasıl bilmiyorum ama en azından bir ticari aracı (vardır: İşte diff bir yöntem sınıfın üstünde olan bir özellik sınıfın üstünde karıştırır SemanticMerge olarak adlandırılan bu tür problemlerle uğraşan paradır.

Oldukça fazla sayıda güzel durumu halledebilir ve C#, Java ve kısmen C'yi destekler. Git'i birleştirme aracı olarak kullanmak üzere yapılandırabilirsiniz.

(Ben bağlı değilim.)

+0

Bu, alabildiğimiz en yakın nokta olabilir, evet .. – donquixote

+0

Yine de, indentation seviyelerine ya da başka bir tür aldatmaya dayanan, dil farkında olan ama gerçekte olmayan bir şeylere sahip olmak güzel olurdu. – donquixote