2

有没有办法使用密码Git::Repository?我尝试将密码添加到run()-Function ( $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

我似乎在文档中找不到任何有用的东西

4

2 回答 2

3

你正在进入模拟用户交互的领域,我总是回避这个领域。:-) 毕竟,git 的好处是它也应该与程序对话。

无论如何,为了解决您的问题,我会尝试这样做:

$repository->run( 'pull', { input => "$git_pw\n" } );

但它很可能会失败,例如因为密码发送得太早。我对您尝试的结果感兴趣,即使只是为了更新文档。(我是 Git::Repository 的作者。)

一个完全不同的解决方案将涉及公钥和ssh-agent,并且无需键入密码。

于 2013-09-03T12:03:37.287 回答
0

您可以将ssh程序 git 使用设置替换为GIT_SSH不要求输入密码的程序。

使用Net::OpenSSH很容易通过 SSH 连接到远程主机,然后使用脚本git通过该连接运行远程命令。

我在Net::OpenSSH分发中包含了一个示例脚本,该脚本显示了如何使用 raw 执行此操作git。适应它来使用Git::Repository应该很容易。

示例程序在此处,从属 ssh 程序在此处(需要可从此处访问$PATH)。

更新:无论如何,请注意,如果可以的话,您应该使用公钥身份验证,而不是密码身份验证。

于 2013-09-04T08:42:20.703 回答