From 65cfe2b3fff11d34b5ffc9f7e5d24aefb505497f Mon Sep 17 00:00:00 2001 From: William Ahern Date: Thu, 27 Jul 2023 22:06:45 -0700 Subject: [PATCH] pull, push: try reading git-bug.remote config value before defaulting to 'origin' when no explicit REMOTE argument --- commands/pull.go | 16 +++++++++++----- commands/push.go | 16 +++++++++++----- repository/config.go | 11 +++++++++++ 3 files changed, 33 insertions(+), 10 deletions(-) Index: git-bug-0.8.1+git.1746484874.96c7a111/commands/pull.go =================================================================== --- git-bug-0.8.1+git.1746484874.96c7a111.orig/commands/pull.go 2025-05-06 00:41:14.000000000 +0200 +++ git-bug-0.8.1+git.1746484874.96c7a111/commands/pull.go 2025-05-06 12:25:33.320505683 +0200 @@ -8,6 +8,7 @@ "github.com/git-bug/git-bug/commands/completion" "github.com/git-bug/git-bug/commands/execenv" "github.com/git-bug/git-bug/entity" + "github.com/git-bug/git-bug/repository" ) func newPullCommand(env *execenv.Env) *cobra.Command { @@ -25,13 +26,18 @@ } func runPull(env *execenv.Env, args []string) error { - if len(args) > 1 { + var remote string + switch { + case len(args) > 1: return errors.New("Only pulling from one remote at a time is supported") - } - - remote := "origin" - if len(args) == 1 { + case len(args) == 1: remote = args[0] + default: + v, err := repository.GetDefaultString("git-bug.remote", env.Repo.AnyConfig(), "origin") + if err != nil { + return err + } + remote = v } env.Out.Println("Fetching remote ...") Index: git-bug-0.8.1+git.1746484874.96c7a111/commands/push.go =================================================================== --- git-bug-0.8.1+git.1746484874.96c7a111.orig/commands/push.go 2025-05-06 00:41:14.000000000 +0200 +++ git-bug-0.8.1+git.1746484874.96c7a111/commands/push.go 2025-05-06 12:25:33.320753379 +0200 @@ -7,6 +7,7 @@ "github.com/git-bug/git-bug/commands/completion" "github.com/git-bug/git-bug/commands/execenv" + "github.com/git-bug/git-bug/repository" ) func newPushCommand(env *execenv.Env) *cobra.Command { @@ -24,13 +25,18 @@ } func runPush(env *execenv.Env, args []string) error { - if len(args) > 1 { + var remote string + switch { + case len(args) > 1: return errors.New("Only pushing to one remote at a time is supported") - } - - remote := "origin" - if len(args) == 1 { + case len(args) == 1: remote = args[0] + default: + v, err := repository.GetDefaultString("git-bug.remote", env.Repo.AnyConfig(), "origin") + if err != nil { + return err + } + remote = v } stdout, err := env.Backend.Push(remote) Index: git-bug-0.8.1+git.1746484874.96c7a111/repository/config.go =================================================================== --- git-bug-0.8.1+git.1746484874.96c7a111.orig/repository/config.go 2025-05-06 00:41:14.000000000 +0200 +++ git-bug-0.8.1+git.1746484874.96c7a111/repository/config.go 2025-05-06 12:25:33.320922899 +0200 @@ -60,6 +60,17 @@ RemoveAll(keyPrefix string) error } +func GetDefaultString(key string, cfg ConfigRead, def string) (string, error) { + val, err := cfg.ReadString(key) + if err == nil { + return val, nil + } else if errors.Is(err, ErrNoConfigEntry) { + return def, nil + } else { + return "", err + } +} + func ParseTimestamp(s string) (time.Time, error) { timestamp, err := strconv.Atoi(s) if err != nil {