有没有办法在Git::Repository
使用密码?我已经尝试将密码添加到run()
- 函数($repository->run('pull', $git_pw);
)中的参数,其中似乎有效,但不起作用并给我一个警告
fatal: '[PASSWORD]' does not appear to be a git repository
fatal: The remote end hung up unexpectedly at ./list_commits.pl line 33
我似乎无法在Documentation
中找到任何有用的内容答案 0 :(得分:3)
您正在进入模仿用户互动的领域,我总是回避这一点。 :-) 毕竟,关于git的好处是它也应该与程序交谈。
无论如何,为了解决你的问题,我会尝试这样做:
$repository->run( 'pull', { input => "$git_pw\n" } );
但它很可能会失败,例如因为密码会过早发送。 如果只是为了更新文档,我对您的尝试结果感兴趣。 (我是Git :: Repository的作者。)
完全不同的解决方案将涉及公钥和ssh-agent
,并且无需输入密码。
答案 1 :(得分:0)
您可以将ssh
程序git使用设置GIT_SSH
替换为不要求密码的程序。
使用Net::OpenSSH很容易通过SSH连接到远程主机,然后使用脚本通过该连接运行git
远程命令。
我在Net::OpenSSH
发行版中添加了一个示例脚本,其中显示了如何使用原始git
执行此操作。调整它以便与Git::Repository
一起使用应该非常简单。
示例程序为here,而从属ssh程序为here(需要从$PATH
访问)。
更新:在任何情况下,请注意,如果可以,您应该使用公钥验证,而不是密码验证。