7 Stimmen

Einen Kommentar zu Subversion hinzufügen, ohne eine Datei zu ändern?

Ich möchte dem Subversion-Protokoll oder der Historie für eine bestimmte Datei einen Kommentar hinzufügen, aber es sind keine Änderungen mit dieser Datei verbunden.

Gibt es eine Möglichkeit, einen Kommentar in das svn-Protokoll einzufügen, ohne eine Datei zu ändern?

Ich suche nach einer Möglichkeit, eine Datei im Protokoll zu markieren, nachdem ein Ereignis eingetreten ist, z. B. eine Codeüberprüfung.

Ich möchte keine svn-Kopie machen, um einen ganz neuen Zweig zu erstellen. Ich möchte nur den Kommentar, der mit einer einzelnen Datei zu einem bestimmten Zeitpunkt verbunden ist.

Gibt es hier Vorschläge?

6voto

David W. Punkte 101611

In Subversion gibt es zwei Arten von Eigenschaften:

  • Datei-Eigenschaften : Dies sind Eigenschaften, die mit einer Datei verbunden sind. Sie werden überarbeitet, als ob sie Teil der Datei selbst wären.
  • Revisionseigenschaften : Dies sind Eigenschaften, die mit einzelnen Revisionen verbunden sind. Von jeder Art von Eigenschaft kann es nur eine pro Revision geben. Sie sind nicht versioniert, so dass beim Ändern einer Revisionseigenschaft die historischen Informationen über die alten Informationen verloren gehen. Aus Sicherheitsgründen können Sie eine Revisionseigenschaft nicht ändern, ohne vorher einen pre-revprop-change-Hook zu erstellen, der dies ermöglicht.

Darüber hinaus gibt es drei spezielle Revisionseigenschaften, die mit jeder Revision verbunden sind und ziemlich wichtig sind:

  • svn:log : Dies ist die Übergabemeldung
  • svn:date : Dies ist das Datum und die Uhrzeit, zu der die Übertragung durchgeführt wurde.
  • svn:author : Dies ist der Benutzer, der die Übertragung vorgenommen hat.

Die Frage ist also, was Sie zu tun versuchen. Wenn Sie einen Kommentar zu einer Datei hinzufügen möchten, können Sie eine Dateieigenschaft zu dieser Datei hinzufügen. Das wird jedoch als Datei-Änderung betrachtet, so dass Sie einen Checkout durchführen müssen, svn pset und dann eine Übergabe, die eine neue Revision dieser Datei erzeugt.

Wenn Sie einen neuen Kommentar zu einer bestimmten Revision in Ihrem Repository hinzufügen möchten, müssen Sie dafür keine neue Revision erstellen. Allerdings müssen Sie eine pre-revprop-commit Hook-Datei, mit der Sie diese Änderungen vornehmen können. Sie haben zwei Möglichkeiten, dies zu tun:

  • Ändern Sie svn:log mit Ihrem Kommentar Dies ist wahrscheinlich der einfachste Weg. Allerdings werden die Änderungen in den Commit-Nachrichten nicht protokolliert, so dass Sie die ursprüngliche Commit-Nachricht dabei verlieren. Der Vorteil ist, dass dieser Kommentar automatisch mit dem svn:log Befehl.

Zum Beispiel:

$ old_comment=$(svn pget -r 100 -revprop svn:log http://myhost/svn/repos)
$ new_comment="$old_comment
> ================ COMMENT ON REVISION ================
> This was a change needed for a particular customer"
$ svn pset -r 100 --revprop svn:log "$new_comment"
  • Sie können auch eine neue Revisionseigenschaft erstellen, die Ihre Kommentare enthält. Zum Beispiel corp:comment (Ich verwende corp zur Kennzeichnung besonderer Eigenschaften meines Unternehmens). Sie können diese Kommentare in der svn log Nachricht, aber nur im xml-Format.

Zum Beispiel:

$ svn pset --revprop -r 100 foo:comment "This was a change needed for a particular customer" http://host/svn/repos

Wenn Sie nun Ihr Protokoll erstellen, können Sie diesen Kommentar sehen:

$ svn log --with-revprop foo:comment --xml -r 100 http://host/svn/repos
<?xml version="1.0"?>
<log>
<logentry
   revision="100">
<revprops>
<property
   name="foo:comment">This was a change needed for a particular customer</property>
</revprops>
</logentry>
</log>

4voto

nosid Punkte 47014

Sie können eine benutzerdefinierte Eigenschaft der Datei, die übertragen werden soll, festlegen/ändern, d. h. nur einige Metadaten ändern, ohne Nebenwirkungen zu verursachen.

svn propset my:log reason filename
svn commit filename

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