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 "Orion/Server API/Git API"

m (/git/clone/)
(Creating a repository clone)
Line 81: Line 81:
 
===== Creating a repository clone =====
 
===== Creating a repository clone =====
  
TBD
+
{{Orion/ServerAPI
 +
| method = POST
 +
| overview = To create a clone send a POST request to the git clone location.
 +
| reqhead = /git/clone/
 +
| reqbody =
 +
  {
 +
  "GitUrl" : "{git repo url}",
 +
  "GitSshKnownHost" : "{git ssh known host}",
 +
  "GitSshUsername" : "{git ssh username}",
 +
  "GitSshPassword" : "{git ssh password}",
 +
  "GitSshKnownHost" : "{git ssh known host}",
 +
  "GitSshPrivateKey" : "{git ssh private key}",
 +
  "GitSshPassphrase" : "{git ssh passphrase}"
 +
  }
 +
| resphead = 201 CREATED
 +
| respbody = 
 +
  {
 +
  "Id": "IOOD6ph8ABASBcDqmXX87w",
 +
  "Location": "http://localhost:8080/task/id/IOOD6ph8ABASBcDqmXX87w",
 +
  "Message": "Cloning c:\\home\\clones\\testClone...",
 +
  "PercentComplete": 0,
 +
  "Running": true
 +
  }
 +
| explain = The response contain the location of the git clone task. Call Get on the task location to check the status.
 +
}}
  
 
==== POST ====
 
==== POST ====

Revision as of 10:07, 12 May 2011

The Git API is a web server API for browsing and manipulating Git repositories.

Warning2.png
git URIs format change
Please note, that once bug 339854 is fixed all URIs listed below will have a slightly different form. I will try to update the page ASAP.


Git commands

git add

git branch

see bug 341384

git checkout

see bug 337818

git clone

see bug 337818

git config

#Configuring git

git commit

git diff

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/

GET

Creating a repository clone
Overview
To create a clone send a POST request to the git clone location.
HTTP Method
POST
Example Request
POST /git/clone/

{
 "GitUrl" : "{git repo url}",
 "GitSshKnownHost" : "{git ssh known host}",
 "GitSshUsername" : "{git ssh username}",
 "GitSshPassword" : "{git ssh password}",
 "GitSshKnownHost" : "{git ssh known host}",
 "GitSshPrivateKey" : "{git ssh private key}",
 "GitSshPassphrase" : "{git ssh passphrase}"
 }  
Example Response
HTTP/1.1 201 CREATED

{
 "Id": "IOOD6ph8ABASBcDqmXX87w",
 "Location": "http://localhost:8080/task/id/IOOD6ph8ABASBcDqmXX87w",
 "Message": "Cloning c:\\home\\clones\\testClone...",
 "PercentComplete": 0,
 "Running": true
 }
Detailed Explanation
The response contain the location of the git clone task. Call Get on the task location to check the status.


POST

Getting the list of repositories

TBD

/git/commit/

GET

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.


POST

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.

Merging changes from a remote to HEAD

TBD

PUT

Tagging a commit
Overview
To tag a commit send a PUT request to the git commit location.
HTTP Method
PUT
Example Request
PUT /git/commit/(revision)/file/MyProj/

{
 "Name" : "{tag name}" 
 }  
Example Response
HTTP/1.1 200 OK
 Content-Type: text/plain
 Content-Length: 22

{
 "AuthorName": "(author)",
 "Children": ["(tag name)"],
 "ContentLocation": "http://localhost:8080/git/commit/(revision)/file/MyProj/?parts=body",
 "DiffLocation": "http://localhost:8080/git/diff/(revision)/file/MyProj/",
 "Location": "http://localhost:8080/git/commit/(revision)/file/MyProj/",
 "Message": "(commit message)",
 "Name": "(commit name)",
 "Time": 1304073355000
 }
Detailed Explanation
TBD.


/git/config/

Configuring git

Progress is being tracked on bug 337820.

/git/diff/

GET

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 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.


POST

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.


/git/index/

GET

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.


POST

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.


PUT

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.


/git/remote/

GET

Getting the list of remotes

TBD

Getting the list of remote's branches

TBD

POST

Fetching changes from a remote

TBD

Pushing changes to a remote

TBD

/git/status/

GET

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

Getting the list of tags

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  ?  ?  ?

Back to the top