在使用dep
和供应商目录时,如何使用包的开发副本/克隆?供应商目录包含在主存储库中。
例如,我有分叉包,并用我自己的github替换它。我想能够编辑代码,而不是每次更改包时都需要git push
+ dep ensure
。
如果我在供应商目录中克隆包,我将无法将该目录提交到主仓库中,因为它被视为一个单独的存储库。
我从包外面尝试了.gitignore
.git
目录的技巧。这一点很有效,直到dep ensure
运行,其中.git
目录被核实。
根据dep
docs的说法,没有内置的方式可以做到这一点。
他们还建议不要直接修改vendor
目录中的包,原因是我发现:运行dep ensure
时它会被破坏。
他们的主要建议是从vendor/
目录中手动删除包,在常规$GOPATH
中修改它,并在完成开发时运行dep ensure -update <pkg>
。
这比推动每次更改要好得多,但仍需要在完成开发工作时手动push
/ dep ensure
。
“忽略.git
”的替代方法是将.git
文件夹保存在别处! (远离你的Go项目)
每当你需要在vendored子项目中执行git命令时,你需要使用git命令的别名,它将是:
alias gg='git --git-dir=/path/to/elsewhere/.git --work-tree=/path/to/vendored/subproject'
# Windows
doskey gg=git --git-dir=C:\path\to\elsewhere\.git --work-tree=C:\path\to\vendored\subproject $*
这样,您仍然可以从您所托管的子项目中的版本控制操作中受益。