我已经在 github 中有一个现有项目,并将 deps json 文件存储在 Godeps 文件夹中,并将依赖包存储在 vendor 文件夹中。
现在我需要一种在不影响现有 json 文件和供应商包文件夹的情况下将新包添加到列表的方法
不要与工具作斗争。让我们godep
更新您的 json 文件和供应商文件夹,无论它对您的原始Godeps/godeps.json
文件有多大影响。
godep restore // put everything in a known state
go get -u foo/bar // get new package
go test ./... // make sure everything is up to snuff
go run main.go // run your code
godep save ./... // update `godeps.json` to current state of packages
如果你使用go get -u foo/bar
你的新包,这只会影响你的新包foo/bar
——它不会更新你现有的包。
-u 标志指示 get 使用网络来更新命名包及其依赖项。默认情况下,get 使用网络检查丢失的包,但不使用它来查找现有包的更新。 https://golang.org/cmd/go/
作为旁注,我建议养成使用godep
前缀的习惯,以免破坏您的$GOPATH
:
go get -u foo/bar // get new package
godep go test ./... // test your package, using your /vendor deps
godep go run main.go // run your code, using your /vendor deps
godep save ./... // update godeps if everything checks out
它使切换多个存储库变得更加容易。
提示:使您的配置默认值适合您的团队的“本地开发环境”。例如数据库用户名/密码,如“dev/dev”等等。这样,您不必使用godep go run main.go
. 很好很简单。