Frage

Ich habe einige lokalen Änderungen an ein Open-Source-Projekt, die Subversion als Quelle Steuerelement verwendet. (Ich habe keinen Zugriff auf der ursprünglichen Projekt-Repository begehen.)

fügt hinzu Meine Änderung eine Datei, aber diese Datei in der Ausgabe von „svn diff“ ist nicht enthalten. (Es kann sich lohnen, unter Hinweis darauf, dass die neue Datei ist ein binäres, nicht Klartext.)

Wie kann ich eine Patch machen, welche die neuen Dateien enthält?


 $ svn st
   A      tests/foo.zip
 $ svn diff
 $
War es hilfreich?

Lösung

Die Tatsache, dass die Datei binär ist genau, warum es nicht angezeigt Ich habe Angst. Subversion diff Befehl funktioniert nur Text diffs / Patches (obwohl intern Subversion Binärdatei Unterschiede effizient zwischen den Versionen verarbeiten kann).

Andere Tipps

Ich erlebte ein ähnliches Verhalten wie Pozsar. Und seine Antwort war für mich besser als die normale svn diff --force. Wenn es jedoch auf einer DOS-Maschine ausgeführt wird (beispielsweise über Cygwin), müssen Sie seine Antwort etwas ändern. Die folgende diff + Patch arbeitete für meinen Text + Binärdateien in Cygwin Patchen des --binary arg mit:

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff

patch -p0 --binary -i mybinarydiff.diff

Es gibt eine Option --force zum Diff-Befehl, aber es erzeugt eine falsche Patch-Datei für Binärdateien auf meinem Rechner. obwohl für mich die Verwendung mit der --diff-cmd Option funktioniert:

svn diff --force --diff-cmd /usr/bin/diff -x -au

Ich denke, das produziert genau das, was Sie wollten.

Wenn Sie einen Patch Gebäude sind, möchten Sie vielleicht plain old ‚diff‘ mit der --new-Datei Option verwenden, die die fehlende Datei als leer behandelt.

Hinweis

, dass die Syntax für diese Option kann tatsächlich variieren je nachdem, welche Version von plain old diff Sie verwenden.

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