1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
|
# Capture Locking Notes during Locks creation and retrieve same during List Locks.
## Concept
The git-lfs REST API for Locks creation should be able to accept additonal attribute (message/notes) which would be easy to have some information related to lock creation. This same information can be retrieved back with the git-lfs List Locks REST API.
- Allow to have additional attribute to store the lock message/notes during lock creation
- Include lock message/notes in the git-lfs List Locks REST API response
## API extensions
The current Git LFS File Locking API [https://github.com/git-lfs/git-lfs/blob/v3.2.0/docs/api/locking.md] doesn't have a field to capture some information related to Locks creation which would be useful to understand why and from where the lock was acquired.
With this enhancement, we can have some predefined comment as part of lock creation and get back same with the List Locks REST API so that it will be useful to differentiate and get more information on the File lock.
# Create Locks Enhancement API proposal
### Request
```
> POST https://lfs-server.com/locks
> Accept: application/vnd.git-lfs+json
> Content-Type: application/vnd.git-lfs+json
> Authorization: Basic ...
> {
> "path": "foo/bar.zip",
> "ref": {
> "name": "refs/heads/my-feature"
> },
> "notes": "Lock applied from Workspace A"
> }
```
### Response
* **Successful response**
```
< HTTP/1.1 201 Created
< Content-Type: application/vnd.git-lfs+json
< {
< "lock": {
< "id": "some-uuid",
< "path": "foo/bar.zip",
< "locked_at": "2022-05-17T15:49:06+00:00",
< "owner": {
< "name": "Jane Doe"
< },
< "notes": "Lock applied from Workspace A"
< }
< }
```
# List Locks Enhancement API proposal
### Request (with notes -- notes=true)
```
> GET https://lfs-server.com/locks?path=&id&cursor=limit&**notes=true**&refspec=
> Accept: application/vnd.git-lfs+json
> Authorization: Basic ... (if needed)
```
### Response
* **Successful response**
```
< HTTP/1.1 200 Ok
< Content-Type: application/vnd.git-lfs+json
< {
< "locks": [
< {
< "id": "some-uuid",
< "path": "foo/bar.zip",
< "locked_at": "2022-05-17T15:49:06+00:00",
< "owner": {
< "name": "Jane Doe"
< },
< "notes": "Lock applied from Workspace A"
< }
< ],
< "next_cursor": "optional next ID"
< }
```
### Request (with out notes)
```
> GET https://lfs-server.com/locks?path=&id&cursor=limit&refspec=
> Accept: application/vnd.git-lfs+json
> Authorization: Basic ... (if needed)
```
### Response
* **Successful response**
```
< HTTP/1.1 200 Ok
< Content-Type: application/vnd.git-lfs+json
< {
< "locks": [
< {
< "id": "some-uuid",
< "path": "foo/bar.zip",
< "locked_at": "2022-05-17T15:49:06+00:00",
< "owner": {
< "name": "Jane Doe"
< }
< }
< ],
< "next_cursor": "optional next ID"
< }
```
# List Locks for Verification Enhancement API proposal
### Request (with notes)
```
> POST https://lfs-server.com/locks/verify
> Accept: application/vnd.git-lfs+json
> Content-Type: application/vnd.git-lfs+json
> Authorization: Basic ...
> {
> "cursor": "optional cursor",
> "limit": 100, // also optional
> "ref": {
> "name": "refs/heads/my-feature"
> },
> "notes" : true, // also optional
> }
```
### Response
* **Successful response**
```
< HTTP/1.1 200 Ok
< Content-Type: application/vnd.git-lfs+json
< {
< "ours": [
< {
< "id": "some-uuid",
< "path": "/path/to/file",
< "locked_at": "2016-05-17T15:49:06+00:00",
< "owner": {
< "name": "Jane Doe"
< },
< "notes": "Lock applied from Workspace A"
< }
< ],
< "theirs": [],
< "next_cursor": "optional next ID"
< }
```
### Request (with out notes)
```
> POST https://lfs-server.com/locks/verify
> Accept: application/vnd.git-lfs+json
> Content-Type: application/vnd.git-lfs+json
> Authorization: Basic ...
> {
> "cursor": "optional cursor",
> "limit": 100, // also optional
> "ref": {
> "name": "refs/heads/my-feature"
> }
> }
```
### Response
* **Successful response**
```
< HTTP/1.1 200 Ok
< Content-Type: application/vnd.git-lfs+json
< {
< "ours": [
< {
< "id": "some-uuid",
< "path": "/path/to/file",
< "locked_at": "2016-05-17T15:49:06+00:00",
< "owner": {
< "name": "Jane Doe"
< }
< }
< ],
< "theirs": [],
< "next_cursor": "optional next ID"
< }
```
|