Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@mislav
Copy link
Contributor

@mislav mislav commented Mar 19, 2020

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
Copy link
Contributor

@vilmibm vilmibm left a 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!

// 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
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
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

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