Voici une petite compilation des règles à respecter lors de l'usage du référentiel Subversion.
Format des fichiers et indentation
Commentaires de commit
Toujours indiquer un commentaire lors d'un commit.
Modules et/ou classes concernées
Si votre modification concerne une classe ou un module, indiquez-le en en-tête de message, par exemple :
CopixXMLSerializer: prise en charge de mbstring.
Cela facilitera la recherche dans les logs.
Numéros de tickets
Si votre modification concerne un ticket de Trac, indiquez son numéro sous le format #numéro, par exemple :
Bug #71 corrigé.
Cette convention permet à Trac de faire des liens, cf. message de commit de la révision 581
Commandes Trac
Il est possible d'effectuer des actions sur les tickets Trac à travers les messages de commit.
Les commandes doivent avoir l'une des formes suivantes :
commande #1 commande #1, #2 commande #1 & #2 commande #1 and #2 commande #1 et #2
Actuellement, seul deux actions sont possibles :
- fermer un ticket :
- alias : close, closed, closes, fix, fixed, fixes, ferme,
- exemple :
Correction des zibomatiques bleus. Ferme #142.
- exemple en live : [739]
- ajouter un commentaire à un ticket :
- alias: addresses, re, references, refs, see, cf.
- exemple :
Identification par le binaire. Cf #145.
- exemple en live : [743]
Vous pouvez mettre plusieurs commandes et plusieurs tickets, à n'importe quel endroit de votre message de commit.
Référence à des révisions
Pour faire des références à des révisions précédentes, utilisez la syntaxe rNNN, par exemple :
Correctifs suite aux tests du r579.
Cette convention permet à Trac de faire des liens, cf. message de commit de la révision 581
Répertoires temp et var
Les répertoires temp et var ne contiennent que des fichiers et répertoires générés pendant le fonctionnement de l'application. Sauf cas exceptionnels, ces fichiers ne doivent jamais être ajouté dans le référentiel Subversion.
Au niveau de Subversion, ces deux répertoires (et leur sous-répertoires) sont configurés pour ignorer tous les fichiers et répertoires qu'ils contiennent, afin d'éviter de les ajouter accidentellement.
Il est toujours possible d'ajouter manuellement un fichier ou un répertoire mais à moins que vous sachiez vraiment ce que vous faites, ne le faites pas !
Propriétés des fichiers
Subversion permet de définir des propriétés sur les fichiers, afin de normaliser et de faciliter certaines opérations.
svn:eol-style
ATTENTION: définir cette propriété est désormais obligatoire sur les fichiers php, tpl, ptpl, xml, css, js, sql, txt, html et properties. Subversion refusera votre commit si elle manque.
Cette propriété permet d'indiquer comment le client Subversion doit convertir les retours-chariots entre le référentiel et votre copie de travail. Par défaut il n'effectue aucune opération.
Paramétrer svn:eol-style à native indique à Subversion que votre copie de travail utilise les retours-chariots propres à votre système d'exploitation (\r\n pour Windows, \n sous Linux, \r pour les Macs) et qu'il doit faire les conversions .
Si un fichier (probablement un fichier de ressources) doit absolument respecter un type de retour chariot, vous pouvez utiliser les valeurs CR, CRLF ou LF. Ne faites appel à cette solution que si vous savez ce que vous faites.
L'intérêt de définir cette propriété est de normaliser les retours-chariots et de faciliter les comparaisons de fichiers.
Pour plus d'informations, consultez le manuel de Subversion (en).
Configurer votre client Subversion pour définir automatiquement les propriétés
Afin de faciliter l'ajout de fichiers au quotidien il est possible de configurer votre client Subversion pour qu'il définisse un certains nombre de propriétés par défaut, en fonction de l'extension des fichiers.
Nous vous conseillons d'intégrer les lignes suivantes dans le fichier %USERPROFILE%\Application Data\Subversion\config sous Windows XP ou $HOME/.subversion/config sous Unix.
Dans la section [miscellany]:
enable-auto-props = yes
Dans la section [auto-props]:
*.php = svn:eol-style=native;svn:mime-type=text/plain *.tpl = svn:eol-style=native;svn:mime-type=text/html *.ptpl = svn:eol-style=native;svn:mime-type=text/plain *.xml = svn:eol-style=native;svn:mime-type=text/xml *.css = svn:eol-style=native;svn:mime-type=text/css *.js = svn:eol-style=native;svn:mime-type=text/javascript *.sql = svn:eol-style=native;svn:mime-type=text/plain *.txt = svn:eol-style=native;svn:mime-type=text/plain *.html = svn:eol-style=native;svn:mime-type=text/html *.properties = svn:eol-style=native;svn:mime-type=text/html
Pour plus d'informations, consultez le manuel de Subversion (en).
