Subversion
Przykład użycia
edytujDla 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
edytujCałkowite usunięcie rewizji większych niż N
edytujW 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
edytujW 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
edytujfind wc -type f ! -ipath '*.svn*' | xargs ls -lS | less
Podczas dodawania katalogów dostaje komunikat "Naruszenie ochrony pamięci"
edytujCzasami 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
edytujSubversion 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
edytujTo 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
edytujhttp://www.free-x.ch/pub/mtree-tripwire.html
Ściągawka
edytuj
Szybki startedytujsvnadmin create /var/svnroot svn import 'LocalDir' file:///var/svnroot/'ProjectName' svn checkout file:///var/svnroot/'ProjectName' cd 'ProjectName' svn help ['command'] Adresy URL Subversionedytuj
Podpolecenia svnedytuj
|
Przełączniki svnedytuj
|
Zobacz także
edytujpolskie
edytujhttp://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
edytujOficjalna 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
edytujUzyskiwanie 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
edytujprezentacja SVK techniką slajdów