Jump to: navigation, search

Difference between revisions of "Improve Eclipse Git integration"

(Source code location)
(Source code location)
 
(One intermediate revision by the same user not shown)
Line 53: Line 53:
 
*** [http://egit.eclipse.org/r/#change,1269 GitResourceVariant] [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=a15eaffd115ba8de82c44ffca066375fa149209a DONE]
 
*** [http://egit.eclipse.org/r/#change,1269 GitResourceVariant] [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=a15eaffd115ba8de82c44ffca066375fa149209a DONE]
 
** Support for change direction indicator in ChangeSet [http://egit.eclipse.org/r/#change,1270 patch] [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=db9d89fe2f908a14cbdf1e04230cf17505b18462 DONE]
 
** Support for change direction indicator in ChangeSet [http://egit.eclipse.org/r/#change,1270 patch] [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=db9d89fe2f908a14cbdf1e04230cf17505b18462 DONE]
 +
 +
All my work that I've done during Summer of Code can be downloaded from official [http://code.google.com/p/google-summer-of-code-2010-eclipse/ Eclipse Google Summer of Code 2010 project] download page hosted on Google Code.
  
 
==Timeline==
 
==Timeline==
Line 72: Line 74:
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
 
! August 1 - August 16
 
! August 1 - August 16
|align="left"| JGit stashing support
+
|align="left"| Fixing minor issues in synchronization
 
|}
 
|}
  
 
== Git Community: Related GSoC 2010 Projects ==
 
== Git Community: Related GSoC 2010 Projects ==
 
Find the accepted GSoC 2010 projects working on native git [https://git.wiki.kernel.org/index.php/SoC2010Projects here]
 
Find the accepted GSoC 2010 projects working on native git [https://git.wiki.kernel.org/index.php/SoC2010Projects here]

Latest revision as of 14:53, 31 August 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.

All my work that I've done during Summer of Code can be downloaded from official Eclipse Google Summer of Code 2010 project download page hosted on Google Code.

Timeline

The primary goal of my project is to fully implement synchronization support in EGit. Before Summer of Code begins I was thinking that achieving primary goal would be much easier, but during the project it appears that my initial timeline was strongly underestimated. Therefore I'll keep my focus on synchronization view until it will be mature enough to be part of 0.9.0 release. I'll try to achieve that before Summer of Code ends so that I can work on initial stashing support in JGit(/EGit) as a GSoC student.

Date Planned items
April 27 - May 15 EGit tagging UI
May 16 - July 16 EGit Synchronization View support
July 17 - July 31 EGit Synchronization View ChangeSet support
August 1 - August 16 Fixing minor issues in synchronization

Git Community: Related GSoC 2010 Projects

Find the accepted GSoC 2010 projects working on native git here