稀疏目录支持排他选择了
Filed Under (Subversion Client) by rocksun on 05-03-2009
Tagged Under : checkout, exclude, sparse
转载请注明本文地址: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
在稀疏检出这一点上,VSTS 做得非常好。
用 SVN 检出� �目录,我觉得有一定的危险性。
当然还是很方便的,至少我只需要维护一个工作拷贝。