-
Couldn't load subscription status.
- Fork 7.3k
Creating a PR now always prioritizes an existing fork as a push target #680
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
Conversation
Before: the default push target for the current branch in `pr create` was the first repository found among git remotes that has write access. Now: the default push target is the fork the base repo, if said fork exists and has write access, falling back to old behavior otherwise. This change in the default is to facilitate contributions to projects that have a hard requirement that all pull requests (even those opened by people with write access to that project) come from forks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just some questions but nothing blocking. nice work!
command/pr_create.go
Outdated
| // TODO: figure out what to name the new git remote | ||
| gitRemote, err := git.AddRemote("fork", baseRepoURL, headRepoURL) | ||
| // TODO: prevent clashes with another remote of a same name | ||
| gitRemote, err := git.AddRemote("fork", headRepoURL, "") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as of this pull request, the third argument of AddRemote is unused anywhere. Do we still need to support it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good call! I've simplified the AddRemote implementation
The 2nd argument now unused since we've determined that, in practice, we can safely fetch git objects from a freshly created fork on GitHub and that we don't need the remote URL-swapping workaround.
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.
Before: the default push target for the current branch in
pr createwas the first repository found among git remotes that I have write access to, even if it is the same as the base repository.Now: the default push target is the fork of the base repo, if said fork exists and I have write access to it (even if it's not listed among git remotes), falling back to old behavior otherwise.
This change in the default is to facilitate contributions to projects that have a hard requirement that all pull requests (even those opened by people with write access to the project) always come from forks. If a fork exists, it will automatically get used as a push target.
Fixes #350