我从git @ ... URL添加一个子模块,以便能够在其中进行开发。现在我想部署应用程序并用git:// ...替换URL,因此它不需要对来自Capistrano的子模块的repo进行身份验证。是否完全在.gitmodules中编辑URL来完成此操作?
答案 0 :(得分:52)
编辑.gitmodules
文件(然后提交并推送)将适用于任何新克隆。
此外,当初始化子模块(例如git submodule init …
,git submodule update --init …
或git clone --recursive …
等)时,其URL将从.gitmodules
文件复制到存储库{ {1}}档案。
因此,如果您有任何现有的“部署克隆”(您现在想要通过.git/config
网址访问子模块的那些),您还必须更新其中的网址git://…
。您可以使用.git/config
自动将子模块URL从当前git submodule sync
文件复制到.gitmodules
文件(即,一旦您提取了更新.git/config
文件的提交)。
.gitmodules
中的子模块URL通常不会自动更新,因为在某些情况下您只想覆盖URL。具体来说,您通常希望在存储库的.git/config
中使用git@…
网址(以便您可以推送SSH),但将.git/config
网址放在git://…
中(以便一般public不需要进行基于SSH的身份验证。)
答案 1 :(得分:0)
我遇到了类似的问题,在谷歌搜索之后,我偶然发现了这篇文章:Relative URL for Git submodule。我发现这是一个很好的做法,因为无论谁检查它都不需要手动更改mBinding.includeLayoutDrawer.home.setOnClickListener(view -> {
if (getFragment() instanceof HomeFragment) {
//already has
} else {
Utils.replaceFragmentInActivity(getSupportFragmentManager(),
HomeFragment.newInstance(),
R.id.contentFrame, false);
}
closeDrawer();
});
mBinding.includeLayoutDrawer.myProfile.setOnClickListener(view -> {
mBinding.includeLayoutDrawer.menu.setVisibility(View.GONE);
mBinding.includeLayoutDrawer.subMenu.setVisibility(View.VISIBLE);
});
mBinding.includeLayoutDrawer.back.setOnClickListener(view -> {
mBinding.includeLayoutDrawer.menu.setVisibility(View.VISIBLE);
mBinding.includeLayoutDrawer.subMenu.setVisibility(View.GONE);
});
文件。它也可能适用于您的情况。