Jump to: navigation, search

Difference between revisions of "Improve Eclipse Git integration"

m (Source code location)
(Source code location: added informations about next project part)
Line 44: Line 44:
 
==Source code location==
 
==Source code location==
 
All source code will be available as a patch set's in [http://egit.eclipse.org/r/ Gerrit]. With each goal there will be connected an additional ticket in Bugzilla for detailed discussions.
 
All source code will be available as a patch set's in [http://egit.eclipse.org/r/ Gerrit]. With each goal there will be connected an additional ticket in Bugzilla for detailed discussions.
* [http://egit.eclipse.org/r/#change,544 patch set for EGit tagging UI] [https://bugs.eclipse.org/bugs/show_bug.cgi?id=311262 311262] - [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=708aa2d18f58c7a9655045b6fe5d0483fde89e6e DONE.] ([http://luksza.org/2010/05/16/egit-0-8-0-would-have-ui-for-tagging/ blog entry describing this functionality])
+
* [http://egit.eclipse.org/r/#change,544 patch set for EGit tagging UI], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=311262 311262] - [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=708aa2d18f58c7a9655045b6fe5d0483fde89e6e DONE.] ([http://luksza.org/2010/05/16/egit-0-8-0-would-have-ui-for-tagging/ blog entry describing this functionality])
 +
* EGit Synchronization View support - I'll base my work on [http://egit.eclipse.org/r/#change,577 Remy's Suen's patch set], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=309582 309582]
  
 
==Timeline==
 
==Timeline==

Revision as of 12:26, 18 May 2010

This project is part of the Google Summer of Code 2010

  • Mentor: Matthias Sohn
  • Student: Dariusz Luksza


Abstract

Git is one of the modern DVCS (distributed version control system); it is fast and effective, with lots of features and new solutions for version control systems. Right now, Eclipse has base support for Git ‘repositories’. Using EGit plug-in user interface developer can:

  • commit changes
  • create branches
  • switch between branches
  • fetch and push changes
  • create and apply patches
  • compare a single file with a local ‘repository’

One of disadvantage of the current plug-in version is the disability to review the current project status against local and remote repositories. Developer can only compare one file at a time with current local repository status. The first goal of this project is to integrate EGit plug-in with “Synchronize view” which is the default Eclipse view to show incoming and outgoing changes. Using this view, developer can clearly see changed files and compare them to the current repository status.

When talking about Git repositories, we must consider two situations: one, when we want to review the current state against the local repository and second, when we want to review the current state against the remote repository. In case of the local repository synchronization, we will always have to deal with staged and unstaged changes. In Git terminology staged change describes change that will be part of next commit. Using this view developer can easily add and remove changes from commit (this is equivalent with git add and git rm –cached command line actions). Beside that, there will be also possible review changes in particular file in Compare view that will gave us better overview on what changes will be included in commit.

Synchronizing with remote repository is more complicated task. First of all there should be a dialog or wizard that would gave possibility of adding (editing and removing) remote repositories. Secondly before synchronizing with particular repository developer should choose one repository from existing list, then select one branch from remote branches list. Then we can fire synchronize action with would be equivalent to calling sequence git fetch <repository> refs/<branch path>, git diff HEAD..FETCH_HEAD from the command line.

Second goal would be adding git stashing support to JGit and EGit. Stash is a useful feature of Git that gives the ability to 'hide' changes for a certain period of time and bring the current branch back to the previous state. Then, we can take our 'hidden' changes back from the stash. It is an indispensable tool when we start working on some new features and, all of a sudden, we must switch back to the previous repository state (or checkout different branch) to fix a bug.

My blog is available on http://luksza.org (right now 99% of posts are in Polish but new posts connected with this project will be published in English ;)).

You can reach me on e-mail dariusz dot luksza at gmail dot com or dariusz at luksza dot org for any details, questions, comments or criticism.

Project goals

  • UI for tagging in EGit
  • Integrate EGit with 'Synchronization View' with is Eclipse's default view for incoming and ongoing changes
    • Integration for reviewing local unstaged and staged changes against current HEAD
    • Integration for reviewing remote changes for current HEAD against selected remote branch
  • Support for git stash
    • Add stashing support to JGit
    • Create corresponding UI in EGit.

Deliverables

  • Source code for all features
  • JUnits
  • User guides

Source code location

All source code will be available as a patch set's in Gerrit. With each goal there will be connected an additional ticket in Bugzilla for detailed discussions.

Timeline

Date Planned items
April 27 - May 15 EGit tagging UI
May 16 - June 22 EGit Synchronization View support
June 23 - July 27 JGit stashing support
July 28 - August 16 EGit stashing support

Git Community: Related GSoC 2010 Projects

Find the accepted GSoC 2010 projects working on native git here