我试图使用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
我觉得我在每一个转折点都遇到了新的问题。那么,你们中有谁能够成功地克隆一个带有子模块的仓库吗?我该怎么做?
1条答案
按热度按时间bxgwgixi1#
感谢this answer帮助我找到解决方案:
将凭证助手设置为
store
保存了初始克隆中的凭证,它们可以用于拉入子模块。