[MonoDevelop] Git add-in

Dale Ragan dale.ragan at sinesignal.com
Wed Jul 28 10:41:29 EDT 2010

> So the Git add-in can be used pretty much like the Subversion add-in.
The only big difference is that changes have to be explicitly pushed to
the remote repository using the Push command. Feedback about how to
improve this workflow is welcome.
I see you are finding the issues that I was faced with when I started on
this venture.  I'm glad you're back, so we can work on this together. 
Here are some ideas that I came up with while thinking about this feature
over the last month:

Since we will be shipping two version control systems out of the box now,
I think it would be beneficial to set a setting on which Version Control
System MonoDevelop should use by default.  Then when opening existing
projects we can scan for the system being used and set this value.  This
will simplify and allow segregation of the commands and not present
options that are not valid based on the system being used.  This will also
allow us to add configuration settings for the Version Control System that
the user can set.  For instance, one feature I had in mind, which looks
like you implemented an early version of, is to display the current branch
beside the solution name.  A configuration setting could actually
customize the output of that string.  This would also be a good place to
set globally the files to ignore automatically when creating a new

The commands available in the context menu should be in sync with the
command line options.  This helps with uniformity and makes going back and
forth a lot easier.  It will also enhance the workflow by presenting
commands in a way that are already familiar with the command line and vice

Here's a list of commands that I think should be implemented:

  File Menu
    Initialize - Create a new git repository
    Clone - Clone an existing git repository

  Project Context Menu
    Commit - Commit changed files to local repository allowing the user to
check which changes to stage for the commit
    Push - Push changes to remote repository
    Pull - Pull changes from remote repository
    Fetch - Fetch changes from remote repository
    Create Branch - Create a new branch
    Checkout Branch - Checkout an existing branch
    Merge - Merge changes from one branch to another
    Create Tag - Create a new Tag
    Log - View commit log
    Reset HEAD - Revert changes to last commit
    Stash - Stash changes and reverting to last commit
    UnStash - Unstash a stash object
    Add - Add changes files to staging
    Ignore - Add file to .gitignore
    Apply Patch - Apply a patch to current branch
    Create Patch - Create a patch based on last commit

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?


More information about the Monodevelop-list mailing list