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
相关推荐
1. **定位锁定文件**:首先,需要找到被锁定的文件所在的SVN工作副本文件夹。 2. **查看锁定信息**:右键点击被锁定的文件,选择SVN相关的菜单项,通常会显示锁定该文件的用户信息。 3. **解锁操作**:确认要解锁后...
在某些情况下,手动锁定文件可能会导致效率降低,因为用户需要记住在开始编辑前先锁定文件,然后在完成后再解锁。自动锁定机制则可以解决这个问题,使得用户在编辑文件时自动获取锁,编辑完成后自动释放。 4. **...
在myEclipse开发工具里,当svn同步被锁死时,操作删除svn被锁文件
`.SVN`文件夹是Subversion在本地工作副本中存储元数据的地方,包括版本信息、锁定状态以及与服务器的通信记录。 标题“邮件删除.SVN文件”可能指的是一个关于如何在日常操作中便捷地从本地工作目录中移除这些`.SVN`...
这可以通过`svn cleanup`命令完成,它能解除锁定、恢复损坏的文件,并清除其他可能导致问题的状态。在命令行中,进入你的工作副本目录,然后运行`svn cleanup`。 删除SVN图标关联: Windows系统中,某些文件类型...
SmartSVN是一款功能强大的Subversion(SVN)客户端,专为macOS用户...总之,SmartSVN的注册文件是解锁其完整功能的关键,通过正确导入和激活,macOS用户可以充分利用这款优秀的SVN客户端进行高效的版本控制和团队协作。
此外,还有一些与SVN操作相关的临时文件和锁定文件,例如`.svn/lock`、`.svn/tmp`等。 `FileCleaner.java`很可能是一个包含静态方法的工具类,用于遍历项目文件和目录,查找并删除与SVN相关的文件和目录。以下是...
- **状态信息**:`wc.db`数据库记录了工作副本的状态信息,如文件的修改状态、锁定信息等。 2. **为何要清除.svn文件夹** - **节省磁盘空间**:特别是当你有一个大型项目的工作副本时,`.svn`文件夹可能占据相当...
`entries`文件记录了项目文件的状态,而` wc.db`是一个SQLite数据库,存储了更详细的状态信息,包括版本历史、锁定状态等。 3. **MyEclipse IDE配置**:MyEclipse的SVN设置可以在`Window > Preferences > Team > ...
1. **SVN文件**:.SVN文件是Subversion在本地工作副本中创建的隐藏文件或目录,它们用于存储每个文件和目录的元数据,包括版本信息、临时文件、锁定状态等。 2. **版本控制文件**:在版本控制系统中,文件被跟踪其...
对于大型项目,可能需要更复杂的逻辑,例如处理锁、冲突解决以及增量更新。 总之,通过使用Java和SVNKit库,你可以编写自定义的脚本来自动化从SVN仓库下载资源到服务器的任务,从而提高开发效率和自动化程度。记得...
在版本控制系统领域,Subversion(SVN)是一个广泛使用的工具,用于管理软件项目的源代码和其他文件。 SVN仓库是存储项目历史记录和版本信息的核心组件。本文将深入探讨 SVN 仓库的配置文件及其重要性,以及如何管理...
2. **使用命令行工具**:如果你熟悉svn命令行工具,可以使用`svn cleanup`命令来解除文件夹中的锁定和清理临时文件。然而,这并不能删除.svn子目录,只适用于处理因网络问题或其他原因导致的锁定状态。 3. **利用第...
4. **替代方法**:除了使用这样的工具,也可以通过手动方式删除`.svn`文件夹,或者使用SVN命令行工具的`cleanup`命令来解除锁定或清理问题。 总的来说,"SVN隐藏文件删除工具"是一个针对Subversion用户设计的实用...
在使用SVN的过程中,.svn文件夹是其不可或缺的一部分,它存储着版本控制信息,包括文件的版本历史、元数据、锁定信息等。然而,在某些情况下,我们可能需要清除工作目录中的.svn文件夹,例如在迁移项目到另一个版本...
6. **锁/解锁机制**:防止多人同时编辑同一文件,确保数据一致性。 使用TortoiseSVN,开发者可以有效地协作,提高软件开发的效率和质量。对于初学者,了解并熟练掌握SVN的基本概念和操作,如仓库URL、HEAD版本、...
2. **锁模式(Lock-Modify-Unlock)**:适用于二进制文件和特定的文本文件,需要获取文件锁后再进行修改,以避免并发修改导致的冲突。适合工程设计等领域。 【安装与使用】 安装TortoiseSVN后,用户可以通过右键...
2. 点击“Lock”按钮,锁定文件。 3. 等待锁定完成。 要解锁 SVN 仓库中的文件,需要遵循以下步骤: 1. 打开 SVN 客户端,选择要解锁的文件。 2. 点击“Unlock”按钮,解锁文件。 3. 等待解锁完成。 #### 重命名...
4. **锁图标**: 表示文件已被锁定,需要释放才能让其他人修改。 **CheckOut注意事项** 1. 检出前需选择合适的版本库路径和检出目录。 2. 确保网络连接稳定,以免检出过程中断。 3. 检出后,定期更新工作副本,保持...
我们将从svn提交时出现的错误信息开始,逐步剖析SVN的工作机制和锁定机制,从而解决SVN冲突问题。 首先,让我们来看一下错误信息:org.apache.subversion.javahl.ClientException: Attempted to lock an already-...