假设我有一个名为
当我在
我希望在开发期间,
Common
的库,可以独立使用,并被项目 P1
和 P2
使用,所以我想要的目录树应该是这样的:/Common/.git
...
/P1/.git
.gitmodules # points to remote server
Common/
...
/P2/.git
.gitmodules # points to remote server
Common/
...
当我在
/Common
中进行更改时,我希望能够在提交之前使用P1
和P2
进行测试。使用通常的git submodule
命令集,我必须从/Common
提交,推送到远程,然后从/P1/Common
和/P2/Common
拉取。如果提交出现问题,则无法进行修改,因为坏的更改已经发布。或者,我可以从/P?/Common
中使用git remote add quicktest /Common
进行添加,以便能够在不触及远程服务器的情况下进行拉取。但这会有很多不一致的机会,而且将坏的提交从/P?/Common
剥离以便在/Common
中进行修改是不好的。我希望在开发期间,
P1
和P2
都使用/Common
的工作树,但我不能将/P1/Common
设置为/Common
的符号链接,因为git submodule
将符号链接识别为与目录不同的东西。大多数文件系统不允许对目录进行硬链接。我可以使用以下方式来硬链接所有文件:rm -rf /P1/Common
cp -rl /Common /P1/Common
这个方法在/Common
目录下添加新文件时就无法正常工作了,需要重复执行这个过程。是否有更好的方法既能让最终用户保持使用git clone --recursive git://remote/P1.git
,又能让我轻松测试/Common
目录中对P1
和P2
的更改是否有效呢?
- 如何保证最终用户能够继续使用
git clone --recursive git://remote/P1.git
; - 如何让我方便地测试
/Common
目录中对P1
和P2
的更改是否有效?