Zanim jednak pojawiłem się na spotkaniu rozwiązałem pewien problem organizacyjny. Ileż to razy przyszło mi pracować lokalnie z dokumentem czy projektem, kiedy to chciałem móc wrócić do poprzedniej wersji? Na pewno uzbierałoby się tego trochę, ale jakimś cudem, mimo ciągłej pracy z repozytoriami SVN, nigdy nie przyszło mi do głowy, aby założyć własne...lokalnie. W końcu nic nie kosztuje, a może uratować cenny czas. Dzisiaj przypadkiem trafiłem na stronę Subversion Cheat Sheet i zrozumiałem, że koniec dumania czy warto, a po prostu należy skorzystać, bo jest i to całkowicie bezpłatnie (finansowo i czasowo). Teraz każdorazowo przy utrzymywaniu jakiegokolwiek pliku tekstowego umieszczę go w moim lokalnym repozytorium. W końcu zamiast serii Ctrl+Z można skorzystać z svn revert, czyż nie?
Rozpoczynam od utworzenia lokalnego repozytorium SVN.
jlaskowski@work /cygdrive/c/projs/sandboxPora na zestawienie początkowej struktury katalogowej projektu, który trafi do repozytorium. Zaleca się utworzenie podkatalogów trunk (główna gałąź rozwojowa), branches (odgałęzienia) oraz tags (wersje oznakowane).
$ svnadmin create 'c:/projs/sandbox/.svn_repo'
jlaskowski@work /cygdrive/c/projs/sandbox/projektW trunk umieszczam przykładowy plik README.txt.
$ mkdir trunk branches tags
jlaskowski@work /cygdrive/c/projs/sandbox/projektWszystko do tej pory robię z poziomu katalogu projektu, który ostatecznie importuję do lokalnego repozytorium.
$ ls -lR
.:
total 0
drwxr-xr-x+ 2 jlaskowski None 0 Sep 16 23:24 branches
drwxr-xr-x+ 2 jlaskowski None 0 Sep 16 23:24 tags
drwxr-xr-x+ 2 jlaskowski None 0 Sep 16 23:24 trunk
./branches:
total 0
./tags:
total 0
./trunk:
total 0
-rw-r--r-- 1 jlaskowski None 0 Sep 16 23:23 README.txt
jlaskowski@work /cygdrive/c/projs/sandbox/projektPierwsza wersja znalazła się w repozytorium. Teraz wystarczy pobrać projekt na dowolne miejsce na dysku.
$ svn import . 'file:///c:/projs/sandbox/.svn_repo/projekt' -m 'Rozpoczynamy'
Adding trunk
Adding trunk/README.txt
Adding branches
Adding tags
Committed revision 1.
jlaskowski@work /cygdrive/c/projs/sandboxI tyle. Projekt jest już utrzymywany przez SVN. Oczywiście nie uchroni to przed awarią komputera, ale jako wsparcie kopii zapasowych, powinno być wręcz nieodzowne. Teraz mogę już zmieniać pliki dowolnie i przy najmniejszym wahaniu wrócić do poprzednich wersji. Mam wybór i o to chodzi.
$ svn co 'file:///c:/projs/sandbox/.svn_repo/projekt/trunk' projekt
A projekt/README.txt
Checked out revision 1.
jlaskowski@work /cygdrive/c/projs/sandbox
$ ls -l projekt/
total 0
-rw-r--r-- 1 jlaskowski None 0 Sep 16 23:26 README.txt
Szczegolnie do lokalnych projektow najlepszy jednak jest git. Nie trzeba zadnych repository po prostu wchodzisz do katalogu z projektem i:
OdpowiedzUsuńgit init
git add *
zmiany zmiany zmiany i...
git commit -a -m "blah blah"
Kiedy chcesz zrobic backup na zewnetrznym serwerze to po prostu 'git push' i juz... Ale jednak w wiekszosci przypadkow, szczegolnie jesli chodzi o zwykle projekty-experymenty to wystarcza jednak taka lokalna historia katalogu.
pozdrawiam,
kuba
Słyszałem/czytałem, że git to svn Linusa, więc warto byłoby się jemu przyjrzeć. Rozumiem, że git init to po prostu skrót dla svnadmin create "ścieżka", bo w końcu gdzieś owe repozytorium musi być. Wolałbym nie trzymać go w tym samym katalogu, co projekt, chociaż w przypadku jedynie wymagania dla wersjonowania dokumentów, dlaczego nie. Dzięki za inspirację, aby spojrzeć na gita. Może polecasz jakiś dokument w stylu "Git w 5 minut", abym nie musiał zaglądać do pełnej dokumentacji (jeszcze nie zaglądałem, więc może tam znajdę ową 5-ciominutówkę)? Jeszcze raz dziękuję!
OdpowiedzUsuńgit +1
OdpowiedzUsuń