Subversion: comment éviter d’oublier de vérifier des choses?

Travaillant sur trois ordinateurs différents à deux endroits différents, sur des projets en cours de subversion, je oublie de temps en temps d’enregistrer des éléments au même endroit, de sorte que je ne puisse pas travailler sur le dernier code, à un autre endroit.

Je suis sûr que d’autres ont eu des problèmes similaires.

Que puis-je faire pour éviter ce problème? Des outils qui aident? Notifications que je peux configurer?

J’utilise Visual Studio 2008 et TortoiseSVN sur les PC Windows7.

Utilisez un outil tel que VisualSVN pour afficher les fichiers modifiés dans l’explorateur de solutions, afin de ne pas oublier de les valider:

Icônes d'état de VisualSVN dans l'Explorateur de solutions

Une solution simple consiste à cliquer avec le bouton droit de la souris sur le niveau supérieur du projet, puis à cliquer sur “valider”. Tortoise vous montre tout le projet, y compris les fichiers “non versionnés”.

Cela prend un peu de discipline lorsque vous configurez votre arbre source. Par exemple, si vous mélangez des fichiers de sortie binarys avec le code source, cela complique les choses. Assurez-vous également qu’aucun répertoire ne contient de code source.

Constructions quotidiennes.
Un fichier de commandes (ou équivalent) qui est extrait dans un nouveau répertoire et effectue une génération (et dans un monde idéal, exécute des tests unitaires) – s’il ne se construit pas, vous avez manqué quelque chose.

Je n’ai pas de baguette magique à offrir, juste le mantra «engagez-vous tôt, commettez souvent»; en plus d’éviter de tels accidents, ou du moins de minimiser leur impact lorsqu’ils surviennent, cela offre également d’autres avantages (retour en arrière plus fin si un ensemble de modifications doit être inversé, par exemple). Cela peut nécessiter une twig si le tronc est considéré comme contenant toujours du “code doré”, de sorte que vous ne voulez pas commettre de modifications à mi-temps (et svn ne fait pas de ramification et de fusion indolore, soupire). les autres avantages des VCS dissortingbués) sont une des raisons pour lesquelles j’ai commencé à passer de subversion à mercurial (aka hg) sur des projets open-source et / ou personnels où je peux appeler les coups dans la matière! -)

Contrôle à distance d’autres machines (peut-être via VPN) afin que vous puissiez accéder au code dans les répertoires de travail distants, même si vous oubliez d’y accéder.

Et / ou sauvegarde automatisée de vos répertoires de travail.

Forcez-vous à entrer dans une routine.

  Première chose au bureau - faites une mise à jour. 
 Dernière chose au bureau - faites un commit (si nécessaire). 

Bien sûr, vous devez mettre à jour / valider pendant la journée (lors de l’enregistrement par exemple), mais au ssortingct minimum, procédez comme suit.

Pour oublier l’enregistrement, si possible, je me déconnecterais via un script qui vous pèlerait d’abord s’il y avait du travail qui n’avait pas encore été enregistré. Ou via une icône cliquée dans le dossier de vos projets afin que TortoiseSVN affiche le point d’exclamation rouge.

Pour oublier d’append de nouveaux fichiers à un enregistrement, j’utilise ce fichier de commandes:

 svn st svn ci -m %1 --username "russell.wallace" 

Donc, dès que je fais un commit qui manque de nouveaux fichiers, je suis averti du fait et je peux immédiatement continuer avec un autre commit qui les ajoute.

Cron travail de se plaindre à vous tous les soirs?

Ce que je fais avec Tortoise, c’est de toujours avoir une de ses fenêtres “Check for modifications” ouverte et de cliquer régulièrement sur le bouton Refresh. Cela aurait été très pressant en effet de me faire arrêter sans vérifier au préalable toutes les fenêtres / applications ouvertes pour les données non enregistrées.

Ceci est également une bonne chose contre l’oubli d’append des choses, BTW, comme vous pouvez configurer cette fenêtre pour afficher toutes les choses non-ajoutées non-ignorées, aussi.

J’utilise git-prompt.sh pour suivre l’état des fichiers et des twigs. Il semble également fonctionner avec SVN.