594 Stimmen

Wie kann man in Subversion eine bereits übergebene Logmeldung bearbeiten?

Gibt es eine Möglichkeit, die Logmeldung einer bestimmten Revision in Subversion zu bearbeiten? Ich habe versehentlich den falschen Dateinamen in meine Commit-Nachricht geschrieben, was später verwirrend sein könnte.

Ich habe gesehen Wie kann ich eine fehlerhafte Commit-Nachricht in Git bearbeiten? , aber die Lösung dieser Frage scheint für Subversion nicht ähnlich zu sein (laut svn help commit ).

31 Stimmen

Ich wollte diese Frage hochstufen, aber dann habe ich gemerkt, dass ich das schon vor 4 Monaten getan habe :)

6 Stimmen

Wenn es sich um Code handelt, machen Sie einfach ein paar Kommentare und übertragen Sie ihn erneut mit den entsprechenden Kommentaren. Wenn Sie damit einverstanden sind, dass Ihre Kommentare den Fehler widerspiegeln, ist das viel weniger Aufwand und geht viel schneller. Wenn nicht, ist die Lösung von Kamil Kisiel eindeutig der richtige Weg, um es zu tun.

0 Stimmen

Es gibt eine ausgezeichnete pre-revprop-change Skript, das es dem übertragenden Benutzer ermöglicht, sein Protokoll bis zu 3 Stunden nach der Übertragung zu ändern. Dies ist ein hervorragender Kompromiss zwischen Flexibilität/genauen Protokollen und der Aufrechterhaltung der Treue des Repositorys: wandisco.com/svnforum/threads/

483voto

Kamil Kisiel Punkte 18687

Dazu müssen Sie (direkt oder indirekt) über Administratorrechte für das Repository verfügen. Sie können entweder das Repository so konfigurieren, dass alle Benutzer dies tun können, oder Sie können die Protokollmeldung direkt auf dem Server ändern.

Voir dieser Teil der Subversion FAQ (Hervorhebung von mir):

Die Protokollmeldungen werden in der Datei Repository als Eigenschaften gespeichert, die an jeder Revision. Standardmäßig wird das Protokoll Eigenschaft (svn:log) nicht bearbeitet werden bearbeitet werden, sobald sie übertragen wurde . Dies ist weil Änderungen an Revisionseigenschaften (von denen svn:log eine ist) dazu führen, dass die der vorherige Wert der Eigenschaft permanent verworfen wird, und Subversion versucht zu verhindern, dass Sie dies versehentlich zu tun. Es gibt jedoch ein paar einige Möglichkeiten, Subversion dazu zu bringen eine Revisionseigenschaft zu ändern.

Der erste Weg ist für das Repository Administrator die Änderung von Revisions Änderungen der Eigenschaften zu ermöglichen. Dies geschieht durch das Erstellen eines Hooks namens "pre-revprop-change" (siehe diesen Abschnitt im Subversion-Buch für mehr Details darüber, wie man das macht). Der "pre-revprop-change"-Haken hat Zugriff auf auf die alte Logmeldung, bevor sie geändert wird, so dass er sie auf irgendeine Weise bewahren kann erhalten (zum Beispiel durch Senden einer E-Mail). Sobald die Revisionseigenschaft Änderungen aktiviert sind, können Sie die Protokollnachricht einer Revision ändern, indem Sie Übergabe der Option --revprop an svn propedit oder svn propset übergeben, wie bei einer der folgenden:

$svn propedit -r N --revprop svn:log URL 
$svn propset -r N --revprop svn:log "new log message" URL 

wobei N die Revisionsnummer ist, deren Protokoll Meldung Sie ändern möchten, und URL ist der Ort des Repositorys. Wenn Sie diesen Befehl aus einer Arbeitskopie Kopie ausführen, können Sie die URL weglassen.

Die zweite Möglichkeit, ein Protokoll zu ändern Meldung zu ändern, ist die Verwendung von svnadmin setlog. Dies muss durch Verweis auf die Speicherort des Repository im Dateisystem. Sie können ein entferntes Repository mit diesem Befehl nicht ändern.

$ svnadmin setlog REPOS_PATH -r N FILE

