6

我为我的软件使用版本控制系统git。而“在”源代码中,我go get用来自动从 github 获取软件。我该如何处理“双重混帐”的情况?

当我git add在目录上运行时src/github.com/somename/someproject,它本身就是一个 git 存储库,这会添加什么吗?(当我跑步时它看起来不像这样git status

我应该使用git submodule添加的git get子目录吗?

在这种情况下,最佳做法是什么?


编辑:我的$GOPATH软件项目确实有一个自定义环境。这就是为什么src/github.com/somename/someproject在我的软件目录层次结构中找到该目录的原因。

4

2 回答 2

3

虽然@nemo 的答案可能是要走的路,但这就是我所做的:我从下载的存储库中删除了.gitand.gitignore文件。go get我拥有的源路径在我的源目录中:GOPATH=.../myproject/src/go/. 这样所有go get下载都在我的项目树中,我可以用 git 处理它。

我认为这是“政府”(见我对我的问题的评论)应该做的,但我无法让它发挥作用。

于 2013-02-05T10:26:52.530 回答
2

如果你想存储你使用的外部包的修订版本,最好 go import remote 语法支持类似的东西github.com/user/project/sub/directory/revision,不幸的是它不支持。在 golang-nuts 邮件列表上有一个关于这个主题的讨论,查看它以获取可能的解决方案和警告

最简单的方法可能是分叉您使用的项目并导入您的分叉,这样您就可以完全控制更新。像 github 这样的平台让这样做变得非常容易。

来自go help remote

新下载的包被写入 GOPATH 环境变量中列出的第一个目录(参见“go help gopath”)。

因此,您提出的子模块解决方案是可能的,但并不容易使用,因为您必须在获取时指定自定义 GOPATH。我建议分叉图书馆并引用叉子。

于 2013-02-04T14:18:24.077 回答