Skip to content

Commit e596f87

Browse files
committed
Fix creating a repository from template
Fixes a problem where setting up a new local directory for the repository created from a template would not contain any files: gh repo create -p OWNER/some-template my-repo --private --confirm ls my-repo //=> [empty directory] Fixes cli#2290
1 parent a8fdd9a commit e596f87

File tree

1 file changed

+36
-23
lines changed

1 file changed

+36
-23
lines changed

pkg/cmd/repo/create/create.go

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -304,32 +304,11 @@ func createRun(opts *CreateOptions) error {
304304
}
305305
if createLocalDirectory {
306306
path := repo.Name
307-
308-
gitInit, err := git.GitCommand("init", path)
309-
if err != nil {
310-
return err
311-
}
312-
isTTY := opts.IO.IsStdoutTTY()
313-
if isTTY {
314-
gitInit.Stdout = stdout
315-
}
316-
gitInit.Stderr = stderr
317-
err = run.PrepareCmd(gitInit).Run()
318-
if err != nil {
319-
return err
320-
}
321-
gitRemoteAdd, err := git.GitCommand("-C", path, "remote", "add", "origin", remoteURL)
322-
if err != nil {
323-
return err
324-
}
325-
gitRemoteAdd.Stdout = stdout
326-
gitRemoteAdd.Stderr = stderr
327-
err = run.PrepareCmd(gitRemoteAdd).Run()
328-
if err != nil {
307+
if err := localInit(opts.IO, remoteURL, path, opts.Template != ""); err != nil {
329308
return err
330309
}
331310
if isTTY {
332-
fmt.Fprintf(stderr, "%s Initialized repository in './%s/'\n", cs.SuccessIcon(), path)
311+
fmt.Fprintf(stderr, "%s Initialized repository in \"%s\"\n", cs.SuccessIcon(), path)
333312
}
334313
}
335314
}
@@ -340,6 +319,40 @@ func createRun(opts *CreateOptions) error {
340319
return nil
341320
}
342321

322+
func localInit(io *iostreams.IOStreams, remoteURL, path string, isTemplate bool) error {
323+
if isTemplate {
324+
cloneCmd, err := git.GitCommand("clone", remoteURL, path)
325+
if err != nil {
326+
return err
327+
}
328+
cloneCmd.Stdout = io.Out
329+
cloneCmd.Stderr = io.ErrOut
330+
return run.PrepareCmd(cloneCmd).Run()
331+
}
332+
333+
gitInit, err := git.GitCommand("init", path)
334+
if err != nil {
335+
return err
336+
}
337+
isTTY := io.IsStdoutTTY()
338+
if isTTY {
339+
gitInit.Stdout = io.Out
340+
}
341+
gitInit.Stderr = io.ErrOut
342+
err = run.PrepareCmd(gitInit).Run()
343+
if err != nil {
344+
return err
345+
}
346+
347+
gitRemoteAdd, err := git.GitCommand("-C", path, "remote", "add", "origin", remoteURL)
348+
if err != nil {
349+
return err
350+
}
351+
gitRemoteAdd.Stdout = io.Out
352+
gitRemoteAdd.Stderr = io.ErrOut
353+
return run.PrepareCmd(gitRemoteAdd).Run()
354+
}
355+
343356
func interactiveRepoCreate(isDescEmpty bool, isVisibilityPassed bool, repoName string) (string, string, string, error) {
344357
qs := []*survey.Question{}
345358

0 commit comments

Comments
 (0)