我使用版本控制系统git
作为我的软件。在源代码“内”,我使用go get
自动从github获取软件。我该如何处理“双重git”情况?
当我在目录git add
上运行src/github.com/somename/someproject
时,这本身就是一个git存储库,这会添加什么吗? (当我运行git status
)
我应该将git submodule
用于git get
个已添加的子目录吗?
在这种情况下,最佳做法是什么?
编辑:我的软件项目有一个自定义$GOPATH
环境。这就是我的软件目录层次结构中找到src/github.com/somename/someproject
目录的原因。
答案 0 :(得分:3)
虽然@ nemo的答案可能就是这样,但这就是我所做的:我从.git
下载的存储库中删除了.gitignore
和go get
个文件。我的源路径位于源目录中:GOPATH=.../myproject/src/go/
。这样所有go get
下载都在我的项目树中,我可以用git处理它。
我认为这就是“goven”(参见我对我的问题的评论)本应该做的,但我无法让它发挥作用。
答案 1 :(得分:2)
如果你想存储你使用的外国包的修订版,那么最好是
go import远程语法会支持像github.com/user/project/sub/directory/revision
这样的东西,不幸的是它。 golang-nuts邮件列表中有关于这个主题的discussion,请查看可能的解决方案和警告。
执行此操作的最简单方法可能是分叉您使用的项目并导入您的分支,这样您就可以完全控制更新。像github这样的平台让它变得非常容易。
来自go help remote
:
新下载的包将写入第一个目录 列在GOPATH环境变量中(参见'go help gopath')。
因此您提出的子模块解决方案是可行的,但不易使用,因为您必须在获取时指定自定义GOPATH。我建议分叉库并引用fork。