blob: 3519dfb4f6ba0795a3007d9688253969ba838ca9 [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
3The approach [endorsed by the Go project](http://golang.org/doc/faq#get_version) is "vendoring" (described below) and [godep](https://github.com/tools/godep) is a well-maintained tool for managing vendored dependencies.
4
5## Vendoring
6Vendoring 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. All the code your project needs is inside the one project repository. Vendoring also provides a performance enhancement on getting the code because only one url call is required.
7
8| **godep** |https://github.com/tools/godep|
9|:----------|:-----------------------------|
10|Title |Helps build packages reproducibly by fixing their dependencies|
11|Author |Keith Rarick |
12|Categories |Vendoring, Revision Locking (git, mercurial, bazaar)|
13| | |
Chayimc87ce582015-05-01 13:40:11 -040014| **gigo** |https://github.com/LyricalSecurity/gigo|
15|Title |Helps provide go get support for private repositories, pip for golang|
16|Author |Lyrical Security |
17|Categories |Vendoring, Revision Locking |
18| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110019| **gom** |https://github.com/mattn/gom |
20|Title |Go Manager - bundle for go |
21|Author |Yasuhiro Matsumoto |
22|Categories |Vendoring/Bundling |
23| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110024| **goop** |https://github.com/nitrous-io/goop|
25|Title |A dependency manager for Go (golang), inspired by Bundler.|
26|Author |Nitrous.IO |
27|Categories |Vendoring, Revision Locking |
28| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110029| **third-party** |https://github.com/coreos/third_party.go|
30|Title |Self contained GOPATH helper |
31|Author |CoreOS |
32|Categories |Vendoring |
33|Notes |CoreOS now uses github.com/tools/godep|
34| | |
35| **vendorize** |https://github.com/kisielk/vendorize|
36|Author |Kamil Kisiel |
37|Categories |Vendoring |
38| | |
39| **party** |https://github.com/mjibson/party|
40|Author |Matt Jibson |
41|Categories |Vendoring |
Daniel Theophanes90d88c02015-04-16 20:41:02 -070042| | |
Dmitry Savintsev31871132015-05-01 20:17:59 +020043| **prewrite** |https://github.com/dmitris/prewrite|
44|Author |Dmitry Savintsev |
45|Categories |Vendoring |
46| | |
Daniel Theophanes90d88c02015-04-16 20:41:02 -070047| **vendor** |https://github.com/kardianos/vendor|
48|Author |Daniel Theophanes |
49|Categories |Vendoring |
Daniil Kulchenko3d5963e2015-04-27 09:45:23 -070050| | |
51| **bunch** |https://github.com/dkulchenko/bunch|
52|Title |npm-like tool for managing Go dependencies|
53|Author |Daniil Kulchenko |
54|Categories |Vendoring/Bundling/Revision Locking |
Daniel Theophanes2cbac8f2015-04-27 22:23:34 -070055| | |
56| **gondler** |https://github.com/rosylilly/gondler|
57|Title |Bundler for golang |
58|Author |Sho Kusano |
59|Categories |Vendoring/Bundling/Revision Locking. Requires Ruby|
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110060
61## Revision Locking
62Revision Locking creates a dependency file that references specific commits in the different version control systems the code is located in. Just like vendoring, the RL tool is used to get, build and install your project. One advantage is that your project repository continues to only contain the specific project code.
63
John Asmuth486fca32015-05-01 14:00:12 -040064| **wgo** |https://github.com/skelterjohn/wgo|
John Asmuth4d563ed2015-05-01 14:02:01 -040065|:-----------|:-----------------------------|
John Asmuth486fca32015-05-01 14:00:12 -040066|Title |Managed workspaces on top of the go tool|
67|Author |John Asmuth |
John Asmuthe81899b2015-05-01 14:01:07 -040068|Categories |Revision Locking (git, extensible)|
69| | |
John Asmuth4d563ed2015-05-01 14:02:01 -040070| **dondur** |https://github.com/oguzbilgic/dondur|
John Asmuthe81899b2015-05-01 14:01:07 -040071|Title |Freeze your Go dependencies with ease|
72|Author |Oguz Bilgic |
73|Categories |Revision Locking (git, mercurial, bazaar)|
John Asmuth486fca32015-05-01 14:00:12 -040074| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110075| **envie** |https://github.com/sam-falvo/envie|
76|Title |Download and manage Go projects and their dependencies|
77|Author |Samuel A. Falvo II |
78|Categories |Revision Locking (unknown) |
79| | |
80| **glock** |https://github.com/robfig/glock|
81|Title |Lock dependencies to specific revisions.|
82|Author |Rob Figueiredo |
83|Categories |Revision Locking (git) |
84| | |
85| **gobs** |https://bitbucket.org/vegansk/gobs|
86|Title |Build system and package manager for go language|
87|Author |Anatoly Galiulin |
88|Categories |Revision Locking (git) |
89| | |
90| **godep** |https://github.com/tools/godep|
91|Title |Helps build packages reproducibly by fixing their dependencies|
92|Author |Keith Rarick |
93|Categories |Vendoring, Revision Locking (git, mercurial, bazaar)|
94| | |
95| **godeps** |https://launchpad.net/godeps |
96|Title |Print, fetch and update dependencies with care. In production use by Canonical. The first tool with this name!|
97|Author |Roger Peppe |
98|Categories | Revision Locking (git, mercurial, bzr)|
99| **gopack** |https://github.com/d2fn/gopack|
100|Title |Dependency management for go inspired by rebar|
101|Author |Dietrich Featherston |
102|Categories |Revision Locking (git) |
103| | |
104| **gopin** |https://github.com/laher/gopin|
105|Title |Experimental go-get fork with support for tags and alternative repos|
106|Author |Go Package Manager |
107|Categories |Revision Locking (git) |
108| | |
109| **gopm** |https://github.com/GPMGo/gopm |
110|Title |Tool for search, install, update, share packages in Go|
111|Author |Am Laher |
112|Categories |Revision Locking (git, mercurial, bazaar)|
113| | |
114| **gpm** |https://github.com/pote/gpm |
115|Title |Barebones dependency manager for Go.|
116|Author |Pablo Astigarraga |
117|Categories |Revision Locking (git, mercurial, bazaar)|
118| | |
119| **johnny deps** |https://github.com/VividCortex/johnny-deps|
120|Title |Barebones dependency manager for Go|
121|Author |Baron Schwartz / Gustavo Kristic|
122|Categories |Revision Locking (git) |
123| | |
124| **pack** |https://github.com/theplant/pak|
125|Title |Simple package management tool for Go|
126|Author |The Plant |
127|Categories |Revision Locking (git) |
128| | |
129| **rx** |http://godoc.org/kylelemons.net/go/rx|
130|Title |[Automation for dependency management tasks](http://kylelemons.net/blog/2012/04/22-rx-for-go-headaches.article)|
131|Author |Kyle Lemons |
132|Categories |Revision Locking (git, mercurial)|
133
134## Import Proxies
135Import 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.
136
137| **git-version-proxy** |https://github.com/msiebuhr/git-version-proxy|
138|:----------------------|:--------------------------------------------|
139|Title |A HTTP Git proxy that only exposes certain versions|
140|Author |Morten Siebuhr |
141|Categories |Import Proxy (git) |
142| | |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100143| **gopkg.in** |https://gopkg.in |
144|Title |Redirect the go tool onto well defined GitHub repositories. Versioning with tags and branches or the repository name.|
145|Author |Gustavo Niemeyer |
146|Categories |Import Proxy (GitHub) |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100147
148## Go Version Managers
149Go Version Managers allow you to have multiple versions of Go installed on your machine. It allows you to switch between those versions.
150
151| **gvm** |https://github.com/moovweb/gvm|
152|:--------|:-----------------------------|
153|Title |Go Version Manager |
154|Author |Josh Bussdieker |
toromotif5db6ae2015-01-17 13:59:25 +0900155|Categories|Go Version Manager |
156
157| **goenv** | https://bitbucket.org/ymotongpoo/goenv |
158|:-----------|:---------------------------------------|
159| Title | Go environment manager |
160| Author | Yoshifumi YAMAGUCHI |
161| Categories | Go Version Manager |
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100162
163## Unclassified
164Not able to classify these tools.
165
166| **go-dep** |https://github.com/go-dep/dep|
167|:-----------|:----------------------------|
168|Title |Go package dependencies with the help of the Go Dependency Format (GDF)|
169|Author |Marc Rene Arns |
170|Categories |Not Sure |
171
172## Client App Test Packages
173Here is a list of packages that authors can use to test their tools against.
174
175| **beego-mgo** |https://github.com/goinggo/beego-mgo|
176|:--------------|:-----------------------------------|
177|Author |Bill Kennedy |
178|Desc |Sample Application For Using the Beego web framework with MGO|
179| | |
180| **revel-mgo** |https://github.com/goinggo/revel-mgo|
181|Author |Bill Kennedy |
182|Desc |Sample revel project with mgo support|