it-swarm.com.de

Wie kann ich Subversion zwingen, eine unveränderte Datei zu übergeben?

Ich möchte, dass Subversion eine Datei festschreibt, auch wenn sie unverändert ist. Gibt es eine Möglichkeit, dies zu tun?

55
pcorcoran

Wenn Sie möchten, dass der Inhalt der Datei unverändert bleibt (dh Sie können den Leerraum nicht einfach ändern, wie von johnstok vorgeschlagen), können Sie jederzeit eine der Eigenschaften der Datei ändern.

z.B.

 svn propset dummyproperty 1 Ihre Datei 
 svn Commit Ihre Datei 

Dadurch wird ein Commit ausgeführt, ohne dass die Datei geändert werden muss.

Stellen Sie nur sicher, dass Sie keine der speziellen svn:-Eigenschaften verwenden. Alles andere sollte in Ordnung sein.


Edit: Einige andere Plakate haben gefragt, warum jemand dies tun möchte - vermutlich haben auch die Leute, die diese Antwort markiert haben, die gleichen Bedenken.

Ich kann nicht für das Originalplakat sprechen, aber ein Szenario, in dem ich dies gesehen habe, ist der Versuch, Aktivitäten in einem Visual Sourcesafe-Repository automatisch mit einem Subversion-Repository zu synchronisieren.

62

Um zu antworten, warum man Zwangs-Commits machen möchte. Ich habe Fälle gesehen, in denen jemand eine Commit-Nachricht verwendet hat, die falsch oder unklar war. Es ist schön, wenn Sie ein erzwungenes Commit durchführen können, bei dem Sie diesen Fehler korrigieren können. Auf diese Weise geht die aktualisierte Commit-Nachricht in das Repository, damit sie nicht verloren geht.

4
user253217

Ich habe dies durch Löschen und erneutes Hinzufügen der fehlerhaften Datei verhindert. Nicht der schönste Weg, dies zu tun, und es hat wahrscheinlich die Revisionsgeschichte gebrochen, aber es entsprach meinen Vorstellungen.

Grund dafür, dies zu tun: Datei war eine von zwei ausführbaren Dateien, die aus derselben Quelle erstellt wurden (mit unterschiedlichen #defines-Mengen). Eine geringfügige Änderung der Quelle bedeutete, dass sich einer geändert hatte, einer nicht. Ich wollte in der Revisionshistorie festhalten, dass ich sie tatsächlich auf die neueste Version aktualisiert habe (obwohl es keine Änderung gab).

Vielleicht würde der Hinweis von Morten Holdflod Møller, dass "die Datei immer noch Teil der neuen Revision sein wird", diesen Hinweis abdecken würden, aber ich denke, dass ein Protokoll der unveränderten Datei keine Kommentare für diese Revision enthielt.

4
Mat

Die Beantwortung einiger Personen, die dies in Frage stellen, sollte möglich sein: Aus irgendeinem Grund erkennt svn keine Unterschiede zwischen den Doc-Dateien, daher möchte ich auch das Commit erzwingen!

Ich verschiebe jetzt die Dokumentation von statischen Verzeichnissen zu SVN. Dateien sind wie UG_v1.2, UG_v1.3 usw .. Also, um die Geschichte zu behalten, nehme ich 1.2, entferne die Version aus dem Dateinamen und füge sie hinzu und sage sie zu svn ..__ , kopiere es über die erste und möchte es und eine neuere Version übergeben. Dateigröße und Erstellungsdatum werden geändert (wobei nicht erwähnt wird, was sich in dem Dokument befindet), aber svn behauptet, dass es sich vollkommen um dieselbe Datei handelt, und es ist mir nicht gestattet zu begehen. :>

2
agata

Wenn es sich um eine Textdatei handelt, fügen Sie einfach Leerzeichen hinzu, beispielsweise einen Zeilenvorschub.

2
johnstok

Ich denke nicht, dass das möglich ist, aber vor allem, warum müssen Sie das tun? Wenn eine Datei unverändert ist, sollte sie nicht festgeschrieben werden.

Wenn Sie wirklich möchten, dass diese Datei mit anderen Dateien in einem Commit gruppiert wird, können Sie etwas Minorisches darin ändern (z. B. ein Leerzeichen hinzufügen).

0
rslite

Der Grund, warum jemand eine unveränderte Datei festschreiben möchte, ist das Missverständnis, wie eine frühere Version einer Datei wiederhergestellt werden kann.

Beispielsweise kann man die Datei index.html in der Revision 680 durch einfaches Aktualisieren auf eine Revision in der Vergangenheit, z. 650:

svn update index.html -r 650

aber es löst das problem nicht, weil:

 svn status -u index.html 
 * 650 index.html 
 Stand gegen Revision: 680 

svn sagt eindeutig, dass index.html remote modifiziert ist, und Sie können es nicht festlegen, d. h. Der nächste svn update bringt index.html zurück zur Revision 680.

Um eine Datei wirklich wiederherzustellen, sollten Sie sie in umgekehrter Reihenfolge zusammenführen:

svn merge -r 680:650 index.html

und dann übergeben Sie es svn ci -m "Reverted to r650" index.html

0