repository_files.md 2.4 KB
Newer Older
M
Marin Jankovski 已提交
1 2 3
# Repository files

## CRUD for repository files
D
Dmitriy Zaporozhets 已提交
4 5 6

## Create, read, update and delete repository files using this API

7
---
D
Dmitriy Zaporozhets 已提交
8 9 10

## Get file from repository

11
Allows you to receive information about file in repository like name, size, content. Note that file content is Base64 encoded.
D
Dmitriy Zaporozhets 已提交
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

```
GET /projects/:id/repository/files
```

Example response:

```json
{
  "file_name": "key.rb",
  "file_path": "app/models/key.rb",
  "size": 1476,
  "encoding": "base64",
  "content": "IyA9PSBTY2hlbWEgSW5mb3...",
  "ref": "master",
  "blob_id": "79f7bbd25901e8334750839545a9bd021f0e4c83",
  "commit_id": "d5a3ff139356ce33e37e73add446f16869741b50"
}
```

Parameters:

34 35
- `file_path` (required) - Full path to new file. Ex. lib/class.rb
- `ref` (required) - The name of branch, tag or commit
D
Dmitriy Zaporozhets 已提交
36 37 38 39 40 41 42 43 44 45 46 47

## Create new file in repository

```
POST /projects/:id/repository/files
```

Example response:

```json
{
  "file_name": "app/project.rb",
J
Johannes Schleifenbaum 已提交
48
  "branch_name": "master"
D
Dmitriy Zaporozhets 已提交
49 50 51 52 53
}
```

Parameters:

54 55 56 57 58
- `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
D
Dmitriy Zaporozhets 已提交
59 60 61 62 63 64 65 66 67 68 69 70

## Update existing file in repository

```
PUT /projects/:id/repository/files
```

Example response:

```json
{
  "file_name": "app/project.rb",
J
Johannes Schleifenbaum 已提交
71
  "branch_name": "master"
D
Dmitriy Zaporozhets 已提交
72 73 74 75 76
}
```

Parameters:

77 78 79 80 81
- `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
D
Dmitriy Zaporozhets 已提交
82

83 84 85 86 87 88 89
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.

D
Dmitriy Zaporozhets 已提交
90 91 92 93 94 95 96 97 98 99 100
## Delete existing file in repository

```
DELETE /projects/:id/repository/files
```

Example response:

```json
{
  "file_name": "app/project.rb",
J
Johannes Schleifenbaum 已提交
101
  "branch_name": "master"
D
Dmitriy Zaporozhets 已提交
102 103 104 105 106
}
```

Parameters:

107 108 109
- `file_path` (required) - Full path to file. Ex. lib/class.rb
- `branch_name` (required) - The name of branch
- `commit_message` (required) - Commit message