[MonoDevelop] Git add-in

Anirudh Sanjeev anirudh at anirudhsanjeev.org
Wed Jul 28 15:13:18 EDT 2010

Hi Dale,

> A pad for the history view showing the commits for the current
> branch. This feature will present the commits in a nice and readable
> format.  The user will then be allowed to view changes for a commit
> and compare.
> A pad for managing Git repositories.  This feature will present
> the .git directory in an easy to read and presentable way allowing
> management of remotes and branches for instance.
> Of course this isn't everything probably, but just a short list of
> features that I planned on doing.  Any other thoughts?

I've used many graphical tools to manage a git repository -
gitg, giggle, tig, magit, vim-fugitive and would like to share a couple
of thoughts. I would recommend you look at magit(an emacs extension),
and Tim Pope's vim-fugitive if you haven't already.

There are a few things that all frontends to git seem to do in common:
1. They present all the files that are untracked, changed, etc - and
ask you to pick and choose the files to stage and ignore. A user would
scroll through the list and hit "s" to stage, "i" to ignore and "u"to
unstage. This is similar to MD's approach where changes to stage are
selected using check boxes.

2. Git commits seem to treat the entire commit as one atomic change,
and the commit message describes the same, as opposed to mentioning the
change in each specific file. Again, I guess it's a question of
convention rather than the norm.

In my view, a pad for managing git remotes and a history view showing
the commits might not be extremely useful as:
a) People have different ways of working with remotes. I might first
fetch the remote, check the diff and then merge the commits - or even
rebase them. Instead I might just pull changes in from them. Moreover,
there are plenty of great tools to do this already.

b) History view is harder than it looks (to me at least) as there are
going to be branches, and it might not be a trivial implementation.
Again, many great 

Instead, a strong commit window with a solid keyboard workflow would be
a killer addin. If one can hit a keystroke to pull up a list of
changed/added files, selectively stage them by moving about the list
and hit "C" to make the commit, I'm sure to see productivity go up.

Also, one fantastic feature would be a prominent display of the current
branch that is active. Emacs and Vim display the branch in the
modeline, and I've had very bad muck-ups because I was making edits to
the wrong branch.


More information about the Monodevelop-list mailing list