Google Summer of Code: Bazaar-Visual Studio integration status update

Wouter van Heyst larstiq at
Thu Jul 12 10:56:38 BST 2007

Hi all,

I'm mailing on behalf of Klaus Hartke, below is his status report on his
Google Summer of Code project, "Bazaar Integration for Visual Studio"
which as the name suggests aims to enable Visual Studio users to make
use of Bazaar.

To be able to do that we thought the best approach to take is to build a
Visual Studio integration package, which needs to be done in a .NET
language.  So before Banquet (the actual Bazaar version control plugin)
can work, two things need to be done:

1) A .NET library wrapping bzrlib called BazaarSharp, which itself requires:
2) Ability to talk to Python from .NET

Item number 2 has been solved in various different ways, but not
entirely in the manner required for this project, so right now Klaus has
written PythonSharp which basically embeds CPython in C#. In the case of
spare time (probably after GSoC ends) the feasibility of using Python
for .NET will be studied.

All the code can be found under
getting it running can be a little tricky due to needing a non express
version of Visual Studio as well as the Visual Studio SDK. An installer
for those wishing to play with it will be available shortly.

Now I'll give the floor to Klaus.

Project planning/progress

There are two main deviations from the initial proposal, one is a
permanent status window which I now consider as one of the main features
of the integration package. The other is an explorer to replace the idea
of having different UIs for different workflow models. The reason for
different UIs was that I found having too many options of which most do
not apply confusing.  However, with an "explorer window" I think I have
found a solution which not only provides a non-confusing UI fitting all
workflows but which is also even better. 

This does mean I'm behind on my original schedule now.

Overview of project status broken down per project

    * very stable
    * can pass .NET-objects to Python.
    * it only supports UCS2 python, but UCS4 will be possible with performance loss (.NET unicode is always in UCS2)

    * very good progress
    * What has been done is stable
    * Main problem: bzrlib is a moving target -> Testsuite after gsoc
    * I wrap bzrlib.errors.* -> problem with access of attributes, as
      they are used for display (Only with BzrMoveFailedError.from_path so far)
    * WorkingTree.add and case-insensitive filesystems
    * How does one cancel bzrlib.bzrdir.BzrDir.sprout or commit?

    * Status glyps in the solution explorer have been implemented
    * A Status Window which is the equivalent of permanently showing `bzr gcommit`
        * Still a couple of problems with displaying the up-to-date
          status without reloading the _entire_ dirstate.  Specifically
          if you rename/move directory then its subdirectories will
          appear twice (both in the old and the new location). Files
          in the directory or its subdirectories are not
        * The 'flat view' allows checkmarking which changes you want to
          commit. If you rename a directory but don't commit the change
          to one of its childs, you'll get unexpected results: the child
          is committed as well.  A workaround is to only offer a tree
          view where all parent directories are automatically also
        * One can commit, but there is no progress indication yet. 
          (being worked on, UIFactory implementation is giving more
          grief than expected)
    * An Explorer Window being implemented right now:
        * Will function as a branch-browser eventually
        * Now:  organizing of repositories and branches
            * Creating Repositories
            * Branching branches
            * Making working trees and switching checkouts between different branches
            * Updating branches and working trees

More information about the bazaar mailing list