Funktionsverlauf mit Mercurial

8

Ich möchte in der Lage sein, den vollständigen Verlauf einer Funktion oder eines bestimmten Textblocks in meinem Code abzurufen.

Ich weiß, dass ich die Diffs aller meiner Commits für eine bestimmte Datei haben kann, aber ich möchte nur die Lebensdauer eines bestimmten kleinen Textblocks in meinen Dateien verfolgen (zum Beispiel eine C ++ Funktion).

Ich möchte sehen, dass es sich trotz Revisionen ändert, egal ob es innerhalb der Datei oder in eine andere Datei verschoben oder sogar umbenannt wird (der Rest der Funktion bleibt beim Umbenennen mehr oder weniger gleich)

Ich habe gehört, dass Mercurial dies dank seiner korrekten Aufzeichnung der Geschichte leicht machen konnte, aber ich erinnere mich nicht, wo ich das hörte (in meinen Träumen?) und ich kann kein Werkzeug oder eine andere Möglichkeit finden, als das Traditionelle Geschichte und Diff-Tools. Vielleicht suche ich nicht mit den richtigen Keywords ... Jeder kann helfen?

Danke

PS: Ich benutze immer noch SVN für andere Projekte, und wenn jemand einen Weg kennt, um dasselbe mit SVN zu erreichen, nehme ich es auch: -)

    
user338759 18.07.2011, 22:39
quelle

2 Antworten

4

Das ist mit hg grep eigentlich ziemlich machbar. Ein Beispiel spricht für sich selbst:

%Vor%

Ich habe hg gefragt, um def revrange (eine Funktionsdefinition) zu finden. In Kombination mit dem --all -Flag auf grep wird damit jede Revision gedruckt, die eine Änderung des Übereinstimmungsstatus enthält.

So können wir leicht die Entwicklung dieser Funktion sehen:

  • es wurde zuerst in Revision 580 eingeführt, in commands.py
  • 697 hat den Standardwert auf das revs-Argument
  • zurückgesetzt
  • 705 scheint eine Zusammenführung zu sein
  • 2331 hat das Revlog-Argument
  • entfernt
  • 3090 hat die Funktion in cmdutil.py verschoben
  • 3707 hat das ui-Argument
  • entfernt
  • und schließlich 14319 hat die Funktion in scmutil.py verschoben

Natürlich ist das nicht perfekt, denn wenn die Funktion umbenannt würde, würde die Kette nach dem Umbenennen enden. Je nach Anwendungsfall reicht dies jedoch aus.

Um anspruchsvoller zu sein, könnten Sie ein relativ einfaches Skript schreiben, das sogar umbenennen kann.

    
Idan K 19.07.2011 19:29
quelle
0

Wenn man sich die Deltas und / oder das hg-Protokoll anschaut, scheint es nicht in der Lage zu sein, das zu tun, was man fragt, oder genug Informationen zu haben, um ein Skript zu schreiben, um die Informationen auszugeben. Wenn Sie möchten, können Sie die Änderungen sehen, die über einen bestimmten Zeitraum hinweg in einer Datei aufgetreten sind, und nach dem suchen, wonach Sie suchen.

    
Tyler Smith 19.07.2011 19:05
quelle

Tags und Links