blob: 9a42d0908c51c673a79dc82f36197080fece636a [file] [log] [blame] [view]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +11001This page contains a list of tools for managing Go packages and their dependencies. The tools are divided into categories based on their approach to version management.
2
Daniel Theophanes6626fb22015-05-02 06:40:58 -07003The approach endorsed by the Go project is package copy with import path re-writes.
Andrew Gerrand5bc444d2014-12-10 11:35:11 +11004
Daniel Theophanes6626fb22015-05-02 06:40:58 -07005## Pkg copy with import path re-write
Daniel Theophanes3d2ada02015-05-02 07:43:13 -07006Vendoring takes the 3rd party source code that is referenced in your project and makes a copy of that code inside a new folder within the project. It re-writes the import paths so there is a single copy of all packages. GOPATH is not modified at any time.
Daniel Theophanes6626fb22015-05-02 06:40:58 -07007
8| **party** |https://github.com/mjibson/party|
9|:----------|:-----------------------------|
10|Author |Matt Jibson |
11|Categories |Vendoring, Copies into "_third_party". Does not analyze dependencies first. No inspection.|
12| | |
13| **vendor** |https://github.com/kardianos/vendor|
14|Title |Copy, re-write, and list dependent package status.|
15|Author |Daniel Theophanes |
Daniel Theophanes837b7b52015-05-02 06:52:40 -070016|Categories |Pkg Copy,Import rewrite, record VCS version. Copies into "internal". |
Daniel Theophanes6626fb22015-05-02 06:40:58 -070017| | |
18| **vendorize** |https://github.com/kisielk/vendorize|
19|Author |Kamil Kisiel |
20|Categories |Vendoring. Copies into "3rdparty". |
21
22## Pkg copy, build using GOPATH modification, supports fetching specific version
23Copy packages locally. When building modify the GOPATH to reference the local package store. Not only records specific version, but also fetches specific version.
24
25| **gopm** |https://github.com/GPMGo/gopm |
26|:----------|:-----------------------------|
27|Title |Tool for search, install, update, share packages in Go|
28|Author |Am Laher |
29|Categories |Revision Locking (git, mercurial, bazaar). Copies into ".vendor/src".|
30| | |
31| **gom** |https://github.com/mattn/gom |
32|Title |Go Manager - bundle for go |
33|Author |Yasuhiro Matsumoto |
34|Categories |Vendoring/Bundling. Copies into "_vendor/src" |
35| | |
36| **bunch** |https://github.com/dkulchenko/bunch|
37|Title |npm-like tool for managing Go dependencies|
38|Author |Daniil Kulchenko |
39|Categories |Vendoring/Bundling/Revision Locking. Copies into ".vendor". Does NOT fully support windows.|
40| | |
41| **goop** |https://github.com/nitrous-io/goop|
42|Title |A dependency manager for Go (golang), inspired by Bundler.|
43|Author |Nitrous.IO |
44|Categories |Vendoring, Revision Locking. Copies into ".vendor/src". Does NOT fully support windows. |
45
46## Pkg copy, build using GOPATH modification
47Copy packages locally. When building modify the GOPATH to reference the local package store.
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110048
John Asmuthae6c16a2015-05-01 14:35:23 -040049| **godep** |https://github.com/tools/godep|
Daniel Theophanes1376c402015-05-01 12:01:03 -070050|:----------|:-----------------------------|
John Asmuthae6c16a2015-05-01 14:35:23 -040051|Title |Helps build packages reproducibly by fixing their dependencies|
52|Author |Keith Rarick |
Daniel Theophanes19437fc2015-05-06 21:18:43 -070053|Categories |Vendoring, Version Recording. Copies into "Godep/_workspace/src".|
John Asmuthae6c16a2015-05-01 14:35:23 -040054| | |
Daniel Theophanes6626fb22015-05-02 06:40:58 -070055| **wgo** |https://github.com/skelterjohn/wgo|
56|Title |Managed workspaces on top of the go tool|
57|Author |John Asmuth |
58|Categories |local GOPATH can be configured.|
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110059
60## Revision Locking
Daniel Theophanes6626fb22015-05-02 06:40:58 -070061Package source control versions are recorded. Versions are updated into the GOPATH package tree.
62Requires switching GOPATH for every project.
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110063
Matt Farinaa276ec22015-05-01 14:55:38 -040064| **glide** |https://github.com/Masterminds/glide|
Daniel Theophanesd746ee92015-05-02 07:11:05 -070065|:-----------|:-----------------------------|
Matt Farinaa276ec22015-05-01 14:55:38 -040066|Title |Simplified Go workspace and dependency management.|
67|Author |Matt Butcher and Matt Farina |
Daniel Theophanes6626fb22015-05-02 06:40:58 -070068|Categories |Revision Locking (git, mercurial, bzr, svn) |
Matt Farinaa276ec22015-05-01 14:55:38 -040069| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110070| **glock** |https://github.com/robfig/glock|
71|Title |Lock dependencies to specific revisions.|
72|Author |Rob Figueiredo |
73|Categories |Revision Locking (git) |
74| | |
75| **gobs** |https://bitbucket.org/vegansk/gobs|
76|Title |Build system and package manager for go language|
77|Author |Anatoly Galiulin |
Daniel Theophanes0af40002015-05-02 07:07:28 -070078|Categories |Revision Locking (git). Requires bash, no Windows support. |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110079| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110080| **godeps** |https://launchpad.net/godeps |
81|Title |Print, fetch and update dependencies with care. In production use by Canonical. The first tool with this name!|
82|Author |Roger Peppe |
83|Categories | Revision Locking (git, mercurial, bzr)|
Daniel Theophanes6626fb22015-05-02 06:40:58 -070084| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110085| **gopack** |https://github.com/d2fn/gopack|
86|Title |Dependency management for go inspired by rebar|
87|Author |Dietrich Featherston |
88|Categories |Revision Locking (git) |
89| | |
90| **gopin** |https://github.com/laher/gopin|
91|Title |Experimental go-get fork with support for tags and alternative repos|
92|Author |Go Package Manager |
93|Categories |Revision Locking (git) |
Daniel Theophanes6626fb22015-05-02 06:40:58 -070094| | |
95| **gigo** |https://github.com/LyricalSecurity/gigo|
96|Title |Helps provide go get support for private repositories, pip for golang|
97|Author |Lyrical Security |
98|Categories |Vendoring, Revision Locking (git). Does not appear to copy files. |
99
100
101## Vendor Utilities
102Not full vendor tool, but may still provide value.
103
104| **prewrite** |https://github.com/dmitris/prewrite|
105|:-----------|:-----------------------------|
106|Author |Dmitry Savintsev |
107|Categories |Import re-writer, add or remove specified prefix |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100108
109## Import Proxies
110Import Proxies act as a man in the middle between the Go tool and the VCS. It parses the data stream while the repository is being cloned.
111
112| **git-version-proxy** |https://github.com/msiebuhr/git-version-proxy|
113|:----------------------|:--------------------------------------------|
114|Title |A HTTP Git proxy that only exposes certain versions|
115|Author |Morten Siebuhr |
116|Categories |Import Proxy (git) |
117| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100118| **gopkg.in** |https://gopkg.in |
119|Title |Redirect the go tool onto well defined GitHub repositories. Versioning with tags and branches or the repository name.|
120|Author |Gustavo Niemeyer |
121|Categories |Import Proxy (GitHub) |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100122
123## Go Version Managers
124Go Version Managers allow you to have multiple versions of Go installed on your machine. It allows you to switch between those versions.
125
toromotif5db6ae2015-01-17 13:59:25 +0900126| **goenv** | https://bitbucket.org/ymotongpoo/goenv |
127|:-----------|:---------------------------------------|
128| Title | Go environment manager |
129| Author | Yoshifumi YAMAGUCHI |
130| Categories | Go Version Manager |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100131
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100132
133## Client App Test Packages
134Here is a list of packages that authors can use to test their tools against.
135
136| **beego-mgo** |https://github.com/goinggo/beego-mgo|
137|:--------------|:-----------------------------------|
138|Author |Bill Kennedy |
139|Desc |Sample Application For Using the Beego web framework with MGO|
140| | |
141| **revel-mgo** |https://github.com/goinggo/revel-mgo|
142|Author |Bill Kennedy |
Daniel Theophanes6626fb22015-05-02 06:40:58 -0700143|Desc |Sample revel project with mgo support|
144
145## Abandoned Tools
146 * https://github.com/coreos/third_party.go
147 * http://godoc.org/kylelemons.net/go/rx
148 * https://github.com/theplant/pak
149
150## Not Written in Go
151These tools are recorded for completeness, but it is suggested not to use them as they are platform specific.
152 * https://github.com/rosylilly/gondler
153 * https://github.com/VividCortex/johnny-deps
154 * https://github.com/moovweb/gvm
Daniel Theophanesb95037b2015-05-02 06:56:18 -0700155 * https://github.com/pote/gpm
156 * https://github.com/sam-falvo/envie