Pour faire cet exercice, vous devez avoir lu la présentation Subversion
Pour toute commande de commit passée avec svn, ne pas oublier de vérifier que le commit s'est bien passé. Une erreur commune consiste à être dans un autre répertoire que celui supposé. Aucune modification n'est alors transmise, mais ça n'est pas considéré par Subversion comme une erreur.
% svn commit . -m "Modif de la doc svn" Sending trunk/Html/svn.html Transmitting file data . Committed revision 1881. % ->Le commit s'est bien déroulé
% svn commit . -m "Modif de la doc svn" % ->Pas de message de Svn : rien n'a été commité !!!
La première étape consiste à initialiser un espace de travail (répertoire) contenant une copie de la partie du repository (branche) Etudiants correspondant à son binome (vide au départ) et à y ajouter les fichiers produits au cours du TD précédent.
$> svn checkout https://svn.lal.in2p3.fr/projects/Etudiants/ens<n> .
$> svn add Bonjour
svn status
$> svn commit -m "Import des fichiers de la premiere seance"
Dans cette étape, il est proposé de modifier un ou plusieurs fichiers et de les enregistrer dans le repository. On utilisera successivement les commandes cp et rm traditionnelles et leurs équivalents Svn pour comparer les différences. L'opération peut être répétée plusieurs fois pour enrichir l'historique en vue de l'étape suivante.
On se déplace dans le répertoire src du projet que l'on vient d'enregistrer sous Svn.
... Editer bonjour.cpp ... $> svn status M bonjour.cpp $> svn commit -m "Premiere modification de bonjour"
$> cp bonjour.cpp bonjourLeMonde.cpp $> svn status ? bonjourLeMonde.cpp $> svn add bonjourLeMonde.cpp $> svn commit -m "Ajout de bonjourLeMonde"
Le ? signifie que le fichier donné n'existe pas dans le repository, mais existe en local
$> rm bonjourLeMonde.cpp $> svn status ! bonjourLeMonde.cpp $> svn rm bonjourLeMonde.cpp $> svn commit -m "Suppression de bonjourLeMonde"
Le ! signifie que le fichier donné existe dans le repository, mais n'existe pas en local
$> svn cp bonjour.cpp bonjourLeMonde.cpp $> svn status A + bonjourLeMonde.cpp $> svn commit -m "Ajout de bonjourLeMonde"
$> svn rm bonjourLeMonde.cpp $> svn status D bonjourLeMonde.cpp $> svn commit -m "Suppression de bonjourLeMonde"
$> svn rm ...
Durant les étape suivantes, on va expérimenter deux utilisations de l'historique des versions stockées dans le repository : la visualisation des différences entre versions et le retour à une version antérieure. Pour pouvoir utiliser l'historique, il faut généralement commencer par visualiser la liste des révisions disponibles avec leur message de description.
$> svn log
$> svn log -v
$> svn log bonjour.cpp
Il est proposé 2 utilisations de la capacité à afficher les différences : entre l'espace de travail et le repository ; entre 2 versions du repository.
... Modifier le fichier bonjour.cpp (ajouter un commentaire) ... $> svn diff bonjour.cpp
... Sélectionner une révision n dans l'historique ... $> svn diff -r n bonjour.cpp
$> svn diff -r m:n bonjour.cpp
L'intérêt de conserver un historique des révisions est aussi de pouvoir revenir à une version antérieure d'un fichier.
$> svn status ... Vérifier que bonjour a été modifié ... $> svn revert bonjour.cpp
$> svn revert bonjour.cpp $> svn merge -r HEAD:n bonjour.cpp $> svn status $> svn commit -m "Retour a la version n de bonjour"
$> svn merge -r HEAD:n bonjour.cpp $> svn status ... Vérifier les conflits et, le cas échéant, les résoudre ... $> svn commit -m "Retour a la version n de bonjour"