-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
make gh pr create
behavior like gh repo fork
#7330
Conversation
91ce968
to
900ddc2
Compare
8e0376f
to
ccd6063
Compare
b330857
to
8492454
Compare
0fb7f5d
to
24535a8
Compare
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
baseRepo
remote is namedorigin
usingctx.RepoContext.RemoteForRepo(baseRepo)
- If it is, then rename it to
upstream
and add the new fork as theorigin
remote - If it is not named
origin
then leave it alone, and add the new fork as theorigin
remote - If there is already an
origin
remote that is not thebaseRepo
then add the new fork as thefork
remote 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
origin
remote exists. - If the
origin
remote not exists, then add the new fork asorigin
remote. Then everything is done. - If the
origin
exists, check if it is thebaseRepo
.(where I useghrepo.IsSame
to checkebaseRepo
and the origin Repo) - If
origin
is thebaseRepo
, rename it toupstream
. - If
origin
is not thebaseRepo
, follow the previous behavior: name thefork
remote 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
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!
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](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 [cli/cli#7560 - Add remove/reset to auth refresh by [@​n1lesh](https://togithub.com/n1lesh) in [cli/cli#7597 - Small tweaks to auth refresh remove-scopes and reset-scopes flags by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7631 - make `gh pr create` behavior like `gh repo fork` by [@​leavesster](https://togithub.com/leavesster) in [cli/cli#7330 - chore: add title to iteration and milestone fields by [@​kamaz](https://togithub.com/kamaz) in [cli/cli#7621 - AutoFetch new branch created with gh issue develop by [@​shion1305](https://togithub.com/shion1305) in [cli/cli#7589 - feat: add statuscheck description to pr checks output by [@​jgrumboe](https://togithub.com/jgrumboe) in [cli/cli#7451 - Always show created gist privacy status. by [@​seanbright](https://togithub.com/seanbright) in [cli/cli#7645 - \[Codespaces] Support random `--server-port=0` and printing connection details by [@​josebalius](https://togithub.com/josebalius) in [cli/cli#7655 - gh release edit: support --verify-tag like gh release create by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [cli/cli#7646 - Feature: Add `fill-first` flag to `pr create` command by [@​kousikmitra](https://togithub.com/kousikmitra) in [cli/cli#7398 - Return error on no-browser option if repo don't exists by [@​kousikmitra](https://togithub.com/kousikmitra) in [cli/cli#7314 #### Bugfixes - Early exit repo sync if merge-upstream requires workflow scope by [@​williammartin](https://togithub.com/williammartin) in [cli/cli#7612 - Don't deduplicate checks that stem from different events by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7618 - gh run cancel needs input validation by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [cli/cli#7647 - Ensure gist edit request body matches desired schema by [@​williammartin](https://togithub.com/williammartin) in [cli/cli#7635 - fix(api): do not interpret "branch" placeholder when `GH_REPO` is set by [@​alex-petrov-vt](https://togithub.com/alex-petrov-vt) in [cli/cli#7626 - fix pr create crash on interactive milestone selection by [@​vilmibm](https://togithub.com/vilmibm) in [cli/cli#7666 - Fix issue develop command by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7656 #### Docs & Dev - docs: example of setting multiple vars using stdin by [@​iloveitaly](https://togithub.com/iloveitaly) in [cli/cli#7683 - Remove old code paths and improve code comments for `repo sync` by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7610 - Add tenancy support by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7636 - Update httpretty to released version by [@​josebalius](https://togithub.com/josebalius) in [cli/cli#7654 - build(deps): bump github.com/henvic/httpretty from 0.1.1 to 0.1.2 by [@​dependabot](https://togithub.com/dependabot) in [cli/cli#7657 - build(deps): bump google.golang.org/grpc from 1.49.0 to 1.53.0 by [@​dependabot](https://togithub.com/dependabot) in [cli/cli#7665 - Use SmartBaseRepoFunc for api command by [@​whi-tw](https://togithub.com/whi-tw) in [cli/cli#7594 - Clean up style nits and simplify some logic by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7687 - add gh cache to Actions explainer by [@​vilmibm](https://togithub.com/vilmibm) in [cli/cli#7689 #### New Contributors - [@​leavesster](https://togithub.com/leavesster) made their first contribution in [cli/cli#7330 - [@​kamaz](https://togithub.com/kamaz) made their first contribution in [cli/cli#7621 - [@​shion1305](https://togithub.com/shion1305) made their first contribution in [cli/cli#7589 - [@​jgrumboe](https://togithub.com/jgrumboe) made their first contribution in [cli/cli#7451 - [@​whi-tw](https://togithub.com/whi-tw) made their first contribution in [cli/cli#7594 - [@​seanbright](https://togithub.com/seanbright) made their first contribution in [cli/cli#7645 - [@​iloveitaly](https://togithub.com/iloveitaly) made their first contribution in [cli/cli#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 contains the following updates: | Package | Update | Change | |---|---|---| | [github-cli](https://togithub.com/cli/cli) | minor | `2.31.0` -> `2.32.0` | --- ### Release Notes <details> <summary>cli/cli (github-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 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 is `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 [cli/cli#7560 - Add remove/reset to auth refresh by [@​n1lesh](https://togithub.com/n1lesh) in [cli/cli#7597 - Small tweaks to auth refresh remove-scopes and reset-scopes flags by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7631 - make `gh pr create` behavior like `gh repo fork` by [@​leavesster](https://togithub.com/leavesster) in [cli/cli#7330 - chore: add title to iteration and milestone fields by [@​kamaz](https://togithub.com/kamaz) in [cli/cli#7621 - AutoFetch new branch created with gh issue develop by [@​shion1305](https://togithub.com/shion1305) in [cli/cli#7589 - feat: add statuscheck description to pr checks output by [@​jgrumboe](https://togithub.com/jgrumboe) in [cli/cli#7451 - Always show created gist privacy status. by [@​seanbright](https://togithub.com/seanbright) in [cli/cli#7645 - \[Codespaces] Support random `--server-port=0` and printing connection details by [@​josebalius](https://togithub.com/josebalius) in [cli/cli#7655 - gh release edit: support --verify-tag like gh release create by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [cli/cli#7646 - Feature: Add `fill-first` flag to `pr create` command by [@​kousikmitra](https://togithub.com/kousikmitra) in [cli/cli#7398 - Return error on no-browser option if repo don't exists by [@​kousikmitra](https://togithub.com/kousikmitra) in [cli/cli#7314 ##### Bugfixes - Early exit repo sync if merge-upstream requires workflow scope by [@​williammartin](https://togithub.com/williammartin) in [cli/cli#7612 - Don't deduplicate checks that stem from different events by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7618 - gh run cancel needs input validation by [@​rajhawaldar](https://togithub.com/rajhawaldar) in [cli/cli#7647 - Ensure gist edit request body matches desired schema by [@​williammartin](https://togithub.com/williammartin) in [cli/cli#7635 - fix(api): do not interpret "branch" placeholder when `GH_REPO` is set by [@​alex-petrov-vt](https://togithub.com/alex-petrov-vt) in [cli/cli#7626 - fix pr create crash on interactive milestone selection by [@​vilmibm](https://togithub.com/vilmibm) in [cli/cli#7666 - Fix issue develop command by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7656 ##### Docs & Dev - docs: example of setting multiple vars using stdin by [@​iloveitaly](https://togithub.com/iloveitaly) in [cli/cli#7683 - Remove old code paths and improve code comments for `repo sync` by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7610 - Update httpretty to released version by [@​josebalius](https://togithub.com/josebalius) in [cli/cli#7654 - build(deps): bump github.com/henvic/httpretty from 0.1.1 to 0.1.2 by [@​dependabot](https://togithub.com/dependabot) in [cli/cli#7657 - build(deps): bump google.golang.org/grpc from 1.49.0 to 1.53.0 by [@​dependabot](https://togithub.com/dependabot) in [cli/cli#7665 - Use SmartBaseRepoFunc for api command by [@​whi-tw](https://togithub.com/whi-tw) in [cli/cli#7594 - Clean up style nits and simplify some logic by [@​samcoe](https://togithub.com/samcoe) in [cli/cli#7687 - add gh cache to Actions explainer by [@​vilmibm](https://togithub.com/vilmibm) in [cli/cli#7689 ##### New Contributors - [@​leavesster](https://togithub.com/leavesster) made their first contribution in [cli/cli#7330 - [@​kamaz](https://togithub.com/kamaz) made their first contribution in [cli/cli#7621 - [@​shion1305](https://togithub.com/shion1305) made their first contribution in [cli/cli#7589 - [@​jgrumboe](https://togithub.com/jgrumboe) made their first contribution in [cli/cli#7451 - [@​whi-tw](https://togithub.com/whi-tw) made their first contribution in [cli/cli#7594 - [@​seanbright](https://togithub.com/seanbright) made their first contribution in [cli/cli#7645 - [@​iloveitaly](https://togithub.com/iloveitaly) made their first contribution in [cli/cli#7683 **Full Changelog**: cli/cli@v2.31.0...v2.32.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi43LjAiLCJ1cGRhdGVkSW5WZXIiOiIzNi43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=--> Co-authored-by: bjw-s-bot <87358111+bjw-s-bot[bot]@users.noreply.github.com>
this pr make
gh pr create
createorigin
remote not fork remote, and will rename oldorigin
remote toupstream
, so thegh pr create
will have some behavior asgh repo fork
.The implementation in the code and the
gh repo fork
command 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