如何在使用dep
和供应商目录时使用包的开发副本/克隆?供应商目录包含在主存储库中。
例如,我在 github 上 fork 包并用我自己的包替换它。我希望能够编辑代码,而不必为包的每次更改git push
+ dep ensure
。
如果我在供应商目录中克隆包,我将无法将该目录提交到主存储库,因为它被视为单独的存储库。
我尝试了一个从包外部访问目录.gitignore
的技巧。.git
这在运行之前dep ensure
运行良好,.git
目录被核爆。
根据dep
文档,目前没有内置的方法可以做到这一点。
他们还建议不要vendor
直接修改目录中的包,原因是我发现:运行时它会被 nuked 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 $*
这样,您仍然可以从您的已售子项目中的版本控制操作中受益。