From 96c373d0459a2bb32e9a98bc6f07376203427ce1 Mon Sep 17 00:00:00 2001
From: Hidde Beydals <hello@hidde.co>
Date: Mon, 22 Mar 2021 21:22:50 +0100
Subject: [PATCH] Properly configure sync URL based on auth settings

Signed-off-by: Hidde Beydals <hello@hidde.co>
---
 cmd/flux/bootstrap_git.go | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/cmd/flux/bootstrap_git.go b/cmd/flux/bootstrap_git.go
index cd01bc08..0774d1d9 100644
--- a/cmd/flux/bootstrap_git.go
+++ b/cmd/flux/bootstrap_git.go
@@ -156,15 +156,26 @@ func bootstrapGitCmdRun(cmd *cobra.Command, args []string) error {
 		if bootstrapArgs.caFile != "" {
 			secretOpts.CAFilePath = bootstrapArgs.caFile
 		}
+
+		// Configure repository URL to match auth config for sync.
+		repositoryURL.User = nil
+		repositoryURL.Scheme = "https"
+		repositoryURL.Host = repositoryURL.Hostname()
 	} else {
 		secretOpts.PrivateKeyAlgorithm = sourcesecret.PrivateKeyAlgorithm(bootstrapArgs.keyAlgorithm)
 		secretOpts.RSAKeyBits = int(bootstrapArgs.keyRSABits)
 		secretOpts.ECDSACurve = bootstrapArgs.keyECDSACurve.Curve
-		secretOpts.SSHHostname = repositoryURL.Host
 
+		// Configure repository URL to match auth config for sync.
+		repositoryURL.User = url.User(gitArgs.username)
+		repositoryURL.Scheme = "ssh"
+		repositoryURL.Host = repositoryURL.Hostname()
 		if bootstrapArgs.sshHostname != "" {
-			secretOpts.SSHHostname = bootstrapArgs.sshHostname
+			repositoryURL.Host = bootstrapArgs.sshHostname
 		}
+
+		// Configure last as it depends on the config above.
+		secretOpts.SSHHostname = repositoryURL.Host
 	}
 
 	// Sync manifest config
@@ -172,7 +183,7 @@ func bootstrapGitCmdRun(cmd *cobra.Command, args []string) error {
 		Interval:          gitArgs.interval,
 		Name:              rootArgs.namespace,
 		Namespace:         rootArgs.namespace,
-		URL:               gitArgs.url,
+		URL:               repositoryURL.String(),
 		Branch:            bootstrapArgs.branch,
 		Secret:            bootstrapArgs.secretName,
 		TargetPath:        gitArgs.path.String(),
-- 
GitLab