Create initial commit before gh repo create --push
gh repo create --push fails on empty repos. Add ensureInitialCommit() to stage and commit before pushing.
This commit is contained in:
committed by
Steve Yegge
parent
f58a516b7b
commit
477c28c9d1
@@ -223,6 +223,12 @@ func createGitHubRepo(hqRoot, repo string, private bool) error {
|
|||||||
}
|
}
|
||||||
fmt.Printf(" → Creating %s GitHub repository %s...\n", visibility, repo)
|
fmt.Printf(" → Creating %s GitHub repository %s...\n", visibility, repo)
|
||||||
|
|
||||||
|
// Ensure there's at least one commit before pushing.
|
||||||
|
// gh repo create --push fails on empty repos with no commits.
|
||||||
|
if err := ensureInitialCommit(hqRoot); err != nil {
|
||||||
|
return fmt.Errorf("creating initial commit: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Build gh repo create command
|
// Build gh repo create command
|
||||||
args := []string{"repo", "create", repo, "--source", hqRoot}
|
args := []string{"repo", "create", repo, "--source", hqRoot}
|
||||||
if private {
|
if private {
|
||||||
@@ -247,6 +253,33 @@ func createGitHubRepo(hqRoot, repo string, private bool) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensureInitialCommit creates an initial commit if the repo has no commits.
|
||||||
|
// gh repo create --push requires at least one commit to push.
|
||||||
|
func ensureInitialCommit(hqRoot string) error {
|
||||||
|
// Check if commits exist
|
||||||
|
cmd := exec.Command("git", "rev-parse", "HEAD")
|
||||||
|
cmd.Dir = hqRoot
|
||||||
|
if cmd.Run() == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stage and commit
|
||||||
|
addCmd := exec.Command("git", "add", ".")
|
||||||
|
addCmd.Dir = hqRoot
|
||||||
|
if err := addCmd.Run(); err != nil {
|
||||||
|
return fmt.Errorf("git add: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
commitCmd := exec.Command("git", "commit", "-m", "Initial Gas Town HQ")
|
||||||
|
commitCmd.Dir = hqRoot
|
||||||
|
if output, err := commitCmd.CombinedOutput(); err != nil {
|
||||||
|
return fmt.Errorf("git commit failed: %s", strings.TrimSpace(string(output)))
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf(" ✓ Created initial commit\n")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// InitGitForHarness is the shared implementation for git initialization.
|
// InitGitForHarness is the shared implementation for git initialization.
|
||||||
// It can be called from both 'gt git-init' and 'gt install --git'.
|
// It can be called from both 'gt git-init' and 'gt install --git'.
|
||||||
// Note: Function name kept for backwards compatibility.
|
// Note: Function name kept for backwards compatibility.
|
||||||
|
|||||||
Reference in New Issue
Block a user