• Julian Phillips's avatar
    goinstall: More intelligent vcs selection for common sites · d066e02a
    Julian Phillips authored
    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
    d066e02a
doc.go 7.06 KB