如何从控制台使用Subversion时保存密码
我想知道在从控制台执行svn
操作时是否有保存Subversion密码的方法。 控制台是我唯一的select。 当我尝试执行任何Subversion操作时,例如svn commit
,它会每次提示input帐户密码。 有没有办法以某种方式保存这个密码,以便我不必每次都重新input密码?
在~/.subversion/config
,你可能有store-passwords = no
。 将其更改为yes
(或只是将其注释掉,因为它默认为yes),下一次给Subversion的密码时应该保存它。
您可能要确保~/.subversion/config
的所有者和权限是正确的(没有公共或组访问; 600)。
这取决于你使用的协议。 如果您使用的是SVN + SSH,SVN客户端无法保存您的密码,因为它永远不会触及它 – SSH客户端会直接提示您。 在这种情况下,您可以使用SSH密钥和ssh-agent来避免常量提示。 如果您使用的是svnserve协议或HTTP(S),则SSH客户端正在处理您的密码并可以保存它。
尝试清除您的主目录中的.subversion
文件夹,然后尝试再次提交。 它应该提示您input密码,然后询问您是否要保存密码。
我不得不编辑~/.subversion/servers
。 我设置了store-plaintext-passwords = yes
(以前没有)。 那就是诀窍。 这可能被认为是不安全的。
请注意~/.subversion/servers
文件中的以下段落:
'store-passwords'和'store-auth-creds'现在都可以在config目录下的'servers'文件中指定。 本节中指定的任何内容都将被“服务器”文件中指定的设置覆盖。
至lessSVN版本是1.6.12。 所以请记住编辑服务器文件,因为它覆盖~/.subversion/config
。
如果您使用svn + ssh ,则可以将公用ssh密钥复制到远程机器上:
ssh-copy-id user@remotehost
使用明文可能不是最好的select,如果密码曾被用作别的东西。
我支持接受的答案,但对我来说这并不起作用 – 出于一个非常具体的原因:我想使用kwallet
或gnome-keyring
密码存储。 我试着改变设置,遍布四个文件:
/etc/subversion/config /etc/subversion/servers ~/.subversion/config ~/.subversion/servers
即使它被设置为一样的,用password-stores
和KWallet的名字(默认可能是错的,对不对?)它没有工作,并一直要求密码永远。 ~/.subversion
的文件的权限为600。
那么,在这一点上,你可能会试图检查一件简单的事情:
which svn
如果你得到:
/usr/bin/local/svn
那么你可能很有可能怀疑这个客户端是由你的pipe理员(可能是你自己,就像我的情况一样)在本地从本地创build的。
Subversion是一个讨厌的野兽编译 ,很容易意外地没有HTTP支持,或者 – 如我的例子 – 不支持encryption的密码存储(你需要Gnome或KDE开发文件,其中很多!)。 但./configure
脚本不会告诉你,你只是得到一个function较less的svn
命令。
在这种情况下,您可以返回到您的发行版随附的客户端,通常位于/usr/bin/svn
。 缺点是 – 您可能需要重新签出工作副本,因为没有svn downgrade
命令。 无论如何,你可以咨询Linus Torvalds关于Subversion的思考;)
不幸的是,答案并没有解决使用受保护的私钥为ssh + svn请求密码的问题。 经过一番研究,我发现:
ssh-add
实用程序,如果你有一台Linux电脑。 确保您的密钥存储在/home/username/.ssh/
并在terminal上键入此命令。
我在Windows上使用TortoiseSVN客户端,并且在%USERPROFILE%\ AppData \ Roaming \ Subversion \ config中将store-passwords参数设置为yes,并不能帮助存储密码。
删除此文件夹后,密码已成功保存(以防重命名):
%USERPROFILE%\AppData\Roaming\Subversion\auth
环境:
Windows 7,TortoiseSVN 1.7.11(Build 23600 – 64 bit,2012-12-12T19:08:52),Subversion 1.7.8。