Problem mit patch und diff

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
XCooperation
Beiträge: 78
Registriert: 01.06.2005 15:05:37
Wohnort: Schrobenhausen
Kontaktdaten:

Problem mit patch und diff

Beitrag von XCooperation » 03.08.2006 18:07:29

Hallo,
ich hab hier ein kleines Problem mit patch und diff.
Also, ich hab hier zwei Ordner Sockets-2.0.4a und Sockets-2.0.4a_orig.
Sockets-2.0.4a enthält die von mir bearbeiteten Dateien, die Orginale liegen in Sockets-2.0.4a_orig.

So jetzt möchte ich einen Patch erstellen, der alle Original-Dateien in meine bearbeiteten Dateien umwandelt. Zum Testen hab ich eine Kopie von Sockets-2.0.4a_orig erstellt: Sockets-2.0.4a_patched.

Dann habe ich einen Patch erstellt mit dem Befehl:

Code: Alles auswählen

cd "./Sockets-2.0.4a_orig"
diff ./ "../Sockets-2.0.4a" > "../patch/patch.txt"
Patch:

Code: Alles auswählen

diff ./Base64.h ../Sockets-2.0.4a/Base64.h
0a1
> //Just for T-E-S-T
Gemeinsame Unterverzeichnisse: ./DevCpp und ../Sockets-2.0.4a/DevCpp.
Gemeinsame Unterverzeichnisse: ./Project und ../Sockets-2.0.4a/Project.
Gemeinsame Unterverzeichnisse: ./Project.net und ../Sockets-2.0.4a/Project.net.
Ok, jetzt will ich den Patch auf Sockets-2.0.4a_patched (enthält noch die Original-Dateien) anwenden:

Code: Alles auswählen

cd ..
cd "Sockets-2.0.4a_patched"
patch < ../patch/patch.txt
Das Ergebnis sieht dann so aus:

Code: Alles auswählen

can't find file to patch at input line 2
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff ./Base64.h ../Sockets-2.0.4a/Base64.h
--------------------------
File to patch:
Naja, wenn ich jetzt aber Base64.h eingebe, dann Patcht er mir die Datei richtig...
Was mach ich falsch?

Danke für eure Hilfe ;-)
Never trust a running system!
http://www.xenesis.net

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.08.2006 20:09:20

versuche einmal den Patch mit der Option -u (besser -Naur) zu erstellen

Code: Alles auswählen

diff -u ./ ../Sockets-2.0.4a > ../patch/patch.txt
übersichtlicher werden die Patches wenn du das diff eine Ebene höher aufrufst::

Code: Alles auswählen

diff -u  Sockets-2.0.4a_orig  Sockets-2.0.4a > patch/patch.txt
Anwenden kannst du den Patch dann so

Code: Alles auswählen

cd "Sockets-2.0.4a_patched" 
patch -p1 < ../patch/patch.txt

Gruß
gms

Benutzeravatar
XCooperation
Beiträge: 78
Registriert: 01.06.2005 15:05:37
Wohnort: Schrobenhausen
Kontaktdaten:

Beitrag von XCooperation » 03.08.2006 20:59:23

Funktioniert, Danke :D
Never trust a running system!
http://www.xenesis.net

Antworten