使用 cdk 获取两个分支(代码提交)之间的所有 CommitId

Get all CommitIds between two Branches (codecommit) with cdk

我想获取两个分支之间的所有commitId,但我只获取它们之间的第一个和最后一个commitId。

这是我到目前为止所得到的:

difference = client.get_differences(
        repositoryName=repo_name,
        beforeCommitSpecifier=main_branch_name,
        afterCommitSpecifier=dev_branch_name
    )
print("difference between branch "+ dev_branch_name + " and "+main_branch_name )

print(difference)
differences = difference['differences']
for diff in differences:
 print("diff")
 print("afterBlob")
 if 'afterBlob' in diff:
   after_or_before_blob = diff['afterBlob']
   if 'beforeBlob' in diff:
            after_or_before_blob = diff['beforeBlob']
        print(after_or_before_blob['blobId'])

        blob = client.get_blob(
            repositoryName=repo_name,
            blobId=after_or_before_blob['blobId']
        )
        print("after_blob 1:")
        print(blob)

I need the CommitIds like in the picture, but i only get e029... and b0ca...

我也尝试使用 git 来解决这个问题,例如 git diff,但是这段代码应该放在 AWS Lambda 中,而 git-remote-codecommit 不会为我工作。

什么可以解决我的问题?

我找到了符合我需求的答案,虽然有点慢。

我在错误的地方搜索了解决方案。差异仅显示文件中的差异,而不是提交本身的差异。

因此我递归地使用了 GetCommit 和给定的 ParentId。

    def get_list_of_commits(self, client, main_commit_id, repo_name, list_commit_ids=[], list_commits=[]):
        commit_main = client.get_commit(
            repositoryName=repo_name,
            commitId=main_commit_id
        )
        parents = commit_main['commit']['parents']
        for parent in parents:
            self.get_list_of_commits(client, parent, repo_name, list_commit_ids, list_commits)
        commit = commit_main['commit']
        if main_commit_id not in list_commit_ids:
            list_commit_ids.append(main_commit_id)
            list_commits.append(commit)
        return list_commit_ids, list_commits

如果有人知道更好的答案,我会很高兴听到。