[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
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.
sshZdalny 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
[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
Debian Reference
CVS, czwartek, 18 styczeń 2007, 11:53:26 UTCosamu#at#debian.orgfenio@o2.pl