Re: Darcs and git: plan of action
- From
- Tupshin Harper <tupshin@tupshin.com>
- Date
- Apr 19, 2005, 23:00 UTC
- Message-ID
- <42658D95.7020404@tupshin.com>
- In-Reply-To
- <1113950442.29444.31.camel@orca.madrabbit.org>
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.
Show 8 quoted lines
> 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