Git Submodules equivalent for url.insteadof



我有一个几个git存储库,所有这些都有一个或多个子模块,并且两者都是corporate lan/https url(因此只能从Corp LAN访问(。

(。

从外部/公共网络中,SSH对存储库的访问是可能的,我可以通过全局.gitConfig url.insteadof重定向来减轻切换主要存储库的URL,但是该规则似乎并没有应用于子模型(也是HTTPS URL(。

除了调整每个存储库的.git/config文件之外,还有其他方法...即我可以在Global .gitConfig中设置的东西吗?

我找不到使用git配置的方法,而是用野蛮的力量进行:

# test step, replace the "url = https://github.com/" manually
# verify the desired effect
# note the comma in sed command, it's unusual and valid
sed 's,https://github.com/,git@github.com:,g' .git/modules/*/config | grep url
# -i to modify the files
sed -i 's,https://github.com/,git@github.com:,g' .git/modules/*/config

来自父存储库。

或与 @torek的--global一起去,如果影响全局配置不是问题:

git config --global url."git@github.com:".insteadOf "https://github.com/"
# or 
git config --global url."https://github".insteadOf git://github
# for reverse

如果您对更改全局配置不满意,则可能需要分别配置每个子模块,因为每个subpodule都是其自己的存储库。

幸运的是git提供git submodule foreach命令,

在每个检查的子模块中评估任意外壳命令。

重要的是,它确实发生在每个检查的子模块中。意味着在运行git submodule update之前,一些子模块将被忽略。

so

$ git config --local url."git@github.com:".insteadOf "https://github.com/"
$ git submodule foreach --recursive 
    'git config --local url."git@github.com:".insteadOf "https://github.com/"'

应该为主要存储库,其子模型和子模型的子模型掌握。

相关内容

  • 没有找到相关文章

最新更新