Consultez /usr/share/doc/cvs/html-cvsclient
,
/usr/share/doc/cvs/html-info
, /usr/share/doc/cvsbook
avec lynx
ou lancez info cvs et man cvs
pour de l'information détaillée.
La configuration suivante autorise un enregistrement sur le dépôt CVS seulement par un membre du groupe « src », et l'administration de cvs seulement par un membre du groupe « staff », ceci afin de réduire les risques de conflits.
# 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 . # utiliser « staff » pour restreindre plus pour un projet débutant # chmod 3775 . # si la ligne précédente utilise « staff », alors régler sur 2775 # cvs -d /var/lib/cvs init # il est plus prudent de spécifier -d explicitement ici ! # cd CVSROOT # chown -R root:staff . # chmod 2775 . # touch val-tags # chmod 664 history val-tags # chown root:src history val-tags
Ce qui suit configure les environnements de shell pour l'accès au dépôt CVS.
Accès distant en lecture seule :
$ export CVSROOT=:pserver:anonymous@cvs.sf.net:/cvsroot/qref $ cvs login $ cvs -z3 co qref
Accès local depuuis un shell sur la même machine :
$ export CVSROOT=/var/lib/cvs
Accès distant sans SSH (utilise le protocole RSH de cvs
) :
$ export CVSROOT=:pserver:account@cvs.foobar.com:/var/lib/cvs $ cvs login
Cela peut être sujet à des attaques d'écoute de ligne.
ssh
Accès distant avec SSH :
$ export CVSROOT=:ext:account@cvs.foobar.com:/var/lib/cvs
ou pour SourceForge :
$ export CVSROOT=:ext:account@cvs.sf.net:/cvsroot/qref
Vous pouvez aussi utiliser l'authentification RSA (Se connecter avec moins de mots de passe – RSA, Section 9.5.3), qui élimine la demande du mot de passe.
Pour,
OBJET VALEUR SIGNIFICATION Arbre source : ~/project-x Tous le code source Nom du Projet : project-x Nom pour ce projet Balise vendeur : Main-branch Balise pour la branche entière Balise de version : Release-original Balise pour une version spécifique
Ensuite,
$ cd ~/project-x # va dans le répertoire du source ... crée un arbre source ... $ cvs import -m "Start project-x" project-x Main-branch Release-initial $ cd ..; rm -R ~/project-x
Pour travailler avec project-x en utilisant le dépôt CVS local :
$ cd # va à la zone de travail. $ cvs co project-x # importe les sources du CVS en local $ cdproject-x ... effectuez des changements au contenu ... $ cvs diff -u # similaire à diff -u repository/ local/ $ cvs up -C modified_file # undo changes to a file $ cvs ci -m "Décrire les changements" # sauvegarde les sources locales sur CVS $ vi newfile_added $ cvs add newfile_added $ cvs ci -m "Ajout de newfile_added" $ cvs up # récupère la dernière version du CVS ... pour créer les sous-répertoires récemment ajoutés, utilisez ... "cvs up -d -P" à la place ... attention aux lignes commençant par "C filename" ... le code non modifié est déplacé vers `.#filename.version' ... rechercher "<<<<<<<" et ">>>>>>>" dans filename $ cvs tag Release-1 # ajoute une balise de version ... modifiez un peu plus ... $ cvs tag -d Release-1 # enlève une balise de version $ cvs ci -m "commentaires supplémentaires" $ cvs tag Release-1 # rajoute une balise de version $ cd # retourne à la zone de travail. $ cvs co -r Release-initial -d old project-x ... récupère la version originale dans le répertoire old $ cd old $ cvs tag -b Release-initial-bugfixes # création d'une branche (-b) ... maintenant vous pouvez travailler sur l'ancienne version (Tag=sticky) $ cvs update ... l'arbre des sources a maintenant la balise permanente "Release-initial-bugfixes" ... travaillez sur cette branche $ cvs up # synchronise avec les autres développeurs de la branche $ cvs ci -m "ajout à la branche" $ cvs update -kk -A ... enlève la balise collante et oublie le contenu ... met à jour depuis le tronc principal sans le remplacement des mots-clé $ cvs update -kk -j Release-initial-bugfixes ... fusionne la branche Release-initial-bugfixes avec le tronc principal ... sans le remplacement des mots-clé. Réparez les conflits avec un éditeur $ cvs ci -m "merge Release-initial-bugfixes" $ cd $ tar -cvzf old-project-x.tar.gz old # crée une archive, -j pour bz2 $ cvs release -d old # supprimez les sources locales (optionnel)
Options utiles à se rappeler (premier argument de cvs
) :
-n lancement sec, sans effet -t message des étapes de l'activité cvs
Pour avoir la dernière version par CVS, utiliser « tomorrow » :
$ cvs ex -D tomorrow module_name
Ajouter un alias à un projet (serveur local) :
$ su - admin # un membre de l'équipe $ export CVSROOT=/var/lib/cvs $ cvs co CVSROOT/modules $ cd CVSROOT $ echo "px -a project-x" >>modules $ cvs ci -m "Maintenant px est un alias pour project-x" $ cvs release -d . $ exit # Ctrl-D pour quitter su $ cvs co -d project px ... récupère project-x (alias:px) de CVS vers le répertoire du projet $ cd project ... faites les changements de contenu ...
CVS ne va pas écraser le fichier du dépôt courant mais va le remplacer par un autre. Ainsi, la permission en écriture sur le répertoire de dépôt est critique. Pour chaque nouvelle création d'un dépôt, lancez ce qui suit pour vous assurer que cette condition et remplie.
# cd /var/lib/cvs # chown -R root:src repository # chmod -R ug+rwX repository # chmod 2775 repository # si besoin est, ça et les sous-répertoires
Le bit d'exécution de fichier est conservé lorsqu'on quitte la session. Si on observe n'importe quel problème de permission d'exécution dans les fichiers de contrôle, on peut changer la permission sur ce fichier dans le dépôt CVS avec la commande suivante.
# chmod ugo-x filename
Voici les commandes CVS avec leurs raccourcis.
{add|ad|new} [-k kflag] [-m 'message'] files... {admin|adm|rcs} [rcs-options] files... {annotate|ann} [options] [files...] {checkout|co|get} [options] modules... {commit|ci|com} [-lnR] [-m 'log_message' | -f file] \ [-r revision] [files...] {diff|di|dif} [-kl] [rcsdiff_options] [[-r rev1 | -D date1] \ [-r rev2 | -D date2]] [files...] {export|ex|exp} [-flNn] -r rev|-D date [-d dir] [-k kflag] module... {history|hi|his} [-report] [-flags] [-options args] [files...] {import|im|imp} [-options] repository vendortag releasetag... {login|logon|lgn} {log|lo|rlog} [-l] rlog-options [files...] {rdiff|patch|pa} [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules... {release|re|rel} [-d] directories... {remove|rm|delete} [-lR] [files...] {rtag|rt|rfreeze} [-falnR] [-b] [-d] [-r tag | -D date] \ symbolic_tag modules... {status|st|stat} [-lR] [-v] [files...] {tag|ta|freeze} [-lR] [-F] [-b] [-d] [-r tag | -D date] [-f] \ symbolic_tag [files...] {update|up|upd} [-AdflPpR] [-d] [-r tag|-D date] files...
Subversion est un système de contrôle de version de nouvelle génération qui a pour but de remplacer CVS. Les développeurs le considèrent actuellement en étape « alpha », mais il est probablement assez stable pour la plupart des utilisations. Aujourd'hui, Subversion est seulement disponible dans Debian unstable.
Le meta-paquet subversion-server
dépend des paquets dont on a
besoin (libapache2-dav-svn
et subversion-tools
) pour
configurer un serveur.
Actuellement, le paquet subversion
ne configure pas un dépôt, donc
il faut le configurer à la main. Un emplacement possible pour un dépôt est
/var/local/repos
.
Créer le répertoire :
# mkdir -p /var/local/repos
Créer la base de données du dépôt :
# svnadmin create /var/local/repos
Mettre le dépôt en écriture par le serveur web :
# chown -R www-data:www-data /var/local/repos
Pour permettre l'accès au répertoire par authentification des utilisateurs,
ajoutez (ou décommentez) ce qui suit à
/etc/apache2/httpd.conf
:
<Location /repos> DAV svn SVNPath /var/local/repos AuthType Basic AuthName "Subversion repository" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Ensuite, créer un fichier d'authentification des utilisateurs avec la commande :
htpasswd2 -c /etc/subversion/passwd some-username
Relancez Apache2, et votre nouveau dépôt Subversion sera accessible par l'URL http://hostname/repos.
Les sections suivantes vous enseignent comment utiliser les différentes commandes de Subversion.
Pour créer une nouvelle archive Subversion, tapez ce qui suit :
$ cd ~/your-project # go to your source directory $ svn import http://localhost/repos your-project \ project-name -m "initial project import"
Cela crée un répertoire nommé project-name dans votre dépôt Subversion qui contient vos fichiers de projet. Regardez sur http://localhost/repos/ s'il est là.
Travail sur project-y en utilisant Subversion :
$ cd # aller dans le répertoire de travail $ svn co http://localhost/repos/project-y # récupérer les sources $ cd project-y ... travailler ... $ svn diff # similaire à diff -u repository/ local/ $ svn revert modified_file # annuler les changements sur un fichier $ svn ci -m "Describe changes" # mettre vos changements sur le dépôt $ vi newfile_added $ svn add newfile_added $ svn add new_dir # ajoute récursivement tous les fichiers de new_dir $ svn add -N new_dir2 # ajoute le répertoire non-récursivement $ svn ci -m "Added newfile_added, new_dir, new_dir2" $ svn up # fusionne la dernière version du dépôt $ svn log # affiche tous les changements $ svn copy http://localhost/repos/project-y \ http://localhost/repos/project-y-branch \ -m "creating my branch of project-y" # ajouter une branche project-y $ svn copy http://localhost/repos/project-y \ http://localhost/repos/proj-y_release1.0 \ -m "project-y 1.0 release" # ajoute une borne de version ... notez qu'ajouter une branche ou une borne est pareil. ... la seule différence est que l'on peut effectuer des ... changements sur une branche et pas sur une borne. ... faire des changements sur la branche ... $ # fusionne la copie de la branche vers la copie principale $ svn merge http://localhost/repos/project-y \ http://localhost/repos/project-y-branch $ svn co -r 4 http://localhost/repos/project-y # récupère la revision 4
Guide de référence pour Debian
CVS, lun 03 avr 2005 22:57:18 UTCosamu@debian.org
gerbs@free.fr