8
votes

Comment trouver le code utile précédemment supprimé mais toujours stocké dans le contrôle de la source?

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 ".

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).

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)?


2 commentaires

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 et il dit "Limitez la portée à SVN ..." dans le texte.


6 Réponses :


3
votes

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}


0 commentaires

5
votes

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.

L'outil client que vous utilisez pour SVN déterminera les détails.


0 commentaires

4
votes

Une autre solution consiste à rechercher les messages du journal - vous avez considérablement laissé un commentaire quelque peu sur les lignes de:

Fonctionnalité XYZ supprimée

Lorsque vous avez fait le changement.


1 commentaires

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.



2
votes

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:

Query SVN - http://svnquery.tigris.org/

"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. non seulement le contenu d'un fichier est indexé, mais aussi sa métadonnées complète Chemin similaire, auteure, Commentaires 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.

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. ... "

Le langage de requête est décrit ici:
http://svnquery.tigris.org/servlets/projectProcess?pageID=O0DPDE&freeFormpage= Svnwebqueryhelp


0 commentaires

3
votes

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:

  • Vous ne savez pas quels fichiers il est dans
  • Vous ne connaissez pas le code source ou les parties de celui-ci
  • Vous ne pouvez pas vous en souvenir lorsque l'élimination du code s'est produite.
  • ...

    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 (que j'aime beaucoup pour cette fin).


0 commentaires

0
votes

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).

C'est faux. Contrôle de la version distribuée (par exemple Git ou HG) peut le faire relativement efficacement.

En Git, par exemple, pour trouver une fonction supprimée nommée FOO, vous pouvez faire Git journal -s foo , 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.


0 commentaires