Przeczytaj (np. przeglądarką lynx
) pliki:
/usr/share/doc/cvs/html-cvsclient
,
/usr/share/doc/cvs/html-info
, /usr/share/doc/cvsbook
lub wykonaj polecenia: info cvs oraz man cvs w celu
uzyskania dokładnych informacji.
Poniższe ustawienia pozwalają na wprowadzanie zmian w repozytorium wyłącznie użytkownikom należącym do grupy „src”, a na administrację CVS wyłącznie członkowi grupy „staff”, redukując w ten sposób szanse zastrzelenia samego siebie.
# cd /var/lib; umask 002 ; mkdir cvs # [Woody] FSH # apt-get install cvs cvs-doc cvsbook # export CVSROOT=/var/lib/cvs # cd $CVSROOT # chown root:src . # „staff” dla większych ograniczeń rozpoczynania projektów # chmod 3775 . # Jeśli w powyższym występuje „staff”, użyj 2775 # cvs -d /var/lib/cvs init # bezpieczniej jest określić -d tutaj! # cd CVSROOT # chown -R root:staff . # chmod 2775 . # touch val-tags # chmod 664 history val-tags # chown root:src history val-tags
Poniżej znajdują się przykłady konfiguracji środowiska powłoki dla dostępu do repozytoriów CVS.
Zdalny dostęp tylko do odczytu:
$ export CVSROOT=:pserver:anonymous@cvs.sf.net:/cvsroot/qref $ cvs login $ cvs -z3 co qref
Dostęp lokalny z powłoki na tej samej maszynie:
$ export CVSROOT=/var/lib/cvs
Zdalny dostęp bez SSH (używając obsługi RSH w cvs
):
$ export CVSROOT=:pserver:account@cvs.foobar.com:/var/lib/cvs $ cvs login
Jest to metoda podatna na podsłuch.
ssh
Zdalny dostęp z SSH:
$ export CVSROOT=:ext:account@cvs.foobar.com:/var/lib/cvs
lub dla SourceForge:
$ export CVSROOT=:ext:account@cvs.sf.net:/cvsroot/qref
Możesz również użyć uwierzytelnienia RSA (Połączenia z mniejszą ilością haseł – RSA, Rozdział 9.5.3), które eliminuje pytanie o hasło.
Dla,
OBIEKT WARTOŚĆ ZNACZENIE Drzewo źródeł: ~/project-x Wszystkie kody źródłowe Nazwa projektu: project-x Nazwa projektu Źródło modułu: Main-branch Nazwa całego modułu (vendortag) Etykieta wydania: Release-original Nazwa wydania (releasetag)
Wykonaj,
$ cd ~/project-x # przejdź do katalogu ze źródłami ... stwórz drzewo źródeł ... $ cvs import -m "Start project-x" project-x Main-branch Release-original $ cd ..; rm -R ~/project-x
Praca nad projektem project-x przy użyciu lokalnego repozytorium:
$ cd # przejście do przestrzeni roboczej $ cvs co project-x # pobranie źródeł z CVS-u $ cd project-x ... wprowadzanie zmian w zawartości ... $ cvs diff -u # podobne do diff -u repozytorium/ lokalne/ $ cvs up -C modyfikowany_plik # cofnięcie zmian w pliku $ cvs ci -m "Opisz zmiany" # wysłanie modyfikacji do CVS $ vi nowy_plik $ cvs add nowy_plik $ cvs ci -m "Dodano nowy_plik" $ cvs up # pobranie najnowszych wersji z CVS ... by utworzyć wszystkie nowoutworzone katalogi w CVS użyj ... "cvs up -d -P" w zastępstwie. ... uważaj na linie zaczynające się od „C nazwa_pliku” ... kod niezmodyfikowany przeniesiony jest do `.#nazwa_pliku.wersja'. ... szukaj "<<<<<<<" i ">>>>>>>" w nazwa_pliku. $ cvs tag Release-1 # dodaj symboliczną nazwę wydania ... edytuj dalej ... $ cvs tag -d Release-1 # usuń nazwę wydania $ cvs ci -m "następne komentarze" $ cvs tag Release-1 # ponownie dodaj nazwę wydania $ cd # wróć do przestrzeni roboczej $ cvs co -r Release-initial -d old project-x ... pobierz wersję oryginalną do katalogu old $ cd old $ cvs tag -b Release-initial-bugfixes # stwórz nazwę odgałęzienia (-b) ... możesz teraz pracować na starej wersji (Tag=sticky) $ cvs update -d -P # nie twórz pustych katalogów ... drzewo źródeł ma teraz trwałą (sticky) nazwę „Release-initial-bugfixes” ... pracuj na tym odgałęzieniu $ cvs up -d -P # zsynchronizuj z plikami modyfikowanymi przez innych w tej gałęzi $ cvs ci -m "check into this branch" $ cvs update -kk -A -d -P ... usuń trwałą nazwę i zapomnij zawartość ... aktualizuj z głównego pnia bez rozwijania słów kluczowych $ cvs update -kk -d -P -j Release-initial-bugfixes ... włączenie z odgałęzienia Release-initial-bugfixes do drzewa ... głównego. Napraw konflikty edytorem. $ cvs ci -m "włączono Release-initial-bugfixes" $ cd $ tar -cvzf old-project-x.tar.gz old # stwórz archiwum, -j dla bz2 $ cvs release -d old # usuń lokalne źródła (opcjonalne)
Miłe opcje do zapamiętania (używaj jako pierwszych opcji dla cvs
):
-n pusty przebieg, żadnych efektów -t wyświetl komunikaty pokazujące etapy pracy cvs
Aby pobrać najnowszą wersję z CVS użyj „tomorrow”:
$ cvs ex -D tomorrow nazwa_modułu
Dodaj alias dla projektu (serwer lokalny):
$ su - admin # członek grupy staff $ export CVSROOT=/var/lib/cvs $ cvs co CVSROOT/modules $ cd CVSROOT $ echo "px -a project-x" >>modules $ cvs ci -m "px jest teraz aliasem project-x" $ cvs release -d . $ exit # Ctrl-D aby wyjść z su $ cvs co -d project px ... pobierz project-x (alias:px) z CVS to katalogu project $ cd project ... wprowadź zmiany w zawartości ...
0
CVS nie nadpisuje aktualnych plików w repozytorium, tylko zastępuje je innymi. Z tego powodu, pozwolenie na pisanie do katalogu z repozytorium ma kluczowe znaczenie. Dla każdego nowego repozytorium, wykonaj następujące czynności aby zapewnić ten warunek.
# cd /var/lib/cvs # chown -R root:src repozytorium # chmod -R ug+rwX repozytorium # chmod 2775 repozytorium # jeśli potrzebne, w podkatalogu
Bit wykonywalności pliku jest zachowany przy pobieraniu z CVS. Kiedy tylko zobaczysz problem z prawem do wykonywania w pobranych plikach, zmień uprawnienia pliku w repozytorium następującym poleceniem.
# chmod ugo-x nazwa_pliku
Oto polecenia CVS wraz ze skrótami.
{add|ad|new} [-k kflag] [-m 'komunikat'] pliki... {admin|adm|rcs} [opcje-rcs] pliki... {annotate|ann} [opcje] [pliki...] {checkout|co|get} [opcje] moduły... {commit|ci|com} [-lnR] [-m 'podsumowanie_zmian' | -f file] \ [-r rewizja] [pliki...] {diff|di|dif} [-kl] [opcje_rcsdiff] [[-r rev1 | -D data1] \ [-r rev2 | -D data2]] [pliki...] {export|ex|exp} [-flNn] -r rev|-D data [-d katalog] [-k kflag] moduł... {history|hi|his} [-report] [-flags] [-options args] [pliki...] {import|im|imp} [-opcje] repozytorium vendortag releasetag... {login|logon|lgn} {log|lo|rlog} [-l] opcje-rlog [pliki...] {rdiff|patch|pa} [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] moduły... {release|re|rel} [-d] katalogi... {remove|rm|delete} [-lR] [pliki...] {rtag|rt|rfreeze} [-falnR] [-b] [-d] [-r tag | -D data] \ nazwa_symboliczna moduły... {status|st|stat} [-lR] [-v] [pliki...] {tag|ta|freeze} [-lR] [-F] [-b] [-d] [-r tag | -D data] [-f] \ nazwa_symboliczna [pliki...] {update|up|upd} [-AdflPpR] [-d] [-r tag|-D data] pliki...
Subversion jest systemem kontroli wersji nowej generacji, który tworzony był z myślą o zastąpieniu CVS. Według twórców jest on obecnie w stanie „alpha”, jednak prawdopodobnie jest wystarczająco stabilny dla większości użytkowników. W momencie powstawania tego tekstu, Subversion dostępny jest wyłącznie w niestabilnej gałęzi Debiana.
Meta-pakiet subversion-server
jest zależny od wymaganych do użycia
systemu Subversion pakietów (libapache2-dav-svn
oraz
subversion-tools
).
Aktualnie, pakiet subversion
nie tworzy repozytorium, więc musi
być ono utworzone ręcznie. Jednym z możliwych miejsc dla repozytorium jest
/var/local/repos
.
Utwórz katalog:
# mkdir -p /var/local/repos
Utwórz bazę danych repozytorium:
# svnadmin create /var/local/repos
Daj prawo do zapisu w repozytorium serwerowi WWW:
# chown -R www-data:www-data /var/local/repos
Aby umożliwić dostęp do repozytorium przez uwierzytelnienie użytkownika, dodaj
(lub usuń komentarz) następujące wpisy do
/etc/apache2/mods-available/dav_svn.conf
:
<Location /repos> DAV svn SVNPath /var/local/repos AuthType Basic AuthName "Repozytorium Subversion" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Następnie stwórz plik z hasłami użytkowników używając polecenia:
htpasswd2 -c /etc/subversion/passwd jakiś-użytkownik
Przeładuj Apache2, a Twoje nowe repozytorium Subversion będzie dostępne pod adresem http://nazwa_hosta/repos.
Poniższe części pokazują jak używać różnych poleceń w Subversion.
Aby stworzyć nowe archiwum Subversion, napisz poniższe polecenia:
$ cd ~/twój-projekt # przejdź do katalogu źródeł $ svn import http://localhost/repos twój-projekt \ nazwa-projektu -m "początkowy import projektu"
Tworzy to katalog o nazwie nazwa-projektu w Twoim repozytorium. Katalog ten zawiera pliki Twojego projektu. Sprawdź pod adresem http://localhost/repos/ czy się tam znalazł.
Praca z project-y przy użyciu Subversion:
$ cd # przejdź do przestrzeni roboczej $ svn co http://localhost/repos/project-y # pobierz źródła $ cd project-y ... wykonaj pracę ... $ svn diff # podobne do diff -u repozytorium/ lokalne/ $ svn revert modyfikowany_plik # cofnij zmiany w pliku $ svn ci -m "Opisz zmiany" # wyślij pliki do repozytorium $ vi dodany_plik $ svn add dodany_plik $ svn add nowy_katalog # rekursywnie dodaj pliki z nowy_katalog $ svn add -N new_dir2 # nierekursywnie dodaj nowy katalog $ svn ci -m "Dodano nowy_plik, nowy_katalog, nowy_katalog2" $ svn up # pobranie najnowszej wersji z repozytorium $ svn log # pokazuje wszystkie wprowadzone zmiany $ svn copy http://localhost/repos/project-y \ http://localhost/repos/project-y-branch \ -m "Tworzę własną gałąź project-y" # rozgałęzienie project-y $ svn copy http://localhost/repos/project-y \ http://localhost/repos/proj-y_release1.0 \ -m "project-y 1.0 release" # dodanie tagu release ... zauważ, że odgałęzianie i tagowanie są tym samym. Jedyną różnicą jest to, ... że gałęzie można uaktualniać, a tagów nie. ... wprowadzaj zmiany w gałęzi ... $ # połącz odgałęzienie z gałęzią główną $ svn merge http://localhost/repos/project-y \ http://localhost/repos/project-y-branch $ svn co -r 4 http://localhost/repos/project-y # pobierz rewizję 4
Debian Reference
CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTCosamu@debian.org
fenio@o2.pl