]> Cypherpunks repositories - gostls13.git/commit
goinstall: More intelligent vcs selection for common sites
authorJulian Phillips <julian@quantumfyre.co.uk>
Thu, 27 Oct 2011 08:45:07 +0000 (17:45 +0900)
committerAndrew Gerrand <adg@golang.org>
Thu, 27 Oct 2011 08:45:07 +0000 (17:45 +0900)
commitd066e02adc0f343b178a0d8191e719e1218ffe80
tree86766e5064f7d10a8043e697e1c8c64604a41ffe
parent1e900b0d226b4a562abc6d31adb2eb721c60cbf9
goinstall: More intelligent vcs selection for common sites

goinstall has built in support for a few common code hosting sites.  The
identification of which vcs tool should be used was based purely on a
regex match against the provided import path.  The problem with this
approach is that it requires distinct import paths for different vcs
tools on the same site.

Since bitbucket has recently starting hosting Git repositories under the
same bitbucket.org/user/project scheme as it already hosts Mercurial
repositories, now would seem a good time to take a more flexible
approach.

We still match the import path against a list of regexes, but now the
match is purely to distinguish the different hosting sites.  Once the
site is identified, the specified function is called with the repo and
path matched out of the import string.  This function is responsible for
creating the vcsMatch structure that tells us what we need to download
the code.

For github and launchpad, only one vcs tool is currently supported, so
these functions can simply return a vcsMatch structure.  For googlecode,
we retain the behaviour of determing the vcs from the import path - but
now it is done by the function instead of the regex.  For bitbucket, we
use api.bitbucket.org to find out what sort of repository the specified
import path corresponds to - and then construct the appropriate vcsMatch
structure.

R=golang-dev, adg
CC=golang-dev, rsc
https://golang.org/cl/5306069
src/cmd/goinstall/doc.go
src/cmd/goinstall/download.go