Une fois que l'on a récupéré les données avec le contrôle de version (à l'aide d'un
checkout), on veut pouvoir les modifier et renvoyer les fichiers au serveur. Pour cette action, on parle de
commit (vous me verrez ensuite souvent parler de
commiter pour dire que je vais faire un
commit).
Si l'on va chercher la définition de
to commit, on obtient (entre autres) : "
To put into a place to be kept safe or to be disposed of" et "
To consign for future use or reference or for preservation" .
En gros, mettre dans un espace pour le garder en sécurité et le mettre à disposition pour une utilisation future.
Donc, pour nous, ça va vouloir dire la chose suivante :
commit permet d'envoyer au serveur la nouvelle version des fichiers que l'on a modifiés depuis leur dernière récupération sur le serveur.
Pour tester, rien de plus simple.
Vous venez de récupérer les fichiers à l'aide d'un
checkout, a priori vous avez donc la dernière version (si vous avez fait le
checkout il y a longtemps, utilisez la commande
update pour mettre vos fichiers à jour).
Vous prenez un fichier au hasard (enfin, qui fasse quand même partie des fichiers sous contrôle de version

) et vous le modifiez (ajoutez une phrase au début, comme ça vous vous repèrerez facilement). Ensuite, vous sauvegardez et revenez sur l'explorateur de documents.
On constate que l'icône comporte maintenant un "!" rouge :
Cela signifie que le fichier a été modifié et que vous possédez une version du fichier que le serveur n'a pas. Mais si l'on revient au dossier parent (contenant le fichier modifié), on constate qu'il possède cette icône rouge aussi : ça veut dire que le contenu du dossier (au moins un fichier) n'est pas le même que celui situé sur le serveur.
Il faut donc lui envoyer les modifications que l'on a apportées.
Pour Windows
Clic droit sur le fichier ou sur n'importe quel dossier parent (faisant partie des dossiers sous contrôle de version) du fichier.
Dans mon cas, j'ai cliqué sur le dossier racine. On voit dans la fenêtre que je peux laisser un message, et que le fichier modifié apparaît dans une liste où l'on peut le décocher.
Les commentaires pourront ensuite être lus par les autres membres du groupe de travail lorsqu'ils récupèreront les fichiers du serveur.
Les commentaires
Ces commentaires sont très utiles, et je vous encourage très vivement à en laisser un pour que le suivant qui récupère les données, d'un simple coup d'oeil sur les commentaires laissés, puisse savoir ce qui a été fait sur les fichiers.
Exemple de commentaire utile :
Correction orthographique du compte rendu final.
Exemple de commentaire débile :
J'ai modifié le compte rendu final.
Pourquoi n'est-il pas utile de spécifier quels fichiers ont été modifiés ?
Tout simplement parce que lors du téléchargement des fichiers sur le serveur, on sait quels fichiers ont été modifiés / créés / supprimés. Lorsque l'on va sur la fenêtre des logs, le nom de la personne, le numéro de version lors de son
commit ainsi que les fichiers qu'il a créés / modifiés / supprimés sont affichés automatiquement, le commentaire est là pour ajouter une information en plus sur ce que l'on a fait à ces fichiers.
Il est donc complètement inutile d'ajouter dans son commentaire ce que la personne peut lire plus clairement et plus rapidement sur la fenêtre.
La liste des fichiers modifiés
Lorsque l'on clique sur un dossier pour faire un
commit, la fenêtre propose de
commiter tous les fichiers contenus dans ce dossier et qui ont été modifiés. Si l'on ne veut pas envoyer l'un de ces fichiers au serveur, il suffit de le décocher.
Si vous avez ajouté manuellement des fichiers (non versionnés) dans le dossier (versionné), la fenêtre affichera ces fichiers non versionnés, mais décochés par défaut pour ne pas les envoyer au serveur. Si vous les cochez, il les enverra au serveur comme nouveau fichier à prendre en compte dans le contrôle de version. Le prochain chapitre expliquera les différentes façons d'ajouter un fichier.
Si l'on clique sur un fichier, la fenêtre ne proposera que d'envoyer le fichier en question (s'il a été modifié). Pour être sûr d'envoyer toutes les modifications d'un seul coup, il suffit de faire un
commit sur le dossier racine, il prendra au moins toutes les modifications en compte.
Pour UNIX
Eh bien pour vous, c'est pareil. Il faut se mettre dans le dossier voulu (celui dans lequel il y a quelque chose à commiter ou un parent). Idéalement le dossier racine, et ensuite on lance la commande suivante :
Code : Console | svn commit fichier_ou_dossier_à_commiter -m "mon_commentaire" |
On peut remplacer
commit par
ci, ce qui nous donne :
Code : Console | svn ci fichier_ou_dossier_à_commiter -m "mon commentaire" |
-m indique que l'argument suivant est le message à mettre dans le log (journal).
Le -m "mon_commentaire" n'est, normalement, pas obligatoire. Il arrive parfois que le commit échoue parce que vous n'avez pas mis de commentaire. Vous obtiendrez un message d'erreur stipulant que SVN ne trouve pas d'éditeur externe pour obtenir le message de log. Si c'est le cas, pour passer à travers cette erreur, même si vous ne mettez pas de commentaire, mettez -m "".
On retrouve les mêmes options que pour Windows à quelques petits détails près. Les fichiers ajoutés manuellement dans le dossier à commiter et qui ne sont pas sous contrôle de version NE seront PAS envoyés au serveur.
L'argument fichier_ou_dossier_à_commiter n'est pas obligatoire. Si l'on ne met rien, il prendra par défaut le dossier courant. En revanche, on peut aussi donner un nom de fichier pour ne commiter que le fichier.