[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Extending tsvncache to other source control systems

From: Mark Hammond <mhammond_at_skippinet.com.au>
Date: Wed, 30 Apr 2008 13:07:41 +1000

Hi all,
  First up, congratulations on the success and quality of your project - it
has been a pleasure to dig into various parts of it recently!

  I'm working with the 'bazaar' source control project on updating the
'tortiose-bzr' extensions. To cut a long story short - bazaar (and
incidentally Mercurial) are both implemented in Python, but it is
undesirable to have our shell extensions load Python into every process that
makes use of the shell. This means that our shell extensions can't directly
make use of the VCS library - it must do so only via external processes.
For more detail, please see

In practice, this means we will implement the shell extension in C++ and use
an external process very similar to TSVNCache to manage caching and
interactions with the underlying VCS. There are 2 major implications here

* We *insist* on the cache process running externally (and if I read the
sources correctly, the TSVN cache currently falls back to an in-process
model in some cases - but I think even with Vista/rdesktop we can arrange
for a useful process to exist in those cases)

* All VCS commands go via the cache process. *Everything* needed to
determine the icon overlay etc for every item must come via the external

So my first question is: does this approach sound reasonable?

Assuming it does, it strikes me that we need something very very similar to
TSVNCache - and TSVNCache already has a stable implementation with many edge
cases handled well. Indeed, relatively little of the TSVNCache source code
seems related to talking to subversion, but is instead a fairly generic
implementation. So I'm wondering if you guys have any interest in, or
thoughts about how we could extend TSVNCache to cleanly separate out the VCS
specific code so it is more suitable for reuse? It might also prove useful
for Mercurial in the future, which finds itself in a similar position.

I'm obviously willing to do as much of that as I can if we agree on a
general approach, so I'd love to hear your thoughts...



To unsubscribe, e-mail: dev-unsubscribe_at_tortoisesvn.tigris.org
For additional commands, e-mail: dev-help_at_tortoisesvn.tigris.org
Received on 2008-04-30 05:07:59 CEST

This is an archived mail posted to the TortoiseSVN Dev mailing list.