某些原因想在svn co的时候排除某些目录,可以绕个圈子,分三步来完成:

co外层目录:

svn checkout --depth empty $URL [$LOCATION]

完成之后,会有一个只包含空目录的根目录

设置忽略目录:

cd $LOCATION
svn up --set-depth exclude <$DIR_TO_EXCLUDE>

这样svn会提示被忽略的目录标记为D,然后文件系统上也看不见了

更新剩余文件

svn up --set-depth infinity *

这样其他目录会被重新递归的更新,被忽略的目录不会更新,即使后面有人执行svn up,也无法更新被忽略的文件。

-----

--depth ARG : limit operation by depth ARG ('empty', 'files','immediates', or 'infinity')

empty:检出一个空项目

files:只检出文件

immediates:只检出文件夹

infinity:递归检出文件或文件夹

==========================================================

http://alanland.iteye.com/blog/1897749 [以下内容摘抄与这篇文章]

很多时候,你的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目录,如下:

  1. project/   
  2. |-- branches
  3. |   |-- branch1
  4. |   |-- branch2
  5. |   `-- branch3
  6. |-- install
  7. |-- tags
  8. |   |-- tag1
  9. |   |-- tag2
  10. |   |-- tag3
  11. |   |-- tag4
  12. |   `-- tag5
  13. `-- trunk
  14. `-- src

tags目录虽然是一个标签副本,但在checkout的过程中,是会针对一份完整代码的,因此很多人都不希望在本地的working copy中保留这个tags目录。遗憾的是,svn co命令并没有这样一个选项去忽略这个目录。

事实上,我也遇到了这个问题,在我看了很多help之后,终于找到了办法。具体如下(分两种情况讨论):

I. 本地保存有完整的Working Copy情况:

换句话说就是,你已经将svn中完整的repos/directories checkout到本地了(本地已经有一份你在服务器端的完整Copy了)。这时,你只需要运行以下命令将tags以及branches目录排除在svn up列表:

  1. # svn update --set-depth=exclude tags branches
  2. D    tags
  3. D    branches

选项后面可以跟多个目录,这样,就在你当前的working copy中成功的将tags和branches目录排除掉了,在你下一次的update中,就不会去理会这两个目录了,但同时有保证了你的project是在version control下的,因此不需要每次都逐个进入目录进行svn up了。

II. 进行一次全新的忽略目录Checkout操作:

这种情况如果是在windows下,就显得非常简单,你只需要使用乌龟客户端的“Choose Item”按钮。

但是如果是在命令行的情况下,那就要稍微复杂一点了,请按照如下操作:

1. 首先将目录树checkout到本地:

  1. [root]@[Fck_with_U]:[~/temp]->>svn co http://svn_test_url.com/test_dir my_checkout --depth immediates
  2. A    my_checkout/backup
  3. A    my_checkout/doc
  4. A    my_checkout/scripts
  5. A    my_checkout/src
  6. A    my_checkout/data
  7. A    my_checkout/tool
  8. Checked out revision 736189.

2. 将你不想co的目录排除在外(比如这里我想排除backup, data, doc, src, tool这五个目录,只想checkout scripts目录):

  1. [root]@[Fck_with_U]:[~/temp]->>cd my_checkout/
  2. [root]@[Fck_with_U]:[~/temp/my_checkout]->>ls
  3. backup  data  doc  scripts  src  tool
  4. [root]@[Fck_with_U]:[~/temp/my_checkout]->>svn up --set-depth=exclude backup data doc src tool
  5. D         backup
  6. D         data
  7. D         doc
  8. D         src
  9. D         tool

3. 更新你想要的scripts目录:

  1. [root]@[Fck_with_U]:[~/temp/my_checkout]->>svn update --set-depth infinity scripts/
  2. A    scripts/trunk
  3. A    scripts/trunk/test
  4. ...........

这样,目的就达到了!说烦也不烦!

linux下svn的co如何排除目录的更多相关文章

  1. windows,linux下SVN实现自动更新WEB目录

    通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器 ...

  2. linux下svn 搭建

    linux 下SVN搭建加自动提交更新到指定目录一.安装#yum install subversion       yum安装SVN#mkdir -p /opt/svn/repos       创建s ...

  3. linux下svn命令使用大全

    最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全:1.将文件checkout到本地目录 svn checkout path(path是服务器 ...

  4. linux下SVN忽略文件/文件夹的方法

    linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录) ...

  5. Linux下SVN命令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

  6. Linux下svn命令详解

    本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...

  7. linux下svn命令大全

    linux下svn命令大全 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/p ...

  8. linux下svn常用指令

    windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...

  9. [转载]linux下svn常用指令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

随机推荐

  1. js打印html中的内容

    js打印方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  2. linux&mac下查看端口被哪个进程占用

    mac :   lsof -i:8080 linux : neststat -anltp | grep 8080

  3. Java Hour 40 Maven ( 2 )

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 40 Maven 坐标 任何一个包都需要一个全世界唯一的id, Ma ...

  4. FileUpload之FileItem

    转自:http://asialee.iteye.com/blog/706079 FileItem类主要是封装了一个File Item或者是FormItem,它的主要的方法如下,需要说明的是对于Form ...

  5. Individual Project - Word frequency program-11061171-MaoYu

    BUAA Advanced Software Engineering Project:  Individual Project - Word frequency program Ryan Mao (毛 ...

  6. Introduction to Computer Networks(网络架构与七层参考模式)

    Network Connectivity 1. Important terminologies 1) Link 设备连接的连线.Link本身既可以是有线的,也可以是无线的. 2) Node 设备.电脑 ...

  7. 手动载入NT驱动

    运行 regedit.exeHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services ImagePath \??\G:\驱动教程\018_读出SSDT表 ...

  8. LR破解版录制手机脚本

    LR破解版录制手机脚本 最近在网上听到好多童鞋都在问如何用LR做手机性能测试,恰好自己对这方面也挺感兴趣,经过查阅很多资料,形成此文档以做备注~!如果有感觉我写的不对的地方,敬请指正,谢谢~!     ...

  9. 模拟 POJ 1573 Robot Motion

    题目地址:http://poj.org/problem?id=1573 /* 题意:给定地图和起始位置,robot(上下左右)一步一步去走,问走出地图的步数 如果是死循环,输出走进死循环之前的步数和死 ...

  10. Codeforces 86C Genetic engineering(AC自动机+DP)

    题目大概是给几个DNA片段,求构造一个长度n的字符串的方案数,要求这个字符串每个位置的字符都属于某个包含于此字符串的DNA片段. 把那些DNA片段建一个AC自动机.考虑状态的表示: dp[len][x ...