我想知道在从控制台执行svn
操作时是否有办法保存我的Subversion密码。控制台是我唯一的选择。当我尝试执行任何Subversion操作时,例如svn commit
,每次都会提示输入帐户密码。有没有办法以某种方式保存此密码,以便我不必每次都重新键入它?
答案 0 :(得分:99)
在~/.subversion/config
中,您可能有store-passwords = no
。将其更改为yes
(或只是将其注释掉,因为它默认为“是”),并且下次向Subversion提供密码时,应将其保存。
您可能希望确保~/.subversion/config
的所有者和权限正确(无公开或群组访问权限; 600)。
答案 1 :(得分:51)
这取决于您使用的协议。如果您使用的是SVN + SSH,则SVN客户端无法保存您的密码,因为它永远不会触及它 - SSH客户端会直接提示您输入密码。在这种情况下,您可以使用SSH密钥和ssh-agent来避免持续提示。如果您使用的是svnserve协议或HTTP(S),则SSH客户端正在处理您的密码并可以保存它。
答案 2 :(得分:33)
尝试清除主目录中的.subversion
文件夹,然后尝试再次提交。它应该提示您输入密码,然后询问您是否要保存密码。
答案 3 :(得分:15)
我必须编辑~/.subversion/servers
。我设置store-plaintext-passwords = yes
(之前没有)。这就是诀窍。但它可能被认为是不安全的。
答案 4 :(得分:7)
请注意~/.subversion/servers
文件中的以下段落:
现在可以使用'store-passwords'和'store-auth-creds' 在config目录的'servers'文件中指定。 本节中指定的任何内容都会被设置覆盖 在'servers'文件中指定。
至少对于SVN版本1.6.12。因此,请记住编辑服务器文件,因为它会覆盖~/.subversion/config
。
答案 5 :(得分:6)
如果您使用 svn + ssh ,则可以将公共ssh密钥复制到远程计算机:
ssh-copy-id user@remotehost
答案 6 :(得分:4)
对我来说(Mac用户)问题是钥匙串已经为我的凭据存储了一个条目,但是访问权限不对。
删除密钥链应用中的条目,然后使用svn重新创建该条目修复了该问题。
答案 7 :(得分:3)
如果密码被用作别的东西,使用明文可能不是最好的选择。
我支持已接受的答案,但它并不适用于我 - 原因非常具体:我想使用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的内容;)
答案 8 :(得分:3)
仅需强调Tomasz Gandor和Domain关于拥有正确版本的svn的说法,并对其进行编译以启用纯文本密码存储,您需要验证您拥有的内容:
svn --version
svn, version 1.9.7 (r1800392)
...
WARNING: Plaintext password storage is enabled!
...
The following authentication credential caches are available:
* Plaintext cache in /gr/home/ffvdqb/.subversion
* GPG-Agent
对:
svn --version
svn, version 1.12.2 (r1863366)
...
The following authentication credential caches are available:
* Gnome Keyring
* GPG-Agent
* KWallet (KDE)
一旦看到您的svn版本已启用纯文本密码存储,然后在此处应用所有其余答案。
答案 9 :(得分:2)
要添加到希思的答案中:如果Subversion 1.6无法以加密形式存储密码,则默认情况下它已禁用存储密码。通过在// THIS IS JUST A SIMPLIFIED EXAMPLE.
let date = new Date(01/01/2019 00:00:00)
let finalDate = new Date()
finalDate.setDate(date.getDate() + 10)
console.log(finalDate)
中显式设置Desired output:
11/01/2019 00:00:00
Actual output:
31/08/2019 13:06:30
(即为空值),可以允许存储未加密的密码。
要检查使用哪个密码存储库版本,请查看password-stores =
。它包含几个文件,每个文件都有一个简单的键/值编码的哈希表。每个文件中的~/.subversion/config
标识该文件用于哪个领域。如果文件有
~/.subversion/auth/svn.simple
然后将密码以纯文本格式存储在该文件中svn:realmstring
条目中的某个位置。否则,它将尝试使用已配置的K 8
passtype
V 6
simple
之一。
答案 10 :(得分:1)
不幸的是,答案并没有解决使用受保护的私钥为ssh + svn索取密码的问题。经过一些研究后我发现:
ssh-add
实用程序,如果您有Linux计算机。确保将密钥存储在/home/username/.ssh/
中,并在终端上输入此命令。
答案 11 :(得分:1)
这些绝妙的答案中没有一个对我而言是全新安装的Ubuntu。取而代之的是,this答案中的一条线索对我有用。
我必须通过在~/.subversion/config
中将其设置为空来允许“简单”密码存储:
password-stores =
没有现有设置,因此为空很重要。
这是对以下内容的补充:
store-passwords = yes
在~/.subversion/servers
中。
答案 12 :(得分:1)
这里提到的所有方法都不适合我。我从源代码构建了Subversion,但发现必须使用--enable-plaintext-password-storage
运行configure才能支持此功能。
答案 13 :(得分:0)
我正在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。