Fetch PR additions and deletions from GitHub (#340)
Summary: Closes #336. Test Plan: Snapshots updated; changes are easily readable. Existing tests pass. Running the cred explorer on the `sourcecred/sourcecred` graph shows pull requests like `#124 (+73/−3): Update the README`, which is good. wchargin-branch: pr-addition-deletion
This commit is contained in:
parent
6585700c0c
commit
5b3b28c705
|
@ -305,11 +305,13 @@ Array [
|
||||||
"type": "PULL_REQUEST",
|
"type": "PULL_REQUEST",
|
||||||
},
|
},
|
||||||
"payload": Object {
|
"payload": Object {
|
||||||
|
"additions": 1,
|
||||||
"body": "@wchargin could you please do the following:
|
"body": "@wchargin could you please do the following:
|
||||||
- add a commit comment
|
- add a commit comment
|
||||||
- add a review comment requesting some trivial change
|
- add a review comment requesting some trivial change
|
||||||
- i'll change it
|
- i'll change it
|
||||||
- then approve the pr",
|
- then approve the pr",
|
||||||
|
"deletions": 0,
|
||||||
"number": 5,
|
"number": 5,
|
||||||
"title": "This pull request will be more contentious. I can feel it...",
|
"title": "This pull request will be more contentious. I can feel it...",
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/5",
|
"url": "https://github.com/sourcecred/example-github/pull/5",
|
||||||
|
@ -448,7 +450,9 @@ Array [
|
||||||
"type": "PULL_REQUEST",
|
"type": "PULL_REQUEST",
|
||||||
},
|
},
|
||||||
"payload": Object {
|
"payload": Object {
|
||||||
|
"additions": 1,
|
||||||
"body": "Oh look, it's a pull request.",
|
"body": "Oh look, it's a pull request.",
|
||||||
|
"deletions": 0,
|
||||||
"number": 3,
|
"number": 3,
|
||||||
"title": "Add README, merge via PR.",
|
"title": "Add README, merge via PR.",
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/3",
|
"url": "https://github.com/sourcecred/example-github/pull/3",
|
||||||
|
@ -1705,7 +1709,9 @@ Issue with Unicode: ȴሲ𣐳楢👍 :heart: 𐤔𐤁𐤀𐤑𐤍𐤉𐤔𐤌
|
||||||
"type": "PULL_REQUEST",
|
"type": "PULL_REQUEST",
|
||||||
},
|
},
|
||||||
"payload": Object {
|
"payload": Object {
|
||||||
|
"additions": 1,
|
||||||
"body": "Oh look, it's a pull request.",
|
"body": "Oh look, it's a pull request.",
|
||||||
|
"deletions": 0,
|
||||||
"number": 3,
|
"number": 3,
|
||||||
"title": "Add README, merge via PR.",
|
"title": "Add README, merge via PR.",
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/3",
|
"url": "https://github.com/sourcecred/example-github/pull/3",
|
||||||
|
@ -1729,11 +1735,13 @@ Issue with Unicode: ȴሲ𣐳楢👍 :heart: 𐤔𐤁𐤀𐤑𐤍𐤉𐤔𐤌
|
||||||
"type": "PULL_REQUEST",
|
"type": "PULL_REQUEST",
|
||||||
},
|
},
|
||||||
"payload": Object {
|
"payload": Object {
|
||||||
|
"additions": 1,
|
||||||
"body": "@wchargin could you please do the following:
|
"body": "@wchargin could you please do the following:
|
||||||
- add a commit comment
|
- add a commit comment
|
||||||
- add a review comment requesting some trivial change
|
- add a review comment requesting some trivial change
|
||||||
- i'll change it
|
- i'll change it
|
||||||
- then approve the pr",
|
- then approve the pr",
|
||||||
|
"deletions": 0,
|
||||||
"number": 5,
|
"number": 5,
|
||||||
"title": "This pull request will be more contentious. I can feel it...",
|
"title": "This pull request will be more contentious. I can feel it...",
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/5",
|
"url": "https://github.com/sourcecred/example-github/pull/5",
|
||||||
|
@ -1781,7 +1789,9 @@ Issue with Unicode: ȴሲ𣐳楢👍 :heart: 𐤔𐤁𐤀𐤑𐤍𐤉𐤔𐤌
|
||||||
"type": "PULL_REQUEST",
|
"type": "PULL_REQUEST",
|
||||||
},
|
},
|
||||||
"payload": Object {
|
"payload": Object {
|
||||||
|
"additions": 3,
|
||||||
"body": "Nominally paired with @wchargin",
|
"body": "Nominally paired with @wchargin",
|
||||||
|
"deletions": 0,
|
||||||
"number": 9,
|
"number": 9,
|
||||||
"title": "An unmerged pull request",
|
"title": "An unmerged pull request",
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/9",
|
"url": "https://github.com/sourcecred/example-github/pull/9",
|
||||||
|
|
|
@ -84,7 +84,7 @@ Object {
|
||||||
"https://github.com/decentralion": "@decentralion",
|
"https://github.com/decentralion": "@decentralion",
|
||||||
"https://github.com/sourcecred/example-github/issues/2": "#2: A referencing issue.",
|
"https://github.com/sourcecred/example-github/issues/2": "#2: A referencing issue.",
|
||||||
"https://github.com/sourcecred/example-github/issues/2#issuecomment-373768703": "comment by @decentralion on #2",
|
"https://github.com/sourcecred/example-github/issues/2#issuecomment-373768703": "comment by @decentralion on #2",
|
||||||
"https://github.com/sourcecred/example-github/pull/5": "#5: This pull request will be more contentious. I can feel it...",
|
"https://github.com/sourcecred/example-github/pull/5": "#5 (+1/−0): This pull request will be more contentious. I can feel it...",
|
||||||
"https://github.com/sourcecred/example-github/pull/5#discussion_r171460198": "review comment by @wchargin on #5",
|
"https://github.com/sourcecred/example-github/pull/5#discussion_r171460198": "review comment by @wchargin on #5",
|
||||||
"https://github.com/sourcecred/example-github/pull/5#pullrequestreview-100313899": "review by @wchargin on #5",
|
"https://github.com/sourcecred/example-github/pull/5#pullrequestreview-100313899": "review by @wchargin on #5",
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,6 +266,7 @@
|
||||||
"pullRequests": {
|
"pullRequests": {
|
||||||
"nodes": [
|
"nodes": [
|
||||||
{
|
{
|
||||||
|
"additions": 1,
|
||||||
"author": {
|
"author": {
|
||||||
"__typename": "User",
|
"__typename": "User",
|
||||||
"id": "MDQ6VXNlcjE0MDAwMjM=",
|
"id": "MDQ6VXNlcjE0MDAwMjM=",
|
||||||
|
@ -292,6 +293,7 @@
|
||||||
"hasNextPage": false
|
"hasNextPage": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"deletions": 0,
|
||||||
"id": "MDExOlB1bGxSZXF1ZXN0MTcxODg3NzQx",
|
"id": "MDExOlB1bGxSZXF1ZXN0MTcxODg3NzQx",
|
||||||
"mergeCommit": {
|
"mergeCommit": {
|
||||||
"oid": "0a223346b4e6dec0127b1e6aa892c4ee0424b66a"
|
"oid": "0a223346b4e6dec0127b1e6aa892c4ee0424b66a"
|
||||||
|
@ -309,6 +311,7 @@
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/3"
|
"url": "https://github.com/sourcecred/example-github/pull/3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"additions": 1,
|
||||||
"author": {
|
"author": {
|
||||||
"__typename": "User",
|
"__typename": "User",
|
||||||
"id": "MDQ6VXNlcjE0MDAwMjM=",
|
"id": "MDQ6VXNlcjE0MDAwMjM=",
|
||||||
|
@ -324,6 +327,7 @@
|
||||||
"hasNextPage": false
|
"hasNextPage": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"deletions": 0,
|
||||||
"id": "MDExOlB1bGxSZXF1ZXN0MTcxODg4NTIy",
|
"id": "MDExOlB1bGxSZXF1ZXN0MTcxODg4NTIy",
|
||||||
"mergeCommit": {
|
"mergeCommit": {
|
||||||
"oid": "6d5b3aa31ebb68a06ceb46bbd6cf49b6ccd6f5e6"
|
"oid": "6d5b3aa31ebb68a06ceb46bbd6cf49b6ccd6f5e6"
|
||||||
|
@ -392,6 +396,7 @@
|
||||||
"url": "https://github.com/sourcecred/example-github/pull/5"
|
"url": "https://github.com/sourcecred/example-github/pull/5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"additions": 3,
|
||||||
"author": {
|
"author": {
|
||||||
"__typename": "User",
|
"__typename": "User",
|
||||||
"id": "MDQ6VXNlcjE0MDAwMjM=",
|
"id": "MDQ6VXNlcjE0MDAwMjM=",
|
||||||
|
@ -407,6 +412,7 @@
|
||||||
"hasNextPage": false
|
"hasNextPage": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"deletions": 0,
|
||||||
"id": "MDExOlB1bGxSZXF1ZXN0MTg1ODA2MTU3",
|
"id": "MDExOlB1bGxSZXF1ZXN0MTg1ODA2MTU3",
|
||||||
"mergeCommit": null,
|
"mergeCommit": null,
|
||||||
"number": 9,
|
"number": 9,
|
||||||
|
|
|
@ -700,6 +700,8 @@ export type PullRequestJSON = {|
|
||||||
+title: string,
|
+title: string,
|
||||||
+body: string,
|
+body: string,
|
||||||
+number: number,
|
+number: number,
|
||||||
|
+additions: number,
|
||||||
|
+deletions: number,
|
||||||
+author: NullableAuthorJSON,
|
+author: NullableAuthorJSON,
|
||||||
+comments: ConnectionJSON<CommentJSON>,
|
+comments: ConnectionJSON<CommentJSON>,
|
||||||
+reviews: ConnectionJSON<PullRequestReviewJSON>,
|
+reviews: ConnectionJSON<PullRequestReviewJSON>,
|
||||||
|
@ -717,6 +719,8 @@ function pullRequestsFragment(): FragmentDefinition {
|
||||||
b.field("body"),
|
b.field("body"),
|
||||||
b.field("number"),
|
b.field("number"),
|
||||||
b.field("mergeCommit", {}, [b.field("oid")]),
|
b.field("mergeCommit", {}, [b.field("oid")]),
|
||||||
|
b.field("additions"),
|
||||||
|
b.field("deletions"),
|
||||||
makeAuthor(),
|
makeAuthor(),
|
||||||
b.field("comments", {first: b.literal(PAGE_SIZE_COMMENTS)}, [
|
b.field("comments", {first: b.literal(PAGE_SIZE_COMMENTS)}, [
|
||||||
b.fragmentSpread("comments"),
|
b.fragmentSpread("comments"),
|
||||||
|
|
|
@ -216,6 +216,8 @@ class GithubParser {
|
||||||
number: prJson.number,
|
number: prJson.number,
|
||||||
title: prJson.title,
|
title: prJson.title,
|
||||||
body: prJson.body,
|
body: prJson.body,
|
||||||
|
additions: prJson.additions,
|
||||||
|
deletions: prJson.deletions,
|
||||||
};
|
};
|
||||||
const pullRequestNode: Node<PullRequestNodePayload> = {
|
const pullRequestNode: Node<PullRequestNodePayload> = {
|
||||||
address: this.makeNodeAddress("PULL_REQUEST", prJson.url),
|
address: this.makeNodeAddress("PULL_REQUEST", prJson.url),
|
||||||
|
|
|
@ -392,6 +392,14 @@ export class PullRequestPorcelain extends PostPorcelain<
|
||||||
return this.payload().title;
|
return this.payload().title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
additions(): number {
|
||||||
|
return this.payload().additions;
|
||||||
|
}
|
||||||
|
|
||||||
|
deletions(): number {
|
||||||
|
return this.payload().deletions;
|
||||||
|
}
|
||||||
|
|
||||||
ref(): PullRequestReference {
|
ref(): PullRequestReference {
|
||||||
return new PullRequestReference(super.ref());
|
return new PullRequestReference(super.ref());
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,8 @@ export function nodeDescription(ref: NodeReference<NodePayload>) {
|
||||||
}
|
}
|
||||||
case "PULL_REQUEST": {
|
case "PULL_REQUEST": {
|
||||||
const pr = new PullRequestPorcelain(porcelain);
|
const pr = new PullRequestPorcelain(porcelain);
|
||||||
return `#${pr.number()}: ${pr.title()}`;
|
const diff = `+${pr.additions()}/\u2212${pr.deletions()}`;
|
||||||
|
return `#${pr.number()} (${diff}): ${pr.title()}`;
|
||||||
}
|
}
|
||||||
case "COMMENT": {
|
case "COMMENT": {
|
||||||
const comment = new CommentReference(ref);
|
const comment = new CommentReference(ref);
|
||||||
|
|
|
@ -22,6 +22,8 @@ export type PullRequestNodePayload = {|
|
||||||
+title: string,
|
+title: string,
|
||||||
+number: number,
|
+number: number,
|
||||||
+body: string,
|
+body: string,
|
||||||
|
+additions: number,
|
||||||
|
+deletions: number,
|
||||||
|};
|
|};
|
||||||
|
|
||||||
export type PullRequestReviewState =
|
export type PullRequestReviewState =
|
||||||
|
|
Loading…
Reference in New Issue