Wie finde ich nützlichen Code, der zuvor gelöscht wurde, aber immer noch in der Quellcodeverwaltung gespeichert ist?

8

Wann immer jemand fragt, was mit Code zu tun ist, der nicht mehr benötigt wird, lautet die Antwort normalerweise " lösche es, stelle es aus der Quellcodeverwaltung wieder her, wenn du es brauchst ".

Wie finde ich nun den Quellcode im Repository? Beschränken wir den Anwendungsbereich zur Vereinfachung auf SVN - ich vermute, dass die Verwendung eines anderen Quellcodeverwaltungssystems in diesem Aspekt keinen großen Unterschied macht (korrigieren Sie mich, wenn ich falsch liege).

Wenn ich diesen Code lösche und die Änderungen festschreibe, wird er nicht mehr in der neuesten Version sein. Wie finde ich es, ohne jede Revision zu exportieren und gründlich zu suchen (was fast unmöglich ist)?

    
sharptooth 25.04.2010, 13:06
quelle

6 Antworten

3

Die richtigste Antwort lautet: Sie können nicht. Es gibt Methoden, die Ihnen bei dieser Aufgabe helfen, aber es ist unmöglich, das automatisch zu tun, weil:

  • Sie wissen nicht, in welchen Dateien es sich befindet
  • Sie kennen den Quellcode oder Teile davon nicht
  • Sie können sich nicht erinnern, wann der Code entfernt wurde.
  • ...

Ein Computer kann unsere Gedanken nicht lesen. Das heißt, es gibt natürlich andere Tools, die Ihnen helfen, wie die erwähnten, oder grafische Frontends wie trac (was ich mag) sehr zu diesem Zweck).

    
topskip 25.04.2010, 15:08
quelle
5

Sie müssen ein Differenz-Tool verwenden, die meisten Svn-Repositories haben sie. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie zurücksetzen möchten, und wählen Sie "diff" oder "difference" oder ähnliches (Ausgaben für die Implementierung). Anschließend wird die aktuelle Version mit einer früheren Version verglichen - sofern Sie das ungefähre Datum der früheren Version kennen dann wählen Sie diese Version (die Datums- / Zeitstempel sind normalerweise offensichtlich) und Sie werden die zwei Versionen nebeneinander sehen. Sie können dann auswählen, welche Bits unterschiedlich sind (normalerweise rot gefärbt), mit der rechten Maustaste auf sie klicken und sie integrieren.

Das Client-Tool, das Sie für SVN verwenden, bestimmt die Details.

    
amelvin 25.04.2010 13:18
quelle
4

Eine andere Möglichkeit besteht darin, die Log-Nachrichten zu durchsuchen. Sie haben vermutlich einen Kommentar hinterlassen, der etwa folgendermaßen aussieht:

  

Entfernte XYZ-Funktionalität

wenn Sie die Änderung vorgenommen haben.

    
anon 25.04.2010 13:22
quelle
3

So wie ich es mache, denke ich an ein Datum, an dem ich wusste, dass der fehlende Code aktiv war, und hole den gesamten Quellbaum so, wie er an diesem Datum war. Wenn das Datum falsch ist, gehe ich x Tag / Wochen / Monate auf beiden Seiten, bis ich auf Null gehe.

%Vor%     
Paul Dixon 25.04.2010 13:11
quelle
2

Vermutlich haben die Code-Kommentare oder Revisionskommentare Schlüsselwörter, die auf das gesuchte Code-Fragment abzielen:

SVN-Abfrage - Ссылка

  

"SvnQuery ist eine schnelle Volltext-Suchmaschine für Subversion-Repositories. Es wird jede Datei in jeder Revision durchsucht. Nicht nur der Inhalt einer Datei ist indiziert, sondern auch Die vollständigen Metadaten wie Pfad, Autor, Kommentare und Eigenschaften.Ein einfaches, Google-ähnliches Web-Frontend wird bereitgestellt, aber es wird erwartet, dass die Abfragebibliothek und der Indexierungsmechanismus sein können in anderen Frontends wiederverwendet werden, zB ein Web-Service oder ein Visual Studio Plug-In.

     

SvnQuery ist in C # 3.0 implementiert und ASP.NET wird für das Web-Frontend verwendet. Die Volltextsuche wird von Lucene.Net durchgeführt, die eine erstaunliche Leistung liefert. ... "

Die Abfragesprache wird hier beschrieben:
Ссылка

    
Bert F 25.04.2010 15:05
quelle
0
  

Ich vermute, dass die Verwendung eines anderen Quellcodeverwaltungssystems in diesem Aspekt keinen großen Unterschied macht (korrigiere mich, wenn ich falsch liege).

Das ist falsch. Verteilte Versionskontrolle (z. B. Git oder Hg) kann dies relativ effizient tun.

Um zum Beispiel eine gelöschte Funktion namens foo zu finden, könnten Sie git log -S foo verwenden, was alle Commits anzeigt, die Zeilen hinzufügen oder entfernen, die "foo" enthalten.

Wenn Sie aus irgendeinem Grund an der willkürlichen SVN-Beschränkung festhalten möchten, klonen Sie das SVN-Repository zuerst mit git-svn.

    
Max Nanasy 24.08.2012 02:55
quelle

Tags und Links