很多时候,你的svn repo(假定project)很大(这里指包括所有tags和branches),但是其实你真正需要的却只有一两个(比如说trunk,以及和trunk平级的install目录,同时install目录和trunk目录有着这样活那样的联系),这时你就希望在svn co的时候是co整个project并且忽略你不想要的目录。当然,你大可不必co整个project,而单独co你想要的目录就行了。但是,从SCM的角度出发,你不可以强行改变用户的使用习惯,不排除就有这么些人喜欢这样操作,尤其是对于那些喜欢用命令行的人而言。
可能我这么说,大家没有什么概念,我给大家举个例子,大家应该就知道这是一种什么情况了:
大家都知道,在一个项目的SCM管理中,往往要求开发者通过打tag的方式来进行版本发布,tag存在于tags目录,tags目录往往与trunk/branches目录平级,这里还有一个install目录,如下:
- project/
- |-- branches
- | |-- branch1
- | |-- branch2
- | `-- branch3
- |-- install
- |-- tags
- | |-- tag1
- | |-- tag2
- | |-- tag3
- | |-- tag4
- | `-- tag5
- `-- trunk
- `-- src
tags目录虽然是一个标签副本,但在checkout的过程中,是会针对一份完整代码的,因此很多人都不希望在本地的working copy中保留这个tags目录。遗憾的是,svn co命令并没有这样一个选项去忽略这个目录。
事实上,我也遇到了这个问题,在我看了很多help之后,终于找到了办法。具体如下(分两种情况讨论):
I. 本地保存有完整的Working Copy情况:
换句话说就是,你已经将svn中完整的repos/directories checkout到本地了(本地已经有一份你在服务器端的完整Copy了)。这时,你只需要运行以下命令将tags以及branches目录排除在svn up列表:
- # svn update --set-depth=exclude tags branches
- D tags
- D branches
选项后面可以跟多个目录,这样,就在你当前的working copy中成功的将tags和branches目录排除掉了,在你下一次的update中,就不会去理会这两个目录了,但同时有保证了你的project是在version control下的,因此不需要每次都逐个进入目录进行svn up了。
II. 进行一次全新的忽略目录Checkout操作:
这种情况如果是在windows下,就显得非常简单,你只需要使用乌龟客户端的“Choose Item”按钮。
但是如果是在命令行的情况下,那就要稍微复杂一点了,请按照如下操作:
1. 首先将目录树checkout到本地:
- [root]@[Fck_with_U]:[~/temp]->>svn co http://svn_test_url.com/test_dir my_checkout --depth immediates
- A my_checkout/backup
- A my_checkout/doc
- A my_checkout/scripts
- A my_checkout/src
- A my_checkout/data
- A my_checkout/tool
- Checked out revision 736189.
2. 将你不想co的目录排除在外(比如这里我想排除backup, data, doc, src, tool这五个目录,只想checkout scripts目录):
- [root]@[Fck_with_U]:[~/temp]->>cd my_checkout/
- [root]@[Fck_with_U]:[~/temp/my_checkout]->>ls
- backup data doc scripts src tool
- [root]@[Fck_with_U]:[~/temp/my_checkout]->>svn up --set-depth=exclude backup data doc src tool
- D backup
- D data
- D doc
- D src
- D tool
3. 更新你想要的scripts目录:
- [root]@[Fck_with_U]:[~/temp/my_checkout]->>svn update --set-depth infinity scripts/
- A scripts/trunk
- A scripts/trunk/test
- ...........
这样,目的就达到了!说烦也不烦!
from: http://scmbob.org/exclude-dirs-when-svn-up.html
相关推荐
自动更新SVN版本库
1、 全局备份 ...svnadmin create /data/svn/repos/newproject #在新的服务器上新建库 使用工具上传备份文件至新服务器本地,这里假设上传至根目录。 svnadmin load /data/svn/repos/newproject 导入备份文件
SVN项目版本库模板
4.在E:\web文件夹利用svn账号admin读取svn版本库建立初始版本(这步很重要,没有这步是会跳过web文件夹的) 5.现在客户机创建初始版本文件夹,把程序拷进来进行提交上传,服务器web文件夹自动的更
svn代码库如何备份到本地
svn新建版本库步骤,详细步骤,能够按照此步骤配置换成svn版本库
SVN删除版本_瘦身SVN删除版本_瘦身SVN删除版本_瘦身SVN删除版本_瘦身
SVN全局忽略样式-忽略本地编译文件
用例子简述svn版本库布局,更好的管理版本控制
svn控制版本svn控制版本svn控制版本svn控制版本svn控制版本svn控制版本svn控制版本
svn 回退/更新/取消至某个版本命令详解
一款VisualSVN Server Manager版本库的创建、详细的创建步骤、图文说明
SVN版本库备份与恢复文档(是doc文档)
本脚本实现了对版本库进行增量备份,并且将备份导入到其它主机版本库,以备版本库宕机时开发人员可以马上切换服务器,脚本里的免密码LINUX之间拷贝及远程执行脚本请自己百度解决。 1、 全量备份 #!/bin/sh #全量备份...
svn版本库,桌面服务器,客户端打包版 svn版本库,桌面服务器,客户端打包版
前段时间一直想找一个版本控制工具,平时写点代码什么的总是在一个文件夹下面复制多个历史版本,以时间命名,但是久而久之文件就大了起来,版本不稳定又不好把以前的删除,所以就产生了一大批的文件,想回退的时候...
TortoiseSVN是Subversion在Windows操作系统上的图形客户端程序,开源、免费
1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加...
是否遇到过公司里的sx向svn提交了不该提交的文件?.sdf debug release 等等,是否对此感到崩溃?!是否svn仓库已经占用了大量的磁盘空间? 使用本图形化工具帮助你将这些文件彻底地从svn中删除。 先导出svn仓库 ...
在一台服务器上可以同时搭建多个svn版本库,不过我仍然建议一台服务器最好搭建一个项目,如果环境准许的话。