On 20.11.2011 12:22, Christian Lohmaier wrote: > Hi Eric, *, > > On Sun, Nov 20, 2011 at 10:12 AM, eric b<eric.bach...@free.fr> wrote: >> Le 19 nov. 11 à 22:55, Mathias Bauer a écrit : >>> Am 19.11.2011 15:22, schrieb Pedro Giffuni: >> >>> I still prefer the conversion of a cws in single diffs, each one >>> representing a single commit. >> >> Me too. That's the most efficient way to integrate a cws. > > No, it is not. A cws can be long lived, could have underwent multiple > rebases with the current tree, so there are lots of commits that refer > to a old version of the code and thus won't apply anymore. > Unless you want to do lots of detecitve work and redo all the merging > work that the author of the cws did do already over the course of > time, trying to apply a cws by its individual commits is a waste of > time, not to mention that it is > > The version to apply a cws to a different version-control system is to > create a diff agains the current milestone the cws is based on and try > to apply that one. (feel free to create a diff for each module). This > will give way less conflicts and is much faster. You loose history, > but that was your decision when converting the repo to begin with.
As I tried both methods on some cws already, I don't recommend the "one cws diff" method, except in one single case (see below). You will get merge conflicts in both ways, but by turning a cws into single diffs you will get smaller merges, and especially you will get many merges that someone already did. Looking on the merge commits in Mercurial will help you with the conflict resolution. Applying huge diffs in code you don't know perfectly is hard. Applying diffs that each represent a single change with better defined meaning and intent should be easier and less error-prone. It might take a little bit longer, but the result will be better and the developers carrying out the integration can learn something about the code. Of course, if a cws isn't well organized with commits of manageable size and at least somewhat helpful comments, working with single commit diffs would suffer from its disadvantages without the advantages - so applying a single diff and trying hard might be more efficient. But you will lose the cws history then and I still think we should preserve it when possible (it wasn't for the stuff already integrated, unfortunately, but that's no reason to lose everything else too). Regards, Mathias