Subversion
Przykład użycia
[edytuj]Dla wygody ustawmy zmienną SVN na adres gdzie będziemy działać.
export SVN="$HOME/dokumenty/sandbox/svn" mkdir -p $SVN cd $SVN
Tworzymy repozytorium
svnadmin create repo
Tworzenie tymczasowego katalogu, który zostanie zaimportowany do repozytorium. Nasz stary projekt znajduje się w $HOME/projekt1.
mkdir tempdir cd tempdir mkdir project1 mkdir project1/trunk project1/branches project1/tags
Nasz stary projekt kopiujemy do trunk. Tam teraz będzie się odbywał rozwój projektu.
W pewnych miejscach trzeba podać file://$SVN zamiast nazwy katalogu. svn oczekuje bowiem po file:// pełnej ścieżki. Błędne zatem będzie użycie
svn import . repo
prawidłowo będzie
svn import . file://$SVN/repo
cp -R $HOME/projekt1 project1/trunk svn import . file://$SVN/repo
Wyświetlamy listę plików w repozytorium czy się zgadzają z naszym projektem.
svn list --verbose file://$SVN/repo/projekt1/trunk
Tworzymy kopię roboczą, na której będziemy działać.
svn co file://$SVN/repo/projekt1/trunk $SVN/wc
Ponowne utworzenie kopii robczej w tym samym katalogu spwoduje błąd.
svn co file://$SVN/repo/projekt1/trunk $SVN/wc
nie można jeszcze raz zrobić kopi roboczej w danym katalogu. Ale można przełączyć tę kopię roboczą aby używała innego adresu.
svn switch file://$SVN/repo/projekt2/trunk .
Jeśli do naszej kopii roboczej skopiowaliśmy wiele plików i chcemy je dodać do repozytorium, ale nie chcemy przeszukiwać całej kopii roboczej, wydajemy polecenie.
svn add --force .
Alternatywa:
svn status | awk '/\?/ {print $2}' | xargs svn add
FAQ
[edytuj]Całkowite usunięcie rewizji większych niż N
[edytuj]W poniższym przypadku wycofamy wszyskie zmiany do rewizji numer 7. Nie będą one w historii w ogóle.
export SVN="$HOME/dokumenty/sandbox/svn" cd $SVN mkdir dumps svnadmin dump repo --revision 0:7 > dumps/revs-0-7.dumpfile
Przenosimy stare repozytorium w bezpieczne miejsce, tworzymy nowe repozytorium, wrzucamy do niego plik dump.
mv repo repo.old svnadmin create repo svnadmin load repo < dumps/revs-0-7.dumpfile
kopiujemy katalog ze skryptami do nowego repozytorium
cp -R repo.old/hooks repo
vimdiff jako domyślny
[edytuj]W tym przykładzie potrzebujemy zainstalowanego pythona. tworzymy plik /usr/local/bin/mydiff
#!/usr/bin/python import sys, os diffprogram = '/usr/bin/vimdiff' fn_old = sys.argv[6] fn_working_copy = sys.argv[7] # arrange the args in the order diffprogram expects them args = ['mydiff', '-d', fn_old, fn_working_copy] os.execv(diffprogram, args)
w .subversion/config
[helpers] diff-cmd = /usr/local/bin/mydiff
wyświetlenie plików według rozmiaru z pominięciem .svn
[edytuj]find wc -type f ! -ipath '*.svn*' | xargs ls -lS | less
Podczas dodawania katalogów dostaje komunikat "Naruszenie ochrony pamięci"
[edytuj]Czasami taki błąd może wystąpić. Kiedy wykonamy polecenie svn st zobaczymy flage L przy katalogu, który dodawaliśmy. Należy wtedy wykonać polecenie svn cleanup.
Instalacja na gentoo
[edytuj]Subversion używa wspólnych bibliotek współdzielonych razem z apache (prawdopodobnie mod_dav_svn). Dlatego trzeba powiedzieć subversion aby używał bibliotek apache'a ([4]).
Jeśli jeszcze nie używałeś pliku /etc/portage/packages.use:
mkdir /etc/portage touch /etc/portage/package.use echo "dev-util/subversion apache2" >>/etc/portage/package.use emerge subversion
Wersjonowanie konfiguracji
[edytuj]To jest wersja robocza skopiowana z [5]. Trzeba ją jeszcze przerobić i posprawdzać.
Wystarczy zainstalować na jakimś serwerze repozytorium, np. Subversion. Aby zaimportować konfigurację:
- svn import /etc https://svn.foo-baz.com/svn/configuration/my.server.name/etc
Pliki zostały dodane do repozytorium. Teraz najbardziej skomplikowana czynność. Ponieważ katalog /etc nie jest kopią roboczą repozytorium, polecenia takie jak svn commit, svn update nie będą działały. Aby szybko przerobić /etc na kopię roboczą można wykonać następujące polecenia:
- svn co https://svn.foo-baz.com/svn/configuration/my.server.name/etc /tmp/etc/
- rm -f `find /tmp/etc -type f | grep -v '.svn'`
- cp /tmp/etc/* /etc
Teraz można korzystać z /etc jak z każdej innej kopii roboczej (svn update, svn stat, svn commit, itp.). Warto zastanowić się nad mechanizmem zapisywania praw dostępu i właścicieli plików, można skorzystać np. z mtree. Teraz najważniejsze czyli wyrobić w sobie nawyk uruchamiania svn commit po każdej zmianie :-)
Mtree
[edytuj]http://www.free-x.ch/pub/mtree-tripwire.html
Ściągawka
[edytuj]
Szybki start[edytuj]svnadmin create /var/svnroot svn import 'LocalDir' file:///var/svnroot/'ProjectName' svn checkout file:///var/svnroot/'ProjectName' cd 'ProjectName' svn help ['command'] Adresy URL Subversion[edytuj]
Podpolecenia svn[edytuj]
|
Przełączniki svn[edytuj]
|
Zobacz także
[edytuj]polskie
[edytuj]http://www.debian.org/doc/manuals/reference/ch-vcs.pl.html
http://linux.gery.pl/dzialy/programowanie/narzedzia/subversion
Subversion dla każdego - a dokładniej dla użytkowników windows
Wskazówki jak efektywniej używać Subversion (plik xml zapisać na dysku i otworzyć edytorem tekstu a nie przeglądarką)
Tłumaczenie książki Subversion
angielskie
[edytuj]Oficjalna książka do Subversion
Spis wszystkich komend z svn-book
http://del.icio.us/popular/subversion
https://opensvn.csie.org/ Darmowe repozytorium w internecie
Wprowadzenie Red-hata do Subversion
Doświadczenia z używania Subversion
Jak używać Subversion z RubyOnRails
Użtkowanie subversion w projekcie KDE
Instalacja i użytkowanie na gentoo
http://www.svnforum.org/ forum
http://svn.haxx.se/ Archiwum list mailowych
Anonimowy dostęp tylko do odczytu
Trac - system zarządzania projektem z interfejsem sieciowym, używa subversion
Międzyplatformowy graficzny klient
http://www.phptr.com/articles/article.asp?p=408888
Podstawowe użycie - rozdział z książki
How to use bdb instead fsfs correctly
Comparision to other tools (also migration tools)
hook scripts and configuration files under version control
o'reilly
[edytuj]Uzyskiwanie dostępu do zabezpieczonych serwerów Subversion
Stawianie bezpiecznego serwera z Subversion
Artykuł na onlamp.com o używaniu
Rozdział Wprowadzenie z książki Version Control with Subversion
Rozdział drugi książki Version Control with Subversion
Porównianie kilku systemów kontroli wersji
Wielu użytkowników i Subversion
Trzymanie całego życia w Subversion
10 najlepszych porad dla użytkowników CVS
SVK
[edytuj]prezentacja SVK techniką slajdów