如何对git子模块使用相同的协议?

问题描述 投票:2回答:2

在git仓库R中,我有一个用以下命令初始化的子模块:

git submodule add git@mygitserver...

现在,用户刚刚使用https克隆了R并在运行时出现错误

git submodule init
git submodule update

因为他没有ssh(在服务器上上传了公共密钥)访问权限。所以我的问题是,是否有可能创建一个子模块,该子模块将自动使用与用于克隆git submodule update命令上的父存储库的协议相同的协议?

git git-submodules
2个回答
4
投票
该用户可以设置配置:

git config --global url.https://mygitserver/.insteadOf ssh://git@mygitserver/ # or possibly (to be tested) git config --global url.https://mygitserver/.insteadOf git@mygitserver/

这样,https url将始终用于mygitserver(主存储库或子模块),而不是ssh。

0
投票
[我还没有详细测试(仅在某些情况下),但是,如果您的.gitmodules文件使用相对url,并且如果回购协议总是通过“完整url”克隆的,那么事情应该可以进行:

.gitmodules

[submodule "same_users"] path = same_users url = ../something.git [submodule "other_user"] path = same_users url = ../../different-user/something.git # Maybe even this? [submodule "other_server"] path = same_users url = //[email protected]/joe_r_user/hacks.git

克隆:

git clone ssh://[email protected]/user/repo.git ./ssh cd ssh git submodule update --init --recursive

但是,如果用户选择clone [email protected]:user/repo.git(注意:),则update将不起作用。
© www.soinside.com 2019 - 2024. All rights reserved.