Radzenie sobie z repozytorium subversion i nowym użytkownikiem, który nie do końca rozumiał, jak to działa.
Krótko mówiąc, ponieważ ich lokalna struktura została pomieszana z powodu kopiowania losowych folderów .svn, zrobiłem następujące:
- skopiował lokalną strukturę do folderu zwanego przemieszczaniem
- rekurencyjnie usunął wszystkie foldery .svn z katalogu pomostowego
- sprawdziłem repozytorium w „czystym folderze”
Teraz jesteśmy na ostatnim etapie - nadpisanie zawartości folderu pomostowego w celu zastąpienia czystej zawartości.
Potrzebuję polecenia, aby skopiować zawartość katalogu pomostowego do czystego katalogu, usuwając wszystko, co jest tylko w czystym katalogu, ALE pozostawiając taktowane foldery .svn czystego folderu.
To brzmi jak zadanie dla rsync. Czy poniższe polecenie byłoby poprawne?
rsync -avr --exclude=.svn* [staging] [clean]
rsync
subversion
SeanKilleen
źródło
źródło
rsync
z--dry-run
opcją, aby się dowiedzieć!Odpowiedzi:
-C
Rozwiązaniem dla rsync może być to, co chcesz.Nie daj się jednak zwieść krótkiemu opisowi na stronie man. Wygląda na to, że opcja dotyczy tylko CVS, ale w zależności od wersji rsync pominie pliki prawie każdego istniejącego systemu kontroli wersji.
źródło
*.a
jest dla bibliotek statycznych iOS.Prawie - tak powinno być
lub dowolną inną formę cytowania, która uniemożliwia powłoce rozwinięcie symbolu wieloznacznego. (Symbol wieloznaczny pasuje tylko do mało prawdopodobnego pliku, którego nazwa zaczyna się od
--exclude=.svn
, ale lepiej nie podejmować ryzyka, a także działać poprawnie, nawet jeśli powłoka jest skonfigurowana do zadławienia niepasujących symboli wieloznacznych lub rozwinięcia ich do pustej listy. )-r
jest już uwzględniony w-a
. Dodatekr
jest po prostu zbyteczny, nie wyrządzi żadnej szkody.--exclude
powoduje, że pliki pasujące do jego argumentu nie są kopiowane ani brane pod uwagę przy przechodzeniu rekurencyjnym. Zwykle trudność z rsync idzie w drugą stronę, wyłączając katalog z wyjątkiem niektórych jego części. Zobacz Filtr Rsync: kopiowanie jednego wzoru tylko dla niektórych wskazówek.W tym konkretnym przypadku wykluczenie katalogów kontroli wersji jest szybkim sposobem na uzyskanie tego, co chcesz.
źródło