> -----Original Message-----
> From: Greg Stein [mailto:gstein_at_gmail.com]
> Sent: woensdag 17 september 2008 13:51
> To: Miha Vitorovic
> Cc: dev_at_subversion.tigris.org
> Subject: Re: New WC [not on disk]
>
> Hey Miha,
>
> My plan for the DIFF library was to do something like:
>
> * ask WC for a FILE if available
> * if available, then pass it to DIFF
> * if not, then read the stream in its entirety and write to TMP on
> disk. pass TMP to DIFF
>
> or:
>
> * teach diff to use a custom "rewind" callback; the WC will get a
> stream again
>
> The latter is no problem *if* the stream corresponds directly to a
> file on disk. But if the WC needs to decompress a base text in order
> to return the stream, then it could be expensive (we'd be
> decompressing multiple times). It could be possible to cache the
> decompressed version.
>
> The choice here really depends on the DIFF library. I haven't looked
> at it (yet). If it rewinds "often", then we'd want to cache
> decompressed output to disk, and pass that file to DIFF (or do the
> "open a stream again for a rewind" option).
If I remember correctly our libsvn_diff library just keeps a token buffer
instead of using rewinding to create the diff datastructure. It only rewinds
when creating the actual output.
But you can (on the libsvn_client and wc level) just override our internal
diff and diff3 with an external application in the config file, and that
would require a (temporary) file anyway.
Grepping the code on its usage even shows the external diff3 tool can be
used by svn_wc_cleanup2() to perform merges.
(I really have no idea why cleanup would launch a merge... I just hope WC2
will explain all this and maybe removes merges from cleanup)
Bert
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-09-17 14:53:42 CEST