拾遗:govendor(Golang 依赖库版本控制)

官方资料:

效果

  • 逐层递归向上查找遇到的 vendor 目录,直到找到目标内容
  • 若 vendor 目录中没有找到目标,最后会去 go 的标准目录下查找

Quick Start

# Setup your project.
cd "my project in GOPATH"
govendor init

# Add existing GOPATH files to vendor.
govendor add +external

# View your work.
govendor list

# Look at what is using a package
govendor list -v fmt

# Specify a specific version or revision to fetch
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55
govendor fetch golang.org/x/net/context@v1   # Get latest v1.*.* tag or branch.
govendor fetch golang.org/x/net/context@=v1  # Get the tag or branch named "v1".

# Update a package to latest, given any prior version constraint
govendor fetch golang.org/x/net/context

# Format your repository only
govendor fmt +local

# Build everything in your repository only
govendor install +local

# Test your repository only
govendor test +local

FAQ

Q: How do I test only my packages?
  A: Run govendor test +local.
Q: How do I build install all my vendor packages?
  A: Run govendor install +vendor,^program.
Q: How do I pull all my dependencies from network remotes?
  A: Run govendor fetch +out.
Q: I have a working program with dependencies in $GOPATH. I want to vendor now.
  A: Run govendor add +external.
Q: I have copied dependencies into "vendor". I want to update from $GOPATH.
  A: Run govendor update +vendor.
Q: I'm getting missing packages from appengine but I don't care about appengine. How do I ignore these packages?
  A: Edit the vendor/vendor.json file. Update the "ignore" field to include "appengine". If you are already ignoring tests, it will look like: "ignore": "test appengine",.
Q: I have modified a package in $GOPATH and I want to try the changes in vendor without committing them.
  A: Run govendor update -uncommitted <updated-package-import-path>.
Q: I've forked a package and I haven't upstreamed the changes yet. What should I do?
  A: Assuming you've pushed your changes to an accessable repository, run govendor fetch github.com/normal/pkg::github.com/myfork/pkg. This will fetch from "myfork" but place package in "normal".
Q: I have C files or HTML resources in sub-folders. How do I ensure they are copied as well?
  A: Run either govendor fetch github.com/dep/pkg/^ or govendor add github.com/dep/pkg/^. This is the same as using the -tree argument.
Q: How do I prevent vendor source from being checked in?
  A: Add vendor/*/ to your ignore file.
Q: How do I populate the vendor folder if it has not been checked in?
  A: Run govendor sync.

...

posted @ 2017-04-01 16:40  范辉  阅读(4815)  评论(0编辑  收藏  举报