Gibt es eine Möglichkeit, die Protokollmeldung 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 ich eine falsche Commit-Nachricht in Git bearbeite. , aber die Lösung für diese Frage scheint für Subversion (laut svn help commit
) nicht ähnlich zu sein .
pre-revprop-change
Skript, mit dem der festschreibende Benutzer sein Protokoll bis zu 3 Stunden nach dem Festschreiben ändern kann. Dies ist ein ausgezeichneter Kompromiss zwischen Flexibilität / genauen Protokollen und der Aufrechterhaltung der Genauigkeit des Repositorys: wandisco.com/svnforum/threads/…svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Antworten:
Im Wesentlichen müssen Sie über Administratorrechte (direkt oder indirekt) für das Repository verfügen, um dies zu tun. Sie können das Repository entweder so konfigurieren, dass alle Benutzer dies tun können, oder Sie können die Protokollnachricht direkt auf dem Server ändern.
Siehe diesen Teil der Subversion-FAQ (Schwerpunkt Mine):
quelle
Wenn Sie diesen Befehl ausführen,
und nur für den Fall, dass Sie diese Nachricht sehen:
Dies liegt daran, dass Sie mit Subversion keine Protokollnachrichten ändern können, da diese nicht konvertiert sind und dauerhaft verloren gehen.
Von Unix gehostete SVN
Wechseln Sie in das Hooks-Verzeichnis auf Ihrem Subversion-Server (ersetzen Sie ~ / svn / reponame durch das Verzeichnis Ihres Repositorys).
Entfernen Sie die Erweiterung
Mach es ausführbar (kann nicht chmod + x!)
Quelle
Von Windows gehostete SVN
Die Vorlagendateien im Hooks-Verzeichnis können nicht verwendet werden, da sie Unix-spezifisch sind. Sie müssen eine Windows-Batchdatei
pre-revprop-change.bat
in das Hooks-Verzeichnis kopieren , z. B. das hier bereitgestellte .quelle
Hier ist eine praktische Variante, die ich in der FAQ nicht erwähnt sehe. Sie können die aktuelle Nachricht zur Bearbeitung zurückgeben, indem Sie einen Texteditor angeben.
quelle
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
quelle
Ich wurde kürzlich auch damit beauftragt.
Wir wollten unseren Programmierern erlauben, nur ihre eigenen Commit-Nachrichten zu ändern und einzuschränken, wie weit sie dies zurück dürfen. Wir haben beschlossen, dass sie alle an diesem Tag festgeschriebenen Protokollnachrichten ändern, Tippfehler usw. beheben dürfen.
Nachdem ich mir ein paar andere Beispiele online angesehen habe, habe ich dies zusammen gehackt. Wir befinden uns in einer Windows-Umgebung. Dies ist also unser Inhalt von
pre-revprop-change.bat
:Edit: Ursprüngliche Idee dazu kam aus diesem Thread :
quelle
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
in doppelte Anführungszeichen um die beiden Variablen wechseln. (Sie würden nicht glauben, wie lange das gedauert hat, um herauszufinden.) Andernfalls würde ich Dinge wie "== '02' ist zu diesem Zeitpunkt unerwartet" (am 2. Tag des Monats) erhalten. Mein Batch-Fu ist nicht stark genug, um zu wissen, warum das passiert, aber falls jemand anderes auf seltsame Probleme stößt, kann es helfen.Unter Windows mit dem Tortoise SVN-Client:
Wenn es aufgrund der Art und Weise, wie SVN auf dem Server eingerichtet ist, möglicherweise nicht funktioniert, lesen Sie hier andere Antworten.
quelle
Wenn Sie eine IDE wie Eclipse verwenden, können Sie diesen einfachen Weg verwenden.
Darin
right click on the revision id for your commit and select 'Set commit properties'
.Sie können die Nachricht von hier aus beliebig ändern.
quelle
Wenn Ihr Repository das Festlegen von Revisionseigenschaften über den Pre-Revprop-Change-Hook ermöglicht, können Sie Protokollnachrichten viel einfacher ändern.
Oder in TortoiseSVN, AnkhSVN und wahrscheinlich vielen anderen Subversion-Clients, indem Sie mit der rechten Maustaste auf einen Protokolleintrag klicken und dann "Protokollnachricht ändern".
quelle
In den Subversion-FAQ wird dies behandelt, es werden jedoch einige verwirrende undefinierte Begriffe verwendet,
REPOS_PATH
ohne dass tatsächliche Beispiele angegeben werden.Es kann einige Versuche dauern, bis es funktioniert. Speichern Sie daher Ihre aktualisierte Festschreibungsnachricht in einer Datei. Im Gegensatz zu
svn-commit.tmp
Dateien behält Subversion Ihre Eingabe nicht bei, wenn ein Problem auftritt.Führen Sie in Ihrem Arbeitsverzeichnis aus
svn propedit -r N --revprop svn:log
um die Commit-Nachricht zu bearbeiten. Wenn das funktioniert, großartig! Aber es wird wahrscheinlich nicht, weil die
svn:log
Fall Revisionseigenschaft nicht versioniert ist und Subversion standardmäßig verhindert, dass Sie sie überschreiben, entweder mit dem Hook-Skriptpre-revprop-change
oder mit der Fehlermeldung, dass Sie keinen solchen Hook haben.Um die Hooks zu ändern, benötigen Sie Zugriff auf das Dateisystem, auf dem das Repository gehostet wird.
svn info
wird Ihnen das Repository-Stammverzeichnis mitteilen. Angenommen, es ist~/svnrepo
.cd
zu~/svnrepo/hooks
pre-revprop-change
oder einpre-revprop-change.bat
Skript? Wenn ja, kommentieren Sie vorübergehend den Teil aus, der abgebrochen wird, wenn Sie versuchen, Änderungen vorzunehmensvn:log
.Andernfalls erstellen Sie unter Windows eine leere Datei mit dem Namen
pre-revprop-change.bat
. Hier ist eine Möglichkeit, dies zu tun:Andernfalls führen Sie unter Unix aus
Führen Sie in der Arbeitskopie
svn propedit -r N --revprop svn:log
erneut aus~/svnrepo/hooks/svn-revprop-change
(.bat
) rückgängigquelle
Ich habe im svnforum eine nette Implementierung des serverseitigen Pre-Rev-Prop-Change-Hooks gefunden: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contributions/8571-pre-revprop-change -shell-script-erlaubt-Committern-das-Ändern-des-eigenen-Protokolls innerhalb von x Stunden
Es implementiert
Schnapp es dir von dort und bearbeite es nach Belieben. Ich würde es hier lieber nicht kopieren, da ich nicht der ursprüngliche Autor bin und es keinen Copyright-Hinweis gibt, der es mir erlauben würde, dies zu tun.
quelle