如何使用由dep管理的开发供应商包?

3
如何在使用dep和供应商目录的同时使用一个软件包的开发副本/克隆? 供应商目录包含在主存储库中。
例如,我已经在github上复制了软件包并用自己的进行了替换。 我希望能够编辑代码而不必每次更改包时都要进行git push + dep ensure。
如果我在供应商目录中克隆软件包,则无法将该目录作为单独的存储库提交到主存储库中。
我尝试利用.gitignore从软件包外部忽略.git目录的技巧。 这有效地运行,直到运行dep ensure时,.git目录被删除。

您所说的删除 git 标签,是指您的问题与 git 无关吗? - VonC
好的。关于Git的问题。你测试过我将.git文件夹移动到其他地方的想法了吗? - VonC
2个回答

2
根据 dep 文档,目前没有内置的方法来实现这一点。
他们还建议不要直接修改 vendor 目录中的软件包,因为我发现原因是运行 dep ensure 时它会被清除。
他们的主要建议是手动从 vendor/ 目录中删除软件包,在常规的 $GOPATH 中进行修改,并在完成开发后运行 dep ensure -update <pkg>
这比每次更改都推动要好得多,但仍需要在完成开发工作时手动执行 push/dep ensure

1

“忽略.git”的替代方法是将.git文件夹保存在其他地方!(远离您的Go项目)

每当您需要在供应商子项目中执行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 $*

这样,您仍然可以从版本控制的操作中受益,而不影响您的子项目。


谢谢您的建议。这是一种新颖的方法,但在我看来有点hacky。我将继续努力找到更清晰的方法。 - gak
@GeraldKaszuba 我认为这并不是“hacky”,而是促进了Golang依赖管理和源代码控制之间的清晰分离。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接