3

如何在使用dep和供应商目录时使用包的开发副本/克隆?供应商目录包含在主存储库中。

例如,我在 github 上 fork 包并用我自己的包替换它。我希望能够编辑代码,而不必为包的每次更改git push+ dep ensure

如果我在供应商目录中克隆包,我将无法将该目录提交到主存储库,因为它被视为单独的存储库。

我尝试了一个从包外部访问目录.gitignore的技巧。.git这在运行之前dep ensure运行良好,.git目录被核爆。

4

2 回答 2

2

根据dep文档,目前没有内置的方法可以做到这一点。

他们还建议不要vendor直接修改目录中的包,原因是我发现:运行时它会被 nuked dep ensure

他们的主要建议是手动从vendor/目录中删除包,在常规中修改它$GOPATH,并dep ensure -update <pkg>在完成开发时运行。

这比推动每个更改要好得多,但仍然需要手动push/dep ensure在完成开发工作时。

于 2017-12-31T08:34:43.940 回答
1

“忽略”的替代方法.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 $*

这样,您仍然可以从您的已售子项目中的版本控制操作中受益。

于 2017-12-30T08:49:02.050 回答