Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Orion/Orion - Git client enhancements
- Student: Piotr Janik
- Mentors: Tomasz Zarna, Szymon Brandys
This project is part of the Google Summer of Code 2011
Contents
Goal
The first release of Orion is going to provide a simple but fully functional support for git. The idea behind this project is to identify missing bits and address them.
My work would include implementation of missing Git commands. Task includes both server side and UI work.
General plan
- Enhancement of existing remote command by implementing add/remove remotes functionality.
- Add support for working with branches i.e. implement git branch and git checkout
- Implementation of missing commands like reset, rm, revert, cherry-pick. Work will include both server and client side, number of implemented commands depends on available time.
- Changing server implementation of some Git commands to use JGit porcelain API instead of JGit internals.
- Enhancing existing commit and add commands to be able to work with single file. Currently, only whole project can be committed.
- Implementation of user friendly graphical representation of git log. Similar to what we can see in EGit or git log --graph.
- Improvement of git config. Current configuration options cover only user.name and user.email.
- General UI polishing. For example clone seems to need some work, according to discussion available here.
- implement conditional GET where possible to reduce network traffic between client and server. [bug 338121, bug 338122, bug 339846]
- Implementing hundreds of fresh ideas, which may come once you begin development work. :)
Also very important parts of my work:
- Cooperation with JGit community when it is needed. As JGit is still in development, some features can be missing, some can change rapidly and some can need a fix.
- Taking care of test coverage and wiki updates (i.e. server side Git REST API).
Detailed plan
- git remotes management
- bug 339109 [server] provide REST API for git remote
- bug 344215 [client] implement missing functionality for remotes management
- general enhancements
- bug 349952 [git][server] Git Init should be a task
- bug 347639 [server] Update Git tests to cover changes from Bug 347125
- bug 345269 [server] provide REST API for git init
- bug 337820 [server] provide REST API for git config
- bug 347313 [client] add UI to change Git repo configuration
- bug 339190 [server] allow to commit a single file
- bug 347949 [server][git] need API change to display more information on git-log view
- bug 343247 [server] git commit operation returns empty response
- bugs
- bug 347906 | [server][git]Deleting Remote does not delete it
- bug 343646 [server] git push for tags returns wrong result
- bug 348748 [server][git] GET on git config returns 500 when repository is in subfolder
- bug 349014 [server] add test for GET /gitapi/config/{key}/clone/file/{path}
- bug 349291 [server][git] add tests for Bug 347949
- general enhancements
- bug 350410 File content overridden when saved from multiple editors
- bug 351440 [git] '+' in refspecs seems to not be respected during push/fetch operations
- bug 339848 [server] Provide a synchronization token for git 'write' operations
- bug 350422 [git] Specify the committer and author names/mails per commit
- bug 351429 [git] Add git rebase
- bug 349375 [server] Ability to delete remote branches
- bug 353191 [client] Git Log should show branches for commits
- bug 353088 [log] Implement APi and UI for Git log --all
- bug 353262 [client] Git Log should allow to mark commits from given branch
- bug 353308 [client] branches should be realigned after successful push operation
- bug 352202 [server][client][push] missing git push for remote
- bug 343644 [server] git log should return branches for commits
- modifying git operations to use JGit Porcelain API
- bug 340789 [server] use StatusCommand from JGit porcelain API for /git/status
- bug 344683 [server] use LogCommand to get commits list
- bugs
- bug 350424 [client] wrong request for file save
- bug 339848 [server][git] wrong repository option location during GET /gitapi/config/{key}/clone/file/{path}
- bug 345898 [server] GitCloneTest#testCloneNotGitRepository prints a stack trace on console
- bug 351270 [file] testETagHandling - java.lang.AssertionError:
- bug 353120 Git status is broken if user.name and user.email are not in the repo configuration
- bug 346285[server][tag] Tagging with a tag name that already exist should not throw 500 error
- bug 353096 [client] Custom author/committer fields are reset after staging
- misc
- bug 350280 [server][git][config] Update Git Server API wiki page for git config
- bugs which blocks work on Orion related tasks
- bug 345899 [jgit] missing getConflicting functionality in StatusCommand
- bug 346257 [jgit] path filtering in LogCommand doesn't work
Progress
This section contains tasks which are under development now and in the nearest future.
Finished tasks, which wait for review
Status | Bugzilla entry | Description | Waits for review | Comments |
---|---|---|---|---|
bug 339848 | [server] Provide a synchronization token for git 'write' operations | ? Szymon | ||
bug 352202 | [server][client][push] missing git push for remote | ? Tomek | ||
bug 349727 | [client] git cherry-pick support UI | ? Szymon | ||
bug 353308 | [client] branches should be realigned after successful push operation | ? Szymon | ||
bug 353262 | [client] Git Log should allow to mark commits from given branch | ? Szymon |
Planned in the nearest future
Status | Bugzilla Entry | Description |
---|
Completed tasks
Section contains all the task which are completed, tested and positively reviewed.
Orion
Status | Bugzilla Entry | Description | Reviewed by |
---|---|---|---|
bug 337820 | [server] provide REST API for git config | + Szymon | |
bug 339109 | [server] provide REST API for git remote | + Szymon | |
bug 339190 | [server] commit of single file | + Tomek | |
bug 340789 | [server] migration to JGit porcelain API - git status | + Tomek | |
bug 343247 | [server] git commit operation returns empty response | + Szymon + Tomek | |
bug 343644 | [server] git log should return branches for commits | + Tomek | |
bug 343646 | [server] Git Push for tags returns wrong result | + Szymon | |
bug 344215 | [client] implement missing functionality for remotes management | + Szymon | |
bug 344683 | [server] migration to JGit porcelain API - git log | + Tomek | |
bug 345269 | [server] provide REST API for git init | + Szymon | |
bug 345898 | [server] GitCloneTest#testCloneNotGitRepository prints a stack trace on console | + Tomek | |
bug 346285 | [server][tag] Tagging with a tag name that already exist should not throw 500 error | + Tomek | |
bug 347313 | [client] add UI to change Git repo configuration | + Szymon | |
bug 347639 | [server] Update Git tests to cover changes from Bug 347125 | + Szymon | |
bug 347906 | [server][git]Deleting Remote does not delete it | + Szymon | |
bug 347949 | [server][git]Need API change to display more information on git-log view | + Szymon | |
bug 348748 | [server][git] GET on git config returns 500 when repository is in subfolder | + Szymon | |
bug 349014 | [server] Add test for GET /gitapi/config/{key}/clone/file/{path} | + Tomek | |
bug 349291 | [server][git] Add tests for Bug 347949 | + Szymon | |
bug 349375 | [server] Ability to delete remote branches | + Tomek | |
bug 349428 | [server][git] Wrong cloneLocation in git log toRef | + Szymon | |
bug 349952 | [git][server] Git Init should be a task | + Szymon | |
bug 350280 | [server][git][config] Update Git Server API wiki page for git config | + Tomek | |
bug 350410 | File content overridden when saved from multiple editors | + Szymon | |
bug 350422 | [git] Specify the committer and author names/mails per commit | + Tomek | |
bug 350424 | [client] wrong request for file save | + Szymon | |
bug 351060 | [server][git] wrong repository option location during GET /gitapi/config/{key}/clone/file/{path} | + Szymon | |
bug 351270 | [file] testETagHandling - java.lang.AssertionError: | + Tomek | |
bug 351429 | [git] Add git rebase | + Szymon + Tomek | |
bug 351440 | [git] '+' in refspecs seems to not be respected during push/fetch operations | + Szymon + Tomek | |
bug 353088 | [log] Implement APi and UI for Git log --all | + Tomek + Szymon | |
bug 353096 | [client] Custom author/committer fields are reset after staging | + Tomek | |
bug 353120 | Git status is broken if user.name and user.email are not in the repo configuration | + Tomek | |
bug 353191 | [client] Git Log should show branches for commits | + Tomek |
JGit
Status | Bugzilla Entry | Description |
---|---|---|
bug 345899 | [jgit] missing getConflicting functionality in StatusCommand | |
bug 346257 | [jgit] path filtering in LogCommand doesn't work |