]> Cypherpunks repositories - gostls13.git/commitdiff
go get: Support for IBM DevOps Services (hub.jazz.net) git repos
authorChris McGee <sirnewton_01@yahoo.ca>
Tue, 15 Jul 2014 01:27:04 +0000 (11:27 +1000)
committerAndrew Gerrand <adg@golang.org>
Tue, 15 Jul 2014 01:27:04 +0000 (11:27 +1000)
LGTM=adg
R=golang-codereviews, adg, minux
CC=golang-codereviews
https://golang.org/cl/106740044

src/cmd/go/doc.go
src/cmd/go/help.go
src/cmd/go/vcs.go
src/cmd/go/vcs_test.go [new file with mode: 0644]

index 52737f9f8b540b4330e768a846e615bf3db2f934..c85d1c3232ad0837b83419160c9bf270ef646510 100644 (file)
@@ -681,6 +681,11 @@ A few common code hosting sites have special syntax:
                import "launchpad.net/~user/project/branch"
                import "launchpad.net/~user/project/branch/sub/directory"
 
+       IBM DevOps Services (Git)
+
+               import "hub.jazz.net/git/user/project"
+               import "hub.jazz.net/git/user/project/sub/directory"
+
 For code hosted on other servers, import paths may either be qualified
 with the version control type, or the go tool can dynamically fetch
 the import path over https/http and discover where the code resides
index 40da7e1f5eee87eab8abf389a32e8f934e32c046..d6651d179bfa9a6b8dc7b028133d01444efdfdb2 100644 (file)
@@ -154,6 +154,11 @@ A few common code hosting sites have special syntax:
                import "launchpad.net/~user/project/branch"
                import "launchpad.net/~user/project/branch/sub/directory"
 
+       IBM DevOps Services (Git)
+
+               import "hub.jazz.net/git/user/project"
+               import "hub.jazz.net/git/user/project/sub/directory"
+
 For code hosted on other servers, import paths may either be qualified
 with the version control type, or the go tool can dynamically fetch
 the import path over https/http and discover where the code resides
index 8f0bae0b755daaa41cbb78aea18275a5ca536f40..d07948e64c433fb5691268911da9f47a1194bd68 100644 (file)
@@ -613,6 +613,15 @@ var vcsPaths = []*vcsPath{
                check:  launchpadVCS,
        },
 
+       // IBM DevOps Services (JazzHub)
+       {
+               prefix: "hub.jazz.net/git",
+               re:     `^(?P<root>hub.jazz.net/git/[a-z0-9]+/[A-Za-z0-9_.\-]+)(/[A-Za-z0-9_.\-]+)*$`,
+               vcs:    "git",
+               repo:   "https://{root}",
+               check:  noVCSSuffix,
+       },
+
        // General syntax for any server.
        {
                re:   `^(?P<root>(?P<repo>([a-z0-9.\-]+\.)+[a-z0-9.\-]+(:[0-9]+)?/[A-Za-z0-9_.\-/]*?)\.(?P<vcs>bzr|git|hg|svn))(/[A-Za-z0-9_.\-]+)*$`,
diff --git a/src/cmd/go/vcs_test.go b/src/cmd/go/vcs_test.go
new file mode 100644 (file)
index 0000000..820e478
--- /dev/null
@@ -0,0 +1,116 @@
+// Copyright 2014 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+       "testing"
+)
+
+// Test that RepoRootForImportPath creates the correct RepoRoot for a given importPath.
+// TODO(cmang): Add tests for SVN and BZR.
+func TestRepoRootForImportPath(t *testing.T) {
+       tests := []struct {
+               path string
+               want *repoRoot
+       }{
+               {
+                       "code.google.com/p/go",
+                       &repoRoot{
+                               vcs:  vcsHg,
+                               repo: "https://code.google.com/p/go",
+                       },
+               },
+               /*{
+                       "code.google.com/r/go",
+                       &repoRoot{
+                               vcs:  vcsHg,
+                               repo: "https://code.google.com/r/go",
+                       },
+               },*/
+               {
+                       "github.com/golang/groupcache",
+                       &repoRoot{
+                               vcs:  vcsGit,
+                               repo: "https://github.com/golang/groupcache",
+                       },
+               },
+               // IBM DevOps Services tests
+               {
+                       "hub.jazz.net/git/user1/pkgname",
+                       &repoRoot{
+                               vcs:  vcsGit,
+                               repo: "https://hub.jazz.net/git/user1/pkgname",
+                       },
+               },
+               {
+                       "hub.jazz.net/git/user1/pkgname/submodule/submodule/submodule",
+                       &repoRoot{
+                               vcs:  vcsGit,
+                               repo: "https://hub.jazz.net/git/user1/pkgname",
+                       },
+               },
+               {
+                       "hub.jazz.net",
+                       nil,
+               },
+               {
+                       "hub2.jazz.net",
+                       nil,
+               },
+               {
+                       "hub.jazz.net/someotherprefix",
+                       nil,
+               },
+               {
+                       "hub.jazz.net/someotherprefix/user1/pkgname",
+                       nil,
+               },
+               // Spaces are not valid in user names or package names
+               {
+                       "hub.jazz.net/git/User 1/pkgname",
+                       nil,
+               },
+               {
+                       "hub.jazz.net/git/user1/pkg name",
+                       nil,
+               },
+               // Dots are not valid in user names
+               {
+                       "hub.jazz.net/git/user.1/pkgname",
+                       nil,
+               },
+               {
+                       "hub.jazz.net/git/user/pkg.name",
+                       &repoRoot{
+                               vcs:  vcsGit,
+                               repo: "https://hub.jazz.net/git/user/pkg.name",
+                       },
+               },
+               // User names cannot have uppercase letters
+               {
+                       "hub.jazz.net/git/USER/pkgname",
+                       nil,
+               },
+       }
+
+       for _, test := range tests {
+               got, err := repoRootForImportPath(test.path)
+               want := test.want
+
+               if want == nil {
+                       if err == nil {
+                               t.Errorf("RepoRootForImport(%q): Error expected but not received")
+                       }
+                       continue
+               }
+               if err != nil {
+                       t.Errorf("RepoRootForImport(%q): %v", test.path, err)
+                       continue
+               }
+               if got.vcs.name != want.vcs.name || got.repo != want.repo {
+                       t.Errorf("RepoRootForImport(%q) = VCS(%s) Repo(%s), want VCS(%s) Repo(%s)", test.path, got.vcs, got.repo, want.vcs, want.repo)
+               }
+       }
+}