When ran directly in the terminal, the command now errors out with:
$ gh completion
error: the value for `--shell` is required
see `gh completion --help` for more information
This is to avoid the previously default bash code output confusing the
user if they ran the command out of curiousity.
A backwards compatibility layer is present here: if stdout is not a
terminal, then output bash code like before. This is to support users
who have already added a line like this to their bash profile:
eval "$(gh completion)"
Change from "repo" to "repository". Run "gh repo clone -h` to see the usage text I am referring to.
We use the word "repository" here:
Usage:
gh repo fork [<repository>] [flags]
Usage:
gh repo view [<repository>] [flags]
When an existing `headRepo` couldn't be detected, it's time to auto-fork
one. Unfortunately, an obscure Go behavior made it seem like `headRepo`
was a non-nil value, where in fact it did contain a nil pointer which
would crash the process.
This avoids ever assigning nil pointers to `var headRepo ghrepo.Interface`.
This code was put in place in preparation for a feature that never
shipped. Namely, we wanted to use the commit hash for the base branch so
we can get an accurate `git log` involving the changes in a pull
request. However, getting the commit hash from API is not the way to go
because the latest commit might not be available in the person's local
repository, and using a local tracking branch for base such as
`origin/master` works quite well in most cases without dereferencing it.
A branch is considered already pushed if its HEAD commit hash matches
the commit hash of one of the remote tracking branches:
`refs/remotes/<remote>/<branch>`
This mechanism allows the user to:
- Choose a remote as push target for their branch different than the one
that would automatically get chosen for them by `pr create`;
- Avoid a `git push` operation (and its associated git hooks) if a push
was not necessary in the first place.
This API was just fixed in github.com, but it will take a while for the
change to propagate to GitHub Enterprise installs, so guard ourselves
from false positives when querying forks.