version control - Can I merge multiple consecutive changesets into a changeset in Mercurial -


let's have changeset a, , make changesets b1, b2, , b3 on top of a, while developer makes changesets c1, c2, , c3 on top of a:

      b1 --- b2 --- b3      / ---      \       c1 --- c2 --- c3 

the other developer pushes code central repository, , want push code, can't because there multiple heads. rebase changesets go on top of (and i've been doing), more accurate merge.

however, far i'm aware, can merge 1 changeset @ time. i'd have merge b1 onto c3 creating m1, , b2 onto m1 creating m2, , and b3 onto m2 creating m3. that's 3 merges have perform, , 3 new merge changesets cluttering repository! there way can merge b1, b2, , b3 onto c3 @ once, or have settle modifying history using rebase?

you can merge b3 , c3 get:

      b1 --- b2 --- b3      /                \ ---                  m      \                /       c1 --- c2 --- c3 

that traditional way reconsile 2 lines of development. merge changeset have 2 parents (merges have 2 parents in mercurial) b3 , c3, you're still merging combined effect of b1 b3 combined effect of c1 c3.

in fact, merges concerned 3 states: a, b3, , c3. since state b3 include changes made in b1 , b2, end merging changes in b1 b3 state c3.

what describe 3 merges rebase internally! after creating m1 m3, deletes second parent of these merge commits , deletes b1 b3. leaves with

--- --- c1 --- c2 --- c3 --- m1 --- m2 --- m3 

where mi ~= bi. note, less accurate picture of happened in repository because you've linearized history done in parallel.


Comments