Hi,

Should amend-record be the same as unrecord/record (of the same changes)?

I suspect that most people would expect it to be so, and indeed we have previously fixed bugs where it was not the case, e.g. http://bugs.darcs.net/issue1272

However, there turn out to be very small examples where it is not the case, and in fact with the current way amend-record works it's actually impossible.

The reason is that amend-record uses a local coalescing operation on patches that is ignorant of repo state, whereas unrecord/record re-diffs actual repo states. In the following test case:

state    1    2    3
contents g => a => g
              g    g

If we go from state 1 to state 2 to state 3, we record insertion of "a" at line 1 followed by change of "a" -> "g" at line 1. At no stage is line 2 involved, so there only possible local coalescing gives us insertion of "g" at line 1.

But if we diff states 1 and 3 directly, the diff algorithm picks insertion of "g" at line 2. There's no prospect of tweaking the diff algorithm: if we change state 2 to ["g", "a"] instead, then coalescing gives us insertion of "g" at line 2 by the same reasoning.

I have more complicated examples (but only very slightly more complicated) where the amend-recorded diff is larger than the freshly recorded diff, for similar reasons; a line which is not touched in the sequence of patches still tweaks the diff.

So the question is whether this matters or not. My feeling is that it does, for the reasons that Simon Marlow mentioned in the aforementioned bug, and particularly where the amend-recorded diff is larger than the freshly recorded one.

To fix this, I think we would need to make amend-record more aware of file contents, perhaps by making the code path very similar to what unrecord/record would do, or perhaps a bit more subtly by augmenting the existing coalescing code.

This question also has implications for the hunk editing feature that Rob Hoelz has been working on for a while, which I've also been looking at a bit recently, so I'm mostly in favour of having a better coalesce operation, if feasible.

Cheers,

Ganesh
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to