====== Subversion ======
===== Aides sur Subversion =====
* La [[http://svnbook.red-bean.com/|documentation officielle]]
* La [[http://subversion.apache.org/faq.html|FAQ officielle]]
* Une [[http://conception.developpez.com/faq/scm/?page=subversion|FAQ en Français]]
* Un [[http://www.toutprogrammer.com/article_19.html|tutoriel en Français]]
* [[http://subversion.open.collab.net/articles/best-practices.html|Subversion Best Practices]]
* [[http://www.cmcrossroads.com/bradapp/acme/branching/|Branching Patterns for Parallel Software Development]]
* [[http://www.svnforum.org/|Forum d'aide]]
* [[http://www.cs.put.poznan.pl/csobaniec/Papers/svn-refcard.pdf|Résumé des commandes]]
* [[http://www.jres.org/wiki/tuto/tuto1#subversion_un_outil_de_gestion_de_version|Un tutoriel en vidéo et en Français, ou en PowerPoint]] (1 heure 30)
* Deux livres : [[http://www.oreilly.fr/catalogue/2841772691.html|Gestion de projets avec Subversion]] et [[http://www.editions-eyrolles.com/Livre/9782212119190/subversion|Subversion, Pratique du développement collaboratif avec svn]]
===== Comment tester Subversion ? =====
Vous pouvez tester Subversion avec le dépôt de test test-svn et l'utilisateur test_user, mot de passe test_user.
Exemple en ligne de commande :
- récupérer d'une copie de travail sur votre poste de travail : svn co http://subversion.cru.fr/test-svn test-svn
- modifiez le fichier test-svn/fichier.txt
- enregistrer votre modification dans le dépôt Subversion : svn ci -m 'une modification' test-svn
===== Clients Subversion =====
Cette [[http://fr.wikipedia.org/wiki/Comparaison_des_clients_pour_Subversion|page]] liste plusieurs clients Subversion.
La FAQ a [[http://www.cru.fr/wiki/faq/sourcesup/gestion_src#le_plugin_subclipse_pour_utiliser_subversion_avec_eclipse|une entrée]] consacrée au plugin Subversion Subclipe pour Eclipse.
===== Quels identifiants utiliser pour accéder à Subversion ? =====
Utilisez votre identifiant SourceSup, affiché sur [[http://sourcesup.cru.fr/account/|la page de gestion de votre compte SourceSup]]. Le mot de passe à utiliser est celui que vous avez choisi lors de votre première connexion à sourcesup.cru.fr. Vous pouvez le modifier via [[http://sourcesup.cru.fr/account/|la page de gestion de votre compte SourceSup]].
===== Comment initialiser mon dépôt Subversion ? =====
La plupart des projets Subversion suivent la convention suivante pour l'organisation de leur arborescence :
* /trunk est le répertoire contenant la ligne principale de développement
* /branches est le répertoire contenant les branches de développement
* /tags est le répertoire contenant les étiquettes (ou //tags//)
Vous pouvez utiliser la commande suivante pour créer ces répertoires (remplacez exemple par le nom unix de votre projet) :
svn mkdir https://subversion.cru.fr/exemple/trunk https://subversion.cru.fr/exemple/branches https://subversion.cru.fr/exemple/tags
Le livre en ligne [[http://svnbook.red-bean.com/nightly/en/index.html|Version Control with Subversion]] détaille les opérations à effectuer pour organiser et initialiser son dépôt.
===== Est-il possible d'importer le contenu d'un dépôt Subversion extérieur déjà existant dans un dépôt Subversion hébergé sur SourceSup ? =====
Oui. Pour cela envoyer un email à [[support-sourcesup@cru.fr|support-sourcesup]] en indiquant le nom de votre projet et en joignant en pièce jointe un fichier "dump" de votre dépôt Subversion (ou en fournissant un lien vers ce fichier s'il est trop gros pour être envoyé par email). Si votre dépôt qui était hébergé sur SourceSup avait déjà du contenu, ce contenu sera écrasé.
===== Comment envoyer un email après chaque commit ? =====
Il est possible de configurer Subversion pour qu'après chaque commit dans le dépôt un courrier électronique contenant le diff des modifications soit envoyé.
Vous pouvez contacter [[support-sourcesup@cru.fr|support-sourcesup]] pour que cela soit le cas dans votre dépôt Subversion, en indiquant le nom de votre projet et l'adresse électronique à laquelle doivent être envoyées ces notifications.
===== Restreindre l'accès Subversion en écriture d'un développeur à une ou plusieurs branches =====
Il est possible de restreindre l'accès Subversion en écriture d'un développeur à une ou plusieurs branches du dépôt, en lui laissant le droit de lecture sur le reste du dépôt. Pour cela le développeur doit être enregistré comme membre du projet puis ensuite il faut envoyer un mail à [[support-sourcesup@cru.fr|support-sourcesup]] en précisant le nom du projet, le nom du développeur et le chemin complet de la ou les branches auxquelles astreindre l'accès en écriture pour ce développeur.
===== Comment modifier un message de log de mon dépôt Subversion ? =====
Faîtes la demande à [[support-sourcesup@cru.fr|support-sourcesup]] en indiquant le nom de votre projet, le numéro de la révision pour laquelle vous voulez changer le message de log et le nouveau message de log.
Vous pouvez également demander aux administrateurs de SourceSup de modifier la configuration de votre dépôt Subversion de sorte que vous pourrez à l'avenir changer avec votre client Subversion des messages de log, sans avoir à leur faire la demande à chaque changement. Une fois la modification de la configuration effectuée par les administrateurs, vous pourrez éditer la propriété ''svn:log'' associée à une révision pour modifier le message de log de cette révision. Exemple avec le client en ligne de commande :
svn propedit -r numero_de_revision --revprop svn:log http://subversion.cru.fr/nom_du_depot
===== Quelles différences entre CVS et Subversion ? =====
[[http://cvshome.org/|CVS]] et [[http://subversion.apache.org/|Subversion]] sont deux systèmes de contrôle de version.
Subversion est plus récent et vise à pallier aux limitations de CVS, tout en reprenant sa syntaxe, ce qui facilite le passage de l'un à l'autre.
Depuis décembre 2005 les nouveaux projets créés ne peuvent plus utiliser que Subversion, CVS n'est plus disponible. Subversion offre notamment ces avantages :
* Utilisation des ports 80 et 443, non bloqués par les firewalls
* Possibilités de supprimer, renommer des répertoires
* Les méta-informations associées aux fichiers et répertoires peuvent être elles-mêmes "versionnées"
* Documentation très bien rédigée
* SourceSup permet de notifier par email les commit sur les dépôts Subversion pas sur les dépôts CVS
Cette [[http://svnbook.red-bean.com/en/1.0/apa.html|page]] de la documentation de Subversion expose en détail les différences entre CVS et Subversion.
===== Le plugin Subclipse pour utiliser Subversion avec Eclipse =====
Le plugin [[http://subclipse.tigris.org/|Subclipse]] permet d'utiliser Subversion avec Eclipse. Le nom des commandes de Subclipse diffère parfois des noms des commandes du client Subversion en ligne de commande, qui sont utilisés dans les documentations et tutoriels de Subversion. [[http://svn.collab.net/subclipse/help/index.jsp?topic=/org.tigris.subversion.subclipse.doc/html/faq/subversion-mapping.html|Cette page]] donne la correspondance entre les deux terminologies.
Subclipse n'implémente pas toutes les fonctionnalités d'un client Subversion complet. Nous listons ici les manques actuels, n'hésitez pas à compléter cette liste :
* l'erreur "Attempted to lock an already-locked dir" n'est pas lié au serveur Subversion, mais à la présence d'un fichier vide lock dans le répertoire .svn du répertoire concerné. Ce fichier est créé par Eclipse. Pour résoudre ce problème, vous pouvez essayer d'effacer ce fichier et ensuite de réitérer l'opération qui provoquait cette erreur.
===== Erreur "Could not read chunk size: connection was closed by server" =====
Cette erreur peut arriver quand le poste client n'a pas assez de mémoire pour récupérer un gros dépôt depuis le serveur Subversion. Voilà les choses à essayer pour contourner le problème :
- redémarrer votre poste avant de réessayer ;
- essayer avec un autre client Subversion moins gourmand en mémoire (Eclipse/Subclipse -> TortoiseSVN -> client linux en ligne de commande) ;
- ne pas récupérer tout le dépôt mais seulement la sous-partie sur laquelle on veut travailler ;
- augmenter la mémoire vive de son poste de travail.
===== Supprimer définitivement un fichier ou une arborescence d'un dépôt Subversion et de son historique =====
Il n'est pas possible pour un client Subversion de supprimer définitivement toute trace d'un fichier ou d'une arborescence dans un dépôt Subversion et son historique (cela sera peut-être possible un jour avec une commande obliterate). Pour supprimer définitivement un fichier ou une arborescence dans un dépôt Subversion et son historique, faîtes-en la demande à [[support-sourcesup@cru.fr|support-sourcesup]] en précisant le nom de votre projet et le fichier ou l'arborescence à supprimer.
Une fois le fichier ou l'arborescence supprimé dans le dépôt, vous pouvez mettre à jour votre copie local en supprimant le fichier ou l'arborescence puis en faisant un update.
===== Annuler le dernier commit effectué =====
Pour annuler le dernier commit effectué voici les opérations à suivre (en ligne de commande) :
- ''svn update'' : met à jour votre copie locale
- ''svn info'' : vous indique le numéro de la dernière révision (noté X dans cet exemple) et l'URL du dépôt associée à (noté URL dans cet exemple)
- ''svn merge'' -c -X URL : annule dans la copie de travail le dernier commit effecuté
- ''svn diff'' : permet de voir que la modification du dernier commit a été annulée dans la copie de travail
- ''svn commit'' : pour enregistrer sur le serveur l'annulation du dernier commit
===== Activer/désactiver l'affichage de statistiques détaillées sur mon activité dans les dépôts Subversion =====
Des statistiques sur l'activité dans les dépôts Subversion sont accessibles depuis l'onglet Subversion de chaque projet. Parmi ces statistiques peuvent apparaître des informations détaillées sur les commits effectués pour chaque membre du projet : nombre de commits au cours du temps, activités horaire et journalière, etc.
Vous pouvez activer ou désactiver ces statistiques vous concernant dans [[https://sourcesup.cru.fr/account/|la page de gestion de votre compte]]. La prise en compte de cette modification sera effective le lendemain.