]> Cypherpunks repositories - gostls13.git/commitdiff
goinstall, dashboard: Google Code now supports git
authorTarmigan Casebolt <tarmigan@gmail.com>
Tue, 19 Jul 2011 06:58:18 +0000 (16:58 +1000)
committerAndrew Gerrand <adg@golang.org>
Tue, 19 Jul 2011 06:58:18 +0000 (16:58 +1000)
R=golang-dev, adg, rsc, tarmigan+golang
CC=golang-dev
https://golang.org/cl/4760055

misc/dashboard/godashboard/package.py
src/cmd/goinstall/doc.go
src/cmd/goinstall/download.go

index 87da51424ac6665445af5df610a2b2de1e907535..5cc2d2404a6249eee6a1978e9114b3f839d088d8 100644 (file)
@@ -114,7 +114,7 @@ class Project(db.Model):
 
 
 re_bitbucket = re.compile(r'^(bitbucket\.org/[a-z0-9A-Z_.\-]+/[a-zA-Z0-9_.\-]+)(/[a-z0-9A-Z_.\-/]+)?$')
-re_googlecode = re.compile(r'^[a-z0-9\-]+\.googlecode\.com/(svn|hg)(/[a-z0-9A-Z_.\-/]+)?$')
+re_googlecode = re.compile(r'^[a-z0-9\-]+\.googlecode\.com/(svn|hg|git)(/[a-z0-9A-Z_.\-/]+)?$')
 re_github = re.compile(r'^github\.com/[a-z0-9A-Z_.\-]+(/[a-z0-9A-Z_.\-]+)+$')
 re_launchpad = re.compile(r'^launchpad\.net/([a-z0-9A-Z_.\-]+(/[a-z0-9A-Z_.\-]+)?|~[a-z0-9A-Z_.\-]+/(\+junk|[a-z0-9A-Z_.\-]+)/[a-z0-9A-Z_.\-]+)(/[a-z0-9A-Z_.\-/]+)?$')
 
@@ -130,7 +130,7 @@ def vc_to_web(path):
     elif re_googlecode.match(path):
         m = re_googlecode.match(path)
         check_url = 'http://'+path
-        if not m.group(2):  # append / after bare '/hg'
+        if not m.group(2):  # append / after bare '/hg' or '/git'
             check_url += '/'
         web = 'http://code.google.com/p/' + path[:path.index('.')]
     elif re_launchpad.match(path):
@@ -145,6 +145,17 @@ re_github_web = re.compile(r'github\.com/([a-z0-9A-Z_.\-]+)/([a-z0-9A-Z_.\-]+)')
 re_launchpad_web = re.compile(r'launchpad\.net/([a-z0-9A-Z_.\-]+(/[a-z0-9A-Z_.\-]+)?|~[a-z0-9A-Z_.\-]+/(\+junk|[a-z0-9A-Z_.\-]+)/[a-z0-9A-Z_.\-]+)(/[a-z0-9A-Z_.\-/]+)?')
 re_striphttp = re.compile(r'https?://(www\.)?')
 
+def find_googlecode_vcs(path):
+    # Perform http request to path/hg or path/git to check if they're
+    # using mercurial or git.  Otherwise, assume svn.
+    for vcs in ['git', 'hg']:
+        try:
+            response = urlfetch.fetch('http://'+path+vcs, deadline=1)
+            if response.status_code == 200:
+                return vcs
+        except: pass
+    return 'svn'
+
 def web_to_vc(url):
     url = re_striphttp.sub('', url)
     m = re_bitbucket_web.match(url)
@@ -156,13 +167,7 @@ def web_to_vc(url):
     m = re_googlecode_web.match(url)
     if m:
         path = m.group(1)+'.googlecode.com/'
-        # perform http request to path/hg to check if they're using mercurial
-        vcs = 'svn'
-        try:
-            response = urlfetch.fetch('http://'+path+'hg', deadline=1)
-            if response.status_code == 200:
-                vcs = 'hg'
-        except: pass
+        vcs = find_googlecode_vcs(path)
         return path + vcs
     m = re_launchpad_web.match(url)
     if m:
index a5df7b3bd4aa695e7c534ff4f012fe9ef5b1ec45..53e6f8783a35ae09f4a4af957f90a59fa805e315 100644 (file)
@@ -69,7 +69,10 @@ Goinstall recognizes packages from a few common code hosting sites:
                import "github.com/user/project"
                import "github.com/user/project/sub/directory"
 
-       Google Code Project Hosting (Mercurial, Subversion)
+       Google Code Project Hosting (Git, Mercurial, Subversion)
+
+               import "project.googlecode.com/git"
+               import "project.googlecode.com/git/sub/directory"
 
                import "project.googlecode.com/hg"
                import "project.googlecode.com/hg/sub/directory"
index da892a69d47574f3e542835c4ddb53b8567aeb7d..4fdf416715729b43d88875c6129924d5605b7963 100644 (file)
@@ -97,6 +97,7 @@ var git = vcs{
        protocols:         []string{"git", "https", "http"},
        suffix:            ".git",
        defaultHosts: []host{
+               {regexp.MustCompile(`^([a-z0-9\-]+\.googlecode\.com/git)(/[a-z0-9A-Z_.\-/]*)?$`), "https", ""},
                {regexp.MustCompile(`^(github\.com/[a-z0-9A-Z_.\-]+/[a-z0-9A-Z_.\-]+)(/[a-z0-9A-Z_.\-/]*)?$`), "http", ".git"},
        },
 }