open.gitlab.projects.{projectId}.commits.difference
获取该次提交的文件变更
- 请求路由:
open.gitlab.projects.{projectId}.commits.difference- 交互模型:
Request Response获取该次提交的文件变更
请求
RSocket.rr({
route: 'open.gitlab.projects.{projectId}.commits.difference',
args: {
sha: '000dc5f8',
}
})
请求参数
| 属性 | 类型 | 默认值 | 必须 | 说明 |
|---|---|---|---|---|
| projectId | string | 是 | 仓库id | |
| sha | string | 是 | 存储库分支或标记的提交哈希或名称 |
返回
[
{
"old_path": "taurus-ot/src/main/java/com/aspiretop/taurus/ot/gitlab/GitlabController.java",
"new_path": "taurus-ot/src/main/java/com/aspiretop/taurus/ot/gitlab/GitlabController.java",
"a_mode": "0",
"b_mode": "100644",
"new_file": true,
"renamed_file": false,
"deleted_file": false,
"diff": "@@ -0,0 +1,70 @@\n+package com.aspiretop.taurus.ot.gitlab;\n+\n+import com.aspiretop.taurus.TaurusContext;\n+import com.aspiretop.taurus.ot.UserMapping;\n+import com.aspiretop.taurus.ot.UserMappingManager;\n+import com.aspiretop.taurus.rpc.rsocket.Arg;\n+import com.aspiretop.taurus.rsocket.ErrorHelper;\n+import com.aspiretop.taurus.util.Util;\n+import com.aspiretop.taurus.util.WebFluxUtils;\n+import com.fasterxml.jackson.databind.JsonNode;\n+import lombok.RequiredArgsConstructor;\n+import org.springframework.beans.factory.annotation.Value;\n+import org.springframework.http.HttpStatus;\n+import org.springframework.http.MediaType;\n+import org.springframework.messaging.handler.annotation.DestinationVariable;\n+import org.springframework.messaging.handler.annotation.MessageMapping;\n+import org.springframework.stereotype.Controller;\n+import org.springframework.web.reactive.function.BodyInserters;\n+import org.springframework.web.reactive.function.client.WebClient;\n+import reactor.core.publisher.Flux;\n+import reactor.core.publisher.Mono;\n+\n+import java.util.HashSet;\n+import java.util.List;\n+import java.util.Set;\n+\n+@Controller\n+@RequiredArgsConstructor\n+public class GitlabController {\n+ private final UserMappingManager umm;\n+\n+ @Value(\"${iap.one-touch.gitlab.baseuri:https://scm.aspiretop.com/api/v4}\")\n+ private String baseUri;\n+ @Value(\"${iap.one-touch.gitlab.apikey:M-v6n9THX9yKfnPxsr3Y}\")\n+ private String apiKey;\n+\n+ private WebClient wb;\n+\n+ private synchronized WebClient wb() {\n+ if (wb == null) {\n+ wb = WebClient.builder()\n+ .baseUrl(baseUri)\n+ .defaultHeader(\"PRIVATE-TOKEN\", apiKey)\n+ .filter(WebFluxUtils.statusError())\n+ .build();\n+ }\n+ return wb;\n+ }\n+\n+ @MessageMapping(\"open.gitlab.api.get\")\n+ public Mono<JsonNode> get(@Arg(\"uri\") String uri, Object... uriVariables) {\n+ return wb().get().uri(uri, uriVariables)\n+ .retrieve().bodyToMono(JsonNode.class);\n+ }\n+\n+ @MessageMapping(\"open.gitlab.api.post\")\n+ public Mono<JsonNode> post(@Arg(\"uri\") String uri, JsonNode args, Object... uriVariables) {\n+ return wb().post().uri(uri, uriVariables)\n+ .contentType(MediaType.APPLICATION_JSON)\n+ .body(BodyInserters.fromValue(args))\n+ .retrieve().bodyToMono(JsonNode.class);\n+ }\n+\n+\n+ @MessageMapping(\"open.gitlab.projects.{projectId}.commits\")\n+ public Mono<JsonNode> commits(@DestinationVariable String projectId) {\n+ return get(\"/projects/{projectId}/repository/commits\", projectId);\n+ }\n+\n+}\n"
}
]
返回属性
文档地址:https://docs.gitlab.com/ee/api/commits.html#get-the-diff-of-a-commit