我想知道在从控制台执行svn
操作时是否有办法保存我的Subversion密码。控制台是我唯一的选择。当我尝试执行任何Subversion操作时,例如svn commit
,它每次都会提示输入帐户密码。有没有办法以某种方式保存此密码,以便我不必每次都重新键入它?
在~/.subversion/config
,你可能有store-passwords = no
。将它更改为yes
(或者只是将其注释掉,因为它默认为yes),并且下次你给Subversion你的密码它应该保存它。
您可能希望确保~/.subversion/config
的所有者和权限正确(没有公共或组访问权限; 600)。
不幸的是,答案并没有解决使用受保护的私钥为ssh + svn索取密码的问题。经过一些研究后我发现:
ssh-add
如果您有Linux计算机,请使用实用程序确保将密钥存储在/home/username/.ssh/
中并在终端上键入此命令。
我在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。
这取决于您使用的协议。如果您使用的是SVN + SSH,则SVN客户端无法保存您的密码,因为它永远不会触及它 - SSH客户端会直接提示您输入密码。在这种情况下,您可以使用SSH密钥和ssh-agent来避免持续提示。如果您正在使用svnserve协议或HTTP(S),则SSH客户端正在处理您的密码并可以保存它。
尝试清除主目录中的.subversion
文件夹并尝试再次提交。它应该提示您输入密码,然后询问您是否要保存密码。
我不得不编辑~/.subversion/servers
。我设置了store-plaintext-passwords = yes
(之前没有)。这就是诀窍。但它可能被认为是不安全的。
请注意~/.subversion/servers
文件中的以下段落:
现在可以在config目录的“servers”文件中指定“store-passwords”和“store-auth-creds”。本节中指定的任何内容都将被“servers”文件中指定的设置覆盖。
它至少对于SVN版本1.6.12。因此,请记住编辑服务器文件,因为它会覆盖~/.subversion/config
。
如果使用svn + ssh,则可以将公共ssh密钥复制到远程计算机:
ssh-copy-id user@remotehost
对我来说(Mac用户)问题是钥匙串已经为我的凭据存储了一个条目,但是访问权限不对。
删除密钥链应用程序中的条目,然后使用svn重新创建它修复了该问题。
如果密码被用作其他东西,使用明文可能不是最佳选择。
我支持接受的答案,但它对我不起作用 - 出于一个非常具体的原因:我想使用kwallet
或gnome-keyring
密码存储。我尝试更改四个文件的设置:
/etc/subversion/config
/etc/subversion/servers
~/.subversion/config
~/.subversion/servers
即使在全部设置相同之后,使用password-stores
和KWallet名称(默认可能是错误的,对吧?)它不起作用并且一直要求密码。 ~/.subversion
中的文件具有权限600。
那么,在那一点上,你可以尝试检查一件简单的事情:
which svn
如果你得到:
/usr/bin/local/svn
然后你可能会怀疑这个客户端很可能是由你的管理员(可能是你自己,在我的情况下)本地的源代码构建的。
Subversion是一个讨厌的野兽编译,非常容易在没有HTTP支持的情况下意外构建,或者 - 如我的例子 - 不支持加密密码存储(你需要Gnome或KDE开发文件,以及其中很多!)。但./configure
脚本不会告诉你,你只是得到一个功能较少的svn
命令。
在这种情况下,您可以回到您的发行版附带的客户端,通常是在/usr/bin/svn
。缺点是 - 你可能需要重新检查工作副本,因为没有svn downgrade
命令。无论如何,你可以咨询Linus Torvalds关于Subversion的想法;)
在全新安装的Ubuntu上,这些精彩的答案都不适合我。相反,来自this回答的线索为我做了诀窍。
我必须通过在~/.subversion/config
中设置为空来允许“简单”密码存储:
password-stores =
没有现有设置,因此空白很重要。
这是除了:
store-passwords = yes
在~/.subversion/servers
。