# Installing Version Control Tools for ` go get `

The ` go get ` fetching of source code is done by using one of the following tools expected to be found on your system:

  * **svn** - Subversion, download at: http://subversion.apache.org/packages.html
  * **hg** - Mercurial, download at https://www.mercurial-scm.org/downloads
  * **git** - Git, download at http://git-scm.com/downloads
  * **bzr** - Bazaar, download at http://wiki.bazaar.canonical.com/Download

For example, **git** is used for Github, **hg** is used for Bitbucket, etc.

Refer [GoGetProxyConfig](GoGetProxyConfig) for setting proxies for these tools.