2016-02-01 13 views
9

Chciałbym skonfigurować repozytorium Git za pomocą niestandardowego sterownika scalania, a następnie wyłączyć wykrywanie zmiany nazwy podczas łączenia.Niestandardowy sterownik scalający Git bez wykrywania zmiany nazwy

Problem polega na tym, że jeśli używam domyślnej strategii rekursywnej, nie mogę wyłączyć wykrycia zmiany nazwy i jeśli zastosuję strategię rozstrzygania (nie jest idealna, ale wystarczająco dobra), sterownik scalania jest ignorowany.

Należy pamiętać, że chciałbym uniknąć wykrycia zmiany nazwy nawet wtedy, gdy zawartość pliku idealnie pasuje.

.git/config:

[merge "my"] 
    name = my merge 
    driver = my_merge_driver %A %O %B 
[merge] 
    default = my 

Próby:

$ git merge -X rename-threshold=200% # Equivalent to 100% 
$ git merge -s resolve    # Custom driver ignored 
$ git --version      # git version 2.2.0-rc0 
+0

Czy nadal ignorować z git 2.7.0? – VonC

+1

Myślę, że nadal jest ignorowany, czytając moją starą odpowiedź http://stackoverflow.com/a/22579625/6309 – VonC

+0

Rzeczywiście, @VonC, mogę potwierdzić dokładnie to samo zachowanie z git w wersji 2.7.0. – filipos

Odpowiedz

2

Jak Git 2.8.0.rc0 algorytm scalania-rekurencyjne akceptuje teraz opcję „bez Zmienia nazwę” (popełnić 4ce064d), więc mój problem jest już rozwiązany przez

$ git merge -X no-renames 
1

Biorąc pod uwagę przypadek użycia planujesz za to, Dobrym Rozwiązaniem byłoby napisać nazwę pliku, wraz z numer wersji w każdym pliku.

+0

Uważam, że jest trochę brzydka i będzie wymagać pewnych (prostych) zmian w kodzie obsługującym repozytorium, ale, cóż, działa. Wygasająca nagroda. Poczekam trochę więcej, aby sprawdzić, czy pojawią się inne odpowiedzi, zanim je zaakceptuję. – filipos