Tło:przerywania połączenia pliku w Mercurial po zły plik podzielony
Początkowo był plik base.c
i że plik był w repozytorium, który miał tylko jeden oddział Base
.
Base
został rozgałęziony, aby Extended
-branch. Następnie ten nowy oddział wprowadził kilka zmian do base.c
.
Jeśli błędy zostały naprawione w pliku base.c
w Base
, zostaną scalone do Extended
.
Okazuje się, że dodanie zbyt wiele elementów do base.c
w gałęzi Extended
nie było dobrym pomysłem, więc plik jest kopiowany do ext.c
. Następnie większość dodatków Extended
została usunięta z funkcji base.c
i Base
z ext.c
. W tym momencie base.c
w Extended
jest bardzo podobny jak w Base
.
Problem:
Gdy plik został podzielony, Mercurial został poinformowany, że ext.c
jest kopią base.c
, bo mają wspólny historię. Niestety nie był to dobry pomysł.
Teraz, jeśli błędy są stałe na Base
gałęzi i połączyły się Extended
, Mercurial uważa, że zmiany te powinny być stosowane zarówno base.c
i ext.c
, choć ten ostatni nie jest już ma żadnych podobieństw do pierwszego. To sprawia, że scalenia są bardzo irytujące.
Czy istnieje sposób, aby powiedzieć Mercurialowi, że ext.c
nie powinien już być uważany za taki sam jak base.c
? Jednym z rozwiązań byłoby zastąpienie nowego pliku plikiem ext.c
, ale historia nie nastąpiłaby.
Interesujący problem. Zakładam, że zrobiłeś kopię za pomocą 'hg copy'? – icabod
Tak, użyłem '' hg copy'. – user694733
Możesz przerwać połączenie, jeśli zapomnisz ext.c', a następnie 'hg add' to jako nowy plik ... ale wtedy stracisz całą historię do tego momentu. Możesz jednak dodać _earlier_ wersję 'ext.c' (może nawet przed zmianą nazwy) i odtworzenie (przeszczep) to historia od tego czasu. – alexis