EclipsePluginWishlist

From Git SCM Wiki
Jump to: navigation, search

OBSOLETE CONTENT

This wiki has been archived and the content is no longer updated. Please visit git-scm.com/doc for up-to-date documentation.

Eclipse Plugin Wishlist

Please file all feature requests in the EGit issue tracker.

Old Content

Submodules

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 Branch

Create a new branch from any revision specification. This can be done from the history view (at least at first)

Delete Branch

Delete a branch.

Share several Projects

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.

Fetch UI

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.

Push

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.

Merge

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.

Rebase

Rebasing one local branch on another, and the rebase workflow.

Support linked URIs

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

Stacked Git operations. (Personally I have dropped this and will opt for the interactive rebase style instead / robin).

Tag

Make a tag and delete tags

Gitignore

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

SVN Integration

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).

Stash

Support the stash functionality of git.

Identities

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.

Checkout Replace

An Egit version of Replace with latest from head and or Replace with revision (see the CVS plugin version, which is actually quite good).

Compare

An Egit version of Compare with latest from head and or Compare with resivision (see the CVS plugin version, which is actually quite good).

Partial patches

Make patches with only selected lines of code (submit only 2 of 4 altered lines of code)

Pending Changes

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?

Mylyn

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.


Personal tools