[MonoDevelop] Git add-in
Lluis Sanchez Gual
slluis.devel at gmail.com
Thu Jul 29 12:20:22 EDT 2010
> > As a user I don't want to have to deal with the complexity of git every
> > day. There are only a few commands I need to use in everyday work
> > (review changes, commit changes, update from repo). I want MD to take
> > the correct decisions for me in order to perform those operations with
> > git. In case I need to do more advanced git operations, I can always
> > open a console and use the git command.
> I agree in simplifying the workflow with Git, but at the same time we need
> to stay uniform with the naming in some way. I have yet to see an IDE
> that supports Git not do the same thing.
That's why MD will be better ;)
> >> Here's a list of commands that I think should be implemented:
> >> File Menu
> >> Initialize - Create a new git repository
> > We can create a new "Create repository" command, which can also be
> > implemented for SVN.
> >> Clone - Clone an existing git repository
> > It is the Checkout command, which can be renamed to "Get Project from
> > Repository", shared with SVN.
> I'm fine with leaving it named Checkout while under SVN, but under Git to
> keep uniform, I really would like to see Clone. I'm sure we can figure
> something out to distinguish which VCS we are using and change
I don't think there is an easy solution for this. At least easier that
just changing the command name to something that conveys the meaning
both for git and svn.
> >> Project Context Menu
> >> Commit - Commit changed files to local repository allowing the user
> >> to
> >> check which changes to stage for the commit
> > This is the current Review Changes view and the Commit command.
> >> Push - Push changes to remote repository
> > This command is new and specific to Git. Ok to add it.
> >> Pull - Pull changes from remote repository
> >> Fetch - Fetch changes from remote repository
> > Pull and Fetch are implemented by the "Update" command, so there is no
> > need to have them as separate commands.
> As other's have noted, I think we need to have both. When I have a fork
> and I want to update my fork to latest from the repository I forked from,
> I like to fetch first and then do a merge. It makes life easier when
> conflicts are found.
The Update command will be able handle conflicts. If that's not enough
for you use case, we'll have to see what's this specific workflow and
evaluate if it is worth implementing it as a MD feature.
> >> Create Branch - Create a new branch
> >> Checkout Branch - Checkout an existing branch
> >> Merge - Merge changes from one branch to another
> > We can have a branch manager for doing those operations.
> Well Checkout branch is already started with the Switch to Branch command.
> I agree they could also be in the branch manager, but I think we should
> keep Create Branch for speed. I create branches all the time and I really
> don't want to have to switch to the dialog every time, I rather just right
> click the project and click Create Branch which will perform a "git
> checkout -b branchname" for me.
> >> Create Tag - Create a new Tag
> > We can add this command.
> >> Log - View commit log
> > That's the existing Log command.
> >> Reset HEAD - Revert changes to last commit
> > There is a Revert command in the SVN add-in which can be generalized.
> >> Stash - Stash changes and reverting to last commit
> >> UnStash - Unstash a stash object
> > I'm not sure we need those. MD can automatically use stash for the most
> > common operations, such as when pulling or when switching branches.
> What if you don't need to pull or switch branches and you're working on
> something and all of a sudden you need to stop to fix some critical bug?
If that's a feature that people use very often, I'm OK with adding a
command for it.
More information about the Monodevelop-list