feat: commit diff 接口返回 commit详情信息
This commit is contained in:
@@ -79,20 +79,25 @@ public class GitController {
|
|||||||
})
|
})
|
||||||
public R branchCommitDiff(@PathVariable("workspaceId") String workspaceId,
|
public R branchCommitDiff(@PathVariable("workspaceId") String workspaceId,
|
||||||
@PathVariable("branchName") String branchName,
|
@PathVariable("branchName") String branchName,
|
||||||
@PathVariable("commitId") String commitId,
|
@PathVariable("commitId") String newCommitId,
|
||||||
@PathVariable(value = "oldCommitId", required = false) String oldCommitId) {
|
@PathVariable(value = "oldCommitId", required = false) String oldCommitId) {
|
||||||
|
|
||||||
if (T.StrUtil.isEmpty(oldCommitId)) {
|
if (T.StrUtil.isEmpty(oldCommitId)) {
|
||||||
// oldCommitId 为空默认对比 parent commitId
|
// oldCommitId 为空默认对比 parent commitId
|
||||||
oldCommitId = gitService.getParentCommitId(workspaceId, branchName, commitId);
|
oldCommitId = gitService.getParentCommitId(workspaceId, branchName, newCommitId);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Map<Object, Object>> diffList = gitService.getDiffFileListInCommits(workspaceId, commitId, oldCommitId);
|
Map<Object, Object> oldCommit = gitService.infoCommit(workspaceId, oldCommitId);
|
||||||
|
Map<Object, Object> newCommit = gitService.infoCommit(workspaceId, newCommitId);
|
||||||
|
|
||||||
|
List<Map<Object, Object>> diffList = gitService.getDiffFileListInCommits(workspaceId, newCommitId, oldCommitId);
|
||||||
Map<Object, Object> record = T.MapUtil.builder()
|
Map<Object, Object> record = T.MapUtil.builder()
|
||||||
.put("oldBranch", branchName)
|
.put("oldBranch", branchName)
|
||||||
.put("newBranch", branchName)
|
.put("newBranch", branchName)
|
||||||
.put("oldCommitId", oldCommitId)
|
.put("oldCommitId", oldCommitId)
|
||||||
.put("newCommitId", commitId)
|
.put("newCommitId", newCommitId)
|
||||||
|
.put("oldCommit", oldCommit)
|
||||||
|
.put("newCommit", newCommit)
|
||||||
.put("files", diffList)
|
.put("files", diffList)
|
||||||
.build();
|
.build();
|
||||||
return R.ok().putData("record", record);
|
return R.ok().putData("record", record);
|
||||||
|
|||||||
@@ -29,9 +29,7 @@ public interface IGitService {
|
|||||||
|
|
||||||
String getLatestCommitId(String workspaceId, String branch);
|
String getLatestCommitId(String workspaceId, String branch);
|
||||||
|
|
||||||
List<Map<Object, Object>> getDiffFileListInCommits(String workspaceId, String commitId, String oldCommitId);
|
List<Map<Object, Object>> getDiffFileListInCommits(String workspaceId, String newCommitId, String oldCommitId);
|
||||||
|
|
||||||
List<Map<Object, Object>> getDiffFileListInBranches(String workspaceId, String srcBranch, String tgtBranch);
|
|
||||||
|
|
||||||
String mergeBranch(String workspaceId, String sourceBranch, String targetBranch, String message) throws RuntimeException;
|
String mergeBranch(String workspaceId, String sourceBranch, String targetBranch, String message) throws RuntimeException;
|
||||||
|
|
||||||
|
|||||||
@@ -128,11 +128,16 @@ public class ApplicationMergeServiceImpl extends ServiceImpl<ApplicationMergeDao
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Map<Object, Object> sourceCommit = gitService.infoCommit(workspaceId, commitA);
|
||||||
|
Map<Object, Object> targetCommit = gitService.infoCommit(workspaceId, commitB);
|
||||||
|
|
||||||
Map<Object, Object> m = T.MapUtil.builder()
|
Map<Object, Object> m = T.MapUtil.builder()
|
||||||
.put("sourceBranch", sourceBranch)
|
.put("sourceBranch", sourceBranch)
|
||||||
.put("targetBranch", targetBranch)
|
.put("targetBranch", targetBranch)
|
||||||
.put("sourceCommitId", commitA)
|
.put("sourceCommitId", commitA)
|
||||||
.put("targetCommitId", commitB)
|
.put("targetCommitId", commitB)
|
||||||
|
.put("sourceCommit", sourceCommit)
|
||||||
|
.put("targetCommit", targetCommit)
|
||||||
.put("files", diffFileListInCommits)
|
.put("files", diffFileListInCommits)
|
||||||
.build();
|
.build();
|
||||||
return m;
|
return m;
|
||||||
|
|||||||
@@ -426,37 +426,7 @@ public class GitServiceImpl implements IGitService {
|
|||||||
}
|
}
|
||||||
return files;
|
return files;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error(e, "[getDiffFileListInCommits] [error] [workspaceId: {}] [commitId: {}] [oldCommitId: {}]", workspaceId, commitIdA, commitIdB);
|
log.error(e, "[getDiffFileListInCommits] [error] [workspaceId: {}] [newCommitId: {}] [oldCommitId: {}]", workspaceId, commitIdA, commitIdB);
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 branchA -> branchB 文件差异
|
|
||||||
*
|
|
||||||
* @param workspaceId
|
|
||||||
* @param branchA
|
|
||||||
* @param branchB
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<Map<Object, Object>> getDiffFileListInBranches(String workspaceId, String branchA, String branchB) {
|
|
||||||
try (Git git = this.getGitInstance(workspaceId);
|
|
||||||
Repository repository = git.getRepository();
|
|
||||||
RevWalk revWalk = new RevWalk(repository);) {
|
|
||||||
|
|
||||||
RevCommit commitA = revWalk.parseCommit(repository.resolve(branchA));
|
|
||||||
RevCommit commitB = revWalk.parseCommit(repository.resolve(branchB));
|
|
||||||
|
|
||||||
List<Map<Object, Object>> diffFileListInCommits = this.getDiffFileListInCommits(workspaceId, commitA.getName(), commitB.getName());
|
|
||||||
diffFileListInCommits.parallelStream()
|
|
||||||
.forEach(m -> {
|
|
||||||
T.MapUtil.renameKey(m, "oldContent", "sourceContent");
|
|
||||||
T.MapUtil.renameKey(m, "newContent", "targetContent");
|
|
||||||
});
|
|
||||||
return diffFileListInCommits;
|
|
||||||
} catch (IOException e) {
|
|
||||||
log.error(e, "[getDiffFileListInBranches] [error]");
|
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user