在Git :: Repository中使用密码

时间:2013-09-03 07:34:56

标签: git perl authentication

有没有办法在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

中找到任何有用的内容

2 个答案:

答案 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访问)。

更新:在任何情况下,请注意,如果可以,您应该使用公钥验证,而不是密码验证。