2012-11-06 61 views
5

我有由图书馆和各种应用的项目:Git子模块功能与兄弟?

foo/ 
foolib/ 
bar/ 
baz/ 
qux/foo/ 

所有的应用程序对foolib,静态链接库。

我想git的承诺FOO记录的地方foolib是在SHA1 ID,并且还对git的状态报告是否有foolib提交的更改。

但是,我不想移动foolib将其副本作为每个应用程序的子目录。除了臃肿之外,这将失去在多个应用程序中尝试对某些更改进行一些更改而无需执行更改的能力。

我已经尝试制作一个.gitmodules文件,指向../foolib,但似乎完全忽略了git status。我也尝试制作foolibfoo内的软链接,但git似乎将软链接视为文件而不是链接。

是我想要的吗?还是您有其他工作流程解决方案?

在我的公共存储库上,结构是一样的,并且每个应用程序(和foolib)都已经从公共中单独克隆。

回答

1

的想法是创建另一个回购fooProject,这将声明为子模块

  • foo
  • foolib

(如果你打电话给你父项目appProjects代替fooProject,你可以声明为子模块的所有子目录:foofoolibbarbaz ...)

如果任何子目录(foofoolib)的变化,使一个新的提交,你回去父回购,并承诺为好,以记录不同子模块的SHA1。