这可能很糟糕,我不确定。
让我们说我们有一个带有工作目录的回购“产品”
/product
/product/command.script
/product/config/ (bare git repo)
带有工作目录的repo“config”
/config
/config/config.json
command.script文件具有与裸仓库交互的操作。恩。运行command.script BRANCH1将运行命令
git show BRANCH1:config.json
“/ product / config /”文件夹是否可以作为“product”repo的子模块,这样当克隆“product”repo时,也会克隆“config”repo
git clone --bare [config origin here] config
从其来源和获取“产品”仓库时,可以获取“/ product / config”子模块
git fetch origin '*:*'
或者这是应该通过某种钩子处理的东西吗?
答案 0 :(得分:3)
否:当提取回购“产品”时,其索引将包含gitlink (special entry recording the SHA1 of the submodule)。
该条目只能在非裸存储库中使用,以便作为嵌套(子模块)存储库使用。
这就是git clone
man page提到的原因:
--recursive
--recurse-submodules
创建克隆后,使用其默认设置初始化其中的所有子模块。这相当于在克隆完成后立即运行
git submodule update --init --recursive
如果克隆的存储库没有工作树/结帐(即,如果给出--no-checkout/-n
,--bare
或--mirror
中的任何一个),则忽略此选项
这意味着最好将config
repo单独克隆(甚至裸露)到正确的SHA1(第一个product
repo中由gitlink记录的那个),以及{ {1}}在其他克隆仓库(with git -C
)中执行。