Hallo LUG,
ich möchte 2 Dateien mischen (per Kommandozeile) datei1: Original datei2: enthält Änderungen zum Original
Mit diff datei1 datei2 sehe ich zwar schon die Änderungen, aber wie bekomme ich die nun zusammen ?
Ich habe zwar das Tool merge schon gefunden, welches aber 3 Dateien benötigt, ich habe aber nur Original und Änderung.
Hat Jemand einen Typ?
Grüße aus Kamenz
Hallo Bernd,
Bernd Ledig wrote:
ich möchte 2 Dateien mischen (per Kommandozeile) datei1: Original datei2: enthält Änderungen zum Original
Datei2 sollte mit diff erzeugt worden sein.
Mit diff datei1 datei2 sehe ich zwar schon die Änderungen, aber wie bekomme ich die nun zusammen ?
patch datei1 datei2
mfg, Fabian
Fabian Hänsel wrote:
ich möchte 2 Dateien mischen (per Kommandozeile) datei1: Original datei2: enthält Änderungen zum Original
Datei2 sollte mit diff erzeugt worden sein.
Ist sie zwar nicht, habe ich aber mit diff nachgeholt.
Mit diff datei1 datei2 sehe ich zwar schon die Änderungen, aber wie bekomme ich die nun zusammen ?
patch datei1 datei2
Danke für den Tip. Ergebnis ist aber noch nicht das, was ich will. Ich vergaß, das sich inzwischen datei1 auch geändert hat. Also nochmal vollständig das Scenario:
datei-Original --- Person1 ändert --> datei1 --- Person2 ändert --> datei2
Ich möchte nun die zwei Dateien datei1 und datei2 so zusammenführen, dass sie beide Änderungen enthalten.
Mit obigen Weg (diff + patch zwischen datei1 und 2) sind Änderungen der einen Seite weg. Wie geht es richtig?
Grüße
Hi Bernd!
Am 2004-05-18 15:24 +0200 schrieb Bernd Ledig:
datei-Original --- Person1 ändert --> datei1 --- Person2 ändert --> datei2
Aha, das kam vorhin nicht so an.
Ich möchte nun die zwei Dateien datei1 und datei2 so zusammenführen, dass sie beide Änderungen enthalten.
Mit obigen Weg (diff + patch zwischen datei1 und 2) sind Änderungen der einen Seite weg. Wie geht es richtig?
Wie wärs mit
diff -u datei-Original datei1 > changes1 patch datei2 < changes1
Geht natürlich auch andersherum. Das setzt aber natürlich voraus, dass datei1 und datei2 nicht an der gleichen Stelle geändert wurden, sonst gibts dort einen Konflikt, den nur noch ein Mensch (der auch versteht, das die ASCII-Wüste bedeuten soll) auflösen kann.
Pitti
Hallo nochmal,
Am 2004-05-18 17:08 +0200 schrieb Martin Pitt:
diff -u datei-Original datei1 > changes1 patch datei2 < changes1
Das geht auch noch ein bisschen kompakter:
diff -u datei-Original datei1 | patch datei2
:-)
Pitti
Hi,
Bernd Ledig said:
ich möchte 2 Dateien mischen (per Kommandozeile) datei1: Original datei2: enthält Änderungen zum Original
Mit diff datei1 datei2 sehe ich zwar schon die Änderungen, aber wie bekomme ich die nun zusammen ?
Ich habe zwar das Tool merge schon gefunden, welches aber 3 Dateien benötigt, ich habe aber nur Original und Änderung.
Interessantes Raetsel.
Was genau ist datei2?
a) Original mit Aenderungen bereits drin? Dann ist die Loesung trivial: datei2 ist Dein geaendertes Original. Punkt.
b) datei2 ist eine mit diff erzeugte Datei. Nimm patch.
c) datei2 ist Original mit Aenderungen von Bob, datei1 ist Original mit Aenderungen von Alice. Du wirst von Hand mergen muessen, denn man kann nur raten. Mathematisch (und Computer koennen nur Mathematik!) ist das Problem eindeutig unloesbar: wenn A=x+a und B=x+b, dann kann von (A,B) nicht auf x geschlossen werden, das braeuchtest Du aber, um C=x+a+b berechnen zu koennen.
Solltest Du eine mathematische Loesung fuer c) finden, poste sie bitte!!!! In der Folgerung liesen sich eine Menge np-vollstaendige Probleme in p-Zeit erledigen (unter anderem koennte man damit den Diffie-Hellmann-Algorithmus als unsicher beweisen). So wie ich das sehe kannst Du das Problem aber nur mit einer nicht-deterministischen Maschine loesen: Deinem eigenen Gehirn.
Konrad
lug-dd@mailman.schlittermann.de