Merge pull request #2825 from cli/rename-fork

restore fork rename behavior for nontty case
This commit is contained in:
Nate Smith 2021-01-25 11:29:52 -08:00 committed by GitHub
commit 6152d8a419
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 5 deletions

View file

@ -12,6 +12,7 @@ import (
"github.com/cli/cli/git"
"github.com/cli/cli/internal/config"
"github.com/cli/cli/internal/ghrepo"
"github.com/cli/cli/internal/run"
"github.com/cli/cli/pkg/cmdutil"
"github.com/cli/cli/pkg/iostreams"
"github.com/cli/cli/pkg/prompt"
@ -234,8 +235,23 @@ func forkRun(opts *ForkOptions) error {
if err != nil {
return err
}
if _, err := remotes.FindByName(remoteName); err == nil {
return fmt.Errorf("a remote called '%s' already exists. You can rerun this command with --remote-name to specify a different remote name.", remoteName)
if connectedToTerminal {
return fmt.Errorf("a remote called '%s' already exists. You can rerun this command with --remote-name to specify a different remote name.", remoteName)
} else {
// TODO next major version we should break this behavior and force users to opt into
// remote renaming in a scripting context via --remote-name
renameTarget := "upstream"
renameCmd, err := git.GitCommand("remote", "rename", remoteName, renameTarget)
if err != nil {
return err
}
err = run.PrepareCmd(renameCmd).Run()
if err != nil {
return err
}
}
}
forkedRepoCloneURL := ghrepo.FormatRemoteURL(forkedRepo, protocol)

View file

@ -104,7 +104,7 @@ func TestRepoFork_existing_remote_error(t *testing.T) {
defer reg.StubWithFixturePath(200, "./forkResult.json")()
httpClient := &http.Client{Transport: reg}
_, err := runCommand(httpClient, nil, false, "--remote")
_, err := runCommand(httpClient, nil, true, "--remote")
if err == nil {
t.Fatal("expected error running command `repo fork`")
}
@ -114,7 +114,7 @@ func TestRepoFork_existing_remote_error(t *testing.T) {
reg.Verify(t)
}
func TestRepoFork_no_existing_remote(t *testing.T) {
func TestRepoFork_no_conflicting_remote(t *testing.T) {
remotes := []*context.Remote{
{
Remote: &git.Remote{
@ -153,9 +153,10 @@ func TestRepoFork_in_parent_nontty(t *testing.T) {
cs, restore := run.Stub()
defer restore(t)
cs.Register(`git remote add -f fork https://github\.com/someone/REPO\.git`, 0, "")
cs.Register("git remote rename origin upstream", 0, "")
cs.Register(`git remote add -f origin https://github\.com/someone/REPO\.git`, 0, "")
output, err := runCommand(httpClient, nil, false, "--remote --remote-name=fork")
output, err := runCommand(httpClient, nil, false, "--remote")
if err != nil {
t.Fatalf("error running command `repo fork`: %v", err)
}