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: -)
Das ist mit hg grep
eigentlich ziemlich machbar. Ein Beispiel spricht für sich selbst:
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:
commands.py
cmdutil.py
verschoben
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.
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.