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/Server API/Git API
The Git API is a web server API for browsing and manipulating Git repositories.
Contents
Git commands
git add
git branch
see bug 341384
git checkout
see bug 337818
git clone
see bug 337818
git config
git commit
git diff
- #Getting a diff between working tree and index
- #Getting a diff between index and HEAD
- #Getting a diff location for two commits
- #Getting a diff between two commits
- #Getting a file content from index
- #Getting a file content from HEAD
git fetch
see bug 339110
git log
see bug 339104
git merge
see bug 339111
git pull
see bug 339114
git push
see bug 339115
git remote
see bug 339109
git reset
see bug 338202
git revert
see bug 339105
git status
#Getting status for a git project
git tag
see bug 339108
REST API
/git/clone/
/git/commit/
Getting a file content from HEAD
- Overview
- To retrieve file content kept in HEAD. Send a GET request to the git commit location.
- HTTP Method
- GET
- Example Request
GET /git/commit/HEAD/file/MyProj/file.txt
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
This is the content.
- Detailed Explanation
- TBD.
Committing files in index
- Overview
- To commit all files in index. Send a POST request to the git commit location.
- HTTP Method
- POST
- Example Request
POST /git/commit/file/MyProj/
{
"Message" : "<Your commit message>"
}
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
<nothing>
- Detailed Explanation
- TBD.
Amending a commit
- Overview
- To amend the last commit. Send a POST request to the git commit location.
- HTTP Method
- POST
- Example Request
POST /git/commit/file/MyProj/
{
"Message" : "<Your commit message>",
"Amend" : "true"
}
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
<nothing>
- Detailed Explanation
- TBD.
This operation is not yet supported, see bug 339242.
/git/config/
Configuring git
Progress is being tracked on bug 337820.
/git/diff/
Getting a diff between working tree and index
- Overview
- To retrieve changes between working tree and index. Send a GET request to the git diff location.
- HTTP Method
- GET
- Example Request
GET /git/diff/Default/file/MyProj/
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
TBD
- Detailed Explanation
- TBD.
Getting a diff between index and HEAD
- Overview
- To retrieve changes between index and HEAD. Send a GET request to the git diff location.
- HTTP Method
- GET
- Example Request
GET /git/diff/Cached/file/MyProj/
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
TBD
- Detailed Explanation
- TBD.
Getting a diff location for two commits
- Overview
- To get a diff location for two commits. Send a POST request to the git diff location for old commit.
- HTTP Method
- POST
- Example Request
POST /git/diff/{old revision}/file/MyProj/file.txt
{
"New" : "{new revision}"
}
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
Location: /git/diff/{old revision}..{new revision}/file/MyProj/file.txt
<nothing>
- Detailed Explanation
- TBD.
Getting a diff between two commits
- Overview
- To retrieve changes between two commits. Send a GET request to the git diff location.
- HTTP Method
- GET
- Example Request
GET /git/diff/{old revision}..{new revision}/file/MyProj/
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
TBD
- Detailed Explanation
- TBD.
/git/index/
Getting a file content from index
- Overview
- To retrieve file content kept in index. Send a GET request to the git index location.
- HTTP Method
- GET
- Example Request
GET /git/index/file/MyProj/file.txt
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
This is the content from index.
- Detailed Explanation
- TBD.
Staging files
- Overview
- To stage a file, add it to index. Send a PUT request to the git index location.
- HTTP Method
- PUT
- Example Request
PUT /git/index/file/MyProj/file.txt
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
<nothing>
- Detailed Explanation
- TBD.
Unstaging files
- Overview
- To unstage a file, reset index and/or working tree. Send a POST request to the git index location.
- HTTP Method
- POST
- Example Request
POST /git/index/file/MyProj/file.txt
{
"Reset" : "MIXED"
}
- Example Response
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 22
<nothing>
- Detailed Explanation
- TBD.
Progress is being tracked on bug 338202.
Progress is being tracked on bug 337212.
/git/remote/
/git/status/
Getting status for a git project
- Overview
- To retrieve the working tree status of a project, send a GET request to the git status location.
- HTTP Method
- GET
- Example Request
GET /git/status/file/A/folder/
- Example Response
HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Content-Length: 468 { "Added": [], "Changed": [], "Missing": [], "Modified": [{ "Git": { "CommitLocation": "http://localhost:8080/git/commit/HEAD/file/A/file.txt", "DiffLocation": "http://localhost:8080/git/diff/Default/file/A/file.txt", "IndexLocation": "http://localhost:8080/git/index/file/A/file.txt" }, "Location": "http://localhost:8080/file/A/file.txt", "Name": "file.txt", "Path": "../file.txt" }], "Removed": [], "Untracked": [], "IndexLocation" : "http://localhost:8080/git/index/file/A/", "CommitLocation" : "http://localhost:8080/git/commit/HEAD/file/A/" }
- Detailed Explanation
- "IndexLocation" can be used to add all files to index, "CommitLocation" can be used to commit all files.
/git/tag/
POST
Tagging a commit
- Overview
- To tag a commit send a POST request to the git tag location.
- HTTP Method
- POST
- Example Request
POST TBD
- Example Response
HTTP/1.1 201 CREATED
Content-Type: text/plain
Content-Length: 22
TBD
- Detailed Explanation
- TBD
GET
TBD
JSON representations
File representation extension
The JSON representation for files and directories used by file API may be extended as follows: Required fields are shown in bold. A client cannot rely on the existence of non-required attribute in a file representation from a given Orion server.
Field | Data type | Value |
---|---|---|
Git.DiffLocation | URI | Location of Git Diff resource |
Git.StatusLocation | URI | Location of Git Status resource |
Git.IndexLocation | URI | Location of Git Index resource |
Resource/HTTP method matrix
GET | PUT | POST | DELETE | |
---|---|---|---|---|
commit | #git log | ? | #git commit, #git merge (#git pull) | git rm |
index | #Getting a file content from index | #git add | #git reset | ? |
clone | list clones, get clone info | ? | create clone | delete clone |
config | #git config get | #git config set | #git config update | #git config unset |
branch | #git branch | #git branch | #git branch | #git branch |
tag | #git tag | #git tag | #git tag | #git tag |
remote | #git remote | #git remote | #git remote, fetch, push | remove remote |
diff | #Getting a diff between working tree and index, #Getting a diff between index and HEAD, #Getting a diff location for two commits, #Getting a diff between two commits | ? | prepare git diff location | ? |
status | #Getting status for a git project | ? | ? | ? |