SVN - jak zatwierdzić wiele plików w jednym ujęciu

104

Próbowałem przesłać wiele plików w różnych katalogach w jednym ujęciu, jak poniżej,

svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc

Ponieważ chciałem wykluczyć niektóre pliki z listy zatwierdzeń, umieściłem każdą nazwę pliku w linii poleceń, jak powyżej. Włożyłem to do notatnika i wyszło około 25 plików. Kiedy kopiuję i wklejam go w wierszu poleceń, brakuje kilku ostatnich plików i myślę, że może to być ograniczenie bufora wiersza poleceń (?). Czy jest jakaś opcja, dzięki której mogę zwiększyć długość bufora?

Czy jest jakaś opcja, którą mogę umieścić wszystkie pliki w pliku tekstowym i podać go jako argument do zatwierdzenia svn?

Thi
źródło
8
@Thi - Ci, którzy nie używają GUI do wywrotu, są masochistami. Zdobądź Tortoise SVN lub jego odpowiednik dla Linuksa.
tpow
1
Jeśli istnieje ograniczenie długości bufora, to nie będzie w SVN, będzie w dowolnej powłoce, której używasz.
Colin Fine
20
@cinquTimo: może wolisz używać GUI do wszystkiego. Inni nie.
Colin Fine
@Colin chyba tak, jak w takim przypadku zwiększyć długość bufora powłoki?
Czw
3
„Ci, którzy nie używają GUI do działań wywrotowych, są masochistami”. - Masochizm polega na używaniu wywrotu, ale niektórzy z nas nie mają wyboru.
Daniel

Odpowiedzi:

157

Możesz użyć listy zmian svn, aby śledzić zestaw plików, które chcesz zatwierdzić razem.

Strona, do której prowadzi link, zawiera wiele szczegółów, ale oto przykład podsumowania:

$ svn changelist my-changelist mydir/dir1/file1.c mydir/dir2/myfile1.h
$ svn changelist my-changelist mydir/dir3/myfile3.c etc.
... (add all the files you want to commit together at your own rate)
$ svn commit -m"log msg" --changelist my-changelist
Mark Pim
źródło
30

Możesz użyć --targets ARGopcji, gdzie ARG jest nazwą pliku tekstowego zawierającego cele zatwierdzenia.

svn ci --targets myfiles.txt -m "another commit"
Dmitry Yudakov
źródło
Działa dla mnie w tym poleceniu bash:find . -name \*my.mask | xargs svn ci -m"message" --targets -
ASten
28

Nie miałem problemów z przesłaniem kilku takich plików:

svn commit fileDir1/ fileDir2/ -m "updated!"
psy
źródło
To nie działa dla mnie. Pojawia się błąd „svn:„ / ”nie jest kopią roboczą”. Tutaj zamieściłem moje pytanie, możesz spojrzeć. askubuntu.com/questions/442742/how-to-update-dir-on-svn-server/…
Tak działało dobrze. Również w katalogu głównym mojego dokumentu mogłem zatwierdzić wszystkie zmiany w strukturze drzewa kopii roboczej za pomocą tego:> svn commit. -m 'komunikat o masowym zatwierdzeniu'
Grigoreas P.
3

Użyj zestawu zmian. Możesz dodać dowolną liczbę plików do zestawu zmian, wszystkie naraz lub kilka poleceń; a następnie popełnij je wszystkie za jednym zamachem.

Colin Fine
źródło
1
svnbook.red-bean.com/en/1.6/svn.advanced.changelists.html - słowem kluczowym svn jest „ lista zmian ”, do której odnosi się pierwsza odpowiedź i jest najczęściej wybierana.
John W. Clark