本文介绍了配置管理员和高级用户可能用到的其他功能,分别为:
1,使用“锁定-编辑-解锁”模型
2,自动化属性
3,忽略文件
4,关键字替换
5,外部定义
1,使用“锁定-编辑-解锁”模型
Subversion使用与CVS相似的工作模型,也就是“拷贝-修改-合并”,但是有时候还是很有必要使用“锁定-编辑-解锁”模型,例如对于二进制文件,或者其他不太适合合并的文件。
属性在《使用Subversion进行版本控制》这本书里也被称为元数据,是附加到版本控制下的文件之上的属性,就像最后的修改日期是一个文件的属性一样,你可以为Subversion控制之下的文件和目录设置自定义的属性。关于属性的详细信息可以看:http://www.subversion.org.cn/svnbook/1.2/svn.advanced.locking.html#svn.advanced.locking.lock-communication 。
在Subversion 里是通过内置的属性“svn:needs-lock”实现“锁定-编辑-解锁”模型的,例如我们有一个word文件“介绍.doc”,大家很清楚Word 文件是二进制格式(据说以后都是XML的,但是可能也无法灵活的合并),不可能使用“拷贝-修改-合并”模型,所以我们要使用“锁定-编辑-解锁”模型。你可以将它设置属性“svn:needs-lock”,然后提交,之后其他人在更新这个文件的时候,就会得到一个只读的文件,他们想修改这个文件必须首先获得锁,获得锁的过程会将文件置为可写,而其他人此时如果想得到锁就会发现做不到,只有得到锁的人放弃锁定,别人才能得到锁,继续工作。下面分别讲述了如何使用svn命令行和TortoiseSVN设置锁和使用锁。
1) 设定“svn:needs-lock”属性
使用命令行锁定“介绍.doc”:
svn propset svn:needs-lock 'x' 介绍.doc
运行这个命令后,“介绍.doc”就已经是设置了“svn:needs-lock ”,但为了使之生效还要运行“svn commit”,之后其他用户update的时候就会发现这个文件已经是只读的了。需要注意的是我们设置的属性值是“x”,实际上任意值都可以, Subversion会忽略其内容。
使用TortoiseSVN设定属性也很简单:
“介绍.doc”右键选中- >属性->Subversion选项夹->properties->add,然后在弹出的窗口中的property name选择“svn:needs-lock”,值任意,然后选择OK。之后再提交“介绍.doc”即可。
2)获取锁
在设定了这个属性之后,我们要想修改“介绍.doc”,就必须首先获得锁,使用命令行操作如下:
svn lock 介绍.doc
这样“介绍.doc”就变成了可写文件,你可以进行编辑修改了,这个时候如果有人和你一样期望获得这个文件的锁就会得到错误的提示,表示文件已经被你锁定了。
使用TortoiseSVN的操作依然简单,“介绍.doc”右键选中-> TortoiseSVN -> Get Lock... ,然后输入锁定的注释,选择“OK”,既完成了锁定。
3)释放锁
当你完成了修改,选择提交后,默认就会释放锁,别人就可以重新获得锁。当然你也可以放弃修改,直接选择释放锁,操作如下:
svn unlock 介绍.doc
这样“介绍.doc”就重新变成只读,别人就可以获得锁并进行修改了。
使用TortoiseSVN的操作为,“介绍.doc”右键选中-> TortoiseSVN -> Release Lock,然后选择确认即可。
2,自动化属性
论坛里曾经有人问到如何实现前一个问题,然后又问到如果有很多文件需要做这样的设置该如何处理。这时可能就需要自动化属性功能,通过文件名匹配的方式将某类文件设置某种属性。我们还是以Word文档为例,设定将所有Word文档设置为只读。
这里我们用到了Subversion的运行配置区特性,Subversion的许多全局的配置参数都是放在运行配置区中,运行配置区实际上就是一个目录,在我的XP操作系统这个目录是“C:\Documents and Settings\rock\Application Data\Subversion”,其中rock是我的用户名,在UNIX下这个目录可能是“.subversion”。在这个目录里config文件是客户端操作的一些属性,而servers则是服务器端的属性,这一部分我们要使用config文件。
打开运行配置区的config文件,去掉“enable-auto-props = yes”前面的“#”和空格,然后找到“[auto-props]”小节,增加下面的属性并保存即可实现Word文件的自动添加需要锁定的属性:
*.doc = svn:needs-lock=x
作了这个设置后,以后通过“svn add”和“svn import”添加的*.doc文件都会有“svn:needs-lock”属性,当然你愿意,你也可以把上面的值修改为“* = svn:needs-lock=x”,这样所有新加的文件都是进入了“锁定-编辑-解锁”模型。
需要注意的是这些设置是针对客户端的,其他用户还需要做同样的设置。
3,忽略文件
在执行svn status等操作时,我们不想看到某些文件,就要使用设置属性进行忽略。在Subversion有两种方式进行这个设置,一个是更改全局设置,也就是前面提到的config文件,另一个是使用svn的内置属性“svn:ignore”。
1)使用config的global-ignores配置
假定我们的程序会编译出很多exe文件,如果不使用忽略属性,当我们执行“svn status”结果会是这个样子:
? admin\test.exe
M admin\test.txt
为了不让exe文件打扰我们,我们只需找到config文件的[miscellany]小节,修改global-ignores,增加对exe的忽略,我修改后的这一行变成:
global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.exe
然后再执行“svn status”,结果如下:
M admin\test.txt
2)使用svn的内置属性“svn:ignore”
有时候匹配没有这么普遍,例如Java的工程会在bin目录生成的很多临时Jar文件,我们只需要a.jar,而不希望temp.jar影响我们的视线,所以我们只需要设置bin的属性“svn:ignore”为temp.jar即可,具体设置同上。
关于忽略的更多信息见:http://www.subversion.org.cn/svnbook/1.2/svn.advanced.props.html#svn.advanced.props.special.ignore
4,关键字替换
在CVS里有一个很有用的功能,就是将源文件中的一些关键字替换,例如提交时间,作者等。Subversion默认不会对此类关键字进行处理,需要设置一些属性,才能实现。
例如我们要在某个源文件的头上自动添加最后一个修改人的名字和提交的时间,首先我们为这个文件设置属性svn:keywords的值为“Date Author”,然后在这个文件需要添加作者和提交时间的地方增加下面这样的字段:
$LastChangedDate$
$Author$
这样这个文件提交后,对应的字符变成了下面的样子:
$LastChangedDate: 2006-11-29 22:58:16 +0800 (星期三, 29 十一月 2006) $
$Author: root $
这里还存在一个问题,就是Subversion总是使用UTF-8替换文本,文件必须使用UTF-8编码。如果我们的文件编码是GBK,而日期显示格式是上面的汉字形式,那得到的时间将是乱码的。目前最实际的解决办法是所有的文件使用UTF-8编码;或者是尽量使出现的数据没有汉字,例如对于路径都是使用英文,对于时间使用英语的区域选项(我调整了中文的格式,但是无效)。
这部分的问题我想也可以通过属性实现,但是需要修改源程序,可能还不能马上实现。
更多可以使用关键字可以见:
http://www.subversion.org.cn/svnbook/1.2/svn.advanced.props.html#svn.advanced.props.special.keywords
5,外部定义
这个功能也是论坛里经常被问到的一个问题,就是很多人希望有VSS的share功能,也就是一个文件在版本库的多个位置有映像,一个地方修改,其它所有位置都能够看到。
Subversion通过外部定义(svn:externals)属性,能够实现目录的共享,但是对于文件,则只能支持类UNIX下的链接,这部分内容《使用Subversion进行版本控制》已经说得很清楚了,所以大家直接看书吧:
http://www.subversion.org.cn/svnbook/1.2/svn.advanced.externals.html
关于“共享(share)”功能,《软件配置管理》一书有过评价,它认为这个功能不是很好的软件配置管理习惯,如果一个文件可以被共享,也意味这个文件似乎可以成为独立的模块,需要重新规划了。
本文来自[Svn中文网]转发请保留本站地址:http://www.svn8.com/svnpz/20090624/6771.html
分享到:
相关推荐
- **浏览版本库**:通过配置 Apache,用户可以直接在浏览器中浏览版本库的内容,这对于那些只需要查看版本库而无需进行编辑操作的用户来说非常有用。 #### 三、用户验证与安全性 - **用户验证**:Subversion 支持...
1. **安装与配置Subversion** 在开始使用Subversion之前,你需要在计算机上安装它。Subversion的安装包可以在其官方网站上下载,适用于Windows、Linux和Mac OS等操作系统。安装完成后,配置SVN客户端工具,如...
混合版本很有用 混合版本有限制 总结 2. 基本使用 求助! 导入数据到你的版本库 svn import 推荐的版本库布局 初始化检出 禁用密码缓存 用其它身份认证 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的...
14. 子模块(Submodule):Subversion支持子模块,允许在一个项目中嵌套其他版本控制的项目,这对于大型项目结构的管理非常有用。 15. 故障排查:遇到问题时,可以使用`svn diff`查看文件差异,`svn log`查看提交...
离线安装包对于没有互联网连接或者网络环境受限的环境尤其有用。在这个场景下,我们将详细介绍如何在CentOS 7系统上离线安装Subversion。 首先,我们来了解安装Subversion所需的依赖包。`apr-1.5.1.tar.gz`和`apr-...
#### 七、Subversion的配置与管理 - **档案库管理**:包括档案库的创建、维护、备份和恢复等操作。 - **安全性管理**:设置访问权限、认证方式和授权规则等。 - **性能优化**:通过调整服务器配置或使用特定的技术...
这在多人协作项目中非常有用,每个人可以在自己的分支上开发新功能,然后将改动合并回主分支。 3. 合并:当分支上的工作完成后,可以通过合并操作将改动合并回主分支。Subversion提供了强大的冲突解决机制,帮助...
阅读这个文件对于理解如何正确安装和配置Subversion服务器端至关重要。另一方面,"Setup-Subversion-1.8.8-1.msi"是Windows安装程序,用于在Windows环境中安装Subversion服务器。需要注意的是,描述中提到这个包仅...
Subversion 是一个开源的版本控制系统,它用于...如果你是系统管理员,你可以学习如何配置和维护Subversion 服务器,以满足团队的需求。无论你是哪一类用户,Subversion 都为你提供了一个强大且可靠的版本控制系统。
3. **配置 Apache**:通过编辑 Apache 配置文件,可以定义如何处理 Subversion 请求。通常需要启用 `mod_dav_svn` 模块,并配置相应的路径和权限规则。 4. **设置访问控制**:使用 `authz` 文件来定义哪些用户可以...
4. **设置服务**:在Linux上,可能需要配置Apache HTTPD服务器以支持通过WebDAV协议访问Subversion仓库。 5. **创建仓库**:使用`svnadmin create`命令创建一个新的仓库。 6. **启动服务**:根据所选的服务模型(如...
12. **授权和权限**:Subversion可以通过配置文件设定用户和组的访问权限,以控制对仓库的访问。 13. **日志和版本历史**:`svn log`可以查看文件或目录的历史记录,包括每次提交的作者、日期和注释。 14. **忽略...
这两个视图对于日常开发非常有用,可以方便地查看代码库状态和资源历史。 **配置SUBCLIPSE** SUBCLIPSE支持多种与Subversion服务器的连接协议,包括SVN协议(通过svnserve服务,支持安全的svn+ssh)、HTTP协议(常...
- 对于`svnserve`,配置文件通常位于`C:\Program Files\Subversion\conf`目录下,需要修改`svnserve.conf`来指定仓库路径和访问模式。 **4. 创建仓库并设置权限** - 使用`svnadmin create`命令创建仓库,例如`...
5. **安装与配置**:Slik-Subversion的安装文件`Slik-Subversion-1.9.5-x64.msi`是适用于64位Windows系统的安装程序。用户只需运行该程序,按照向导指示进行安装,即可在系统中添加SVN客户端工具。 6. **操作流程**...
这种工具对于习惯使用命令行或者需要自动化SVN任务的开发者来说,尤其有用。 **Subversion基础概念** 1. **版本库(Repository)**:存储项目所有版本的地方,类似于数据库,但专门用于管理代码和文档的历史版本。...
4. **Subclipse的安装与配置**:详细介绍如何在Eclipse中安装Subclipse插件,包括使用Eclipse自带的更新管理器安装Subclipse的过程。 5. **Subclipse的基本使用**:介绍如何使用Subclipse进行基本的版本控制操作,...
Subversion还支持其他高级特性,例如分支和合并,这对于并行开发和错误修复非常有用。通过创建分支,开发者可以在不影响主分支的情况下工作,然后通过合并将更改合并回主分支。此外,Subversion提供了强大的权限管理...
8. **版本库迁移**:Subversion允许轻松地将一个版本库迁移到另一个服务器,这在更换硬件或服务提供商时非常有用。 9. **第三方集成**:Subversion与其他开发工具(如IDE、构建工具、代码审查系统)有很好的集成,...