I think of it this way:
If my project depends on 3rd party open source libs, vendor it.
If my project depends on libs under my control on github or company vcs, managing with a manifest is fine.
I agree
im using gvt, its amazing.
I use git subtreeā¦ so I can easily pull back aome changes in upstream repos. Subtree also tracks some metadata in the commits. I found no use of an external vendoring tool. I need GO15VENDOREXPERIMENT thoughā¦ which is great.
The problem I had with other tools is they would break editor tools (gocode, godef)ā¦ so I forked godef to support the vendor experiment at github.com/abourget/godef
Itās worth noting the features weāre backing into Glide arenāt just widely used in the interpreted language space. Tools like Cargo (for the Rust language) and Cocca Pods (for OS X) for compiled languages have these same features. Weāre looking to have the same feature set as the mature tools in the same space for other languages.
Iām usign Godep for dependency manager.
It seem to work well. But I want to save only specific packages needed dependency management such as aws related packages. Because Godeps have to save all imported packages. But there may be own projectās packages as well in saved ones.
If so, those files will be modified as necessary and save command of Godeps have to be used each time after changing some files.
It would be troublesome for me.
If saving only specific packeages will be feasible, weād get more easeful development.
Thanks.
You should probably look into gb. It supports vendoring similar to Godeps today, but it looks like itās planned to allow āpartial vendoringā where important packages can be vendored and other dependencies fetched automatically similar to how āgo getā does it (but smarter, with version awareness).
Thanks for useful advice. I try it.
By the way, I think, option of go get command and import features are deficient.
For example, Iām using aws/aws-sdk-go package. But needed version is v0.9.17 on specific projects.
I use that command in aws/aws-sdk-go directory.
$ git checkout v0.9.17
Tag feature of git may be useful. If that feature can be combined with golang, I could expect as below.
Letās say go get command can be use another option ātagā or so, and then
$ go get -tag v0.9.17 github.com/xxxxx/xxxxxx
-tag option indicates tag version of that git repository.
that command can change tag version on specific git repository after fetch.
After fetch, the below command can be carried out.
$ git checkout v0.9.17
import syntax would be necessary as well.
For example, if import could be like import github.com/xxxxx v0.9.17
Architecture are similar to previous one.
I know itās not perfect, but radical improvement may be requisite instead of depnding on management tools.
Indeed. Hence all the vendoring tools and package managers. Thereās been a lot of thinking done about this and a lot of proposals rejected. Personally I think the route gb is taking looks like the best way forward. If gb becomes the de facto standard build tool, and it supports a reasonable form of versioning, weāre good to go.
@calmh Nothing against gb, but for the sake of the thread Iād like to be clear that gb is fundamentally a project based build tool (as opposed to a GOPATH based build tool), not a vendoring tool. It is true that gb comes with gb-vendor which provides vendoring for the gb workspace.
@hiromaily If you are looking for a tool today that only copies packages you reference into the vendor folder, that is exactly what govendor does today. What it doesnāt do today is to fetch specific versions though that is planned.
As far as āget getā integration or an official method, there has been a bit of discussion on this topic and many people have many opinions. I am a proponent of a single meta-data file that contains revisions, versions, and version ranges. That can be used by tools. Should we get down to a fairly standard design and meta-data file, perhaps we could see integration into the āgoā command.
Hi! gvt author here. Iām super happy to see people using my little port of gb-vendor!
Please feel free to report any feedback or anything I can do to make gvt better either here, on the GH Issues, or at gvt -at- filippo.io.
If you are here looking around for what tool to use I tried to explain why you might want to use gvt in the README: https://github.com/FiloSottile/gvt#gvt-the-go-vendoring-tool
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.