Subversion文件加锁

        Subversion对于文件的管理分为文本文件和二进制文件,对于文本文件使用subversion可以进行行级别的管理,但是对于二进制文件,subversion使用锁的方式管理,所有的加锁文件都是只读的,而且在本地拷贝对应了一个锁令牌,下面我们模拟下加锁和解锁的过程。

        用户Gongqingkui新建readme.doc文件,使用svn status检查状态,发现有了新建的readme.doc文档,使用svn add readme.doc使文档加入到subversion的管理之中,提交这些更改svn commit –m “add the readme doc document.”结果为

D:\www.gongqingkui.cn\hello>svn commit -m "add"
增加           readme.doc
传输文件数据.
提交后的版本为 196。

        另外一个用户Dongsuqin更新了readme.doc提交后,用户Gongqingkui如果再提交则会出现

D:\www.gongqingkui.cn\hello>svn commit -m "titlereadme"
正在发送       readme.doc
传输文件数据.svn: 提交失败(细节如下):
svn: 文件“/hello/readme.doc”已经过时

        使用命令svn update 简写(svn up)查看出现的冲突,显示文件readme.doc有冲突。为了暂时解决冲突执行恢复命令svn revert readme.doc使本地文件恢复到本地上次编辑状态,或者在没有冲突的情况下使用svn up来更新到最新状态。

        以上过程在冲突处理时十分麻烦,为了避免麻烦,可以使用文件锁命令,执行:

D:\www.gongqingkui.cn\hello>svn propset svn:needs-lock truereadme.doc
设置属性 “svn:needs-lock” 于 “readme.doc”

        将文件readme.doc加上锁,然后再提交到服务器上。加锁其实就是将svn:needs-lock 设定一个任意值,其后的操作必须关和解锁,在编辑文件之前首先要关锁:svn lock readme.doc –m “need to add data.”。显示锁定结果:

D:\www.gongqingkui.cn\hello>svn lock readme.doc -m "addauthor name list"
“readme.doc”被用户“gongqingkui”锁定。

        此时在本地工作目录使用svninfo readme.doc可以查看本地工作目录文件信息如下:

D:\www.gongqingkui.cn\hello>svn info readme.doc
路径:readme.doc
名称:readme.doc
URL: svn://192.168.195.54/hello/readme.doc
版本库根:svn://192.168.195.54
版本库 UUID:d1e122a1-a313-ff47-b797-6c7f1e452954
版本: 202
节点种类: 文件
调度: 正常
最后修改的作者:gongqingkui
最后修改的版本: 202
最后修改的时间:2012-11-07 16:50:05 +0800 (星期三, 2012-11-07)
文本最后更新:2012-11-07 16:46:17 +0800 (星期三, 2012-11-07)
校验和:71d766c5b6726696728905b99fa6a006
锁定令牌:opaquelocktoken:0316280a-d038-ce48-bc41-0a9ed7d1aea5
锁定所有者:gongqingkui
已创建锁定:2012-11-07 16:52:06 +0800 (星期三, 2012-11-07)
锁定注释(1 行):
add author name list

        可以看出文件被gongqingkui锁定,锁定理由为添加作者列表。此时用户Dongsuqin的工作空间可以看到本文件为只读文件。而gongqingkui本地文件则看出为加锁文件。需要注意的是,此时在Dongsuqin客户端执行svn info readme.doc只能看到一般信息,而不能看到加锁信息,这是因为svn info readme.doc是在本地工作拷贝工作,显示的是本地信息。使用svn info svn://192.168.195.54/hello/readme.doc则可以看到加锁信息。在用户gongqingkui提价修改文件后,系统自动解锁文件。

        为了在用户gongqingkui长时间不交出锁住文件的情况下解锁,可以使用svn unlock –force svn:// 192.168.195.54/hello/readme.doc的方法解开gongqingkui加在文件上的锁。Subversion使用pre-lock和pre-unlock这两个钩子脚本来实现对加锁用户的约束。

        需要注意的是锁是对应用户在本地工作拷贝的锁,同一个用户如在不同的工作拷贝上并不拥有同一个锁。确保沟通高效的前提下,使用锁有利于小组开发者明确开发责任,不越界修改其他用户的代码。加锁的原则尽量是快而且少。需要注意如果一个文件很多小组和开发人员过于频繁的修改的话,那么就需要在物理上对他进行拆分为数个单元,将这些单元与开发人员一一对应起来,降低加锁的需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gongqingkui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值