On Tuesday 08 March 2011, Steve Cohen wrote: > Given two branches off a trunk that were taken at different times, if > the first is merged back to the trunk and then the second, how may the > second be merged back into the trunk so as not to override changes from > the first merge, assuming that both change sets are desired to be in the > trunk at the end?
I think that thinking in terms of changesets is the way to go. Let's assume trunk is this at the time that branch A is made: trunk = T0 + T1 + T2 i.e. trunk is the sum (not in the strict mathematical sense) of three changes here (those could be more or less changes, this is just for the example). Then, branch A becomes this after some time: branch A = T0 + T1 + T2 + A0 + A1 + A2 In other words, the branch contains the changes to the trunk up to the point the branch was created plus its own changes on top of that. If you now merge branch A back to the trunk, it becomes this: trunk = T0 + T1 + T2 + T3 + T4 + (A0 + A1 + A2) = T0 + T1 + T2 + T3 + T4 + T5 In other words, changeset T5 becomes the accumulated changes on branch A. Subversion knows that the branch was created off the trunk after T2, so those changes are already included in the trunk and they are not merged again, only those changes that were exclusive to the branch are. The important point is that not the whole state is copied from a branch to the trunk during merging, but the changes are applied, so any other changes already present are not overwritten. Uli -- ML: http://subversion.apache.org/docs/community-guide/mailing-lists.html FAQ: http://subversion.apache.org/faq.html Docs: http://svnbook.red-bean.com/ ************************************************************************************** Domino Laser GmbH, Fangdieckstraße 75a, 22547 Hamburg, Deutschland Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932 ************************************************************************************** Visit our website at <http://www.dominolaser.com/> ************************************************************************************** Diese E-Mail einschließlich sämtlicher Anhänge ist nur für den Adressaten bestimmt und kann vertrauliche Informationen enthalten. Bitte benachrichtigen Sie den Absender umgehend, falls Sie nicht der beabsichtigte Empfänger sein sollten. Die E-Mail ist in diesem Fall zu löschen und darf weder gelesen, weitergeleitet, veröffentlicht oder anderweitig benutzt werden. E-Mails können durch Dritte gelesen werden und Viren sowie nichtautorisierte Änderungen enthalten. Domino Laser GmbH ist für diese Folgen nicht verantwortlich. **************************************************************************************