浏览代码

Use correct source protocol for VCS checks

Previously it was assumed that "git+https" means: use git and if that
fails fall back to https. What this actually means is just: use git over
https. Similary "git" just means use git and "git+http" means use git
over http.

Thus there is only ever one protocol to use. The current protocols array
has been kept for backwards compatibility with the vcs.json file. The
difference being now it will only ever place one protocol into the
array. Also when reading the array, the last protocol is always used.
This is so that entries that have not been regenerated will use the
correct protocol.
morganamilo 6 年之前
父节点
当前提交
cbc2a87c73
共有 1 个文件被更改,包括 8 次插入5 次删除
  1. 8 5
      vcs.go

+ 8 - 5
vcs.go

@@ -62,7 +62,7 @@ func parseSource(source string) (url string, branch string, protocols []string)
 	if len(split) != 2 {
 		return "", "", nil
 	}
-	protocols = strings.Split(split[0], "+")
+	protocols = strings.SplitN(split[0], "+", 2)
 
 	git := false
 	for _, protocol := range protocols {
@@ -72,6 +72,8 @@ func parseSource(source string) (url string, branch string, protocols []string)
 		}
 	}
 
+	protocols = protocols[len(protocols)-1:]
+
 	if !git {
 		return "", "", nil
 	}
@@ -142,7 +144,8 @@ func updateVCSData(pkgName string, sources []gosrc.ArchString, mux *sync.Mutex,
 }
 
 func getCommit(url string, branch string, protocols []string) string {
-	for _, protocol := range protocols {
+	if len(protocols) > 0 {
+		protocol := protocols[len(protocols)-1]
 		var outbuf bytes.Buffer
 
 		cmd := passToGit("", "ls-remote", protocol+"://"+url, branch)
@@ -151,7 +154,7 @@ func getCommit(url string, branch string, protocols []string) string {
 
 		err := cmd.Start()
 		if err != nil {
-			continue
+			return ""
 		}
 
 		//for some reason
@@ -165,14 +168,14 @@ func getCommit(url string, branch string, protocols []string) string {
 		err = cmd.Wait()
 		timer.Stop()
 		if err != nil {
-			continue
+			return ""
 		}
 
 		stdout := outbuf.String()
 		split := strings.Fields(stdout)
 
 		if len(split) < 2 {
-			continue
+			return ""
 		}
 
 		commit := split[0]