linux下svn的co如何排除目录
某些原因想在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目录,如下:
- 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
- ...........
这样,目的就达到了!说烦也不烦!
linux下svn的co如何排除目录的更多相关文章
- windows,linux下SVN实现自动更新WEB目录
通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器 ...
- linux下svn 搭建
linux 下SVN搭建加自动提交更新到指定目录一.安装#yum install subversion yum安装SVN#mkdir -p /opt/svn/repos 创建s ...
- linux下svn命令使用大全
最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全:1.将文件checkout到本地目录 svn checkout path(path是服务器 ...
- linux下SVN忽略文件/文件夹的方法
linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录) ...
- Linux下SVN命令
一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...
- Linux下svn命令详解
本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...
- linux下svn命令大全
linux下svn命令大全 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/p ...
- linux下svn常用指令
windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的 ...
- [转载]linux下svn常用指令
一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...
随机推荐
- sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)
n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you w ...
- wamp下php无法保存SESSION问题总汇
由于是在windows 下的iis进行php的环境,所以很多情况下不能像lamp那么简单进行设置.由于工作原因我也遇到很多session无法保存的情况(在wamp下).以下是相信信息的汇总,仅供参考学 ...
- Android调用WebService(转)
Android调用WebService WebService是一种基于SOAP协议的远程调用标准,通过 webservice可以将不同操作系统平台.不同语言.不同技术整合到一块.在Android SD ...
- Xamarin Android提示找不到资源属性定义
Xamarin Android提示找不到资源属性定义 错误信息:”Resource.Attribute”未包含”actonBarSize”的定义Xamarin Android经常会出现找不到资源属性的 ...
- ISODATA算法
ISODATA算法是在k-均值算法的基础上,增加对聚类结果的'合并'和'分裂'两个操作,并 设定算法运行控制参数的一种聚类算法. 全称:Iterative Selforganizing Data An ...
- velocity 判断 变量 是否不是空或empty
原先的 #if($mobile) 这种写法是不准确的 ,请换成 "$!{ mobile}"!="" 说明 : #if($mobile) 这种写法 只能 ...
- [Unity2D]鼠标(或触摸)输入处理
在游戏的编程之中,基本上都需要依赖鼠标的输出,特别是在手机游戏上,绝大部分都需要通过手指触摸来控制游戏.如果要实现一个精灵,当手指点击精灵的会触发相关的操作,或者我们使用一张图片来作为按钮,点击的时候 ...
- HDNOIP201404最短路径
HDNOIP201404最短路径 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 a.b.c是3个互不相等的1 ...
- linux网络配置相关命令、虚拟网络接口eth0:0
网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用ethX,是由0开始的正整数,比如eth0.eth1...... ethX.而普通猫和ADSL的接口 ...
- HTML中为何P标签内不可包含块元素?
起因:在做项目时发现原本在DW中无误的代码到了MyEclipse6.0里面却提示N多错误,甚是诧异.于是究其原因,发现块级元素P内是不能嵌套DIV的. 深究:我们先来认识in-line内联元素和blo ...