Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Improve Eclipse Git integration"

(Source code location)
(Source code location)
 
(13 intermediate revisions by 2 users not shown)
Line 46: Line 46:
 
* [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] ([http://luksza.org/2010/06/15/preview-of-egit-integration-with-synchronization-view/ change preview])
 
* 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] ([http://luksza.org/2010/06/15/preview-of-egit-integration-with-synchronization-view/ change preview])
** [http://egit.eclipse.org/r/#change,577 first iteration] - [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=6a4218ebd200b139c292807fe41b4d05bf9284ff DONE] ([http://egit.eclipse.org/r/#change,874 JUnits])
+
** [http://egit.eclipse.org/r/#change,577 first iteration] - [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=6a4218ebd200b139c292807fe41b4d05bf9284ff DONE] ([http://egit.eclipse.org/r/#change,874 JUnits] - [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=fd5bd31f476676e77e6c67c28fe12391f85d9fa0 DONE] )
 +
** fixing issues with common base ancestor and compare view - [https://bugs.eclipse.org/bugs/show_bug.cgi?id=317934 317934] [http://egit.eclipse.org/r/#change,1064 change set] [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=986e3823e1e3555bda426b3b09bd790d4595113a DONE]
 +
** Synchronize view should support changesets [https://bugs.eclipse.org/bugs/show_bug.cgi?id=318473 318473] [http://egit.eclipse.org/r/#change,1247 change set] ([http://luksza.org/2010/08/06/egit-synchornize-chnageset-implemented/ change preview]) [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=c5e296c4ef629c948958b0f03b11e1e97af1bb30 DONE]
 +
** API improvements:
 +
*** [http://egit.eclipse.org/r/#change,1268 GitSynchronizeData] [http://egit.eclipse.org/w/?p=egit.git;a=commit;h=0261f7af1225181e78aa6932044d7fb336cc60c3 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]
 +
 
 +
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==
 +
 +
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.
 +
 
{| class="wikitable" style="text-align:center"
 
{| class="wikitable" style="text-align:center"
 
|- style="background:#efefef;"
 
|- style="background:#efefef;"
Line 56: Line 67:
 
|align="left"| EGit tagging UI
 
|align="left"| EGit tagging UI
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
! May 16 - June 22
+
! May 16 - July 16
 
|align="left"| EGit Synchronization View support
 
|align="left"| EGit Synchronization View support
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
! June 23 - July 27
+
! July 17 - July 31
|align="left"| JGit stashing support
+
|align="left"| EGit Synchronization View ChangeSet support
 
|- style="background:lightgrey;"
 
|- style="background:lightgrey;"
! July 28 - August 16
+
! August 1 - August 16
|align="left"| EGit 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 15: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

Back to the top