Encouragez les commits fréquents. Les coéquipiers novices en contrôle de version peuvent ressentir le besoin de garder le code hors du référentiel jusqu'à ce que "cela fonctionne correctement". Apprenez à tout le monde à s'engager tôt et souvent à trouver les problèmes le plus tôt possible. Au lieu de conserver le code jusqu'à ce qu'il fonctionne, proposez à vos coéquipiers de créer des branches pour les fonctionnalités susceptibles de casser le tronc. Cela conduit à ...
Établissez une pratique de branchement et de marquage. En plus des branches pour les fonctionnalités, encouragez vos coéquipiers à utiliser des branches pour les corrections de bogues importants. Marquez les correctifs de bogues majeurs au début et à la fin du travail. Gérez les balises (et éventuellement les branches) pour les versions de production / qualité.
Établissez une politique pour le tronc et respectez-la. Un exemple pourrait être, «le tronc doit toujours se construire sans erreurs». ou "le tronc doit toujours réussir tous les tests unitaires". Tout travail qui ne peut pas encore répondre aux normes de coffre doit être effectué en succursale.
Ne pas valider les modifications de mise en forme avec les modifications de code
Si vous souhaitez restructurer l'espace blanc ( Control+ K+ D) d' un fichier géant , très bien. Validez la modification de mise en forme séparément de la modification logique réelle. Il en va de même si vous souhaitez déplacer des fonctions dans des fichiers. Commencez le déplacement séparément de l'édition réelle.
la source
L'un des concepts clés sur lesquels je m'en tiens toujours est de valider ensemble les modifications de code associées . Le corollaire est de ne pas valider les modifications de code non liées dans le même commit . Cela signifie ne pas corriger 2 bogues dans un commit (sauf si c'est le même correctif), et ne pas commettre la moitié d'un correctif de bogue dans chacun des 2 commits. De plus, si j'ai besoin d'ajouter une nouvelle amélioration ou quelque chose à une partie non liée du système dont j'ai besoin pour un autre travail, je commets l'amélioration séparément (et d'abord). L'idée est que tout changement que quiconque voudrait éventuellement apporter seul (ou revenir seul) devrait être un commit séparé. Cela vous évitera des tonnes de maux de tête quand viendra le temps de faire des fusions ou de restaurer des fonctionnalités cassées.
la source
Beaucoup de choses ont déjà été mentionnées, et en voici d'autres:
Si vous avez des fichiers que vous ne voulez pas dans le contrôle de code source (par exemple la configuration, les fichiers compilés, etc.), ajoutez-les à la liste des ignorés . De cette façon, vous remarquez tous les fichiers que vous oubliez d'ajouter en vous attendant toujours à une liste vide de fichiers apparaissant comme inconnus de SVN.
Ajoutez un événement post-commit qui enverrait un e-mail à votre liste de diffusion de développeur (ou un événement spécifique pour cette cible) concernant le changement engagé et idéalement le correctif correspondant.
Intégrez votre bug tracker afin que les références aux commits apparaissent sur les bogues / demandes de fonctionnalités avec des liens vers les diffs. Les traqueurs de bogues comme MantisBT le supportent.
Pensez à intégrer avec une intégration continue (par exemple CruiseControl.NET ), NAnt pour Build et NUnit / VS pour les tests unitaires. De cette façon, une fois qu'un utilisateur enregistre le code ou à un intervalle planifié, le code est compilé, les tests unitaires sont exécutés et le développeur obtient des commentaires sur le processus. Cela alerterait également le reste de l'équipe si le référentiel est cassé (c'est-à-dire qu'il ne se construit pas).
la source
Eh bien, les bases:
la source
Les réponses que les gens donnent sont excellentes. Une grande partie de ceci est résumée dans la documentation utilisateur svn pour les meilleures pratiques pour SVN .
Répéter:
la source
Je voudrais résumer les meilleures pratiques auxquelles je m'en tiens:
Il devrait y avoir une structure de référentiel . Personnellement, j'utilise la structure de référentiel suivante:
PA
(pré-alpha),A
(alpha),B
(beta),AR
(alpha-release),BR
(beta-release),RC
(release candidate),ST
(stable).Vous pouvez trouver un aperçu de mes meilleures pratiques de subversion sous forme de diagramme illustrant les grands principes de l'approche de gestion de la configuration logicielle que j'utilise.
la source
Une chose que j'ai trouvée très utile est la propriété svn: external qui signifie que vous pouvez référencer des répertoires d'autres référentiels dans le vôtre. Cela donne de très bons moyens d'organiser votre code et vos données. Quelques exemples sont:
la source
Utilisez l'intégration avec votre logiciel de suivi des bogues. Si vous utilisez Bugzilla , vous pouvez le configurer afin que si votre commentaire commence par "Bug XXXX", votre commentaire SVN est automatiquement ajouté en tant que commentaire au bogue donné, y compris un lien vers votre interface Web SVN vers cette révision.
la source
Découvrez les outils et conventions de branchement et de fusion de SVN.
La meilleure façon de travailler avec d'autres membres de l'équipe est de diviser le travail en fonctionnalités / correctifs de développement complets, puis de travailler sur des changements individuels, chacun dans une branche. Ensuite, fusionnez les modifications dans la branche / le tronc principal une fois terminé / prêt / approuvé pour la fusion.
De cette façon, les individus peuvent travailler vers un objectif commun (soit sur la même branche, soit sur des branches séparées) sans entrer en collision avec d'autres changements.
Votre kilométrage peut varier, et cela peut être excessif pour seulement deux personnes ou plus.
la source
Cela rend les choses beaucoup plus faciles si vous utilisez de bons outils qui s'intègrent bien avec SVN. Celles-ci permettent de voir facilement ce qui a été modifié, de valider tout ou partie de vos modifications et de mettre fréquemment à jour votre copie de travail vers la dernière version de SVN.
Je recommande Tortoise SVN (si vous utilisez Windows) et Visual SVN (si vous utilisez VS).
Vérifiez également si vous pouvez le configurer de manière à recevoir un e-mail ou une notification similaire à chaque fois qu'une modification est validée (comprenant généralement également le message de validation et une liste des fichiers modifiés). Des services comme CVSDude offrent cela. Je trouve utile de savoir à la fois qu'une mise à jour a été effectuée et d'avoir une idée de ce que contient cette mise à jour avant de mettre à jour ma copie de travail.
la source
Outre les politiques de branchement et al. (où une taille ne convient certainement pas à tous), vous devriez avoir de bons commits:
la source
La règle d'or pour le contrôle de code source: enregistrez-vous tôt, enregistrez-vous souvent
Pour obtenir des conseils sur l'organisation de votre référentiel:
la source
Consultez votre équipe au sujet de leurs modifications, ou au moins examinez le diff très attentivement, avant de résoudre tout conflit de fusion. Demandez-leur de vérifier eux-mêmes le code fusionné pour s'assurer que leurs ajouts n'ont pas été perdus lors de la fusion.
la source
Une chose que j'ai vue qui réduit les commits cassés est d'avoir de bons scripts de pré-commit. Par exemple, vous pouvez exécuter des tests unitaires avant que la modification ne soit validée. Cela ralentira un peu les engagements, mais vous gagnez du temps en évitant de marcher sur les pieds de quelqu'un et de devoir vous excuser. Bien sûr, cela devient beaucoup plus difficile à gérer lorsque vous avez une grande équipe de développement et des commits très fréquents.
la source
Un des exemples d'intégration avec le suivi des bogues et l'application de la politique de commit pourrait être les scripts de hook svn pre / post-commit de Trac , qui peuvent refuser la validation si le message de commit ne fait référence à aucun ticket dans le bug-tracker et ajouter des commentaires à l'existant. tickets basés sur le contenu du message (c'est-à-dire que le message de validation peut contenir quelque chose comme "Corrections # 1, # 2 et # 8", où # 1, # 2, # 8 sont les numéros de tickets).
la source
Meilleures pratiques pour utiliser SVN :
Lorsque vous êtes arrivé au bureau et que vous ouvrez votre projet Eclipse , la première étape à faire est de mettre à jour votre projet.
Après avoir pris la mise à jour, commencez votre travail. Lorsque vous avez terminé votre codage, vérifiez-le correctement, si votre application fonctionne correctement sans aucune exception. Une fois que vous êtes sûr que votre code fonctionne correctement, il est temps de valider le code.
Remarque: lors de la validation du code, ne vous engagez pas directement. Faites une synchronisation avec le serveur et vérifiez quels sont tous les besoins à valider. Remarque: ne validez pas tout le dossier une seule fois. Parce que vous avez peut-être apporté des modifications au fichier pour vos besoins ou que vous avez peut-être supprimé certains fichiers de votre système local. Mais les paramètres sont différents sur le serveur. Vérifiez donc les fichiers individuellement et validez le code.
Ne pas valider / mettre à jour les fichiers de conflit directement.
Quand faut-il remplacer et mettre à jour?
Lorsque vous êtes à peu près sûr que vous n'avez besoin d'aucune de vos modifications locales et que vous souhaitez mettre à jour complètement la copie du serveur. Notez qu'une fois que vous effectuez le remplacement et la mise à jour, vous n'obtiendrez aucune de vos modifications locales.
Remarque: ne conservez pas le projet sans mise à jour pendant plus d'une journée. Ne gardez pas non plus le code sans vous engager pendant plusieurs jours.
Communiquez qui travaillent tous dans le même composant et discutez des changements qu'ils ont apportés chaque jour.
Ne validez pas les propriétés et le fichier de configuration sauf s'il y a une raison. Parce que les paramètres seront différents sur un serveur et dans le cloud.
Ne validez pas les dossiers cibles dans SVN, seuls le code source et les dossiers de ressources doivent être conservés dans un référentiel SVN.
Lorsque vous avez perdu votre code, ne paniquez pas! Vous pouvez récupérer la copie précédente à partir de l'historique SVN.
Ne récupérez pas le projet à plusieurs endroits de votre disque. Vérifiez-le en un seul endroit et travaillez avec.
la source
SVN en lui-même est un bon début et certaines des autres affiches ont offert d'excellentes suggestions sur les meilleures pratiques.
La seule chose que j'ajouterais est que vous devriez connecter SVN avec CruiseControl ou TeamCity pour conduire un processus d'intégration continue. Cela enverra des e-mails de build et informera tout le monde quand quelqu'un a cassé la build.
Ce sera très révélateur dès le début qui suit votre processus et qui ne le fait pas. Cela peut entraîner des frictions, mais votre équipe s'en sortira mieux à long terme.
la source
Commentaire précis pour chaque commit
Ne cassez pas la construction (principale)!
Validez dès qu'une unité logique change
Évitez d'utiliser Subversion comme outil de sauvegarde
Un peu de ramification / fusion possible
.
Plus de détails peuvent être trouvés dans les meilleures pratiques SVN .
la source
Faire travailler DEV sur les branches
Tronc communautaire
N'oubliez pas que plus vous effectuez vos commits de manière incrémentale, modulaire, discrète et succincte, plus il vous sera facile (ou probablement d'autres) de:
la source
Utilisez ceci pour le modèle de commentaires:
[tâche / histoire xxx] [mineur / majeur] [commentaire] [commentaire de suivi] [URL du bogue]
la source