„Usuń” plik do svn przed zatwierdzeniem


200

Byłem w trakcie robienia rekursywnego dodawania / zatwierdzania svn i dołączono folder, który nie miał odpowiednich właściwości ignorowania. Mam teraz około 100 przesłanych plików binarnych w wersji, ale jeszcze nie popełniłem.

Jak najłatwiej to cofnąć bez usuwania wszystkich dokumentów?

Odpowiedzi:


244

Posługiwać się svn revert --recursive folder_name


Ostrzeżenie

svn revertjest z natury niebezpieczny, ponieważ jego jedynym celem jest wyrzucenie danych - mianowicie niezatwierdzonych zmian. Po przywróceniu Subversion nie pozwala odzyskać tych niezatwierdzonych zmian.

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.revert.html


12
Aby rozwinąć tę revertkwestię - bez określonej wersji cofa wszelkie zmiany, które wystąpiły od ostatniego pobrania, w tym dodawanie / usuwanie zmian w harmonogramie dla określonych plików.
— Bursztyn

gdzie nazwa_folderu jest folderem nadrzędnym folderu, w którym wykonano polecenie „Dodaj”
— MacGyver,

28
Ta odpowiedź jest niebezpiecznie niepoprawna - spowoduje zmianę scenariusza poprzez USUNIĘCIE LOKALNYCH KOPII PLIKÓW. Poniższa odpowiedź Briana Lacy'ego jest znacznie lepsza.
— Henry Henrinson

6
Chłopaki, to odpowiada na pierwotne pytanie: plik lub folder, który został dodany, a następnie cofnięty, wraca tylko do wersji bez wersji, bez usuwania. Właśnie o to pyta pytanie. Jeśli użyjesz go na zmodyfikowanych plikach, oczywiście to je przywraca: ale to nie było pytanie. To nawet bardzo szczególny przypadek użycia pokazany na stronie, do której prowadzi link!
— Julien Lebosquain

2
@JulienLebosquain Ok, myślę, że rozumiem to zdanie inaczej: bez usuwania wszystkich dokumentów . Niestety svn revertusuwa również nowo dodane zmiany w kopii roboczej, przywracając ostatnią HEADwersję. Usunąłem moją opinię, ale nadal uważam, że ostrzeżenie jest ważne.
— jpaugh

145

svn rm --keep-local folder_name

Uwaga: W svn 1.5.4 svn rm usuwa niewersjonowane pliki, nawet jeśli podano opcję --keep-local. Aby uzyskać więcej informacji, zobacz http://svn.haxx.se/users/archive-2009-11/0058.shtml .


9
Warto o tym wiedzieć, ponieważ pozwala to po prostu cofnąć „dodawanie svn” bez utraty zmian!
— Ryan H.,

1
Czy na pewno SVN 1.5.4 usuwa niewersjonowane pliki? Raportu nie można było odtworzyć i nie ma na ten temat innego e-maila.
— Quentin Pradet

4
To lepsza odpowiedź, jeśli chcesz „usunąć” pliki, ale nadal je zachować. Po tym poleceniu pliki będą nadal dostępne z? status.
— Robin Zimmermann

32

Wypróbuj svn revert filenamekażdy plik, który nie jest potrzebny i nie został jeszcze zatwierdzony. Lub alternatywnie wykonaj svn revert -R folderdla problematycznego folderu, a następnie ponownie wykonaj operację z poprawną konfiguracją ignorowania.

Z dokumentacji:

 you can undo any scheduling operations:

$ svn add mistake.txt whoops
A         mistake.txt
A         whoops
A         whoops/oopsie.c

$ svn revert mistake.txt whoops
Reverted mistake.txt
Reverted whoops

4
Nie! Cofanie jest niebezpieczne, ponieważ traci wszystkie lokalne zmiany
— jpaugh

@jpaugh - To jest dokładnie to, co napisałem w odpowiedzi, nie?
— bobah

1
To, o co OP poprosił (i czego się spodziewałem), to polecenie cofnięcia dodania bez utraty lokalnych zmian. svn revert. Żadna z odpowiedzi tutaj nie wspomina o tym, że lokalne zmiany zostaną utracone przez przywrócenie.
— jpaugh

3

Pełny proces (pakiet svn dla systemu Unix):

Sprawdź, czy plików nie ma w SVN:

> svn st -u folder 
? folder

Dodaj wszystkie (w tym pliki ignorowane):

> svn add folder
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt
A   folder/folderToIgnore
A   folder/folderToIgnore/fileToIgnore1.txt
A   fileToIgnore2.txt

Usuń flagę „Dodaj” do wszystkich plików * Ignoruj ​​*:

> cd folder

> svn revert --recursive folderToIgnore
Reverted 'folderToIgnore'
Reverted 'folderToIgnore/fileToIgnore1.txt'


> svn revert fileToIgnore2.txt
Reverted 'fileToIgnore2.txt'

Edytuj ignorowanie svn w folderze

svn propedit svn:ignore .

Dodaj dwie linie singli z następującymi:

folderToIgnore
fileToIgnore2.txt

Sprawdź, które pliki zostaną przesłane i zatwierdź:

> cd ..

> svn st -u
A   folder
A   folder/file1.txt
A   folder/folder2
A   folder/folder2/file2.txt


> svn ci -m "Commit message here"

1
Dzięki dokładnie tego, czego potrzebowałem. Wygląda na to, że cofnęło tylko operację „dodaj”, nie dotykając samej zawartości pliku. Bałam się utraty lokalnych zmian w komentarzach do poprzednich odpowiedzi, ale wygląda na to, że żadne pliki nie zostały uszkodzone.
— Peter M. - oznacza Monikę

1

Dla plików - svn revert filename

Dla folderów - svn revert -R folder


4
Nie! Cofanie jest niebezpieczne, ponieważ traci wszystkie lokalne zmiany
— jpaugh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.