稀疏目录支持排他选择了

Filed Under (Subversion Client) by rocksun on 05-03-2009

Tagged Under : , ,

转载请注明本文地址:http://www.subversion.org.cn/submerged/?p=111

在Subversion 1.5中,引入的稀疏目录的支持(还有合并跟踪远程版本库合并)已经融入我的日常工作中。因为我的日常工作包括许多不同软件的不同部分,在同一时刻,我会跟踪多个软件的不同开发分支,如果我不用稀疏目录,我的项目目录会这个样子:

$ ls ~/projects
subversion/		      svnbook/		 viewvc-1.0.7/
subversion-1.5.x/	      thotkeeper/	 viewvc-1.0.x/
subversion-1.6.x/	      thotkeeper-0.3.0/  viewvc-1.1.0-beta1/
subversion-http-protocol-v2/  viewvc/		 viewvc-1.1.x/
$

从正面讲,我可以通过运行svn update ~/projects/*快速更新所有的工作拷贝。

但是对于我这样十分依赖命令行自动完成的人来说,这样许多的类似目录前缀让我的自动完成环境毫无意义,不使用类似的前缀呢?那样更原始。

幸运的是,稀疏目录给我一个完整的工作拷贝组织的新角度,现在,许多项目目录只包含了项目,就像这些:

$ ls ~/projects
subversion/  svnbook/  thotkeeper/  viewvc/
$

那些目录的根目录都是稀疏检出的,下面是(至少)“trunk”目录,也可能是“branches”的一些子目录,甚至可能是“tags”下的特定目录,~/projects/*仍然可以工作,我的工作拷贝托普结构匹配这种模式。

我这里就不具体说稀疏检出的细节—我已经在《使用Subversion进行版本控制》中(http://www.subversion.org.cn/svnbook/nightly/svn.advanced.sparsedirs.html)介绍,后面我们将说一下Subversion 1.6对这个特性的改进。

在Subversion 1.6(将会发布),svn update的–set-depth参数有了一个新的值— exclude。这个值告诉Subversion从工作拷贝立刻排除目标,之后也保持效果。在Subversion 1.5,如果分支对我没有意义,我可以简单的删除掉它。如果只是删除,在下次更新时就会回来。如果我svn delete它,分支会永远保持本地的修改。(当然,除非我提交,带来了更大的麻烦,愤怒的同伴,叉子和火炬。那样很混乱 — 你一定不希望这样。)Subversion 1.6中新的排除机制正是为此而来。

假设我不关心我项目工作拷贝中的某些目录,例如我不会在乎Subversion中的网站目录,通过排除特性,我可以告诉Subversion移除目录:

$ cd ~/projects/subversion/trunk
$ svn update --set-depth=exclude www
D         www
$ ls www
ls: cannot access www: No such file or directory
$

完成。当我以后更新我的工作拷贝时,我不会收到www目录的变更,如果我后来需要这个目录,我可以重新“订阅”它:

$ svn update --set-depth=infinity www
A    www
A    www/links.html
A    www/testing-goals.html
…
A    www/tigris-permissions.html
A    www/webdav-usage.html
Updated to revision 36292.
$

注意,如果你排除了一个版本化的目录,而其中包含未版本化文件,或者有本地修改的文件,Subversion会优雅的处理这种情况,删除这些文件是不安全的,Subversion只会保留和对应文件相关的文件和目录。

我希望这些改进也能帮助你们,你怎么想?怎样用稀疏目录更好的组织你的生活?

英文原文地址:http://blogs.open.collab.net/svn/2009/03/sparse-directories-now-with-exclusion.html

转载请注明本文地址:http://www.subversion.org.cn/submerged/?p=111

Comments:

One Comment posted for 稀疏目录支持排他选择了

Make a comment