Tuesday, March 18, 2008

Pyrite GUI

It has been a while since I have posted anything on here. Here is something to make sure people know about the current status of pyrite. I have been working toward getting pyrite able to handle the day to day activities of being a git wrapper. That is, it is a pass-through porcelain on top of git. The current TODO list looks something like this.

  • Get basic commands to run on the command line. (this one is mostly done, I just have to do some of the more interesting things like rebase, cherry-pick etc)
  • Add support for styles and templates. Think pretty-print or styles/templates under Hg. ( I can probably tag v0.1 at this point)
  • GUI (see below, should be v0.2)
  • Built-in HTTP server. This will be similar to hg serve and use a similar framework. The hg serve is very nice and one of the things that prompted me to start this. (v0.3)
  • Convert direct shell commands to c extensions that do the shell commands. This doesn't make much sense by itself, but is very nice for the next step...(v0.5)
  • Convert to libgit where libgit is currently implemented. Only part of git functions as a c library, so much will still have to be done in sub-processes. This will probably take a while (v0.9)
  • Squeeze out bugs and I can call it v1.0.
After that we will see where things go. I expect that much of my work will go into converting the places where I am forced to run sub-processes to library functions in git.

Now on to the fun part, the GUI.

Long ago, I was temted to create a GUI for git that ran on Windows and was written in C#. This was called Widgit. I did some work on it, but I could not convince my co-workers to be interested in git, and without someone to use what I was writting, it seemed kind of pointless. Fast forward a few months and I started working on Pyrite. Since this was more geared to the Linux crowd, I felt I could use python and GTK+ to make the GUI, but I liked several of the Ideas that I had for Widgit and I thought I could reuse them. Here is what the basic view looked like...

There was a status pane also...

I was also fairly proud of the commit view filter, which I thought was handy...

And I plan to have all of these elements in Pyrite. Also, I really like some of the things I have seen in other GUIs that I want to borrow. For instance the graphical tree structure of Giggle is very nice and done using Cairo. Also, it shows the diffs a la gitk.

So all these things are nice. I have done a little bit of work on the GUI, but its just getting started. Here you can see what the current status of it is...

If anyone has any suggestions, I will be glad to hear them.



Anonymous said...

A windows GUI? :(

Govind Salinas said...

It will be in pygtk and is intended to run on all the major platforms. Work has stalled recently since I am trying to convert to using the git-python library to interact with git.