Repozytoria
From Rootnode
Contents |
CVS
Aby korzystać z CVSu musisz skonfigurować logowanie do serwera po kluczach. Można to zrobić poprzez dodanie swojego klucza lokalnego do pliku ~/.ssh/authorized_keys lub ściągnięcie pliku klucza prywatnego ~/.ssh/id_rsa do siebie.
- Tworzymy repozytorium CVS w katalogu domowym:
cvs -d /home/<login>/sciezka/do/CVS init
- Na komputerze lokalnym ustawiamy:
export CVS_RSH="ssh"
export CVSROOT="${USER}@<serwer>.rootnode.net:/home/<login>/sciezka/do/CVS"
| przykład |
cvs -d /home/bongo/CVS init export CVS_RSH="ssh" export CVSROOT="bongo@k.rootnode.net:/home/bongo/CVS"
Subversion
Subversion (znany również jako SVN) - system kontroli wersji, który powstał w celu zastąpienia CVS. Wciąż najpopularniejszy, jednak coraz częściej wypierany przez Git.
Repozytorium przez HTTP / www / WebSVN
Przykładowe repozytorium umieścimy w katalogu ~/www/svn. Wybór katalogu jest oczywiście (prawie) dowolny - musicie tylko pamiętać, żeby całe repozytorium znajdowało się gdziekolwiek w katalogu ~/www. Może się ono znajdować w htdocs wybranego vhostu, obok katalogu htdocs czy nawet w logs.
Przechodzimy do wybranego przez nas katalogu, tworzymy odpowiednie katalogi, tworzymy repozytorium poleceniem svnadmin
| przykład |
$ cd ~/www $ mkdir svn $ mkdir svn/repo dla użytkowników Korna: $ svnadmin create --pre-1.5-compatible ~/www/svn/repo dla użytkowników Stallmana: $ svnadmin create ~/www/svn/repo
Upewniamy się, że wszystko wygląda tak jak należy wydając polecenie tree
$ tree ~/www/svn
/home/$USER/www/svn
`-- repo
|-- README.txt
|-- conf
| |-- authz
| |-- passwd
| `-- svnserve.conf
|-- dav
|-- db
| |-- current
| |-- format
| |-- fs-type
| |-- revprops
| | `-- 0
| |-- revs
| | `-- 0
| |-- transactions
| |-- uuid
| `-- write-lock
|-- format
|-- hooks
| |-- post-commit.tmpl
| |-- post-lock.tmpl
| |-- post-revprop-change.tmpl
| |-- post-unlock.tmpl
| |-- pre-commit.tmpl
| |-- pre-lock.tmpl
| |-- pre-revprop-change.tmpl
| |-- pre-unlock.tmpl
| `-- start-commit.tmpl
`-- locks
|-- db-logs.lock
`-- db.lock
9 directories, 23 files
Konfigurujemy Apache'a
Aby wykonać ten krok, powinieneś posiadać już skonfigurowany jakikolwiek vhost, jeśli jeszcze tego nie zrobiłeś zajrzyj na stronę o zakładniu vhostu i wróć tutaj. W tym kroku skorzystamy z pliku konfiguracyjnego ruletheworldwithpowerofsvn, który należy stworzyć w katalog /conf naszego vhostu...
| przykład |
$ cd www/bongo.pl/conf $ touch ruletheworldwithpowerofsvn
... i odpowiednio uzupełnić. Przykładową konfigurację oraz objaśnienie poszczególnych parametrów (rozdzielonych dwukropkiem) znajdziesz poniżej. Konfigurację można oczywiście zmieniać i pliki konfigurujące prawa dostępu czy użytkowników mogą znajdować się w dowolnym miejscu.
|
Należy pamiętać, że wszystkie pliki powinny być gdziekolwiek w katalogu /home/<login>/www. |
repo:/home/bongo/www/svn::Witaj:/home/bongo/www/svn/svnaccess:/home/bongo/www/svn/authz a w przypadku skorzystania z opcji iwantsvnpath (opis niżej) repo:/home/bongo/www/svn/repo::Witaj:/home/bongo/www/svn/svnaccess:/home/bongo/www/svn/authz 1. lokalizacja (URI) - człon, który dopiszemy do adresu naszego vhostu, aby dostać się do repozytorium (repo), 2. katalog nadrzędny względem repozytorium(/www/svn) lub katalog repozytorium na dysku (/www/svn/repo), 3. opcjonalna ścieżka do pliku xslt (pusto), 4. nazwa wyświetlana przy logowaniu (Witaj), 5. ścieżka do pliku z użytkownikami (/home/bongo/www/svn/svnaccess), 6. ścieżka do pliku z prawami dostępu (/home/bongo/www/svn/authz).
Analogicznych wpisów w ruletheworldwithpowerofsvn może być oczywiście więcej, każdy w nowym wierszu. Wystarczy skopiować jeden wpis i zmienić pierwsze dwa parametry (URI i ścieżkę do katalogu repozytorium). Dzięki temu możemy bez trudu ustawić kilka repozytoriów.
Ustawiamy uprawnienia
Aby SVN działał musimy jeszcze skonfigurować konta użytkowników, w tym celu w miejscu podanym we wpisie w ruletheworldwithpowerofsvn tworzymy odpowiednie pliki: svnaccess - jego nazwa i lokalizacja jest zależna od szóstego parametru wpisu. W naszym przypadku dla użytkownika bongo i domyślnej ścieżki z poprzedniego punktu robimy tak:
| przykład |
$ cd ~/www/svn $ htpasswd -c svnaccess bongo
Po wpisaniu hasła utworzony zostanie użytkownik bongo, teraz należy mu nadać uprawnienia do zapisu/odczytu repozytorium. Wszelka konfiguracja odbywa się poprzez plik podany jako siódmy parametr w ruletheworldwithpowerofsvn - plik authz.
$ cd ~/www/svn $ touch authz
[/] bongo = rw * = r [repo:/] bongo = rw * = r
W powyższym przykładzie nadaliśmy wszędzie prawa odczytu i zapisu dla użytkownika bongo i prawa odczytu dla wszystkich pozostałych. Możemy też tworzyć grupy użytkowników, wygląda to tak:
[groups] devel = marek, zdzisiek [/] @devel = rw bongo = r * = [repo:/] @devel = rw bongo = r * =
Tutaj nadaliśmy prawa odczytu i zapisu dla użytkowników z grupy devel, oprócz tego użytkownik bongo ma prawo do odczytu, a dla całej reszty zostaje figa z makiem.
iwantsvnpath
Standardowo adres dostępowy składamy w taki sposób: [nazwa_naszego_vhostu]/[URI_podane_w_ruletheworldwithpowerofsvn(pierwszy_parametr)]/[katalog_w_repozytorium] Domyślnie w apache'u zapisywana jest konfiguracja SVN-a z polem SVNParentPath. Oznacza to, że w naszym przypadku katalog /home/<login>/www/svn jest rodzicem repozytoriów, wewnątrz niego właśnie powinniśmy tworzyć repozytoria. Innymi słowy jeśli stworzymy w pliku ruletheworldwithpowerofsvn wpis:
repo:/home/<login>/www/svn::witaj:/home/<login>/www/svn/svnaccess:/home/<login>/www/svn/authz
to nasz adres dostępowy do repozytorium o nazwie repo będzie następujący: http://bongo.pl/repo/repo Jeśli podwójna nazwa nam nie w smak, możemy utworzyć plik iwantsvnpath w katalogu konfiguracyjnym vhostu, dzięki któremu zamiast zmiennej SVNParentPath w konfiguracji SVN-a w Apache'a będzie zapisywana zmienna SVNPath.
$ touch ~/www/bongo.pl/conf/iwantsvnpath
W tym przypadku oznacza to, że drugi wpis w ruletheworldwithpowerofsvn odnosić się będzie do konkretnego repozytorium:
repo:/home/<login>/www/svn/repo::witaj:/home/<login>/www/svn/svnaccess:/home/<login>/www/svn/authz
Tu adres dostępowy do repozytorium o nazwie repo będzie następujący: http://bongo.pl/repo
Odświeżenie konfiguracji
Ostatnim krokiem jest poinformowanie systemu Szatana, że zmieniliśmy ustawienia. W tym celu wydajemy polecenie, czekamy maksymalnie 30 minut i sprawdzamy efekty.
satan vhost reload bongo.pl bongo.pl
Repozytorium przez ssh
To jest najprostsza i najszybsza opcja, jednak czasami kłopotliwa przy konfiguracji klientów SVN. Tak jak w poprzednim przypadku tworzymy katalogi oraz repozytorium.
$ mkdir ~/svn $ svnadmin create ~/svn
Teraz wystarczy "dostać się" do naszego nowego repozytorium. Można na przykład skorzystać z tego poradnika i podać taki adres repozytorium:
svn+ssh://k.rootnode.net/pelna/sciezka/do/katalogu/svn'a
| przykład |
svn+ssh://k.rootnode.net/home/bongo/svn
Dostęp do SVN z Windowsa
Dostęp do SVN z Windowsa
- Potrzebne oprogramowanie:
- Instalujemy na komputerze klienckim TortoiseSVN i ściągamy pozostałe dwa programy.
- Za pomocą PuTTYgen generujemy klucz którym będziemy się posługiwać. Najlepiej zachować go bez hasła (ułatwi to korzystanie z repo)
- Zapisujemy klucz prywatny na dysku.
- Klucz publiczny wklejamy do pliku ~/.ssh/authorized_keys na serwerze
- Modyfikujemy plik ~/.ssh/authorized_keys w taki sposób by przed kluczem (który wkleiliśmy wcześniej) znajdował się następujący zapis:
command="/usr/bin/svnserve -t --tunnel-user nazwa_użytkownika"
Zamiast nazwa_użytkownika wstawiamy nazwę użytkownika zdefiniowaną przez nas w pliku w katalogu /conf/passwd naszego repozytorium.
- uruchamiamy Pageant
- Dodajemy do niego nasz zapisany klucz prywatny.
- Do repozytorium łączymy się za pomocą adresu
svn+ssh://<nazwa_użytkownika>@k.rootnode.net/pelna/sciezka/do/katalogu/svn'a
| przykład |
svn+ssh://bongo@k.rootnode.net/home/svn/repozytorium
Dostęp do SVN'a z eclipsa
- Do eclipsa doinstalowujemy wtyczkę do SVN'u.
- W przypadku dostępu poprzez svn+ssh zmieniamy SVN Interface na SVNKit (Window->Preferences->Team->SVN)
- W widoku SVN Repository dodajemy nasze repozytorium np.: "svn+ssh://k.rootnode.net/home/<login>/svn"
Dodatkowa konfiguracja
W katalogu konfiguracyjnym repozytorium (w naszym przypadku to ~/www/svn/repo/conf) znajdziemy plik svnserve.conf, w którym możemy ustawić więcej opcji.
Maile z SVN
W katalogu hook w repozytorium (w naszym przypadku to ~/www/svn/repo/hook) znajdziemy plik post-commit.tmpl, w którym możemy np. ustawić email na jaki ma być wysłany mail z informacją o commicie. Należy zmienić nazwę pliku i pozwolić na jego wykonywanie:
mv post-commit.tmpl post-commit chmod +x post-commit
Następnie w pliku należy zmienić commit-watchers@example.org na swój adres email, oraz dopisać: --from nazwa_uzytkownika@korn.rootnode.net. Czyli ostatecznie np.:
| przykład |
/usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" bongo@bongo.pl --from bongo@korn.rootnode.net
Git
Git – rozproszony system kontroli wersji stworzony przez Linus Torvalds jako narzędzie wspomagające rozwój jądra Linux. Głównymi zaletami jest szybkość, efektywność i użyteczność niezależna od wielkości projektu.
Repozytorium lokalne
Metoda ta zakłada, że posiadamy już lokalne repozytorium z kodem.
- Tworzymy kopie aktualnego repozytorium (lokalnie na desktopie)
$ cd $ git clone --bare <sciezka do projektu> <nazwa projektu>.git $ tar c <nazwa projektu>.git | gzip -9 > <nazwa projektu>.git.tar.gz
- Kopiujemy źródła na serwer shellowy/główny do katalogu domowego.
scp <nazwa projektu>.git.tar.gz <login>@<serwer>.rootnode.net:~/
| przykład |
scp mojProjekt.git.tar.gz bongo@k.rootnode.net:~/
- Rozpakowujemy wgrane pliki na serwerze shellowym
gunzip -c <nazwa projektu>.git.tar.gz | tar xvf -
| przykład |
gunzip -c mojProjekt.git.tar.gz | tar xvf -
- Klonujemy repozytorium na komputer lokalny
git clone <login>@<serwer>.rootnode.net:~/<nazwa projektu>.git <nawa lokalnego katalogu>
| przykład |
git clone bongo@k.rootnode.net:~/mojProjekt.git mojNowyProjekt
Tworzenie repozytorium zdalnego
Przykłady poleceń można zobaczyć w punkcie wyżej - GIT - Repozytorium lokalne
- Tworzymy repozytorium
$ mkdir <nazwa projektu>.git && cd <nazwa projektu> $ git init-db
- Klonujemy repozytorium na komputer lokalny
git clone <login>@stallman.rootnode.net:~/<nazwa projektu>.git <nawa lokalnego katalogu>
Praca z repozytorium
Git cechuje się rozproszonym podejściem do problemu kontroli wersji, użytkownik posiada własne, lokalne repozytorium, do którego commituje zmiany. Następnie lokalne repozytorium jest synchronizowane ze zdalnym. Poniższa lista przedstawia podstawowe działa z którymi spotka się każdy user gita.
1. Modyfikujemy pliki projektu i dorzucamy je do commita
git add <plik projektu>
2. Commitujemy własne zmiany do lokalnego repozytorium
git commit
3. Dociągamy zmiany ze zdalnego repozytorium, poprawiamy swój kod, commitujemy zmiany
git pull
4. Wrzucamy nasz kod do zdalnego repozytorium
git push
Notka: git <push|pull> będzie operować na repozytorium z którego zrobiliśmy clone, jeśli zdalne repozytorium bylo na stallmanie, stad synchronizacja będzie następowała z ta lokacja.
WebDAV
Krok pierwszy
Aby skonfigurować WebDAV w katalog /conf naszego vhostu musimy utworzyć plik callthechtulhuwithdarkforceofdav.
| przykład |
$ cd ~/www/bongo.pl/conf $ touch callthechtulhuwithdarkforceofdav
Krok drugi
Teraz otwórz plik dowolnym edytorem tekstu i uzupełnij go. Plik musi składać się z czterech członów rozdzielonych dwukropkiem. Przykładowy wpis:
davloc:/home/bongo/www/dav:Witaj:/home/bongo/www/.webdavpass
- davloc: to jest lokalizacja którą podajemy na końcu urla w kliencie WebDAV - na przykład
http://bongo.pl/davloc
- Drugi człon, to katalog który będzie dostępny przez WebDAV. Pamiętaj, że musi gdziekolwiek on być w katalogu /home/user/www. Twój katalog domowy nie jest widziany przez serwer www. - w naszym wypadku jest to /home/bongo/www/dav
- Trzeci człon to nazw jaka nam się pojawi przy próbie uwierzytelnienie. Witaj
- Czwarty człon to plik zawierający użytkowników i ich hasła, którzy będą mogli korzystać z WebDAV. W naszym wypadku jest to plik /home/bongo/www/.webdavpass
Plik należy stworzyć poleceniem htpasswd. passwordFile to nazwa pliku, user to nazwa dodawanego użytkownika.
htpasswd -c /home/user/www/passwordFile user
| przykład |
htpasswd -c /home/bongo/www/.webdavpass bongo
Krok trzeci
Teraz pozostaje nam tylko czekać na odświeżenie konfiguracji apache'a. Jeśli nie lubisz czekać i zależy Ci na czasie poinformuj apache'a, że coś się zmieniło w Twoich vhostach wydając polecenie
satan vhost reload bongo.pl bongo.pl
Problemy
Jeśli podczas próby zapisu plików do swojej stworzonej lokalizacji w pliku logs/error.log pojawiają się wpisy
[error] [client IP] The locks could not be queried for verification against a possible "If:" header. [500, #0] [error] [client IP] Could not open the lock database. [500, #400] [error] [client IP] (2)No such file or directory: Could not open property database. [500, #1]
Może to oznaczać, że brakuje Ci pliku .davlockdb w katalogu conf - tym samym katalogu, w którym umieściłeś plik callthechtulhuwithdarkforceofdav. Po prostu stwórz plik i nadaj mu odpowiednie uprawnienia.
cd ~/www/vhost/conf touch .davlockdb chmod 755 .davlockdb
