Chaque fois que quelqu'un demande quoi faire avec le code qui n'est plus nécessaire, la réponse est généralement " Supprimez-le, restaurez-le du contrôle de la source si vous en avez besoin de ". P>
Maintenant, comment puis-je trouver ce morceau de code source dans le référentiel? Limitez la portée à SVN pour la simplicité - je soupçonne que l'utilisation d'un autre système de contrôle source ne fera pas beaucoup de différence dans cet aspect (corrigez-moi si je me trompe). P>
Si je supprime ce code et que vous engagez les modifications, cela ne sera plus dans la dernière révision. Comment puis-je le trouver sans exporter chaque révision et à la recherche de manière approfondie (qui est presque impossible)? P>
6 Réponses :
La façon dont je le fais est de penser à une date lorsque je savais que le code manquant était actif et récupérer l'ensemble de l'arbre source tel qu'il était à cette date. Si je reçois la date de la date, je vais aller x em> jour / semaines / mois de chaque côté jusqu'à ce que je nulle dessus. svn checkout --revision {2002-02-17}
Vous devez utiliser un outil de différence, la plupart des référentiels SVN les ont. Faites un clic droit sur le fichier que vous souhaitez annuler et choisissez «DIFF» ou «différence» ou similaire (dépenses sur la mise en œuvre), puis vous demanderez de comparer la version actuelle avec une version antérieure - si vous connaissez la date approximative de la version antérieure. Ensuite, choisissez cette version (les timbres de date / heure sont généralement évidents) et vous verrez les deux versions côte à côte. Vous pouvez ensuite choisir quels bits sont différents (généralement de couleur rouge) cliquez sur eux et choisissez de les intégrer. p>
L'outil client que vous utilisez pour SVN déterminera les détails. P>
Une autre solution consiste à rechercher les messages du journal - vous avez considérablement laissé un commentaire quelque peu sur les lignes de: p>
Fonctionnalité XYZ supprimée P> blockQuote>
Lorsque vous avez fait le changement. P>
C'est une usecase qui m'aide à apprendre aux juniors à quel point il est important d'utiliser des messages de validation descriptifs. Il faut faire l'expérience de la douleur de trouver quelque chose dans l'histoire au moins une fois, avant d'entrer.
Vraisemblablement, les commentaires de code ou les commentaires de révision ont des mots-clés pour cibler le fragment de code que vous recherchez: p>
Query SVN - http://svnquery.tigris.org/ p>
"SVNQuery est un moteur de recherche de texte complet rapide pour les référentiels de subversion. Il recherche chaque fichier dans chaque révision. strong> non seulement le contenu d'un fichier fort> est indexé, mais aussi sa forte> métadonnées complète forte> Chemin similaire, auteure, Commentaires Strong> et propriétés. Un simple frontage Web Google - comme Google est fourni, mais il est prévu que la bibliothèque de requêtes et le mécanisme d'indexation puisse être réutilisé dans d'autres fronçons, par exemple un service Web ou un plug-in Visual Studio. P>
SVNQUERY est implémenté dans C # 3.0 et ASP.NET est utilisé pour le Web Frontend. La recherche de texte complète est effectuée par Lucene.net qui offre une performance étonnante. ... " p> blockQuote>
Le langage de requête est décrit ici:
http://svnquery.tigris.org/servlets/projectProcess?pageID=O0DPDE&freeFormpage= Svnwebqueryhelp p>
La réponse la plus correcte est la suivante: vous ne pouvez pas. Il existe des méthodes pour vous aider avec cette tâche, mais il est impossible de le faire automatiquement, car: p>
Un ordinateur ne peut pas lire nos esprits. Cela dit, il y a bien sûr d'autres outils qui vous aident, tels que ceux mentionnés, ou extrémités graphiques, comme TRAC A> (que j'aime beaucoup pour cette fin). P>
Je soupçonne que l'utilisation d'un autre système de contrôle source ne fera pas beaucoup de différence dans cet aspect (corrigez-moi si je me trompe). P> blockQuote>
C'est faux. Contrôle de la version distribuée (par exemple Git ou HG) peut le faire relativement efficacement. P>
En Git, par exemple, pour trouver une fonction supprimée nommée FOO, vous pouvez faire
Git journal -s foo code>, qui affichera tous les engagements qui ajoutent ou supprimez des lignes contenant "FOO". < / p>
Si vous voulez coller avec la limitation de SVN arbitraire pour une raison quelconque, clonez le référentiel SVN avec GIT-SVN en premier. P>
La réponse à cela est dépend des VCS, VSS, CVS, SNV, TFS, ClearCase, ... aura chacune sa propre réponse.
@Richard: C'est marqué
svn code> et il dit "Limitez la portée à SVN ..." I> dans le texte.