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