Visual Studio integration

Klaus Hartke klaus.hartke at googlemail.com
Thu Mar 15 19:18:03 GMT 2007


Hey guys,

I recently discovered Bazaar as alternative to SVN for use in my final
year project (still need to convince my fellow students though) and
started working on a prototype add-in for Visual Studio 2005 (since we
are going to develop both under Windows and Linux, and the latter seems
already well supported in the form of Olive).

While scanning through the mailing list archives I noticed Bazaar is
taking part in this year's Google Summer of Code, so I started thinking
about turning my prototype into a real project. I found a few options
how to interface with Bazaar:

(1) Wrapping bzr.exe by redirecting stdout and stderr

     This is how the prototype is doing it at the moment. Allows very
     fast development, almost all major commands are already supported.
     Problems:

      - It is impossible to detect when interactive input is required
        (e.g., when logging in with SSH)
      - stdout and stderr are redirected through a pipe which buffers
        all output until the process terminates (so no fancy progress
        bars here)
      - It is impossible to cancel any operation except by killing the
        process (you cannot send signals/KeyboardInterrupts through
        stdin)
      - In future releases bzr.exe may change its output format.

(2) Using IronPython

     IronPython is a .NET implementation of a Python interpreter and
     compiler. Would bring VAST speed improvements and would run both
     on Linux (and any other supported platform) with Mono, as well as
     on Windows with Microsoft's .NET, -- opening the gates for easy
     Bazaar integration into (for example) MonoDevelop and the Windows
     explorer.

     However, IronPython (unlike CPython) does not come with batteries
     included, i.e., the CPython standard library is not very well
     supported yet, and calls into C-code are not supported at all.

(3) Talking to the smart-server directly

     This was suggested in an old post to this list some time ago.
     How much would a 'dumb' client require? Does it make sense to have
     a local smart server running just for local branches?

(4) Implementing it with CPython to access bzrlib directly

     Unfortunately Visual Studio requires add-ins to be written a .NET
     language.

I saw a TortoiseSVN-like application being mentioned somewhere, and
there is Guillermo's Eclipse Plugin for Bazaar (or Bazaar Plugin for
Eclipse). What approach(es) are you taking here?

Are there more ways to interface with bzr?

Would implementing one of these options (#2 or #3) make a viable GSoC
project? My general aim would be a platform-independent library written
in C# and/or IronPython, plus Bazaar integration into Visual Studio.

I'm not sure if I should make my prototype publicly available in its
current state, as it's really just a prototype and the installation
process would be rather painful. But if anyone is curious about it,
I'd be happy to give a walk-through :)

Regards,
Klaus




More information about the bazaar mailing list