2011-05-13 16 views
14

Mamy repozytorium z kilkoma plikami (bez folderów). Każdy czas budowy musimy pobrać ten sam folder z innego źródła (db), a następnie zatwierdzić zmiany SVN - zaktualizować istniejące, usunąć nie istnieje i dodać nowe pliki.SVN: analog hg's addremove

Więc pomysł jest mieć 'kopia' skryptów dB w SVN każdej kompilacji (dlatego MSBuild jest używany)

Problem jest to, że nie wiem, analog Hg „s addremove - który automatycznie synchronizuje dwa foldery.

czy ktoś wie, w jaki sposób można symulować addremove?

+1

Oto po że zawiera dwie powłoki aliasy (jeden o nazwie add_all i drugi o nazwie rm_all). Zasadniczo umożliwi to uruchomienie 'add_all && rm_all', aby zrobić dokładnie to, co robi "hg addremove", ale z subversion. http://www.plexusweb.com/staff/travis/blog/post/267/Batch-addremove-files-to-Subversion –

+0

Nie mogę uwierzyć, że to nie jest możliwe z svn, ale nie widzę jak . Jeśli nie ma lepszej opcji, możesz rozważyć użycie hgsubversion do utrzymania lokalnego repozytorium hg, użyj 'hg addremove' na tym, a następnie prześlij zmiany z powrotem do svn. –

Odpowiedz

0

Zawsze używam skryptu svn_load_dirs.pl dostarczanego z svn w tym celu.

9

Osobiście mam trochę skrypt bash, aby to zrobić (jest na linux):

svn status | grep "^\?" | gawk '{print $2}' | xargs -r svn add 
svn status | grep "^\!" | gawk '{print $2}' | xargs -r svn remove 

EDIT: Dzięki cesar, tutaj jest prostsza wersja:

svn status | gawk '/^\?.*/ {print $2}' | xargs -r svn add 
svn status | gawk '/^\!.*/ {print $2}' | xargs -r svn remove 
+1

dlaczego nie pominąć grep i po prostu przejść z: 'svn status | gawk '/ ^\?.*/ {print $ 2}' | xargs -r svn add' – cesar

+2

@anonymous Dobre pytanie, prawdopodobnie dlatego, że już wcześniej przeszedłem przez grep, aby zobaczyć rzeczywiste wyjście, zanim spróbuję coś z nim zrobić. I oczywiście nie czytając strony man gawk i dlatego nie znając tej składni. Dzięki. –

+0

Co z nazwami plików zawierającymi spacje? Nie znam wystarczającej składni gawk, aby zmienić seperator rekordów na \ 0 ... – moi

0

(Poprawa @Eric odpowiedź -Karl za)

Works dla:

  • ścieżki z „przestrzeni” zwęgla
  • ścieżek „@” zwęgla
  • ścieżek „\” znaków (na MSYS powłoki)

svn status | perl -ne 'print "$1\0" if /^\?\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn add '[email protected]' 
svn status | perl -ne 'print "$1\0" if /^\!\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn remove '[email protected]' 
Powiązane problemy