Merge pull request #10458 from daviddl9/update-pr-create
update default upstream when forking repo during PR creation
This commit is contained in:
commit
c69e88ef6b
2 changed files with 20 additions and 5 deletions
|
|
@ -935,6 +935,7 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {
|
|||
headRepo := ctx.HeadRepo
|
||||
headRemote := ctx.HeadRemote
|
||||
client := ctx.Client
|
||||
gitClient := ctx.GitClient
|
||||
|
||||
var err error
|
||||
// if a head repository could not be determined so far, automatically create
|
||||
|
|
@ -976,7 +977,8 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {
|
|||
headRepoURL := ghrepo.FormatRemoteURL(headRepo, cloneProtocol)
|
||||
gitClient := ctx.GitClient
|
||||
origin, _ := remotes.FindByName("origin")
|
||||
upstream, _ := remotes.FindByName("upstream")
|
||||
upstreamName := "upstream"
|
||||
upstream, _ := remotes.FindByName(upstreamName)
|
||||
remoteName := "origin"
|
||||
|
||||
if origin != nil {
|
||||
|
|
@ -984,7 +986,7 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {
|
|||
}
|
||||
|
||||
if origin != nil && upstream == nil && ghrepo.IsSame(origin, ctx.BaseRepo) {
|
||||
renameCmd, err := gitClient.Command(context.Background(), "remote", "rename", "origin", "upstream")
|
||||
renameCmd, err := gitClient.Command(context.Background(), "remote", "rename", "origin", upstreamName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -992,7 +994,7 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {
|
|||
return fmt.Errorf("error renaming origin remote: %w", err)
|
||||
}
|
||||
remoteName = "origin"
|
||||
fmt.Fprintf(opts.IO.ErrOut, "Changed %s remote to %q\n", ghrepo.FullName(ctx.BaseRepo), "upstream")
|
||||
fmt.Fprintf(opts.IO.ErrOut, "Changed %s remote to %q\n", ghrepo.FullName(ctx.BaseRepo), upstreamName)
|
||||
}
|
||||
|
||||
gitRemote, err := gitClient.AddRemote(context.Background(), remoteName, headRepoURL, []string{})
|
||||
|
|
@ -1002,6 +1004,19 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {
|
|||
|
||||
fmt.Fprintf(opts.IO.ErrOut, "Added %s as remote %q\n", ghrepo.FullName(headRepo), remoteName)
|
||||
|
||||
// Only mark `upstream` remote as default if `gh pr create` created the remote.
|
||||
if didForkRepo {
|
||||
err := gitClient.SetRemoteResolution(context.Background(), upstreamName, "base")
|
||||
if err != nil {
|
||||
return fmt.Errorf("error setting upstream as default: %w", err)
|
||||
}
|
||||
|
||||
if opts.IO.IsStdoutTTY() {
|
||||
cs := opts.IO.ColorScheme()
|
||||
fmt.Fprintf(opts.IO.ErrOut, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(headRepo)))
|
||||
}
|
||||
}
|
||||
|
||||
headRemote = &ghContext.Remote{
|
||||
Remote: gitRemote,
|
||||
Repo: headRepo,
|
||||
|
|
@ -1013,7 +1028,6 @@ func handlePush(opts CreateOptions, ctx CreateContext) error {
|
|||
pushBranch := func() error {
|
||||
w := NewRegexpWriter(opts.IO.ErrOut, gitPushRegexp, "")
|
||||
defer w.Flush()
|
||||
gitClient := ctx.GitClient
|
||||
ref := fmt.Sprintf("HEAD:refs/heads/%s", ctx.HeadBranch)
|
||||
bo := backoff.NewConstantBackOff(2 * time.Second)
|
||||
ctx := context.Background()
|
||||
|
|
|
|||
|
|
@ -798,6 +798,7 @@ func Test_createRun(t *testing.T) {
|
|||
cs.Register("git remote rename origin upstream", 0, "")
|
||||
cs.Register(`git remote add origin https://github.com/monalisa/REPO.git`, 0, "")
|
||||
cs.Register(`git push --set-upstream origin HEAD:refs/heads/feature`, 0, "")
|
||||
cs.Register(`git config --add remote.upstream.gh-resolved base`, 0, "")
|
||||
},
|
||||
promptStubs: func(pm *prompter.PrompterMock) {
|
||||
pm.SelectFunc = func(p, _ string, opts []string) (int, error) {
|
||||
|
|
@ -809,7 +810,7 @@ func Test_createRun(t *testing.T) {
|
|||
}
|
||||
},
|
||||
expectedOut: "https://github.com/OWNER/REPO/pull/12\n",
|
||||
expectedErrOut: "\nCreating pull request for monalisa:feature into master in OWNER/REPO\n\nChanged OWNER/REPO remote to \"upstream\"\nAdded monalisa/REPO as remote \"origin\"\n",
|
||||
expectedErrOut: "\nCreating pull request for monalisa:feature into master in OWNER/REPO\n\nChanged OWNER/REPO remote to \"upstream\"\nAdded monalisa/REPO as remote \"origin\"\n! Repository monalisa/REPO set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n",
|
||||
},
|
||||
{
|
||||
name: "pushed to non base repo",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue