svn/svk
La documentation concernant Subversion est relativement abondante,
et assez bien écrite. Le svnbook
est une référence assez complète sur
le sujet.
Il existe également une fonction d'aide fournie par l'outil svn
. Par exemple, pour afficher l'aide de la
commande checkout
, il suffit de faire:
svn help checkout
La documentation sur l'outil svk
, est
un peu plus pauvre et souffre de sérieuse lacune. Le wiki est assez brouillon, et le svkbook
ne marque pas de manière claire la
différence entre svn
et svk
.
Subversion a une gestion des tags et des branches qui diffère de
celle de CVS. Du point de vue de l'utilisateur, une branche ou un tag
se présente sous la forme d'une arborescence au sein du
dépôt. Concrètement, à la racine d'un dépôt svn
, on trouve 3 sous-répertoires:
trunk
: contient la branche
principale de développement;branches
: contient les arborescences
correspondant aux branches alternatives. La commande svn list
svn+ssh://username@scm.gforge.inria.fr/coq/branches
permet de
connaître les branches existantes dans le dépôt;tags
: contient les arborescences
correspondant aux tags créés dans le dépôt.Créer une branche avec Subversion se fait simplement en effectuant une copie de l'arborescence de développement:
svn copy
svn+ssh://username@scm.gforge.inria.fr/coq/trunk
svn+ssh://username@scm.gforge.inria.fr/coq/branches/V8.1-bugfix
Il est possible de spécifier une révision particulière en utilisant
l'option -r REV
.
svn
propose des commandes similaires à
celles de cvs
. On retrouve ainsi checkout
, update
,
log
, diff
,
status
, commit
, etc.
Pour plus de renseignments, consulter ce chapitre du svnbook.
svn
checkout svn+ssh://username@scm.gforge.inria.fr/coq/trunk
~/coq-svn/trunk
svn
update ~/coq-svn/trunk
svn
commit ~/coq-svn/trunk
svk
L'intérêt principal d'utiliser SVK est de pouvoir committer des modifications «offline». Ça permet par exemple lors d'un gros développement de commiter ses modifications localement, puis lorsque le développement arrive à maturité de pouvoir le fondre dans le dépôt principal.
Avant toute chose, il est nécessaire de disposer d'un dépôt SVK. Il est donc nécessaire d'exécuter la commande:
svk depotmap --init
Elle a pour
résultat de créer un dépôt SVK dans ~/.svk/local
. Ce dépôt est référencé par //
Il est possible de créer d'autres dépôts, et de les localiser ailleurs sur le système de fichier. Pour plus de détails, voir ce chapitre dans le svkbook.
Remarque: svk
maintient un
numéro de version propre au dépôt local. Ainsi, les numéros de
révision ne seront pas les mêmes entre le miroir et le dépôt
principal. Néanmoins, dans les log, svk
indique le numéro de révision correspondant sur le dépôt
principal.
svn
svk mirror
svn+ssh://username@scm.gforge.inria.fr/svn/coq //coq-mirror
svk sync //coq-mirror
Attention: toute modification commitée sur //coq-mirror
est répercutée sur le référentiel
principal.
svk copy //coq-mirror/trunk //coq-local
svk checkout //coq-local coq-local
On peut maintenant faire des modifications dans coq-local
, puis les commiter en faisant svk commit
.
En cours de développement, il est possible de répercuter les changements faits dans le dépôt principal dans le répertoire de travail. Il suffit de:
svk sync //coq-mirror
svk smerge -I //coq-mirror //coq-local
svk sync //coq-mirror
Lorsque le moment vient de valider les modifications, et de les transférer vers le référentiel principal il suivre les étapes suivantes:
svk smerge -I //coq-local //coq-mirror
À la différence de CVS et Subversion, svk
n'ajoute pas de fichier dans le répertoire de travail. Lorsque celui-ci devient inutile, il est alors nécessaire de le signaler à svk
par la commande:
svk checkout --detach coq-local