wobei REPOS_PATH das Repository ist Standort ist, N die Revisionsnummer ist deren Protokollmeldung Sie ändern möchten, und FILE eine Datei ist, die die neue Log-Meldung enthält. Wenn die "pre-revprop-change"-Haken nicht vorhanden ist nicht vorhanden ist (oder wenn Sie das Hook Skript aus irgendeinem Grund umgehen wollen), können Sie auch die Option --bypass-hooks verwenden. Wenn Sie sich jedoch für die Verwendung dieser Option verwenden, seien Sie sehr vorsichtig. Sie könnten Dinge wie E-Mail-Benachrichtigungen Benachrichtigungen über die Änderung oder Backup Systeme, die Revisionen verfolgen Eigenschaften verfolgen.

15 Stimmen

Ab dem 3. Februar 2010 lautet die URL subversion.apache.org/faq.html#change-log-msg

1 Stimmen

Hier ist eine grundlegende Implementierung für die Option svnadmin svn-change-commit

2 Stimmen

Danke! Auch 6,5 Jahre nach der Antwort noch nützlich :-)

97voto

Alex. S. Punkte 135055

Wenn Sie diesen Befehl ausführen,

svn propedit svn:log --revprop -r NNN 

und nur für den Fall, dass Sie diese Nachricht sehen:

DAV-Anfrage fehlgeschlagen; es ist möglich, dass das Repository vor der Revprop-Änderung Hook entweder fehlgeschlagen oder nicht vorhanden ist

Das liegt daran, dass Subversion es nicht zulässt, Logmeldungen zu ändern, da sie nicht versioniert sind und dauerhaft verloren gehen.

Unix-gehostetes SVN

Wechseln Sie in das Verzeichnis hooks auf Ihrem Subversion-Server (ersetzen Sie ~/svn/reponame durch das Verzeichnis Ihres Repositorys)

cd ~/svn/reponame/hooks

Entfernen Sie die Erweiterung

mv pre-revprop-change.tmpl pre-revprop-change

Ausführbar machen (chmod +x geht nicht!)

chmod 755 pre-revprop-change

Fuente

Windows-gehostetes SVN

Die Vorlagendateien im Verzeichnis hooks können nicht verwendet werden, da sie Unix-spezifisch sind. Sie müssen eine Windows-Batch-Datei kopieren pre-revprop-change.bat in das Verzeichnis hooks, z. B. in das Verzeichnis, das aquí .

1 Stimmen

Warum Sie in Klammern schreiben "kann no chmod +x ausführen!"?

1 Stimmen

Ich habe ein kleines Skript erstellt, das die gleiche Idee hier umsetzt blog.mmonem.com/enable-changing-svn-log

0 Stimmen

SVN_EDITOR, VISUAL oder EDITOR müssen vor der Verwendung von svn propedit gesetzt werden

50voto

mcqwerty Punkte 3336

Hier ist eine praktische Variante, die in der FAQ nicht erwähnt wird. Sie können die aktuelle Nachricht zur Bearbeitung zurückgeben, indem Sie einen Texteditor angeben.

svn propedit svn:log --revprop -r N --editor-cmd vim

17 Stimmen

Voraussetzung dafür ist, dass der Haken erstellt wurde, wofür Administratorrechte erforderlich sind. svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook

0 Stimmen

Hier ist ein Skript zur Aktivierung des Protokolls: blog.mmonem.com/enable-changing-svn-log

41voto

nickf Punkte 517253
svnadmin setlog /path/to/repository -r revision_number --bypass-hooks message_file.txt

0 Stimmen

Ich verwende Google Code, also glaube ich nicht, dass ich es auf diese Weise machen kann, aber danke.

4 Stimmen

Dies hat bei mir funktioniert, da die propedit-Methode mit der Meldung "Repository has not been enabled to accept revision propchanges" fehlschlug. danke!

1 Stimmen

+1 für die direkte Angabe des Befehls :-) apache.org war im Moment down und ich konnte keinem der angegebenen Links folgen...

21voto

Unter Windows, mit dem Tortoise SVN-Client:

  1. Klicken Sie mit der rechten Maustaste in Ihren Projektordner und wählen Sie "Protokoll anzeigen".
  2. Klicken Sie im Fenster "Logmeldungen" mit der rechten Maustaste auf eine Revision und wählen Sie "Logmeldung bearbeiten".

Wenn es nicht funktioniert, könnte es an der Art liegen, wie SVN auf dem Server eingerichtet ist, lesen Sie die anderen Antworten hier.

1 Stimmen

Danke, das war eine einfachere Lösung für mich, +1. Ist wichtig, um Berechtigungen zu haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X