From 64358d81e58799202f12a8a428f26b4040514fec Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Thu, 19 Aug 2021 18:43:03 +0800 Subject: [PATCH 1/4] fix-remote-origin --- routers/repo/cloudbrain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 4138e702f..5fce6b3a2 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -494,7 +494,7 @@ func GetRate(ctx *context.Context) { } func downloadCode(repo *models.Repository, codePath string) error { - if err := git.Clone(repo.RepoPath(), codePath, git.CloneRepoOptions{}); err != nil { + if err := git.Clone(repo.CloneLink().HTTPS, codePath, git.CloneRepoOptions{}); err != nil { log.Error("Failed to clone repository: %s (%v)", repo.FullName(), err) return err } From 896723a0cab34c1b1e4213d59a5de88dd19902e8 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 20 Aug 2021 14:26:58 +0800 Subject: [PATCH 2/4] mod the remote origin url --- routers/repo/cloudbrain.go | 39 +++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 5fce6b3a2..db6a6fe4a 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -1,8 +1,10 @@ package repo import ( + "bufio" "encoding/json" "errors" + "io" "net/http" "os" "os/exec" @@ -494,11 +496,46 @@ func GetRate(ctx *context.Context) { } func downloadCode(repo *models.Repository, codePath string) error { - if err := git.Clone(repo.CloneLink().HTTPS, codePath, git.CloneRepoOptions{}); err != nil { + if err := git.Clone(repo.RepoPath(), codePath, git.CloneRepoOptions{}); err != nil { log.Error("Failed to clone repository: %s (%v)", repo.FullName(), err) return err } + configFile, err := os.OpenFile(codePath + "/.git/config", os.O_RDWR, 0666) + if err != nil { + log.Error("open file(%s) failed:%v", codePath + "/,git/config", err) + return err + } + + defer configFile.Close() + + pos := int64(0) + reader := bufio.NewReader(configFile) + for { + line, err := reader.ReadString('\n') + if err != nil { + if err == io.EOF { + log.Error("not find the remote-url") + return nil + } else { + log.Error("read error: %v", err) + return err + } + } + + if strings.Contains(line, "url") && strings.Contains(line, ".git"){ + bytes := []byte("\turl = " + repo.CloneLink().HTTPS + "\n") + _, err := configFile.WriteAt(bytes, pos) + if err != nil { + log.Error("WriteAt failed:%v", err) + return err + } + break + } + + pos += int64(len(line)) + } + return nil } From beca2e72e4a6170768243e0dbf1b8b97ff687630 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Fri, 20 Aug 2021 17:58:49 +0800 Subject: [PATCH 3/4] fix-url --- routers/repo/cloudbrain.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index db6a6fe4a..abaa37498 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -524,7 +524,11 @@ func downloadCode(repo *models.Repository, codePath string) error { } if strings.Contains(line, "url") && strings.Contains(line, ".git"){ - bytes := []byte("\turl = " + repo.CloneLink().HTTPS + "\n") + originUrl := "\turl = " + repo.CloneLink().HTTPS + "\n" + if len(line) > len(originUrl) { + originUrl += strings.Repeat( "\t", len(line) - len(originUrl)) + } + bytes := []byte(originUrl) _, err := configFile.WriteAt(bytes, pos) if err != nil { log.Error("WriteAt failed:%v", err) From 10a3e4792b0bef4744c3bf287b2ac5842af2f285 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Mon, 23 Aug 2021 11:39:42 +0800 Subject: [PATCH 4/4] fix origin too long --- routers/repo/cloudbrain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index abaa37498..2e5e3d2e3 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -526,7 +526,7 @@ func downloadCode(repo *models.Repository, codePath string) error { if strings.Contains(line, "url") && strings.Contains(line, ".git"){ originUrl := "\turl = " + repo.CloneLink().HTTPS + "\n" if len(line) > len(originUrl) { - originUrl += strings.Repeat( "\t", len(line) - len(originUrl)) + originUrl += strings.Repeat( " ", len(line) - len(originUrl)) } bytes := []byte(originUrl) _, err := configFile.WriteAt(bytes, pos)