许多服务器配置为在每次请求时要求认证,这对一次次输入用户名和密码的用户来说是非常恼人的事情。
令人高兴的是,Subversion客户端对此有一个修补:存在一个在磁盘上保存认证凭证缓存的系统,缺省情况下,当一个命令行客户端成功的在服务器上得到认证,它会保存一个认证文件到用户的私有运行配置区—类Unix系统下会在~/.subversion/auth/
,Windows下在%APPDATA%/Subversion/auth/
(运行区在“运行配置区”一节会有更多细节描述)。成功的凭证会缓存在磁盘,以主机名、端口和认证域的组合作为唯一性区别。
当客户端接收到一个认证请求,它会首先查找磁盘中的认证凭证缓存,如果没有发现,或者是缓存的凭证认证失败,客户端会提示用户需要这些信息。
十分关心安全的人们一定会想“把密码缓存在磁盘?太可怕了,永远不要这样做!”但是请保持冷静,首先,auth/
是访问保护的,只有用户(拥有者)可以读取这些数据,不是整个世界,如果这对你还不够安全,你可以关闭凭证缓存,只需要一个简单的命令,使用参数--no-auth-cache
:
$ svn commit -F log_msg.txt --no-auth-cache
Authentication realm: <svn://host.example.com:3690> example realm
Username: joe
Password for 'joe':
Adding newfile
Transmitting file data .
Committed revision 2324.
# password was not cached, so a second commit still prompts us
$ svn delete newfile
$ svn commit -F new_msg.txt
Authentication realm: <svn://host.example.com:3690> example realm
Username: joe
[...]
或许,你希望永远关闭凭证缓存,你可以编辑你的运行配置
文件(坐落在auth/
目录),只需要把store-auth-creds
设置为no
,这样就不会有凭证缓存在磁盘。
[auth]
store-auth-creds = no
有时候,用户希望从磁盘缓存删除特定的凭证,为此你可以浏览到auth/
区域,删除特定的缓存文件,凭证都是作为一个单独的文件缓存,如果你打开每一个文件,你会看到键和值,svn:realmstring
描述了这个文件关联的特定服务器的域:
$ ls ~/.subversion/auth/svn.simple/
5671adf2865e267db74f09ba6f872c28
3893ed123b39500bca8a0b382839198e
5c3c22968347b390f349ff340196ed39
$ cat ~/.subversion/auth/svn.simple/5671adf2865e267db74f09ba6f872c28
K 8
username
V 3
joe
K 8
password
V 4
blah
K 15
svn:realmstring
V 45
<https://svn.domain.com:443> Joe's repository
END
一旦你定位了正确的缓存文件,只需要删除它。
客户端认证的行为的最后一点:对使用--username
和--password
选项的一点说明,许多客户端和子命令接受这个选项,但是要明白使用这个选项不会主动地发送凭证信息到服务器,就像前面讨论过的,服务器会在需要的时候才会从客户端“拖”入凭证,客户端不会随意“推”出。如果一个用户名和/或者密码作为选项传入,它们只会在服务器需要时展现给服务器。[20]通常,只有在如下情况下才会使用这些选项:
-
用户希望使用与登陆系统不同的名字认证,或者
-
一段不希望使用缓存凭证但需要认证的脚本
这里是Subversion客户端在收到认证请求的时候的行为方式:
-
检查用户是否通过--username
和/或--password
命令选项指定了任何凭证信息,如果没有,或者这些选项没有认证成功,然后
-
查找运行中的auth/
区域保存的服务器域信息,来确定用户是否已经有了恰当的认证缓存,如果没有,或者缓存凭证认证失败,然后
-
提示用户输入。
如果客户端通过以上的任何一种方式成功认证,它会尝试在磁盘缓存凭证(除非用户已经关闭了这种行为方式,在前面提到过。)
相关推荐
- 改进的冲突处理:Subversion 1.7增强了冲突检测和解决机制,使用户更容易理解并解决合并时的冲突问题。 - 更好的URL引用:支持相对URL,使得在仓库内部链接更加方便。 - 客户端缓存增强:客户端缓存了更多元数据,...
Subversion 命令行客户端:svn svn选项 svn子命令 svnadmin svnadmin选项 svnadmin子命令 svnlook svnlook选项 svnlook子命令 svnsync svnsync选项 svnsync子命令 svnserve svnserve选项 svnversion mod_dav_...
- 客户端缓存增强:客户端可以更智能地缓存数据,减少对服务器的请求,提高效率。 3. 使用Subversion: - 安装与配置:Subversion可以通过编译源代码或安装预编译的二进制包进行安装。配置包括设置仓库路径、用户...
- **客户端凭证缓存**:存储认证信息以简化后续操作。 #### 五、分支与合并 - **什么是分支**:创建独立的开发线,用于实验新功能或修复错误。 - **使用分支**: - **创建分支**:从主干分离出一份副本。 - **在...
- **realm = yxv3**:客户端凭证缓存域。 - **passwd**:定义用户信息及其密码。 - **authz**:定义授权信息,包括组和权限设置。 #### 五、创建及启动SVN服务 在命令行中执行以下命令来创建SVN服务: ```bash sc ...
在使用Subversion(SVN)进行版本控制时,有时用户可能会遇到“svn认证失败”的问题。这通常是由于输入了错误的用户名或密码,或者SVN客户端缓存的凭证已过期或不再有效导致的。本篇文章将深入探讨这个问题,并提供...
- `realm = DB1`:设置客户端凭证缓存。 3. **用户密码文件配置**:编辑`C:\svnDB\DB1\conf\passwd`文件,增加用户信息。 4. **授权文件配置**:编辑`C:\svnDB\DB1\conf\authz`文件,配置授权规则。 #### 五、...
`config`文件包含了全局SVN配置,而`auth`文件夹下则保存了认证信息。 为了查看保存的密码,我们可以使用SVN内置的命令行工具`svn config`,或者借助第三方软件。描述中提到的“查看svn保存的密码(软件)”可能是指...
5. **错误处理与日志记录**:Apache的日志记录功能可以帮助监控和调试Subversion的运行情况,及时发现并解决问题。 总之,"Subversion+Apache"组合提供了强大且灵活的代码版本管理解决方案,适用于企业级的软件开发...
TortoiseSVN是一款在Windows环境下非常流行的Subversion(SVN)版本控制系统客户端。它提供了图形化的用户界面,使得用户可以方便地进行版本控制操作,包括但不限于提交、更新、查看历史、解决冲突等。在某些情况下...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回溯、合并和恢复错误。在这个压缩包中,我们有两个主要的组件:TortoiseSVN客户端...
4. **检查认证缓存**: 在`~/.subversion/auth`或`%APPDATA%\Subversion\auth`目录下,你可以看到所有已存储的认证信息。但请注意,这些信息通常以加密形式存储,直接查看可能无法辨认。 总结,找回SVN账号密码和...
- **升级客户端**:升级本地的Subversion客户端软件到1.5.0或以上版本。 - **检查依赖库**:确保所有相关的依赖库也是最新版本。 #### 6. 工作副本格式不兼容 **问题描述:** SVN命令提示:“svn:此客户端对于工作...
跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么...
- Subversion的历史始于2000年,旨在改进CVS等早期版本控制系统存在的问题。 - **主要特性:** - **版本控制能力**:支持细粒度的版本控制,确保每一项更改都被追踪。 - **高效的存储机制**:利用更高效的数据...
跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么...
- **性能优化**:根据网络环境和服务器配置,可能需要调整SVN的缓存大小、并发连接数等参数。 - **钩子脚本**:SVN服务器支持预提交和后提交的钩子脚本,可以用来执行自动化任务,如代码质量检查、自动部署等。 ...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的变更历史。在“svn客户端与服务器 1.8.10”中,我们主要讨论的是SVN的第1.8.10版本的客户端和服务器组件。 1. SVN...
- **网络模型**:客户端与服务器之间的通信模型,包括请求和响应、凭证缓存等。 #### 五、分支与合并 - **分支**: - 分支的概念及其用途。 - 创建分支、在分支上工作等操作。 - 关键概念,如变更集、保持分支...