Eclipse Plugin Wishlist
Please file all feature requests in the EGit issue tracker.
Currently, projects that use git submodules cannot be cloned or managed at all with egit. Even if the project is cloned externally from Eclipse, Egit commit doesn't work.
Create a new branch from any revision specification. This can be done from the history view (at least at first)
Delete a branch.
Having several projects in a branch as can be common in maven-based Java projects, make being able to share several projects at once a neat feature in the same way that Collabs SVN plugin allows.
Fetching changes from a remote repository.
Fetch is fully supported within JGit through the FetchProcess class, including implementations of git://, git+ssh://, http:// and amazon-s3:// (a modified HTTP specialized for Amazon S3).
The Eclipse UI however does not have access to this class, so you can't fetch within the plugin.
Pushing changes to a remote repository.
Push is fully supported in JGit through the PushProcess class, for all protocols that fetch is supported on.
(as of mid-August) The Eclipse UI has patches pending from Marek, as a result of his GSoC 2008 project. We hope to get those merged real soon.
Merging changes from one local branch to another.
Again, like fetch I'd like to keep egit/jgit 100% pure Java and implement merge-recursive in Java. We may need to invoke RCS merge if Eclipse doesn't have its own 3 way file merge algorithm available, or do what core Git just did and implement a 3 way in memory merge algorithm. git-merge-recursive is only 1336 lines of C so it should not be too difficult to port the algorithm to pure Java.
Rebasing one local branch on another, and the rebase workflow.
GitProvider does not currently support linked URIs
Linked directories are mostly supported, but only to your local filesystem. Linking to another protocol (e.g. http://) will probably never be supported as we cannot (easily) control the contents of a remote HTTP server.
Stacked Git operations. (Personally I have dropped this and will opt for the interactive rebase style instead / robin).
Make a tag and delete tags
Add the "Add to .gitignore" entry menu.
Ignored files should also be processed for status handling, initial refusal to add to the tree (require extra confirmation), etc.
20091017 I'm having trouble freeing up some time to resume work on implementing support for .gitignore files. Do not expect anything anytime soon. -- Ferry Huberts
It would be swell -- but put it at the bottom of your priority list -- to have git-svn interoperability; sadly most of my git usage at the moment is in cloned svn repositories and it would be great if egit could do the right thing when the current git repo is cloned from svn. What "the right thing" is, exactly, is debatable, but I suppose some kind of integration with the Subclipse plugin is one possibility (and if nothing else, that plugin probably has code that can be reused.) I'd like to be able to update from and commit to the parent svn repository. -- Steven Grimm
I'm considering this to be out of scope for the time being, but if someone takes it on and submits reasonable patches we'll include them. -- Shawn Pearce
Support synchronize view and local change sets
It would be really great to have support for Team Synchronize view that would show changed files and also allow to create local outgoing change sets (with those it would be easy to add Mylyn integration to manage them automatically) and maybe incoming change sets too -- Eugene Kuleshov
Also, a simple 'Pending Changes' window would already bring a lot of information to the user. -- Ferry Huberts
Support for SSH Keys
Could you please add support for SSH Keys. A: AFAIK, we have that -- Robin (to discuss this use the mailing list).
Support the stash functionality of git.
Have a list of identities (author / committer / signed-off-by) that is configurable on a per-project basis and also on a (Eclipse) global basis. Also make it dynamic in that it is appended with new identities learned through (for example) the commit dialog. Use this list in relevant places.
An Egit version of Replace with latest from head and or Replace with revision (see the CVS plugin version, which is actually quite good).
An Egit version of Compare with latest from head and or Compare with resivision (see the CVS plugin version, which is actually quite good).
Make patches with only selected lines of code (submit only 2 of 4 altered lines of code)
Add a window/pane in which the pending changes are listed, maybe along with their state of unstaged/staged/etc.
Git GUI / Gitk
Make the commit dialog more like Git GUI? Integrate gitk and git gui a-like UIs?
Support mylyn contexts. Make sure untracked files that suddenly appear (i.e. generated by build) don't insert themselves into the context. Use mylyn's commit template as the default text for each commit, but on amend just keep the filled-in template at the top and amend the previous commit text below it. Have branch information stored in Mylyn context, and automatically switch branches when possible. Maybe if not possible (i.e. changes in working copy), offer to commit/amend-commit or use a stash (i.e. stacked get).
Amend Commits for Dummies
Try to detect if the current HEAD (or commit) has been pushed, and if it has then don't offer to amend a commit. Obviously, many have ran into this issue.
GIT annotate support
Git annotation for individual files/current editor. Something I use pretty much everyday, who changed the current file, when, and if possible with the ability to see the commit message for the individual changes.