在另一个git仓库中进行版本控制git仓库

3
我正在开发一款与git仓库配合使用的小型软件,并希望能够编写一些测试。为此,我在项目中创建了一个名为test-repo的文件夹,它本身是一个git仓库。在我的测试中,我引用该仓库以确保针对已知状态的仓库运行命令。
我的问题是:我可以将嵌套的仓库作为项目主仓库的一部分进行版本控制吗?请注意,这与子模块解决的问题并不完全相同:嵌套的仓库实际上是封闭项目的一部分,而不是外部引用的软件组件。

为什么不在运行测试之前使用脚本构建测试存储库? - tewe
@tewe 我可以这样做,但是这会有点痛苦,因为我需要重放文件的版本。保留存储库更快、更简单。 - insitu
@DanielHilgarth 我尝试使用 -f 强制标志添加 .git 目录。我不想要子模块,因为这并不是外部存储库的真正用例。当然,我可以这样做,但这意味着要跟踪两个仓库,其中一个仅用于测试目的而非常小。这不实际,也违背了版本控制的目的。 - insitu
2个回答

3
我认为问题在于git会检测自己的.git文件,并且不允许使用它们。但是,如果你将测试repo的.git文件夹重命名为其他名称,例如_git,那么它就可以工作了。您需要做的唯一一件事是在测试中使用GIT_DIR变量或--git-dir命令行参数来指定文件夹。

问题是我正在使用一个隐藏此信息的第三方库(--git-dir是一个需要作为选项传递给git本身而不是命令的标志)。但这给了我一个想法:将目录重命名为提交,然后在测试之前再将其重命名回去。但无论如何都很繁琐。我想尝试钩入底层库并设置git-dir。 - insitu
@insitu GIT_DIR 环境变量也不可用吗? - kan
抱歉耽搁了。这可能是一个解决方案,但这也意味着要对我正在使用的库进行黑客攻击。似乎更简单的方法是一次性进行黑客攻击,以便能够提供到存储库的路径。 - insitu

0

尽管它不是一个“外部引用的软件”,子模块仍然是一个好方法,因为它有助于捕获已知存储库的状态。

我更愿意将repotest-repo都放在父级repo "project"中:

project
  repo
  rest-repo

这样,我就可以记录下 repotest-repo 的确切 SHA1。


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