问题:今天在Linux机器上安装了SVN,作为客户端使用,首次执行SVN相关操作,输入账号密码信息后,后面再执行SVN相关操作(比如"svn update")还是每次都需要输入密码。
回想以前在首次输入账号密码后都还会弹一个类似是否记住密码的选项,这次也没有了。对比了下版本,以前用的版本是1.10.2版本,当前系统默认安装的是1.13.0版本,于是到官网查了相关资料,最终发现官方文档(链接:Apache Subversion 1.12 Release Notes)有提到:
从1.12版本开始,默认情况下禁用客户端明文密码存储了。
虽然如果把版本手动安装回1.12版本以前其实就可以了,但我还是想先试试把“默认情况下禁用客户端明文密码存储”手动修改为“打开明文密码存储”,毕竟人还是需要往前看,SVN新版本一直在迭代,总不能以后一直用老版本吧。
通过“svn auth”对比我前后安装的两个版本可以看出,更早版本(1.10.2)的输出的密码缓存方式为:“Password cache: simple”,最近版本(1.13.0)输出的为:“Password cache: gpg-agent”。
我查看了下“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”文件,"1.13.0"版本的文件内容为:
K 8
passtype
V 9
gpg-agent
K 15
svn:realmstring
V 63
<svn://xxx.xx.xx.xxx:3690> 7cd5695d-cf1b-4713-b810-aae05645121b
K 8
username
V 4
test
END
"1.10.2"版本的文件内容为:
K 8
passtype
V 6
simple
K 8
password
V 12
testPassword
K 15
svn:realmstring
V 63
<svn://xxx.xx.xx.xxx:3690> 8073fbc3-e331-4fcb-bade-84c2faefd342
K 8
username
V 4
test
END
SVN客户端首次登入时会把登入相关信息记录在“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”里,从上面我标出的蓝色字体可以看出来两个版本的区别。在“1.10.2”版本中“passtype”为“simple”意味着就是“明文密码存储”方式,因为在它下面就存放这密码(“K 8 password V12 testPassword”)信息。
只需要把“1.13.0”版本中“passtype”相关信息修正为和“1.10.2”版本的一样即可。
这个文件“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”内容的语法规则很简单,里面的“K”或者“V”变量后跟着的数字代表着下一行字符串值的字符个数,了解这个后就可进行修改了。
比如我就把我的“1.13.0”版本“~/.subversion/auth/svn.simple/xxxxxxxxxxxxx”文件修改内容修改如下后就相当于把密码缓存方式改成了“明文存储”了:
K 8
passtype
V 6
simple
K 8
password
V 12
testPassword
K 15
svn:realmstring
V 63
<svn://xxx.xx.xx.xxx:3690> 7cd5695d-cf1b-4713-b810-aae05645121b
K 8
username
V 4
test
END
上面红色字体部分就是我修改的了。修改完了后,保存退出,再执行SVN相关操作(比如“svn update”)就不再需要输入密码了。
注意:上面红色字体部分的“V 12 testPassword”是我这边的svn账号“test”的密码(“testPassword”字符串长度为12个字符,所以“V”后面的数组我填的是“12”),有同样需求的,需要把密码修改为对应账号的密码。