如何用GraphQL比较github中的两个分支?
我们可以用Github GraphQL比较两个分支吗 从他们的v3 rest API中,您可以执行以下操作:如何用GraphQL比较github中的两个分支?,github,graphql,git-branch,github-graphql,Github,Graphql,Git Branch,Github Graphql,我们可以用Github GraphQL比较两个分支吗 从他们的v3 rest API中,您可以执行以下操作: /repos/:owner/:repo/compare/:base…:head (文件:) 这适用于SHA、分支、标签等 但是,我在文档中找不到它的等效GraphQL查询 这是我迄今为止的尝试: 我可以分别获得每个分支的提交列表,但是,整个历史记录都已加载,我只想知道canary分支和nightly分支之间的区别 query{ repository(owner:"samri
/repos/:owner/:repo/compare/:base…:head
(文件:)
这适用于SHA、分支、标签等
但是,我在文档中找不到它的等效GraphQL查询
这是我迄今为止的尝试:
我可以分别获得每个分支的提交列表,但是,整个历史记录都已加载,我只想知道canary分支和nightly分支之间的区别
query{
repository(owner:"samridh",name:"release-generator"){
name
branch0: ref(qualifiedName: "canary"){
target{
... on Commit {
history(first:100){
...CommitFragment
}
}
}
}
branch1: ref(qualifiedName: "nightly"){
target{
... on Commit {
history(first:100){
...CommitFragment
}
}
}
}
}
}
fragment CommitFragment on CommitHistoryConnection {
totalCount
nodes {
oid
message
committedDate
author {
name
email
}
}
pageInfo {
hasNextPage
endCursor
}
}
这样做的方式如下:
/repos/samridh/release generator/compare/nightly…canary
不幸的是,在v3 REST API中,在github社区页面上滚动数小时之后,似乎到目前为止,API还没有在v4上迁移,必须通过v3本身完成 但是,V3API只支持250次提交,超出此范围的任何提交都将被忽略且不显示。不过,可以使用graphQL解决这个问题 触发此查询以获取起点和终点:
query getStartAndEndPoints {
repository(owner: "samridh", name: "release-generator") {
endPoint: ref(qualifiedName: "canary") {
...internalBranchContent
}
startPoint: ref(qualifiedName: "nightly") {
...internalBranchContent
}
}
}
fragment internalBranchContent on Ref {
target {
... on Commit {
history(first: 1) {
edges {
node {
committedDate
}
}
}
}
}
}
这将为您提供查询的开始和结束日期
将这些值插入到:
query findDifference{
repository(owner:"samridh",name:"release-generator"){
ref(qualifiedName: "canary"){
target{
... on Commit {
history(
first : 100,
after: $(value of previous end cursor) #keep it empty first time
until : $(endDate),
since: $(startDate),
){
...CommitFragment
}
}
}
}
}
}
fragment CommitFragment on CommitHistoryConnection {
totalCount
nodes {
oid
}
pageInfo {
startCursor
hasNextPage
endCursor
}
}
并提取所有oid,每次100(Github GraphQL一次只支持100)
最后,您可以调用v3 API,类似地:
/repos/samridh/release-generator/compare/<commit1>...<commit100>
/repos/samridh/release-generator/compare/<commit101>...<commit200>
/repos/samridh/release-generator/compare/<commit201>...<commit300>
/repos/samridh/release generator/compare/。。。
/repos/samridh/release generator/compare/。。。
/repos/samridh/release generator/compare/。。。