Czy istnieje sposób zatwierdzenia tylko listy określonych plików (np. Tylko jedna z listy plików, które SVN chce zatwierdzić).
Pracuję na systemie Mac OS X pod terminalem, bez interfejsu użytkownika.
Czy istnieje sposób zatwierdzenia tylko listy określonych plików (np. Tylko jedna z listy plików, które SVN chce zatwierdzić).
Pracuję na systemie Mac OS X pod terminalem, bez interfejsu użytkownika.
Odpowiedzi:
Pewnie. Wystarczy wymienić pliki:
$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
Nie znam sposobu na to, aby zignorować pewien zestaw plików. Oczywiście, jeśli pliki, które chcesz zatwierdzić, są łatwo wyświetlane przez powłokę, możesz użyć tego:
$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
Możesz także poprosić komendę svn o odczytanie listy plików do zatwierdzenia z pliku:
$ svn ci -m "Now works" --targets fix4711.txt
svn add
służy do dodawania plików do repozytoriów.
Użyj list zmian. Przewagą nad określaniem plików jest to, że możesz wizualizować i potwierdzić, że wszystko, co chciałeś, jest faktycznie uwzględnione przed zatwierdzeniem.
$ svn changelist fix-issue-237 foo.c
Path 'foo.c' is now a member of changelist 'fix-issue-237'.
Po wykonaniu tej czynności svn oddziela rzeczy dla Ciebie. Pomaga to w żonglowaniu wieloma zmianami
$ svn status
A bar.c
A baz.c
--- Changelist 'fix-issue-237':
A foo.c
Na koniec powiedz, aby zatwierdził to, co chciałeś zmienić.
$ svn commit --changelist fix-issue-237 -m "Issue 237"
svn changelist fix-issue-237 --recursive path/to/directory
Zasadniczo umieszczasz pliki, które chcesz zatwierdzić, w wierszu polecenia
svn ci file1 file2 dir1/file3
Z powodu mojego stanu wywrotu musiałem być kreatywny. svn st
pokazał M
, A
a ~
statusy. Chciałem tylko M
i A
dlatego ...
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
To polecenie mówi, że znajdź wszystkie wiersze wypisane przez svn st
ten początek zaczynając od M
lubA
, wytnij używając separatora spacji, a następnie poprowadź kolumny 8 do końca. Zrzuć to do target.txt i nadpisz.
Następnie zmodyfikuj target.txt, aby dalej przycinać listę plików. Następnie uruchom poniżej, aby zatwierdzić:
svn ci -m "My commit message" --targets targets.txt
Prawdopodobnie nie jest to najczęstszy przypadek użycia, ale mam nadzieję, że to komuś pomaga.
grep -v '^~'
do umieszczenia na czarnej liście tego, czego chcesz.
Poza listą plików jawnie jak pokazano odpoczynek i Wienczny , możesz skonfigurować listy zmian i zameldować je. Umożliwiają one zarządzanie rozłącznymi zestawami zmian w tej samej kopii roboczej.
Możesz o nich przeczytać w internetowej wersji doskonałej książki SVN .
spróbuj tego skryptu ..
#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`;
do LIST="${LIST} $f $NULL on";
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
Tworzę (pod) folder o nazwie „ukryj”, przenoszę plik, do którego nie chcę się tam przypisywać. Następnie dokonaj mojego zatwierdzenia, ignorując skargę na brakujący plik. Następnie przenieś ukryty plik z ukrycia z powrotem do ./
Nie znam żadnego minusu tej taktyki.