New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Show pull requests to source repo on fork's branch list #2914
Comments
This makes sense and indeed the existing Compare buttons do point to a page that links to the open PR already: It's just that for whatever reason GitHub doesn't show this information directly on the list. Does this information appear in the GraphQL API? If so, it could also be useful to find PRs opened from the current repo for #2934 |
Here: query {
repository(owner: "jack1142", name: "Red-DiscordBot") {
refs(refPrefix: "refs/heads/", first: 100) {
nodes {
name
associatedPullRequests(first: 100, states: OPEN) {
nodes {
number
url
}
}
}
}
}
} {
"data": {
"repository": {
"refs": {
"nodes": [
{
"name": "V3/alias_non_existent_command",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/allow_any_valid_locale",
"associatedPullRequests": {
"nodes": [
{
"number": 3676,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3676"
}
]
}
},
{
"name": "V3/bring_back_role_mention_sanitizer",
"associatedPullRequests": {
"nodes": [
{
"number": 3625,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3625"
}
]
}
},
{
"name": "V3/changelog_pr_labeler",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/changelog_3.3.3",
"associatedPullRequests": {
"nodes": [
{
"number": 3660,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3660"
}
]
}
},
{
"name": "V3/develop",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/feature/audio",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/issue_2527",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/issue_3200",
"associatedPullRequests": {
"nodes": [
{
"number": 3200,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3200"
}
]
}
},
{
"name": "V3/issue_3605",
"associatedPullRequests": {
"nodes": [
{
"number": 3679,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3679"
}
]
}
},
{
"name": "V3/regional_formatting",
"associatedPullRequests": {
"nodes": [
{
"number": 3677,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3677"
}
]
}
},
{
"name": "V3/restore_command",
"associatedPullRequests": {
"nodes": [
{
"number": 3681,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3681"
}
]
}
},
{
"name": "V3/some_fun_with_async_initialize",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "develop",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "jack1142-patch-1",
"associatedPullRequests": {
"nodes": [
{
"number": 3649,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3649"
}
]
}
},
{
"name": "jack1142-patch-2",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "jack1142-patch-5",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "jack1142-patch-6",
"associatedPullRequests": {
"nodes": [
{
"number": 3672,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3672"
}
]
}
},
{
"name": "patch-3",
"associatedPullRequests": {
"nodes": [
{
"number": 3215,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3215"
}
]
}
},
{
"name": "pr/ghactions",
"associatedPullRequests": {
"nodes": []
}
}
]
}
}
}
} |
Looks like it does include them: query {
repository(owner: "jack1142", name: "Red-DiscordBot") {
refs(refPrefix: "refs/heads/", first: 100) {
nodes {
name
associatedPullRequests(first: 100, states: OPEN) {
nodes {
number
url
}
}
}
}
}
} {
"data": {
"repository": {
"refs": {
"nodes": [
{
"name": "V3/alias_non_existent_command",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/allow_any_valid_locale",
"associatedPullRequests": {
"nodes": [
{
"number": 3676,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3676"
}
]
}
},
{
"name": "V3/bring_back_role_mention_sanitizer",
"associatedPullRequests": {
"nodes": [
{
"number": 3625,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3625"
}
]
}
},
{
"name": "V3/changelog_pr_labeler",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/changelog_3.3.3",
"associatedPullRequests": {
"nodes": [
{
"number": 3660,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3660"
}
]
}
},
{
"name": "V3/develop",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/feature/audio",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/issue_2527",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "V3/issue_3200",
"associatedPullRequests": {
"nodes": [
{
"number": 3200,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3200"
}
]
}
},
{
"name": "V3/issue_3605",
"associatedPullRequests": {
"nodes": [
{
"number": 3679,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3679"
}
]
}
},
{
"name": "V3/regional_formatting",
"associatedPullRequests": {
"nodes": [
{
"number": 3677,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3677"
}
]
}
},
{
"name": "V3/restore_command",
"associatedPullRequests": {
"nodes": [
{
"number": 3681,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3681"
}
]
}
},
{
"name": "V3/some_fun_with_async_initialize",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "develop",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "jack1142-patch-1",
"associatedPullRequests": {
"nodes": [
{
"number": 3649,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3649"
}
]
}
},
{
"name": "jack1142-patch-2",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "jack1142-patch-5",
"associatedPullRequests": {
"nodes": []
}
},
{
"name": "jack1142-patch-6",
"associatedPullRequests": {
"nodes": [
{
"number": 3672,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3672"
}
]
}
},
{
"name": "patch-3",
"associatedPullRequests": {
"nodes": [
{
"number": 3215,
"url": "https://github.com/Cog-Creators/Red-DiscordBot/pull/3215"
}
]
}
},
{
"name": "pr/ghactions",
"associatedPullRequests": {
"nodes": []
}
}
]
}
}
}
} |
Alternatively we can go the opposite way, like for #2934, and only query the source repo. This wouldn't support oneFork-to-manyForks PRs but that's pretty rare, I'd say. The results are shorter and to the point though: {
search(
first: 100,
type: ISSUE,
query: "repo:Cog-Creators/Red-DiscordBot is:pr is:open author:jack1142"
) {
nodes {
... on PullRequest {
number
headRefName
}
}
}
} {
"data": {
"search": {
"nodes": [
{
"number": 3681,
"headRefName": "V3/restore_command"
},
{
"number": 3679,
"headRefName": "V3/issue_3605"
},
{
"number": 3677,
"headRefName": "V3/regional_formatting"
},
{
"number": 3676,
"headRefName": "V3/allow_any_valid_locale"
},
{
"number": 3672,
"headRefName": "jack1142-patch-6"
},
{
"number": 3660,
"headRefName": "V3/changelog_3.3.3"
},
{
"number": 3649,
"headRefName": "jack1142-patch-1"
},
{
"number": 3625,
"headRefName": "V3/bring_back_role_mention_sanitizer"
},
{
"number": 3215,
"headRefName": "patch-3"
},
{
"number": 3200,
"headRefName": "V3/issue_3200"
}
]
}
}
} |
Actually one thing I just noticed with both, I think it would be better to do it like GH does and show all PRs, not just open ones. |
Why all PRs? |
D'oh, I thought we were talking about that feature. Sorry! As long as we only show one PR per branch this should be ok, otherwise the layout breaks. |
This could work: {
repository(owner: "jack1142", name: "Red-DiscordBot") {
refs(refPrefix: "refs/heads/", last: 100) {
nodes {
name
associatedPullRequests(last: 1, states: [CLOSED, OPEN]) {
nodes {
number
url
}
}
}
}
}
} Ideally you'd query each of the visible branches instead but the query I tried didn't include closed PRs (I tried via |
Can you explain what you had in mind with this comment? Also why are you limiting it to only closed and open states? |
My last example just asks GitHub for the last 100 branches and their related PR. Ideally instead you'd ask GitHub just for the PRs that are currently on screen, like {
repository(...) {
branchA: ref('branchA') {
associatedPullRequests(...) {
...
}
}
branchB: ref('branchB') {
associatedPullRequests(...) {
...
}
}
...
}
} But none of the queries I tried included closed/merged PRs; they only returned open PRs. If anyone finds a way to query branches this way AND their related PR (even if closed) it's preferable instead of my last example. |
Mistake. I meant open/closed/merged. |
{
repository(owner: "yakov116", name: "refined-github") {
console_errors: ref(qualifiedName: "console_errors") {
associatedPullRequests(last: 1) {
nodes {
number
state
}
}
}
clone_branch: ref(qualifiedName: "restore-clone-branch") {
associatedPullRequests(last: 1) {
nodes {
number
state
}
}
}
}
} {
"data": {
"repository": {
"console_errors": {
"associatedPullRequests": {
"nodes": [
{
"number": 2956,
"state": "CLOSED"
}
]
}
},
"clone_branch": {
"associatedPullRequests": {
"nodes": [
{
"number": 3000,
"state": "MERGED"
}
]
}
}
}
}
} Unless you had something else in mind. I would much rather do the last 100 PR's since any search will require a new request. Edit: Showing that it works for merged |
In that case, isn't it simpler to just do it like here? |
I learned the hard way; when @fregante says something, follow it. Have questions... ask later. |
That works, but if the alternative option is possible the result is safer and lighter. If it’s not possible, then sure. |
Maybe you’re right |
When some branch on the repo is a head of PR made to that repo, the PR is shown near the branch on branch list:
I think it would be great if branch list on forks also included the PRs that are made to their source repo so that user could figure out easily which branches can be removed.
Example URL:
https://github.com/jack1142/Red-DiscordBot/branches/all
The text was updated successfully, but these errors were encountered: