Mam repozytorium Mercurial z czterema gałęziami w nim. Jednym z nich jest "wspólna" gałąź, pozostałe trzy to "specyficzne" gałęzie, które składają się z kilku kosmetycznych zmian zastosowanych do wspólnej gałęzi. Jedna z tych kosmetycznych zmian polegała na zmianie nazwy niektórych plików.Mercurial: jak scalić zmiany w pliku, którego nazwa została zmieniona w innym oddziale?
Więc wspólna gałąź ma "plik.txt", a pierwsza konkretna gałąź ma "plik-01.txt", który jest tym samym plikiem, używany do tego samego celu, ale ma inną nazwę i nieco inną zawartość . Został przemianowany na file-01.txt w konkretnym oddziale, a "hg log -f plik-01.txt" poprawnie pokazuje historię wracającą przed zmianą nazwy.
Kiedy dokonuję zmiany w pliku.txt na wspólnej gałęzi, muszę móc scalić tę zmianę do pliku-01.txt w określonym oddziale. Ale Mercurial nie rozumie, że pliki są takie same. Mówi mi:
zdalnego zmieniony plik.txt która lokalny usunięte
zastosowanie (c) wersja powieszono lub opuścić (d) eleted?
Jeśli wybiorę "c", otrzymam nowy plik.txt zawierający dokładnie to, co jest w wersji wspólnej gałęzi. Jeśli wybiorę "d", zmiana nie zostanie w ogóle scalona.
Co mogę zrobić, aby to naprawić?
EDYCJA: Mogę sprawić, aby działało poprawnie w nowym repozytorium testów, ale nie moje rzeczywiste repozytorium. Oto, co otrzymuję (zauważ, że rev 118 znajduje się w konkretnej gałęzi, tuż przed oryginalną zmianą nazwy, więc ponownie przeglądam proces zmiany nazwy, aby zilustrować):
C: \ ...> aktualizacja hg aktualizowany -C 118
0 plików, 0 plików połączone, usunięte pliki, 0, 0 plików nierozwiązanych
C: \ ...> hg scalić Wartość domyślna
łączące plik.txt
łączących anotherfile.txt
0 plików aktualizacja d, 2 pliki połączone, usunięte pliki, 0, 0 plików nierozwiązane
(oddział seryjnej, nie zapomnij, aby popełnić)
Tak to działa bez zmiany nazwy. Ale jeśli zmiana nazwy, to nie:
C: \ ... Hg> Aktualizacja -C aktualizowany 118
2 pliki, 0 plików połączone, usunięte pliki, 0, 0 plików rozwiązany
C : \ ...> hg przemianować plik.txt plików 01.txt
C: \ ...> hg commit -m "przemianowany na"stworzył nową głowicę
C: \ ...> domyślne połączenie hg
Zdalny zmieniony plik.txt który lokalny usunięty
użyć (c) powieszony wersji lub urlopu (d) eleted?
EDIT 2: Oto co mam na tym ostatnim etapie z hg merge --debug default
:
szukasz kopii z powrotem do rev 115
niedopasowane pliki w lokalnym:
file-01.txt
wszystkie znalezione kopie (* = do scalenia,! = Divergent):
plik-01.txt -> plik.txtsprawdzanie katalogu zmienia nazwę
rozwiązywanie manifesty
nadpisywania Brak częściowego fałszywy
przodka 9d979018c2df lokalnej f842fdbc252b + zdalnego 05fc75e480da
anotherfile.txt: wersje różnią -> m
zdalnego zmieniło plik.txt która lokalny usunięte
wykorzystania (c) zawieszona wersja lub pozostawić (d) eleted?
To dziwne, ponieważ Mercurial normalnie wie, jak scalić zmiany w pliku o zmienionej nazwie. Oto sprawdzony przykład, który możesz spróbować zweryfikować: http://mercurial.aragost.com/kick-start/tasks.html#merging-default-into-a-branch Nie wiem, co się stało w twoim przypadku , chociaż. –