var ( // VCSTestRepoURL is the URL of the HTTP server that serves the repos for // vcs-test.golang.org. // // In tests, this is set to the URL of an httptest.Server hosting a // cmd/go/internal/vcweb.Server. VCSTestRepoURL string // VCSTestHosts is the set of hosts supported by the vcs-test server. VCSTestHosts []string // VCSTestIsLocalHost reports whether the given URL refers to a local // (loopback) host, such as "localhost" or "127.0.0.1:8080". VCSTestIsLocalHost func(*urlpkg.URL) bool )
A Cmd describes how to use a version control system like Mercurial, Git, or Subversion.
type Cmd struct { Name string Cmd string // name of binary to invoke command RootNames []rootName // filename and mode indicating the root of a checkout directory CreateCmd []string // commands to download a fresh copy of a repository DownloadCmd []string // commands to download updates into an existing repository TagCmd []tagCmd // commands to list tags TagLookupCmd []tagCmd // commands to lookup tags before running tagSyncCmd TagSyncCmd []string // commands to sync to specific tag TagSyncDefault []string // commands to sync to default tag Scheme []string PingCmd string RemoteRepo func(v *Cmd, rootDir string) (remoteRepo string, err error) ResolveRepo func(v *Cmd, rootDir, remoteRepo string) (realRepo string, err error) Status func(v *Cmd, rootDir string) (Status, error) }
func FromDir(dir, srcRoot string, allowNesting bool) (repoDir string, vcsCmd *Cmd, err error)
FromDir inspects dir and its parents to determine the version control system and code repository to use. If no repository is found, FromDir returns an error equivalent to os.ErrNotExist.
func (v *Cmd) Create(dir, repo string) error
Create creates a new copy of repo in dir. The parent of dir must exist; dir must not.
func (v *Cmd) Download(dir string) error
Download downloads any new changes for the repo in dir.
func (v *Cmd) IsSecure(repo string) bool
func (v *Cmd) Ping(scheme, repo string) error
Ping pings to determine scheme to use.
func (v *Cmd) String() string
func (v *Cmd) TagSync(dir, tag string) error
TagSync syncs the repo in dir to the named tag, which either is a tag returned by tags or is v.tagDefault.
func (v *Cmd) Tags(dir string) ([]string, error)
Tags returns the list of available tags for the repo in dir.
An ImportMismatchError is returned where metaImport/s are present but none match our import path.
type ImportMismatchError struct {
// contains filtered or unexported fields
}
func (m ImportMismatchError) Error() string
ModuleMode specifies whether to prefer modules when looking up code sources.
type ModuleMode int
const ( IgnoreMod ModuleMode = iota PreferMod )
RepoRoot describes the repository root for a tree of source code.
type RepoRoot struct { Repo string // repository URL, including scheme Root string // import path corresponding to root of repo IsCustom bool // defined by served <meta> tags (as opposed to hard-coded pattern) VCS *Cmd }
func RepoRootForImportPath(importPath string, mod ModuleMode, security web.SecurityMode) (*RepoRoot, error)
RepoRootForImportPath analyzes importPath to determine the version control system, and code repository to use.
Status is the current state of a local repository.
type Status struct { Revision string // Optional. CommitTime time.Time // Optional. Uncommitted bool // Required. }