2009-11-30 16 views
9

Wir verwenden Subversion und bei jedem Einchecken erstellt ein Skript eine Patch-Datei mit allen Diff. Nun zum gleichen Problem/Defekt könnte es mehrere Check-Ins geben und wir enden mit mehreren Patch-Dateien. Um nun konsolidierte Änderungen für ein Problem zu sehen, müssen alle Patch-Dateien zusammengeführt werden. Gibt es eine Möglichkeit, das zu tun?Wie mehrere Patch-Dateien zusammenführen?

Oder ein anderer Weg, um das gleiche Problem zu lösen ist: Gibt es einen Weg in Subversion, um das kombinierte Diff aller Änderungen als Teil eines bestimmten Kommentars zu erhalten? ZB:

mit Bemerkung Kontrolliert in: "123: Erste Änderungen"
mit Bemerkung Kontrolliert in: "123: zweiter Satz von Änderungen"
Checkten mit Kommentaren: "123: third changes" ..

Gibt es eine Möglichkeit, ein kombiniertes diff aller Änderungen zu erhalten, deren Kommentar Präfix 123 hat?

Antwort

11

combinediff von patchutils kann die diffs für Sie kombinieren.

(Schamlos von this previous SO question entlehnt.)

+0

Combinediff funktioniert nur, wenn die Kontextlinien des zweiten Diffs gültig bleiben * nachdem * das erste Diff angewendet wurde. Wenn also beide Diffs gegen dieselbe Basislinie sind und benachbarte Linien berühren, werden einige Änderungen zurückgewiesen. – user833771

+0

Wie kann ich combinediff verwenden? Können wir es unter Windows verwenden? – ashish

+0

Laden Sie die neueste Version von http://cyberelk.net/tim/data/patchutils/stable/, extract, './configure && make && make install' herunter, dann können Sie' combinediff patch1 patch2' ausführen. – erwaman

3

von der Revision eine Niederlassung Stellen kurz vor dem ersten changeset starten. Verknüpfen Sie in der neuen Zweigstelle jeden Änderungssatz des Problems in der angegebenen Reihenfolge. Nehmen Sie ein Diff zwischen dem Start des neuen Zweiges und dem Endergebnis.

(Wenn Sie eine ausgabebasierte Verzweigung ausführen, erhalten Sie die obige Situation automatisch).

Mercurial hat eine schöne Erweiterung für den Umgang mit Sammlungen von Patches, nämlich die mq-Erweiterung. Das wiederum basiert auf Quilt (http://savannah.nongnu.org/projects/quilt), einem System, das entworfen wurde, um Patches aufeinander zu stapeln.

Verwandte Themen