[MonoDevelop] Git add-in
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:
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