Subversion
Z Wikibooks, biblioteki wolnych podręczników.
Spis treści |
[edytuj] Porównanie git i svn według komend
[edytuj] Przykład użycia
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 .
[edytuj] FAQ
[edytuj] Całkowite usunięcie rewizji większych niż N
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
[edytuj] vimdiff jako domyślny
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
[edytuj] wyświetlenie plików według rozmiaru z pominięciem .svn
find wc -type f ! -ipath '*.svn*' | xargs ls -lS | less
[edytuj] Podczas dodawania katalogów dostaje komunikat "Naruszenie ochrony pamięci"
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.
[edytuj] Instalacja na gentoo
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
[edytuj] Wersjonowanie konfiguracji
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 :-)
[edytuj] Mtree
http://www.free-x.ch/pub/mtree-tripwire.html
[edytuj] Ściągawka
[edytuj] Szybki startsvnadmin create /var/svnroot svn import 'LocalDir' file:///var/svnroot/'ProjectName' svn checkout file:///var/svnroot/'ProjectName' cd 'ProjectName' svn help ['command'] [edytuj] Adresy URL Subversion
[edytuj] Podpolecenia svn
|
[edytuj] Przełączniki svn
|
[edytuj] Zobacz także
[edytuj] polskie
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ą)
[edytuj] angielskie
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
http://www.cs.put.poznan.pl/csobaniec/Papers/svn-refcard.pdf ściąga dla svn
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
[edytuj] o'reilly
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
[edytuj] SVK
prezentacja SVK techniką slajdów

