[darcs-devel] Darcs and git: plan of action
Tupshin Harper
tupshin at tupshin.com
Tue Apr 19 16:00:37 PDT 2005
Ray Lee wrote:
>Here's where we disagree. If you checkpoint your tree before the
>replace, and immediately after, the only differences in the
>source-controlled files would be due to the replace.
>
This is assuming that you only have one replace and no other operations
recorded in the patch. If you have multiple replaces or a replace and a
traditional diff recorded in the same patch, then this is not true.
> And since the
>language of the file is known (and thereby the tokenization -- it *is*
>well-defined), then a tokenizer that compares the before and after trees
>(for just the files that changed, obviously), can discover what you did,
>and promote the mere ASCII diff into a token-replace diff. (The same
>sort of idea could be done for reindention, I'd hope.)
>
>
See above for one set of limitations on this. A more fundamental problem
comes back to intent. If I have a file "foo" before:
a1
a2
and after:
b1
b2
is that a "replace [_a-zA-Z0-9] a b foo" patch, or is that a
-a1
-a2
+b1
+b2
patch? Note that this comes down to heuristics, and no matter what you
use, you will be wrong sometimes, *and* the choice that is made can
substantively affect the contents of the repository after additional
patches are applied.
>We agree on everything except that it's provable that one can discover a
>replace operation, given a before and after tree.
>
>
It's provable that you can not.
-Tupshin
More information about the darcs-devel
mailing list