Here is one example for what goes wrong:
>darcs init
>touch f
>darcs add f
>mv f g
>darcs record -am 'addfile f + move f g = addfile g' --look-for-moves
>darcs whatsnew
No changes!
>touch f
>darcs whatsnew
addfile ./f
The problem is that we coalesce changes from pending with detected
(look-for-) changes before we pass them to patch selection. So when we
update pending, trying to remove recorded changes from it, we don't find
the change we made in pending and fail to update it properly. To fix
that we must "de-coalesce" the changes to the repo. This is further
complicated because coalescing also cancels out inverse changes, so
sometimes we may not even have a change we can de-coalesce.
This problem can be solved cleanly and I do have a patch. Will send soon
but have to do some cleanup before I can do that.
|