新增:获取单个提交的blame信息接口以及文档
This commit is contained in:
parent
0dd062ce1c
commit
b248f770f1
|
@ -0,0 +1,8 @@
|
||||||
|
class Api::V1::Projects::CommitsController < Api::V1::BaseController
|
||||||
|
before_action :require_public_and_member_above, only: [:diff]
|
||||||
|
|
||||||
|
def diff
|
||||||
|
@result_object = Api::V1::Projects::Commits::DiffService.call(@project, params[:sha], current_user&.gitea_token)
|
||||||
|
puts @result_object
|
||||||
|
end
|
||||||
|
end
|
|
@ -1413,72 +1413,170 @@ await octokit.request('GET /api/v1/yystopf/csfjkkj/git/blobs/80dd40214a586223123
|
||||||
Success Data.
|
Success Data.
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
## 获取仓库贡献者
|
## 获取单个提交的blame信息
|
||||||
获取仓库贡献者
|
根据commit ID获取blame信息
|
||||||
|
|
||||||
> 示例:
|
> 示例:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -X GET \
|
curl -X GET http://localhost:3000/api/v1/yystopf/csfjkkj/commits/80dd40214a58622312393b2ae693756a4781fab2/diff.json
|
||||||
-d "ref=master" \
|
|
||||||
-d "filepath=lib" \
|
|
||||||
http://localhost:3000/api/yystopf/csfjkkj/contributors.json
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
await octokit.request('GET /api/yystopf/csfjkkj/contributors.json')
|
await octokit.request('GET /api/v1/yystopf/csfjkkj/commits/80dd40214a58622312393b2ae693756a4781fab2/diff.json')
|
||||||
```
|
```
|
||||||
|
|
||||||
### HTTP 请求
|
### HTTP 请求
|
||||||
`GET /api/:owner/:repo/contributors.json`
|
`GET /api/v1/:owner/:repo/commits/:sha/diff.json`
|
||||||
|
|
||||||
### 请求参数:
|
### 请求参数:
|
||||||
参数 | 必选 | 默认 | 类型 | 字段说明
|
参数 | 必选 | 默认 | 类型 | 字段说明
|
||||||
--------- | ------- | ------- | -------- | ----------
|
--------- | ------- | ------- | -------- | ----------
|
||||||
|owner |是| |string |用户登录名 |
|
|owner|是| | string |用户登录名 |
|
||||||
|repo |是| |string |项目标识identifier |
|
|repo |是| | string |项目标识identifier |
|
||||||
|ref |否| | string |分支名称、tag名称或是提交记录id,默认为整个仓库 |
|
|sha |是| | string |提交记录id |
|
||||||
|filepath |否| | string |子目录名称,默认为空 |
|
|
||||||
|
|
||||||
### 返回字段说明:
|
### 返回字段说明:
|
||||||
参数 | 类型 | 字段说明
|
参数 | 类型 | 字段说明
|
||||||
--------- | ----------- | -----------
|
--------- | ----------- | -----------
|
||||||
|total_count |integer|贡献者数量|
|
|file_nums|int|文件数量|
|
||||||
|contributions |integer|贡献数量|
|
|total_addition|int|新增行数|
|
||||||
|login |string |用户登录名 |
|
|total_deletion|int|删除行数|
|
||||||
|type |string|用户类型 |
|
|files.name|string|文件名称|
|
||||||
|name |string|用户昵称|
|
|files.oldname|string|文件修改前名称|
|
||||||
|image_url |string|用户头像|
|
|files.addition|int|文件新增行数|
|
||||||
|
|files.deletion|int|文件删除行数|
|
||||||
|
|files.type|int|文件类型 1: 新增 2: 更改 3: 删除 4: 重命名 5: 复制|
|
||||||
|
|files.is_created|bool|是否为新建文件|
|
||||||
|
|files.is_deleted|bool|是否为删除文件|
|
||||||
|
|files.is_bin|bool|是否为二进制文件|
|
||||||
|
|files.is_lfs_file|bool||
|
||||||
|
|files.is_renamed|bool|是否重命名|
|
||||||
|
|files.is_ambiguous|bool||
|
||||||
|
|files.is_submodule|bool|是否为子模块|
|
||||||
|
|files.sections.file_name|string|文件名称|
|
||||||
|
|files.sections.name|string||
|
||||||
|
|files.sections.lines.left_index|int||
|
||||||
|
|files.sections.lines.right_index|int||
|
||||||
|
|files.sections.lines.match|int||
|
||||||
|
|files.sections.lines.type|int||
|
||||||
|
|files.sections.lines.content|string||
|
||||||
|
|files.sections.lines.section_path|string||
|
||||||
|
|files.sections.lines.section_last_left_index|int||
|
||||||
|
|files.sections.lines.section_last_right_index|int||
|
||||||
|
|files.sections.lines.section_left_index|int||
|
||||||
|
|files.sections.lines.section_right_index|int||
|
||||||
|
|files.sections.lines.section_left_hunk_size|int||
|
||||||
|
|files.sections.lines.section_right_hunk_size|int||
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
> 返回的JSON示例:
|
> 返回的JSON示例:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"contributors": [
|
"file_nums": 2,
|
||||||
|
"total_addition": 2,
|
||||||
|
"total_deletion": 2,
|
||||||
|
"files": [
|
||||||
{
|
{
|
||||||
"contributions": 5,
|
"name": "xinzeng3",
|
||||||
"login": "testforge2",
|
"oldname": "xinzeng3",
|
||||||
"type": "User",
|
"addition": 1,
|
||||||
"name": "testforge2",
|
"deletion": 0,
|
||||||
"image_url": "system/lets/letter_avatars/2/T/236_177_85/120.png"
|
"type": 1,
|
||||||
|
"is_created": true,
|
||||||
|
"is_deleted": false,
|
||||||
|
"is_bin": false,
|
||||||
|
"is_lfs_file": false,
|
||||||
|
"is_renamed": false,
|
||||||
|
"is_ambiguous": false,
|
||||||
|
"is_submodule": false,
|
||||||
|
"sections": [
|
||||||
|
{
|
||||||
|
"file_name": "xinzeng3",
|
||||||
|
"name": "",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"left_index": 0,
|
||||||
|
"right_index": 0,
|
||||||
|
"match": 0,
|
||||||
|
"type": 4,
|
||||||
|
"content": "@@ -0,0 +1 @@",
|
||||||
|
"section_path": "xinzeng3",
|
||||||
|
"section_last_left_index": 0,
|
||||||
|
"section_last_right_index": 0,
|
||||||
|
"section_left_index": 0,
|
||||||
|
"section_right_index": 1,
|
||||||
|
"section_left_hunk_size": 0,
|
||||||
|
"section_right_hunk_size": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"left_index": 0,
|
||||||
|
"right_index": 1,
|
||||||
|
"match": -1,
|
||||||
|
"type": 2,
|
||||||
|
"content": "+1111122222"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"is_incomplete": false,
|
||||||
|
"is_incomplete_line_too_long": false,
|
||||||
|
"is_protected": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"contributions": 79,
|
"name": "xinzeng4",
|
||||||
"login": "yystopf",
|
"oldname": "xinzeng4",
|
||||||
"type": "User",
|
"addition": 1,
|
||||||
"name": "yystopf",
|
"deletion": 0,
|
||||||
"image_url": "system/lets/letter_avatars/2/Y/241_125_89/120.png"
|
"type": 1,
|
||||||
|
"is_created": true,
|
||||||
|
"is_deleted": false,
|
||||||
|
"is_bin": false,
|
||||||
|
"is_lfs_file": false,
|
||||||
|
"is_renamed": false,
|
||||||
|
"is_ambiguous": false,
|
||||||
|
"is_submodule": false,
|
||||||
|
"sections": [
|
||||||
|
{
|
||||||
|
"file_name": "xinzeng4",
|
||||||
|
"name": "",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"left_index": 0,
|
||||||
|
"right_index": 0,
|
||||||
|
"match": 0,
|
||||||
|
"type": 4,
|
||||||
|
"content": "@@ -0,0 +1 @@",
|
||||||
|
"section_path": "xinzeng4",
|
||||||
|
"section_last_left_index": 0,
|
||||||
|
"section_last_right_index": 0,
|
||||||
|
"section_left_index": 0,
|
||||||
|
"section_right_index": 1,
|
||||||
|
"section_left_hunk_size": 0,
|
||||||
|
"section_right_hunk_size": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"left_index": 0,
|
||||||
|
"right_index": 1,
|
||||||
|
"match": -1,
|
||||||
|
"type": 2,
|
||||||
|
"content": "+111112222"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"is_incomplete": false,
|
||||||
|
"is_incomplete_line_too_long": false,
|
||||||
|
"is_protected": false
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"total_count": 2
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
<aside class="success">
|
<aside class="success">
|
||||||
Success Data.
|
Success Data.
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
## 获取仓库webhooks列表
|
## 获取仓库webhooks列表
|
||||||
获取仓库webhooks列表
|
获取仓库webhooks列表
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
class Api::V1::Projects::Commits::DiffService < ApplicationService
|
||||||
|
attr_accessor :project, :sha, :token, :owner, :repo
|
||||||
|
attr_accessor :gitea_data
|
||||||
|
|
||||||
|
def initialize(project, sha, token = nil)
|
||||||
|
@project = project
|
||||||
|
@sha = sha
|
||||||
|
@owner = project&.owner.login
|
||||||
|
@repo = project&.identifier
|
||||||
|
@token = token
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
load_gitea_data
|
||||||
|
|
||||||
|
gitea_data
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def request_params
|
||||||
|
{
|
||||||
|
access_token: token
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def load_gitea_data
|
||||||
|
@gitea_data = $gitea_client.get_repos_commits_diff_by_owner_repo_sha(owner, repo, sha, {query: request_params})
|
||||||
|
raise Error, '获取提交对比失败!' unless @gitea_data.is_a?(Hash)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,40 @@
|
||||||
|
json.file_nums @result_object['NumFiles']
|
||||||
|
json.total_addition @result_object['TotalAddition']
|
||||||
|
json.total_deletion @result_object['TotalAddition']
|
||||||
|
json.files @result_object['Files'].each do |file|
|
||||||
|
json.name file['Name']
|
||||||
|
json.oldname file['OldName']
|
||||||
|
json.addition file['Addition']
|
||||||
|
json.deletion file['Deletion']
|
||||||
|
json.type file['Type']
|
||||||
|
json.is_created file['IsCreated']
|
||||||
|
json.is_deleted file['IsDeleted']
|
||||||
|
json.is_bin file['IsBin']
|
||||||
|
json.is_lfs_file file['IsLFSFile']
|
||||||
|
json.is_renamed file['IsRenamed']
|
||||||
|
json.is_ambiguous file['IsAmbiguous']
|
||||||
|
json.is_submodule file['IsSubmodule']
|
||||||
|
json.sections file['Sections'] do |section|
|
||||||
|
json.file_name section['FileName']
|
||||||
|
json.name section['Name']
|
||||||
|
json.lines section['Lines'] do |line|
|
||||||
|
json.left_index line['LeftIdx']
|
||||||
|
json.right_index line['RightIdx']
|
||||||
|
json.match line['Match']
|
||||||
|
json.type line['Type']
|
||||||
|
json.content line['Content']
|
||||||
|
unless line['SectionInfo'].blank?
|
||||||
|
json.section_path line['SectionInfo']['Path']
|
||||||
|
json.section_last_left_index line['SectionInfo']['LastLeftIdx']
|
||||||
|
json.section_last_right_index line['SectionInfo']['LastRightIdx']
|
||||||
|
json.section_left_index line['SectionInfo']['LeftIdx']
|
||||||
|
json.section_right_index line['SectionInfo']['RightIdx']
|
||||||
|
json.section_left_hunk_size line['SectionInfo']['LeftHunkSize']
|
||||||
|
json.section_right_hunk_size line['SectionInfo']['RightHunkSize']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
json.is_incomplete file['IsIncomplete']
|
||||||
|
json.is_incomplete_line_too_long file['IsIncompleteLineTooLong']
|
||||||
|
json.is_protected file['IsProtected']
|
||||||
|
end
|
|
@ -28,6 +28,8 @@ defaults format: :json do
|
||||||
get :all
|
get :all
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/commits/:sha/diff', to: 'commits#diff'
|
||||||
get '/git/blobs/:sha', to: 'git#blobs'
|
get '/git/blobs/:sha', to: 'git#blobs'
|
||||||
get '/git/trees/:sha', to: 'git#trees'
|
get '/git/trees/:sha', to: 'git#trees'
|
||||||
end
|
end
|
||||||
|
|
|
@ -554,7 +554,7 @@
|
||||||
<a href="#blobs" class="toc-h2 toc-link" data-title="获取仓库blobs内容">获取仓库blobs内容</a>
|
<a href="#blobs" class="toc-h2 toc-link" data-title="获取仓库blobs内容">获取仓库blobs内容</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#28d27a81d5" class="toc-h2 toc-link" data-title="获取仓库贡献者">获取仓库贡献者</a>
|
<a href="#blame" class="toc-h2 toc-link" data-title="获取单个提交的blame信息">获取单个提交的blame信息</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#webhooks" class="toc-h2 toc-link" data-title="获取仓库webhooks列表">获取仓库webhooks列表</a>
|
<a href="#webhooks" class="toc-h2 toc-link" data-title="获取仓库webhooks列表">获取仓库webhooks列表</a>
|
||||||
|
@ -9662,19 +9662,16 @@ http://localhost:3000/api/v1/yystopf/csfjkkj/git/trees/80dd40214a58622312393b2ae
|
||||||
<aside class="success">
|
<aside class="success">
|
||||||
Success Data.
|
Success Data.
|
||||||
</aside>
|
</aside>
|
||||||
<h2 id='28d27a81d5'>获取仓库贡献者</h2>
|
<h2 id='blame'>获取单个提交的blame信息</h2>
|
||||||
<p>获取仓库贡献者</p>
|
<p>根据commit ID获取blame信息</p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>示例:</p>
|
<p>示例:</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET <span class="se">\</span>
|
<div class="highlight"><pre class="highlight shell tab-shell"><code>curl <span class="nt">-X</span> GET http://localhost:3000/api/v1/yystopf/csfjkkj/commits/80dd40214a58622312393b2ae693756a4781fab2/diff.json
|
||||||
<span class="nt">-d</span> <span class="s2">"ref=master"</span> <span class="se">\</span>
|
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/v1/yystopf/csfjkkj/commits/80dd40214a58622312393b2ae693756a4781fab2/diff.json</span><span class="dl">'</span><span class="p">)</span>
|
||||||
<span class="nt">-d</span> <span class="s2">"filepath=lib"</span> <span class="se">\</span>
|
|
||||||
http://localhost:3000/api/yystopf/csfjkkj/contributors.json
|
|
||||||
</code></pre></div><div class="highlight"><pre class="highlight javascript tab-javascript"><code><span class="k">await</span> <span class="nx">octokit</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET /api/yystopf/csfjkkj/contributors.json</span><span class="dl">'</span><span class="p">)</span>
|
|
||||||
</code></pre></div><h3 id='http-22'>HTTP 请求</h3>
|
</code></pre></div><h3 id='http-22'>HTTP 请求</h3>
|
||||||
<p><code>GET /api/:owner/:repo/contributors.json</code></p>
|
<p><code>GET /api/v1/:owner/:repo/commits/:sha/diff.json</code></p>
|
||||||
<h3 id='2eb6f47757-22'>请求参数:</h3>
|
<h3 id='2eb6f47757-22'>请求参数:</h3>
|
||||||
<table><thead>
|
<table><thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -9700,18 +9697,11 @@ http://localhost:3000/api/yystopf/csfjkkj/contributors.json
|
||||||
<td>项目标识identifier</td>
|
<td>项目标识identifier</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>ref</td>
|
<td>sha</td>
|
||||||
<td>否</td>
|
<td>是</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>string</td>
|
<td>string</td>
|
||||||
<td>分支名称、tag名称或是提交记录id,默认为整个仓库</td>
|
<td>提交记录id</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>filepath</td>
|
|
||||||
<td>否</td>
|
|
||||||
<td></td>
|
|
||||||
<td>string</td>
|
|
||||||
<td>子目录名称,默认为空</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
<h3 id='7447e4874e-22'>返回字段说明:</h3>
|
<h3 id='7447e4874e-22'>返回字段说明:</h3>
|
||||||
|
@ -9723,34 +9713,149 @@ http://localhost:3000/api/yystopf/csfjkkj/contributors.json
|
||||||
</tr>
|
</tr>
|
||||||
</thead><tbody>
|
</thead><tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>total_count</td>
|
<td>file_nums</td>
|
||||||
<td>integer</td>
|
<td>int</td>
|
||||||
<td>贡献者数量</td>
|
<td>文件数量</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>contributions</td>
|
<td>total_addition</td>
|
||||||
<td>integer</td>
|
<td>int</td>
|
||||||
<td>贡献数量</td>
|
<td>新增行数</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>login</td>
|
<td>total_deletion</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td>删除行数</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.name</td>
|
||||||
<td>string</td>
|
<td>string</td>
|
||||||
<td>用户登录名</td>
|
<td>文件名称</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>type</td>
|
<td>files.oldname</td>
|
||||||
<td>string</td>
|
<td>string</td>
|
||||||
<td>用户类型</td>
|
<td>文件修改前名称</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>name</td>
|
<td>files.addition</td>
|
||||||
<td>string</td>
|
<td>int</td>
|
||||||
<td>用户昵称</td>
|
<td>文件新增行数</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>image_url</td>
|
<td>files.deletion</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td>文件删除行数</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.type</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td>文件类型 1: 新增 2: 更改 3: 删除 4: 重命名 5: 复制</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_created</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td>是否为新建文件</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_deleted</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td>是否为删除文件</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_bin</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td>是否为二进制文件</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_lfs_file</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_renamed</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td>是否重命名</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_ambiguous</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.is_submodule</td>
|
||||||
|
<td>bool</td>
|
||||||
|
<td>是否为子模块</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.file_name</td>
|
||||||
<td>string</td>
|
<td>string</td>
|
||||||
<td>用户头像</td>
|
<td>文件名称</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.name</td>
|
||||||
|
<td>string</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.left_index</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.right_index</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.match</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.type</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.content</td>
|
||||||
|
<td>string</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_path</td>
|
||||||
|
<td>string</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_last_left_index</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_last_right_index</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_left_index</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_right_index</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_left_hunk_size</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>files.sections.lines.section_right_hunk_size</td>
|
||||||
|
<td>int</td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
|
|
||||||
|
@ -9758,23 +9863,103 @@ http://localhost:3000/api/yystopf/csfjkkj/contributors.json
|
||||||
<p>返回的JSON示例:</p>
|
<p>返回的JSON示例:</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
|
<div class="highlight"><pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
|
||||||
</span><span class="nl">"contributors"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
</span><span class="nl">"file_nums"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"total_addition"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"total_deletion"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"files"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||||
</span><span class="p">{</span><span class="w">
|
</span><span class="p">{</span><span class="w">
|
||||||
</span><span class="nl">"contributions"</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng3"</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"login"</span><span class="p">:</span><span class="w"> </span><span class="s2">"testforge2"</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"oldname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng3"</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"User"</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"addition"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"testforge2"</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"deletion"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"image_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"system/lets/letter_avatars/2/T/236_177_85/120.png"</span><span class="w">
|
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_created"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_deleted"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_bin"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_lfs_file"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_renamed"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_ambiguous"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_submodule"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"sections"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||||
|
</span><span class="p">{</span><span class="w">
|
||||||
|
</span><span class="nl">"file_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng3"</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"lines"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||||
|
</span><span class="p">{</span><span class="w">
|
||||||
|
</span><span class="nl">"left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"match"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@@ -0,0 +1 @@"</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_path"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng3"</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_last_left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_last_right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_left_hunk_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_right_hunk_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w">
|
||||||
|
</span><span class="p">},</span><span class="w">
|
||||||
|
</span><span class="p">{</span><span class="w">
|
||||||
|
</span><span class="nl">"left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"match"</span><span class="p">:</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"+1111122222"</span><span class="w">
|
||||||
|
</span><span class="p">}</span><span class="w">
|
||||||
|
</span><span class="p">]</span><span class="w">
|
||||||
|
</span><span class="p">}</span><span class="w">
|
||||||
|
</span><span class="p">],</span><span class="w">
|
||||||
|
</span><span class="nl">"is_incomplete"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_incomplete_line_too_long"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_protected"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
|
||||||
</span><span class="p">},</span><span class="w">
|
</span><span class="p">},</span><span class="w">
|
||||||
</span><span class="p">{</span><span class="w">
|
</span><span class="p">{</span><span class="w">
|
||||||
</span><span class="nl">"contributions"</span><span class="p">:</span><span class="w"> </span><span class="mi">79</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng4"</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"login"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yystopf"</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"oldname"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng4"</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"User"</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"addition"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"yystopf"</span><span class="p">,</span><span class="w">
|
</span><span class="nl">"deletion"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
</span><span class="nl">"image_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"system/lets/letter_avatars/2/Y/241_125_89/120.png"</span><span class="w">
|
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_created"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_deleted"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_bin"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_lfs_file"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_renamed"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_ambiguous"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_submodule"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"sections"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||||
|
</span><span class="p">{</span><span class="w">
|
||||||
|
</span><span class="nl">"file_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng4"</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"lines"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||||
|
</span><span class="p">{</span><span class="w">
|
||||||
|
</span><span class="nl">"left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"match"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@@ -0,0 +1 @@"</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_path"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xinzeng4"</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_last_left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_last_right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_left_hunk_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"section_right_hunk_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w">
|
||||||
|
</span><span class="p">},</span><span class="w">
|
||||||
|
</span><span class="p">{</span><span class="w">
|
||||||
|
</span><span class="nl">"left_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"right_index"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"match"</span><span class="p">:</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"+111112222"</span><span class="w">
|
||||||
|
</span><span class="p">}</span><span class="w">
|
||||||
|
</span><span class="p">]</span><span class="w">
|
||||||
|
</span><span class="p">}</span><span class="w">
|
||||||
|
</span><span class="p">],</span><span class="w">
|
||||||
|
</span><span class="nl">"is_incomplete"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_incomplete_line_too_long"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||||
|
</span><span class="nl">"is_protected"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
|
||||||
</span><span class="p">}</span><span class="w">
|
</span><span class="p">}</span><span class="w">
|
||||||
</span><span class="p">],</span><span class="w">
|
</span><span class="p">]</span><span class="w">
|
||||||
</span><span class="nl">"total_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="w">
|
|
||||||
</span><span class="p">}</span><span class="w">
|
</span><span class="p">}</span><span class="w">
|
||||||
</span></code></pre></div>
|
</span></code></pre></div>
|
||||||
<aside class="success">
|
<aside class="success">
|
||||||
|
|
Loading…
Reference in New Issue