On 7 Feb 2002, Ben Collins-Sussman wrote:
> Daniel Berlin <dan@dberlin.org> writes:
>
> > > > Given the requirement that it only support the default diff format svn
> > > > generates,
> > >
> > > ...whoa there. SVN sends its own binary diff format over the *wire*
> > > only. During an update, this binary diff is used to recreate a new
> > > pristine fulltext in .svn/tmp/. Then we use diff/patch to perform a
> > > *context* merge into the user's existing local mods.
> >
> > Yes, and i meant that given it only support the patch command executed to
> > do the context merge, ....
>
> Sorry, I'm not understanding. We use 'patch' to apply a context diff
> to a file. How has the problem gotten any smaller? Why is this not
> thes same as implementing 'patch' from scratch?
Because patch does a lot more than you think it does.
It has all kinds of code to intuit the patch type, grab revision
controlled files, etc.
, etc.
For instance, of the main files, pch.c, and patch.c, we have the
following:
1913 lines of code in pch.c, we have
357 lines of code to intuit the diff types
100 lines to apply ed scripts
etc.
In fact, most of the code is handling input, munging around
indentation, etc.
Given only needing to support a known set of options, with known input
format (IE not much munging), it's actually pretty easy to rewrite from
scratch.
> 'patch' require reimplementing 95% of Larry Wall's code?
It would be maybe 30-40%, at most.
--Dan
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:37:05 2006