Skip to content

Creating a PR now always prioritizes an existing fork as a push target - #680

Merged
mislav merged 5 commits into
masterfrom
pr-create-push-default
Mar 30, 2020
Merged

mislav merged 5 commits into
masterfrom
pr-create-push-default

Conversation

@mislav

@mislav mislav commented Mar 19, 2020 •

Copy link
Copy Markdown
Contributor

Before: the default push target for the current branch in pr create was 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

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.
@mislav
mislav requested a review from vilmibm March 19, 2020 15:54

@vilmibm vilmibm left a comment

Copy link
Copy Markdown
Contributor

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!

Comment thread 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, "")

Copy link
Copy Markdown
Contributor

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?

Copy link
Copy Markdown
Contributor Author

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

Comment thread api/queries_repo.go
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.
mislav added 3 commits March 25, 2020 08:16
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.
@mislav
mislav merged commit 1fb0eef into master Mar 30, 2020
@mislav
mislav deleted the pr-create-push-default branch March 30, 2020 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

gh pr create should allow defaulting to the private fork

3 participants