cmd/sketch: add -upstream flag for git branch management

To be used in future work.

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: s40fdfb9a579bf6f2k
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index da3ccbb..42d9e14 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -110,6 +110,9 @@
 
 	GitRemoteUrl string
 
+	// Upstream branch for git work
+	Upstream string
+
 	// Commit hash to checkout from GetRemoteUrl
 	Commit string
 
@@ -201,6 +204,13 @@
 	} else {
 		commit = strings.TrimSpace(string(out))
 	}
+
+	var upstream string
+	if out, err := combinedOutput(ctx, "git", "branch", "--show-current"); err != nil {
+		slog.DebugContext(ctx, "git branch --show-current failed (continuing)", "error", err)
+	} else {
+		upstream = strings.TrimSpace(string(out))
+	}
 	if out, err := combinedOutput(ctx, "git", "config", "http.receivepack", "true"); err != nil {
 		return fmt.Errorf("git config http.receivepack true: %s: %w", out, err)
 	}
@@ -212,6 +222,7 @@
 
 	config.OutsideHTTP = fmt.Sprintf("http://sketch:%s@host.docker.internal:%s", gitSrv.pass, gitSrv.gitPort)
 	config.GitRemoteUrl = fmt.Sprintf("http://sketch:%s@host.docker.internal:%s/.git", gitSrv.pass, gitSrv.gitPort)
+	config.Upstream = upstream
 	config.Commit = commit
 
 	// Create the sketch container
@@ -555,6 +566,7 @@
 			panic("Commit should have been set when GitRemoteUrl was set")
 		}
 		cmdArgs = append(cmdArgs, "-commit="+config.Commit)
+		cmdArgs = append(cmdArgs, "-upstream="+config.Upstream)
 	}
 	if config.OutsideHTTP != "" {
 		cmdArgs = append(cmdArgs, "-outside-http="+config.OutsideHTTP)