2012-02-10 13 views
19

Natknąłem się na następujący podstawowy konflikt drzewa: Lokalne dodawanie, przychodzące dodawanie po scaleniu.Jak zaakceptować "ich konflikt", aby rozwiązać konflikt drzewa: Lokalne dodawanie, przychodzące dodawanie po scaleniu

Wiem, że możemy użyć svn resolve --accept working file, aby go rozwiązać, ale SVN uniemożliwi mi użycie accept their-conflict do zaakceptowania przychodzącej wersji.

Czy ktoś może mi powiedzieć, jak zastąpić mój plik lokalny przez przychodzące? Czy jest możliwe użycie w jakikolwiek sposób svn resolved file?

+0

Jedną z opcji jest przeniesienie pliku lokalnego z drogi, wykonanie aktualizacji 'svn', odłożenie pliku, a następnie wykonanie polecenia' svn commit'. Oczywiście nie jest to "poprawna" metoda, ale prawdopodobnie jest o wiele prostsza niż gra z poleceniami SVN. – aroth

+0

@Arth, pliki te istnieją już w trunk i branch (tło: scalam gałąź do pnia tygodniowo), w rzeczywistości, chcę użyć tej w gałęzi do nadpisania tej w pniu, jak powiedziałeś, potrzebuję usunąć te pliki w bagażniku, a następnie zatwierdzić, a następnie połączyć je z gałęzi, prawda? –

+0

Czy rozwiązałeś swój problem? –

Odpowiedz

11

Prawidłowe rozwiązanie problemu polega na wykryciu tego problemu w poprzedniej wersji - próba uruchomienia i usunięcie lokalnego konfliktu z numerem svn delete przed wykonaniem scalenia.

Pierwszy scenariusz: Kopia robocza z już wykonanym scaleniem. Rozwiązanie: Usuń kopię roboczą, sprawdź czystą kopię i postępuj właściwie.

Drugi scenariusz: Już popełniono zły katalog, po svn resolve --accept=working.

Musisz kolidować z katalogiem powodującym konflikt i ponownie uruchomić scalanie z katalogu nadrzędnego katalogu będącego w konflikcie, ignorując mergeinfo. Przywróć każdy obiekt z wyjątkiem poprzedniego katalogu powodującego konflikt (teraz nie ma konfliktu). Sprawdź i zatwierdz zmiany.

Przykł. Folder roboczy copy un WC. Twój konflikt w katalogu A/conflictDir:

cd A 
svn delete conflictDir 
svn merge --ignore-ancestry -rbeginRev:endRev <URLrepo/A> 
svn -R revert `ls | grep -v conflictDir` 
<... check ...> 
svn ci -m "conflictDir fixed" 
5

miałem podobny problem, gdzie svn zaktualizować plik, który ma konflikt z mojego lokalnego pliku. Chcę, aby zdalna kopia zastąpiła moją kopię lokalną. To, co zrobiłem, to svn delete file_name, , a następnie svn revert file_name. Powraca do kopii zdalnej. Nie jestem pewien, czy konieczne jest pierwsze usunięcie svn.

+0

To było dla mnie, usunięcie pliku tylko z 'rm' spowodował konflikt pozostanie, ale usunięcie go z' svn delete', a następnie przywrócono go naprawić konflikt drzewa. – tomjen

Powiązane problemy