2009-04-07 18 views
13

Przypadkowo nadpisałem starą gałąź, kopiując nad nią bagażnik, używając "kopii svn". Dokładniej, dla każdego wydania, tułów jest rozgałęziony i trzymane jako znak, używając:Jak cofnąć "kopię svn"

svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR 

Ale tym razem wartość „RELEASENR” było to, że starej istniejącej gałęzi zamiast nowego. Ktoś ma jakieś pomysły, jak rozwiązać ten błąd? Dzięki już!

Odpowiedz

16

Subversion nie działa w ten sposób. W rzeczywistości go nie zastąpiłeś. Jeśli cel kopii lub ruch istnieje i jest katalogiem, a następnie skopiowany lub przeniesiony element jest umieszczony w że katalog:

svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/EXISTS_ALREADY 

Jeśli spojrzeć, należy znaleźć:

svn://machine/REPOS/tags/EXISTS_ALREADY/trunk 

Który jest kopią bagażnika, który właśnie próbowałeś oznaczyć. Rozwiązaniem w tym przypadku jest proste:

svn mv svn://machine/REPOS/tags/EXISTS_ALREADY/trunk \ 
     svn://machine/REPOS/tags/CORRECT_TAG_NAME 

(W przypadku nie jesteś zaznajomiony * nix: Polecenie \ oznacza Złamałem jedną linię logiczną na dwie linie fizycznych oszczędzić swoje poziomy pasek przewijania z przepracowania.)

+0

Podejrzewam, że jeśli jego procedura jest identyczna dla wszystkich wydań, faktycznie nadpisał istniejący trunk w EXIST_ JUŻ katalog. – mouviciel

+0

Dzięki, to było pomocne. Jednak wybrałem cofnięcie cp i ponowne utworzenie tagu, ponieważ komunikat zatwierdzenia również był niepoprawny (zawierał nazwę istniejącego tagu zamiast nazwy nowego znacznika) i ponieważ lubiłem utrzymywać historię zmian i proste dla wszystkich tagów. Aby cofnąć cp: 'svn co svn: // machine/REPOS/tags/EXISTS_ALREADY/EXISTS_ALREADY',' cd EXISTS_ALREADY', 'svn merge -c -REVISION_OF_INCORRECT_CP .',' svn commit'. –

2

Aby cofnąć

svn cp OLDFOLDER NEWFOLDER 

jeśli zmiana nie została jeszcze zatwierdzona, wystarczy użyć

svn revert NEWFOLDER --depth=infinity