-
Notifications
You must be signed in to change notification settings - Fork 7.8k
make gh pr create behavior like gh repo fork
#7330
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
91ce968 to
900ddc2
Compare
8e0376f to
ccd6063
Compare
b330857 to
8492454
Compare
0fb7f5d to
24535a8
Compare
samcoe
left a comment
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.
@leavesster Appreciate the effort getting this work started. I left some inline code feedback on changes I would like to see. Please let me know if you have any questions regarding them.
pkg/cmd/pr/create/create.go
Outdated
| remoteName := "origin" | ||
| remotes, err := opts.Remotes() | ||
| if err != nil { | ||
| return err | ||
| } | ||
|
|
||
| if _, err := remotes.FindByName(remoteName); err == nil { | ||
| renameTarget := "upstream" | ||
| renameCmd, err := gitClient.Command(context.Background(), "remote", "rename", remoteName, renameTarget) | ||
| if err != nil { | ||
| return err | ||
| } | ||
| _, err = renameCmd.Output() | ||
| if err != nil { | ||
| return err | ||
| } | ||
| } | ||
|
|
||
| gitRemote, err := gitClient.AddRemote(context.Background(), remoteName, headRepoURL, []string{}) |
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.
I do not think this logic is defensive enough against the variety of remote setups a user can have. I think we only want to rename the origin remote if it corresponds to the baseRepo for the PR being opened.
How I am envisioning this working:
- Check to see if the
baseReporemote is namedoriginusingctx.RepoContext.RemoteForRepo(baseRepo) - If it is, then rename it to
upstreamand add the new fork as theoriginremote - If it is not named
originthen leave it alone, and add the new fork as theoriginremote - If there is already an
originremote that is not thebaseRepothen add the new fork as theforkremote as we previously we doing
How does that sound to you?
Lastly, since this logic is getting a bit complex I would like to see us output some messaging to the user telling them exactly what we are doing to their remotes so they are not surprised by the changes we are making to their local repo.
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.
I think it's fine, but considering the simplicity of the code implementation, I have made some modifications to the logic which still have the same result:
- First, check if the
originremote exists. - If the
originremote not exists, then add the new fork asoriginremote. Then everything is done. - If the
originexists, check if it is thebaseRepo.(where I useghrepo.IsSameto checkebaseRepoand the origin Repo) - If
originis thebaseRepo, rename it toupstream. - If
originis not thebaseRepo, follow the previous behavior: name theforkremote asfork.
It is possible that the above logic does not account for a situation where the baseRepo repository is the origin and there is also an upstream remote.
My reference implementation is based on the git repo fork command because it also does not handle this logic. Therefore, I have not implemented it for now. If you think it is necessary, we can consider this scenario.
And I add two output message, one is rename origin to upstream when the exist baseRepo is 'origin', the other output is the forked repo's remote name.
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.
@samcoe code has been updated.
40c4ba9 to
a8acb11
Compare
samcoe
left a comment
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.
@leavesster Thanks for the contribution and making the requested changes. I pushed a couple small commits to tweak the code to make it slightly less nested as well as making the output a bit more user friendly. This looks good to ship!
[](https://renovatebot.com) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry) | minor | `v4.25.0` -> `v4.26.0` | | [cli/cli](https://togithub.com/cli/cli) | minor | `v2.31.0` -> `v2.32.0` | | [fluxcd/flux2](https://togithub.com/fluxcd/flux2) | patch | `v2.0.0` -> `v2.0.1` | --- ### Release Notes <details> <summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary> ### [`v4.26.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.26.0) [Compare Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.25.0...v4.26.0) [Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.26.0) | [Pull Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.26.0) | aquaproj/aqua-registry@v4.25.0...v4.26.0 #### 🎉 New Packages [#​13656](https://togithub.com/aquaproj/aqua-registry/issues/13656) [cilium/cilium-cli](https://togithub.com/cilium/cilium-cli): CLI to install, manage & troubleshoot Kubernetes clusters running Cilium [@​honahuku](https://togithub.com/honahuku) [#​13657](https://togithub.com/aquaproj/aqua-registry/issues/13657) [ponkio-o/ec2x](https://togithub.com/ponkio-o/ec2x): A cli tool of connect to ec2 instance [@​ponkio-o](https://togithub.com/ponkio-o) #### 🎉 New Contributor [@​honahuku](https://togithub.com/honahuku) [#​13656](https://togithub.com/aquaproj/aqua-registry/issues/13656) </details> <details> <summary>cli/cli (cli/cli)</summary> ### [`v2.32.0`](https://togithub.com/cli/cli/releases/tag/v2.32.0): GitHub CLI 2.32.0 [Compare Source](https://togithub.com/cli/cli/compare/v2.31.0...v2.32.0) hello terminal fans, it's me [@​vilmibm](https://togithub.com/vilmibm) . We are pleased to bring you a new release of the GitHub CLI on this Confusion 46, 3189 YOLD. We've got features. we've got bugfixes. This release has a real zest for life; can you feel it? First though, a sad note. [@​mislav](https://togithub.com/mislav) has moved on from GitHub. He was instrumental to this project and without him I don't think it would have ever happened. BIG THANKS MUCH LOVE to this wonderful person! Happily, we have a new core team member though who is, truly, a delight. Please welcome [@​williammartin](https://togithub.com/williammartin) , whom you'll see a lot more on issues and pull requests moving forward. Now, let's talk ***BUSINESS***. #### gh ruleset [Repository Rulesets](https://github.blog/changelog/2023-04-17-introducing-repository-rules-public-beta/) are in beta on git hub dot com and they are now also in beta on git hub sea ell eye. You can list, view, and check branches against rulesets set at the repository or organization level. Major shoutouts to [@​vaindil](https://togithub.com/vaindil) for this [big contribution](https://togithub.com/cli/cli/pull/7650). My favorite command in here in `gh rs check <branch>` which will tell you what rules would apply to a hypothetical branch name. To learn more, run `gh help ruleset`. #### gh cache `gh cache` is a new top level command in our suite of support for Actions. It lets you list and delete caches saved in Actions. It's [neat](https://togithub.com/cli/cli/pull/7403) and I like it. Thanks, [@​joshkraft](https://togithub.com/joshkraft) ! To learn more, run `gh help cache`. #### Other new stuff - Add option to remove file from gist by [@​kousikmitra](https://togithub.com/kousikmitra) in [https://github.com/cli/cli/pull/7560](https://togithub.com/cli/cli/pull/7560) - Add remove/reset to auth refresh by [@​n1lesh](https://togithub.com/n1lesh) in [https://github.com/cli/cli/pull/7597](https://togithub.com/cli/cli/pull/7597) - Small tweaks to auth refresh remove-scopes and reset-scopes flags by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7631](https://togithub.com/cli/cli/pull/7631) - make `gh pr create` behavior like `gh repo fork` by [@​leavesster](https://togithub.com/leavesster) in [https://github.com/cli/cli/pull/7330](https://togithub.com/cli/cli/pull/7330) - chore: add title to iteration and milestone fields by [@​kamaz](https://togithub.com/kamaz) in [https://github.com/cli/cli/pull/7621](https://togithub.com/cli/cli/pull/7621) - AutoFetch new branch created with gh issue develop by [@​shion1305](https://togithub.com/shion1305) in [https://github.com/cli/cli/pull/7589](https://togithub.com/cli/cli/pull/7589) - feat: add statuscheck description to pr checks output by [@​jgrumboe](https://togithub.com/jgrumboe) in [https://github.com/cli/cli/pull/7451](https://togithub.com/cli/cli/pull/7451) - Always show created gist privacy status. by [@​seanbright](https://togithub.com/seanbright) in [https://github.com/cli/cli/pull/7645](https://togithub.com/cli/cli/pull/7645) - \[Codespaces] Support random `--server-port=0` and printing connection details by [@​josebalius](https://togithub.com/josebalius) in [https://github.com/cli/cli/pull/7655](https://togithub.com/cli/cli/pull/7655) - gh release edit: support --verify-tag like gh release create by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [https://github.com/cli/cli/pull/7646](https://togithub.com/cli/cli/pull/7646) - Feature: Add `fill-first` flag to `pr create` command by [@​kousikmitra](https://togithub.com/kousikmitra) in [https://github.com/cli/cli/pull/7398](https://togithub.com/cli/cli/pull/7398) - Return error on no-browser option if repo don't exists by [@​kousikmitra](https://togithub.com/kousikmitra) in [https://github.com/cli/cli/pull/7314](https://togithub.com/cli/cli/pull/7314) #### Bugfixes - Early exit repo sync if merge-upstream requires workflow scope by [@​williammartin](https://togithub.com/williammartin) in [https://github.com/cli/cli/pull/7612](https://togithub.com/cli/cli/pull/7612) - Don't deduplicate checks that stem from different events by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7618](https://togithub.com/cli/cli/pull/7618) - gh run cancel needs input validation by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [https://github.com/cli/cli/pull/7647](https://togithub.com/cli/cli/pull/7647) - Ensure gist edit request body matches desired schema by [@​williammartin](https://togithub.com/williammartin) in [https://github.com/cli/cli/pull/7635](https://togithub.com/cli/cli/pull/7635) - fix(api): do not interpret "branch" placeholder when `GH_REPO` is set by [@​alex-petrov-vt](https://togithub.com/alex-petrov-vt) in [https://github.com/cli/cli/pull/7626](https://togithub.com/cli/cli/pull/7626) - fix pr create crash on interactive milestone selection by [@​vilmibm](https://togithub.com/vilmibm) in [https://github.com/cli/cli/pull/7666](https://togithub.com/cli/cli/pull/7666) - Fix issue develop command by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7656](https://togithub.com/cli/cli/pull/7656) #### Docs & Dev - docs: example of setting multiple vars using stdin by [@​iloveitaly](https://togithub.com/iloveitaly) in [https://github.com/cli/cli/pull/7683](https://togithub.com/cli/cli/pull/7683) - Remove old code paths and improve code comments for `repo sync` by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7610](https://togithub.com/cli/cli/pull/7610) - Add tenancy support by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7636](https://togithub.com/cli/cli/pull/7636) - Update httpretty to released version by [@​josebalius](https://togithub.com/josebalius) in [https://github.com/cli/cli/pull/7654](https://togithub.com/cli/cli/pull/7654) - build(deps): bump github.com/henvic/httpretty from 0.1.1 to 0.1.2 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/cli/cli/pull/7657](https://togithub.com/cli/cli/pull/7657) - build(deps): bump google.golang.org/grpc from 1.49.0 to 1.53.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/cli/cli/pull/7665](https://togithub.com/cli/cli/pull/7665) - Use SmartBaseRepoFunc for api command by [@​whi-tw](https://togithub.com/whi-tw) in [https://github.com/cli/cli/pull/7594](https://togithub.com/cli/cli/pull/7594) - Clean up style nits and simplify some logic by [@​samcoe](https://togithub.com/samcoe) in [https://github.com/cli/cli/pull/7687](https://togithub.com/cli/cli/pull/7687) - add gh cache to Actions explainer by [@​vilmibm](https://togithub.com/vilmibm) in [https://github.com/cli/cli/pull/7689](https://togithub.com/cli/cli/pull/7689) #### New Contributors - [@​leavesster](https://togithub.com/leavesster) made their first contribution in [https://github.com/cli/cli/pull/7330](https://togithub.com/cli/cli/pull/7330) - [@​kamaz](https://togithub.com/kamaz) made their first contribution in [https://github.com/cli/cli/pull/7621](https://togithub.com/cli/cli/pull/7621) - [@​shion1305](https://togithub.com/shion1305) made their first contribution in [https://github.com/cli/cli/pull/7589](https://togithub.com/cli/cli/pull/7589) - [@​jgrumboe](https://togithub.com/jgrumboe) made their first contribution in [https://github.com/cli/cli/pull/7451](https://togithub.com/cli/cli/pull/7451) - [@​whi-tw](https://togithub.com/whi-tw) made their first contribution in [https://github.com/cli/cli/pull/7594](https://togithub.com/cli/cli/pull/7594) - [@​seanbright](https://togithub.com/seanbright) made their first contribution in [https://github.com/cli/cli/pull/7645](https://togithub.com/cli/cli/pull/7645) - [@​iloveitaly](https://togithub.com/iloveitaly) made their first contribution in [https://github.com/cli/cli/pull/7683](https://togithub.com/cli/cli/pull/7683) **Full Changelog**: cli/cli@v2.31.0...v2.32.0 </details> <details> <summary>fluxcd/flux2 (fluxcd/flux2)</summary> ### [`v2.0.1`](https://togithub.com/fluxcd/flux2/releases/tag/v2.0.1) [Compare Source](https://togithub.com/fluxcd/flux2/compare/v2.0.0...v2.0.1) #### Highlights Flux `v2.0.1` is a patch release which comes with various fixes. Users are encouraged to upgrade for the best experience. :bulb: For upgrading from Flux `v0.x`, please see [the procedure documented in 2.0.0](https://togithub.com/fluxcd/flux2/releases/tag/v2.0.0). ##### Fixes - Fix AWS auth for cross-region ECR repositories (`source-controller`, `image-reflector-controller`). - Prevent spurious alerts for skipped resources (`kustomize-controller`). - List removed resources for `flux diff ks --kustomization-file` (`flux` CLI). - Fix SLSA provenance generation for the Flux CLI binaries. #### Components changelog - source-controller [v1.0.1](https://togithub.com/fluxcd/source-controller/blob/v1.0.1/CHANGELOG.md) - kustomize-controller [v1.0.1](https://togithub.com/fluxcd/kustomize-controller/blob/v1.0.1/CHANGELOG.md) - image-reflector-controller [v0.29.1](https://togithub.com/fluxcd/image-reflector-controller/blob/v0.29.1/CHANGELOG.md) #### CLI Changelog - PR [#​4068](https://togithub.com/fluxcd/flux2/issues/4068) - [@​stefanprodan](https://togithub.com/stefanprodan) - Update dependencies - PR [#​4065](https://togithub.com/fluxcd/flux2/issues/4065) - [@​hiddeco](https://togithub.com/hiddeco) - action: support `openssl` and `sha256sum` - PR [#​4062](https://togithub.com/fluxcd/flux2/issues/4062) - [@​souleb](https://togithub.com/souleb) - diff: Take into account the server-side inventory for local Flux Kustomizations - PR [#​4061](https://togithub.com/fluxcd/flux2/issues/4061) - [@​hiddeco](https://togithub.com/hiddeco) - action: re-allow configuration of non-default token - PR [#​4057](https://togithub.com/fluxcd/flux2/issues/4057) - [@​fluxcdbot](https://togithub.com/fluxcdbot) - Update toolkit components - PR [#​4052](https://togithub.com/fluxcd/flux2/issues/4052) - [@​stefanprodan](https://togithub.com/stefanprodan) - docs: Link to the Flux GitHub Action documentation - PR [#​4051](https://togithub.com/fluxcd/flux2/issues/4051) - [@​hiddeco](https://togithub.com/hiddeco) - action: use `$RUNNER_TOOL_CACHE`, support MacOS and Windows, validate checksum - PR [#​4046](https://togithub.com/fluxcd/flux2/issues/4046) - [@​stefanprodan](https://togithub.com/stefanprodan) - ci: backport: set write permissions - PR [#​4043](https://togithub.com/fluxcd/flux2/issues/4043) - [@​stefanprodan](https://togithub.com/stefanprodan) - ci: release: extract the image tag from GITHUB_REF - PR [#​4041](https://togithub.com/fluxcd/flux2/issues/4041) - [@​hiddeco](https://togithub.com/hiddeco) - ci: release: disable interpretation backslash esc #### New Documentation - [Flux GitHub Action](https://fluxcd.io/flux/flux-gh-action/) - [SLSA provenance verification](https://fluxcd.io/flux/security/slsa-assessment/#provenance-verification) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/scottames/dots). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi41LjMiLCJ1cGRhdGVkSW5WZXIiOiIzNi41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
this pr make
gh pr createcreateoriginremote not fork remote, and will rename oldoriginremote toupstream, so thegh pr createwill have some behavior asgh repo fork.The implementation in the code and the
gh repo forkcommand are almost identical. I have read both sides of the code and find them good enough.I think the best approach to unify these two command would be to use the code from the fork command, as it ensures consistent behavior. However, I am not sure if calling another command is a good practice. Alternatively, we could consider extracting a common function. But I am not very familiar with the overall architecture, so I am unsure where the common code should be placed.
Fixes #4627 and #7320