Frage

Ich möchte Subversion eine Datei selbst begehen, wenn es unverändert. Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Wenn Sie die Dateiinhalte bleiben unverändert wollen (was bedeutet, dass Sie nicht nur Leerzeichen ändern können als johnstok vorgeschlagen) Sie immer eine der Eigenschaften auf die Datei ändern kann.

zB.

svn propset dummyproperty 1 yourfile
svn commit yourfile

Das wird eine Festschreibung durchführen, ohne die Datei zu ändern.

So stellen Sie sicher, dass Sie nicht eine der speziellen svn: Eigenschaften verwenden Sie. Alles andere sollte in Ordnung sein.


Edit: Eine Reihe von anderen Plakaten haben gefragt, warum jemand dies tun möchte -. Vermutlich die Leute, die diese Antwort nach unten markiert haben, haben auch die gleichen Bedenken haben

Ich kann für das ursprüngliche Plakat nicht sprechen, aber ein Szenario, in das ich diese verwendet gesehen hat, ist bei der automatischen Aktivitäten versuchen, zu synchronisieren, auf einem Visual Source Repository mit einer Subversion-Repository.

Andere Tipps

Wie zu beantworten, warum man möchte gezwungen Commits tun. Ich habe Fälle gesehen, wo jemand eine Commit-Nachricht verwendet, die falsch oder unklar war. Es ist schön, wenn man ein erzwungener begehen durchführen kann, in dem Sie diesen Fehler korrigieren können. Auf diese Weise der Botschaft geht in das Repository aktualisiert, damit es nicht verloren gehen.

I frigged dies durch das Löschen dann erneut hinzufügen die problematische Datei. Nicht der schönste Weg, es zu tun, und es brach wahrscheinlich die Revision der Geschichte, aber es ist meine Zwecke geeignet.

Grund für den Wunsch, es zu tun: Die Datei war einer von zwei ausführbaren Dateien aus derselben Quelle gebaut (mit unterschiedlichen #defines gesetzt). Geringfügige Änderung Quelle bedeutete eine verändert hatte, tat man nicht. Ich wollte in der Revision der Geschichte aufzuzeichnen, dass ich es tatsächlich auf die neueste Version aktualisiert hatte (obwohl es keine Veränderung war).

Vielleicht Punkt Morten Holdflod Møller, dass „die Datei wird immer noch ein Teil der neuen Revision sein“ würde diese Indikation decken, aber ich denke, ein Protokoll der unveränderten Datei nicht zeigte Kommentare zu dieser Revision.

Wenn es eine Textdatei nur einige Leerzeichen hinzufügen, wie ein Zeilenvorschub.

Die Beantwortung einiger Leute in Frage dies möglich sein soll: aus irgendeinem Grunde svn erkennt keine Unterschiede zwischen doc-Dateien, so würde Ich mag auch zwingen, begehen

!

Ich ziehe jetzt Dokumentation von statischen dirs, zu SVN. Dateien sind wie UG_v1.2, UG_v1.3 usw. Also nur noch Geschichte zu halten, ich nehme 1.2, entfernen Version aus dem Dateinamen und fügen und sich verpflichten, es zu SVN. Dann nehme ich die ver von dem zweiten, kopieren Sie sich über die ersten und will es und neuere Version zu begehen. Dateigröße und das Erstellungsdatum der Änderungen (nicht zu erwähnen, was in der doc sind), aber svn behauptet, es ist vollkommen die gleiche Datei und nicht zulässt, mich zu verpflichten. Wenn ich die doc manuell ändern, sieht svn die anders. Der Teufel? :>

Ich glaube nicht, dass das möglich ist, aber vor allem, warum brauchen Sie das zu tun? Wenn eine Datei unverändert ist es sollte nicht verpflichtet werden.

Wenn Sie wirklich die Datei mit anderen Dateien in einem gruppierte wollen begehen Sie etwas kleinere innen ändern könnten (fügen Sie ein Leerzeichen zum Beispiel).

Der Grund, warum jemand will unveränderte Datei begehen ist Mißverständnis, wie zu einer früheren Version einer Datei wiederherzustellen.

Zum Beispiel kann man die Datei index.html in der Revision 680 wiederherstellen, indem es nur zu einer Revision in der Vergangenheit zu aktualisieren, zum Beispiel 650 :

svn update index.html -r 650

, aber es löst nicht das Problem, denn:

svn status -u index.html
        *      650   index.html
Status against revision:    680

svn klar sagt, dass index.html ist geändert remote und Sie können es nicht begehen, das heißt es „denkt“, dass index.html ist alt und sollte auf eine neuere Version aktualisiert werden. Also das nächste svn update bringen index.html zurück in die Revision 680 .

Um wirklich eine Datei wiederherstellen, sollten Sie es in umgekehrter Reihenfolge zusammen:

svn merge -r 680:650 index.html

und dann begehen sie svn ci -m "Reverted to r650" index.html

Eigentlich bin ich auf einem Grund gekommen, um eine Kraft zu tun, begehen. Dies ist wahrscheinlich nicht die beste Praxis aber wir setzen Truecrypt ( http://www.truecrypt.org/ ) Volumen in SVN, da brauchen wir eine enge Sicherheit auf einig Shell-Skript zu halten, da es vertrauliche Informationen enthält. Wenn ein Truecrypt-Volume erstellt wird, ist es Binärdaten egal gleich bleibt, was Sie damit machen. Also in der Tat, kann ich den Inhalt der Lautstärke ändern, aber das Volumen erscheint nie geändert.

die Eigenschaft ändert, wird NICHT den commit erzwingen.

TortoiseSVN 1.4.5, Build 10425-32 Bit, 2007.08.26 11.14.13

Ich habe das gleiche Problem mit einem TrueCrypt Volumen.

Ich habe eine neue Eigenschaft (wie oben vorgeschlagen) „forceCommit1“ und sie konnte ich die Volume-Datei begehen. aber nur wurde die Eigenschaft nicht den Inhalt der Datei verpflichtet.

entfernte ich die Datei und fügte hinzu, es wieder zu dem SVN

Vielleicht haben Sie es von der Kommandozeile tun könnten?

svn ci -force <filename>

Ich habe kein Repository hier haben, das zu überprüfen, so dass ich könnte falsch sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top