Hallo Orlando,
Was aber, wenn ich beispielsweise Software heruntergeladen habe, selbst Änderungen vornehme und dann ein Update des Anbieters veröffentlicht wird?
Das sollte man erstmal soweit wie irgend möglich vermeiden. Fremde Softwarekomponenten kann man auf Basis von dafür vorgesehenen Schnittstellen, Templates u.ä. erweitern. Dann kann man problemlos eine Komponente gegen eine neuere Version austauschen und muss sich nur noch um mögliche Schnittstellenänderungen kümmern (das kann natürlich auch in Arbeit ausarten, dann ist aber die Vorgehensweise des Herstellers mist und man sollte sich nach einer anderen Lösung umsehen).
Wenn man wirklich eine eigene Version fremder Software pflegen muss (bei irgendwelchen Webanwendungen ist das leider oft so, weil sie schlicht nicht vernünftig erweiterbar sind), dann ist meines Erachtens der im SVN-Buch vorgeschlagene weg, die Version ins eigene SVN einzuchecken und die Änderung in den eigenen Entwicklungszweig zu mergen, noch die praktikabelste Variante. Dabei behält man wenigstens den Überblick über die Unterschiede und muss nur an den Stellen Hand anlegen, bei denen es zu Konflikten kommt. Bei größeren Änderungen an der Software kann das aber natürlich immer noch sehr viel Arbeit sein.
Mit ein grundsätzliches Problem ist, dass natürlich die Entwickler diese Art der Anpassung nicht vorsehen und daher auch keine Rücksicht nehmen. Eine Erweiterung kann also plötzlich einfach nicht mehr so umsetzbar sein, wie das bislang möglich war.
Grüße
Daniel