我有一个项目,包括一个库和各种应用程序:
foo/
foolib/
bar/
baz/
qux/foo/
所有应用程序都链接到一个静态库foulib。
我希望git commit on foo记录foolib所在位置的sha1 id,如果fooib中有未提交的更改,还希望git status on foo报告。
但是,我不想将foolib移动到将其副本作为每个应用程序的子目录。除了臃肿之外,这将失去在多个应用程序中尝试对foulib进行某些更改而不提交更改的能力。
我试着创建一个指向../foolib的.gitmodules文件,但它似乎被git status完全忽略了。我还尝试在foo中使foolib成为一个软链接,但是git似乎把这个软链接当作一个文件,而不是跟踪链接。
我想要的是可能的,还是你有其他的工作流解决方案?
在我的公共存储库中,结构是相同的,每个应用程序(和foolib)都是从公共库中单独克隆的。
最佳答案
我们的想法是创建另一个repofooProject
,它将声明为子模块:foo
foolib
(如果调用父项目而不是父项目,则可以将所有子目录声明为子模块:appProjects
,fooProject
,foo
,foolib
,bar
,baz
,…)
如果任何子目录(foo
或foolib
)发生更改并进行新的提交,则返回父repo并进行提交,以便记录不同子模块的sha1。