git 如何最好地设置凭据来克隆具有子模块的存储库?

bbmckpt7  于 2023-09-29  发布在  Git
关注(0)|答案(1)|浏览(113)

我试图使用Ansible将一个包含子模块的存储库克隆到Windows机器上。以前我们用这样的东西克隆它:

git clone https://[username]:[password]@myServer.com/bitbucket/scm/[project]/[repo].git

在我们开始向这个repo添加子模块并使用和git clone --recurse-submodules之前,这一直工作得很好。现在,一旦它进入子模块,它就会抛出登录会话不存在的错误,我相信这是因为凭证只通过父存储库URL传递了一次,并且实际上没有在git config中配置。
所以我尝试了几种不同的方法来解决这个问题:
1.使用ansible.builtin.git模块
事实证明,Windows机器不支持此模块(尽管the documentation中没有提到)。
1.使用Windows凭据管理器设置凭据。
这导致了各种问题,最终是因为community.windows.win_credential必须与become: true一起运行,而帐户没有SeAllowLogonLocally(这非常奇怪,因为帐户在本地Administrators组中,而该组在本地安全策略中具有Allow log on locally权限)。
1.使用git config设置凭据。
我尝试使用这些命令:

git config --global credential.https://myServer.com.username {{ username }}
git config --global credential.https://myServer.com.password {{ password }}

我登录并验证了该站点的用户名/密码已在~\.gitconfig中配置,但我仍然收到以下错误:
fatal:指定的登录会话不存在。它可能已经被终止了git:credential-winscred不是git命令。见“git --help”。
fatal:could not read Password for 'https://[username]@ myServer.com':No such file or directory
我觉得我在每一个转折点都遇到了新的问题。那么,你们中有谁能够成功地克隆一个带有子模块的仓库吗?我该怎么做?

bxgwgixi

bxgwgixi1#

感谢this answer帮助我找到解决方案:

git config --global credential.helper store
git clone --recurse-submodules https://[username]:[password]@myServer.com/bitbucket/scm/[project]/[repo].git

将凭证助手设置为store保存了初始克隆中的凭证,它们可以用于拉入子模块。

相关问题