SVN Tipp

Wenn wir unsere Applikationen an Kunden ausliefern, dann sind (fast) immer die SVN-Keywords in den Dateien enthalten. Wenn jetzt ein Kunde eigene Anpassungen macht, ist es meist recht aufwendig diese Anpassungen zu extrahieren und die Änderungen in unser Kundenrepository zu übernehmen.

Wie das geht habe ich mir jetzt mal im Detail angeschaut.

Voraussetzung ist, man kennt die Version, die dem Kunden ausgeliefert wurde.

z.B.

/*
$Id: layout.css 178510 2013-11-21 17:40:46Z websteff $
$HeadURL: http://svn.example.com/customers/abc/layout.css $
*/

Somit kennen wir die Basisversion. Mittels SVN können wir uns nun die original Version anzeigen lassen.

svn cat -r 178340 http://svn.example.com/customers/abc/layout.css

Diese Version können wir jetzt mit der geänderten Kundendatei (z.B. /tmp/layout.css) vergleichen.

diff <(svn cat -r 178340 http://svn.example.com/customers/abc/layout.css) /tmp/layout.css

Aus diesem Vergleich speichern wir jetzt eine patch-Datei.

diff -u <(svn cat -r 178340 http://svn.example.com/customers/abc/layout.css) /tmp/layout.css > /tmp/layout.css.patch

Somit haben wir jetzt die Kundenanpassungen extrahiert und können diese auf unsere letzte Version anwenden.

patch ~/workspace/customers/abc/layout.css /tmp/layout.css.patch

Fertig.

Eventuelle Konflikte kann man natürlich nicht automatisiert lösen lassen.

Viel Erfolg! 🙂