2014-05-27 08:12:15 -04:00
|
|
|
# Repository files
|
|
|
|
|
2014-08-15 03:03:18 -04:00
|
|
|
**CRUD for repository files**
|
2014-02-18 05:27:02 -05:00
|
|
|
|
2014-08-15 03:03:18 -04:00
|
|
|
**Create, read, update and delete repository files using this API**
|
2014-02-18 05:27:02 -05:00
|
|
|
|
|
|
|
## Get file from repository
|
|
|
|
|
2014-04-24 18:48:22 -04:00
|
|
|
Allows you to receive information about file in repository like name, size, content. Note that file content is Base64 encoded.
|
2014-02-18 05:27:02 -05:00
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/repository/files
|
|
|
|
```
|
|
|
|
|
2016-07-24 18:58:34 -04:00
|
|
|
```bash
|
2016-08-08 03:47:17 -04:00
|
|
|
curl --request GET --header 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' 'https://gitlab.example.com/api/v3/projects/13083/repository/files?file_path=app/models/key.rb&ref=master'
|
2016-07-24 18:58:34 -04:00
|
|
|
```
|
|
|
|
|
2014-02-18 05:27:02 -05:00
|
|
|
Example response:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"file_name": "key.rb",
|
|
|
|
"file_path": "app/models/key.rb",
|
|
|
|
"size": 1476,
|
|
|
|
"encoding": "base64",
|
|
|
|
"content": "IyA9PSBTY2hlbWEgSW5mb3...",
|
|
|
|
"ref": "master",
|
|
|
|
"blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83",
|
2015-11-02 07:14:38 -05:00
|
|
|
"commit_id": "d5a3ff139356ce33e37e73add446f16869741b50",
|
|
|
|
"last_commit_id": "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"
|
2014-02-18 05:27:02 -05:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2014-04-24 18:48:22 -04:00
|
|
|
- `file_path` (required) - Full path to new file. Ex. lib/class.rb
|
|
|
|
- `ref` (required) - The name of branch, tag or commit
|
2014-02-18 05:27:02 -05:00
|
|
|
|
|
|
|
## Create new file in repository
|
|
|
|
|
|
|
|
```
|
|
|
|
POST /projects/:id/repository/files
|
|
|
|
```
|
|
|
|
|
2016-07-24 18:58:34 -04:00
|
|
|
```bash
|
2016-08-08 03:47:17 -04:00
|
|
|
curl --request POST --header 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' 'https://gitlab.example.com/api/v3/projects/13083/repository/files?file_path=app/project.rb&branch_name=master&content=some%20content&commit_message=create%20a%20new%20file'
|
2016-07-24 18:58:34 -04:00
|
|
|
```
|
|
|
|
|
2014-02-18 05:27:02 -05:00
|
|
|
Example response:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"file_name": "app/project.rb",
|
2014-04-05 02:36:47 -04:00
|
|
|
"branch_name": "master"
|
2014-02-18 05:27:02 -05:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2014-04-24 18:48:22 -04:00
|
|
|
- `file_path` (required) - Full path to new file. Ex. lib/class.rb
|
|
|
|
- `branch_name` (required) - The name of branch
|
|
|
|
- `encoding` (optional) - 'text' or 'base64'. Text is default.
|
|
|
|
- `content` (required) - File content
|
|
|
|
- `commit_message` (required) - Commit message
|
2014-02-18 05:27:02 -05:00
|
|
|
|
|
|
|
## Update existing file in repository
|
|
|
|
|
|
|
|
```
|
|
|
|
PUT /projects/:id/repository/files
|
|
|
|
```
|
|
|
|
|
2016-07-24 18:58:34 -04:00
|
|
|
```bash
|
2016-08-08 03:47:17 -04:00
|
|
|
curl --request PUT --header 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' 'https://gitlab.example.com/api/v3/projects/13083/repository/files?file_path=app/project.rb&branch_name=master&content=some%20other%20content&commit_message=update%20file'
|
2016-07-24 18:58:34 -04:00
|
|
|
```
|
|
|
|
|
2014-02-18 05:27:02 -05:00
|
|
|
Example response:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"file_name": "app/project.rb",
|
2014-04-05 02:36:47 -04:00
|
|
|
"branch_name": "master"
|
2014-02-18 05:27:02 -05:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2014-04-24 18:48:22 -04:00
|
|
|
- `file_path` (required) - Full path to file. Ex. lib/class.rb
|
|
|
|
- `branch_name` (required) - The name of branch
|
|
|
|
- `encoding` (optional) - 'text' or 'base64'. Text is default.
|
|
|
|
- `content` (required) - New file content
|
|
|
|
- `commit_message` (required) - Commit message
|
2014-02-18 05:27:02 -05:00
|
|
|
|
2014-08-06 08:28:22 -04:00
|
|
|
If the commit fails for any reason we return a 400 error with a non-specific
|
|
|
|
error message. Possible causes for a failed commit include:
|
|
|
|
- the `file_path` contained `/../` (attempted directory traversal);
|
|
|
|
- the new file contents were identical to the current file contents, i.e. the
|
|
|
|
user tried to make an empty commit;
|
|
|
|
- the branch was updated by a Git push while the file edit was in progress.
|
|
|
|
|
2014-08-06 11:44:57 -04:00
|
|
|
Currently gitlab-shell has a boolean return code, preventing GitLab from specifying the error.
|
|
|
|
|
2014-02-18 05:27:02 -05:00
|
|
|
## Delete existing file in repository
|
|
|
|
|
|
|
|
```
|
|
|
|
DELETE /projects/:id/repository/files
|
|
|
|
```
|
|
|
|
|
2016-07-24 18:58:34 -04:00
|
|
|
```bash
|
2016-08-08 03:47:17 -04:00
|
|
|
curl --request PUT --header 'PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK' 'https://gitlab.example.com/api/v3/projects/13083/repository/files?file_path=app/project.rb&branch_name=master&commit_message=delete%20file'
|
2016-07-24 18:58:34 -04:00
|
|
|
```
|
|
|
|
|
2014-02-18 05:27:02 -05:00
|
|
|
Example response:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"file_name": "app/project.rb",
|
2014-04-05 02:36:47 -04:00
|
|
|
"branch_name": "master"
|
2014-02-18 05:27:02 -05:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2014-04-24 18:48:22 -04:00
|
|
|
- `file_path` (required) - Full path to file. Ex. lib/class.rb
|
|
|
|
- `branch_name` (required) - The name of branch
|
|
|
|
- `commit_message` (required) - Commit message
|