linux下svn的co如何排除目录

摘要:
将有一个仅包含空目录的根目录。该目录将被忽略:然后文件系统将看不到剩余文件svnp--setdepthininity*的更新,因此其他目录将被递归更新。同时,安装目录和主干目录有某种关系。)此时,您希望在svnco中共享整个项目,并忽略不需要的目录。标签存在于标签目录中,因此许多人不希望将标签目录保存在本地工作副本中。

某些原因想在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如何排除目录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇同一服务器下发布两个不同网站(war包)的方法(这里采用的是二级域名的方法)转:Windows 7下安装CentOS双系统下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python爬取酷狗飙升榜前十首(100)首,写入CSV文件

酷狗飙升榜,写入CSV文件 爬取酷狗音乐飙升榜的前十首歌名、歌手、时间,是一个很好的爬取网页内容的例子,对爬虫不熟悉的读者可以根据这个例子熟悉爬虫是如何爬取网页内容的。 需要用到的库:requests库、BeautifulSoup库、time库; 请求头:'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) A...

微信小程序反编译解包教程

  步骤一:获取小程序的.wxapkg包 (1)安装手机模拟器,比如说夜神、MuMu(https://mumu.163.com/360/) (2)下载和安装应用,微信和RE文件管理器 (3)开启root权限   (4)打开微信,搜索相对应的小程序,然后再打开RE文件管理器,定位到目录: 安卓:/data/data/com.tencent.mm/Mic...

Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署

6.1、平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名。可以指定单独节点的访问,生成指定的公私钥、证书等文件。具体的参数配置可以参考generateArtifacts.sh文件,可执行自动化生成,也可以按照该脚本里的命令手动...

Tomcat学习总结(10)——Tomcat多实例冗余部署

昨天在跟群友做技术交流的时候,了解到,有很多大公司都是采用了高可用的,分布式的,实例沉余1+台。但是在小公司的同学也很多,他们反映并不是所有公司都有那样的资源来供你调度。往往公司只会给你一台机器,因为有些应用挂了公司也不会有损失的,我们往往一台机器就可以搞定。 但是,我们也要为我们做出来的应用负责,毕竟东西做出来是为了给人用的,如果做出来的东西经常挂了,...

HashMap负载因子为什么是0.75

待写 HashMap负载因子为什么是0.75?HashMap有一个初始容量大小,默认是16static final int DEAFULT_INITIAL_CAPACITY = 1 << 4; // aka 16    为了减少冲突概率,当HashMap的数组长度达到一个临界值就会触发扩容,把所有元素rehash再放回容器中,这是一个非常耗时的...

Apache CarbonData 2.0 开发实用系列之一:与Spark SQL集成使用

【摘要】 在Spark SQL中使用CarbonData 【准备CarbonData】 在浏览器地址栏输入以下链接,点击"download"按钮下载已经准备好的CarbonData jar包 链接:https://github.com/QiangCai/carbonjars/blob/master/master/apache-carbondata-2.1....