浏览代码

Allow git@ prefixes for any hosted git service

Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Aidan Hobson Sayers 10 年之前
父节点
当前提交
c7e4cc4a53
共有 3 个文件被更改,包括 27 次插入8 次删除
  1. 1 1
      docs/sources/reference/commandline/cli.md
  2. 1 1
      utils/utils.go
  3. 25 6
      utils/utils_test.go

+ 1 - 1
docs/sources/reference/commandline/cli.md

@@ -462,7 +462,7 @@ Supported formats are: bzip2, gzip and xz.
 This will clone the GitHub repository and use the cloned repository as
 context. The Dockerfile at the root of the
 repository is used as Dockerfile. Note that you
-can specify an arbitrary Git repository by using the `git://`
+can specify an arbitrary Git repository by using the `git://` or `git@`
 schema.
 
 > **Note:** `docker build` will return a `no such file or directory` error

+ 1 - 1
utils/utils.go

@@ -293,7 +293,7 @@ func IsURL(str string) bool {
 }
 
 func IsGIT(str string) bool {
-	return strings.HasPrefix(str, "git://") || strings.HasPrefix(str, "github.com/") || strings.HasPrefix(str, "git@github.com:") || (strings.HasSuffix(str, ".git") && IsURL(str))
+	return strings.HasPrefix(str, "git://") || strings.HasPrefix(str, "github.com/") || strings.HasPrefix(str, "git@") || (strings.HasSuffix(str, ".git") && IsURL(str))
 }
 
 func ValidGitTransport(str string) bool {

+ 25 - 6
utils/utils_test.go

@@ -98,23 +98,42 @@ func TestReadSymlinkedDirectoryToFile(t *testing.T) {
 	}
 }
 
-func TestValidGitTransport(t *testing.T) {
-	for _, url := range []string{
+var (
+	gitUrls = []string{
 		"git://github.com/docker/docker",
 		"git@github.com:docker/docker.git",
+		"git@bitbucket.org:atlassianlabs/atlassian-docker.git",
 		"https://github.com/docker/docker.git",
 		"http://github.com/docker/docker.git",
-	} {
+	}
+	incompleteGitUrls = []string{
+		"github.com/docker/docker",
+	}
+)
+
+func TestValidGitTransport(t *testing.T) {
+	for _, url := range gitUrls {
 		if ValidGitTransport(url) == false {
 			t.Fatalf("%q should be detected as valid Git prefix", url)
 		}
 	}
 
-	for _, url := range []string{
-		"github.com/docker/docker",
-	} {
+	for _, url := range incompleteGitUrls {
 		if ValidGitTransport(url) == true {
 			t.Fatalf("%q should not be detected as valid Git prefix", url)
 		}
 	}
 }
+
+func TestIsGIT(t *testing.T) {
+	for _, url := range gitUrls {
+		if IsGIT(url) == false {
+			t.Fatalf("%q should be detected as valid Git url", url)
+		}
+	}
+	for _, url := range incompleteGitUrls {
+		if IsGIT(url) == false {
+			t.Fatalf("%q should be detected as valid Git url", url)
+		}
+	}
+}