-
Notifications
You must be signed in to change notification settings - Fork 7.8k
Description
Describe the bug
Under some circumstances (not sure exactly why, see below), if I choose to skip pushing the current branch, PR creation fails with the following error:
GraphQL error: Head sha can't be blank, Base sha can't be blank, No commits between master and , Head ref must be a branch"
This is on 1.4.0 but also happened on 1.3.1.
Steps to reproduce the behavior
I think this should reproduce the problem. I'm pretty sure the bug is linked to the upstream configuration for the current branch :
- Create a topic branch, and set the Git upstream configuration to the upstream branch where this topic will eventually be integrated (see Detect push target for local branches without upstream configuration #575):
git checkout -b my-topic upstream/master - Add some commits, and push to your fork :
git push origin HEAD - Create the PR with
gh:gh pr create - Choose "Skip pushing the branch" when asked where to push. I already pushed it myself, and I don't want
ghto mess with my upstream configuration (i.e. I want to avoidghdoinggit branch --set-upstream-to=origin/$(git branch --show-current)orgit push -u origin $(git branch --show-current)), a behaviour which can't be disabled at the moment). - Enter title
- Edit body
- Submit
- Experience error:
pull request create failed: GraphQL error: Head sha can't be blank, Base sha can't be blank, No commits between master and my-topic, Head ref must be a branch
Expected vs actual behavior
I expected the PR creation to succeed. The GraphQL error seems to imply that gh is making a incorrect API request because (I assume) it can't correctly compute the required arguments.
Logs
## Git state before attempting PR creation
# upstream branch is upstream/master
$ git rev-parse --symbolic-full-name @{upstream}
refs/remotes/upstream/master
# current branch is one commit ahead of its upstream
$ git log --oneline --decorate @{upstream}..HEAD
494173a586 (HEAD -> fix-linkgit-git1, origin/fix-linkgit-git1) git.txt: fix typos in 'linkgit' macro invocation
# current branch is already pushed to my fork
$ git log --oneline --decorate origin/$(git branch --show-current)..HEAD
# empty
# configured remote for 'gh' is 'ggg', which I do not have push access to:
$ git config --get-regexp 'remote.*.gh-resolved'
remote.ggg.gh-resolved base
# Try creating the PR:
$ gh pr create
? Where should we push the 'fix-linkgit-git1' branch? Skip pushing the branch
Creating pull request for fix-linkgit-git1 into master in gitgitgadget/git
? Title Fix typo in 'linkgit' macro invocation
? Body <Received>
? What's next? Submit
X operation failed. To restore: gh pr create --recover /var/folders/lr/r6n2057j0dzd4gdb614fp0740000gp/T/gh303112606.json
pull request create failed: GraphQL error: Head sha can't be blank, Base sha can't be blank, No commits between master and fix-linkgit-git1, Head ref must be a branchAnother thing I noticed while debugging this: If I choose to open the PR against my own fork (-R phil-blain/git), it works., even if I do not skip pushing the branch.