6

这可能很糟糕,我不确定。

假设我们有一个带有工作目录的仓库“产品”

/product
/product/command.script
/product/config/ (bare git 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 '*:*'

或者这是应该通过某种钩子处理的东西?

4

1 回答 1

4

否:当获取 repo “产品”时,其索引将包含一个gitlink(记录子模块 SHA1 的特殊条目)

该条目只能在非裸仓库中使用,以便作为嵌套(子模块)仓库使用。

这就是git clone手册页提到的原因:

--recursive
--recurse-submodules

创建克隆后,使用默认设置初始化其中的所有子模块。这相当于git submodule update --init --recursive克隆完成后立即运行。
如果克隆的存储库没有工作树/签出,则忽略此选项(即,如果给出了--no-checkout/-n--bare--mirror中的任何一个)


这意味着最好config在正确的 SHA1(第一个 repo 中由 gitlink 记录的那个)上单独克隆 repo(甚至是裸露的product),并git show BRANCH1:config.json在另一个克隆的 repo(withgit -C)中执行。

于 2014-08-28T06:05:48.317 回答