Chinaunix首页 | 论坛 | 博客
  • 博客访问: 284656
  • 博文数量: 64
  • 博客积分: 3099
  • 博客等级: 中校
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-29 19:38
文章分类

全部博文(64)

文章存档

2015年(1)

2014年(7)

2013年(6)

2012年(3)

2010年(11)

2009年(3)

2008年(19)

2007年(14)

我的朋友

分类: LINUX

2014-06-20 16:03:36

本文转至:http://blog.csdn.net/tangwing/article/details/7780395

      一般来讲在svn版本控制下的文件操作如添加删除等需要使用svn add 和svn rm来执行以便使svn知道这些变动,但实际使用中往往版本文件夹就是Eclipse的项目文件夹,想删除添加文件直接在Eclipse里操作就好了何必 跳转到命令行?【话说eclipse里好像有相关的功能但是我还没仔细看暂时忽略。。。】

     直接在Eclipse里进行操作的后果就是在使用svn提交时,在svn st 命令的列表中,所有新加入的文件前面会有‘?’,而删除的文件前会有‘1’,我们需要把有‘?’的行使用svn add添加进版本控制,对?的行使用 svn rm;问题是如何进行这一批量操作呢?

      通过“svn st | grep ?”命令可以得到需要添加的文件列表,但每行都以‘?’开头所以无法直接通过xargs传给svn add。 那么问题转换为如何才能把那些?过滤掉呢?
例:
     得到的文件列表:
d:\PROJET\repo\trunk>svn st | grep ?
? main.xml
? logo.png
? bin
? gen
? add.png
     希望最终执行的命令:svn add main.xml logo.png bin gen add.png

     要注意使用svn add -A 并不是一个好方法;对于我这个新手来讲解决方案不是太明显,但是经过研究和发帖求助还是找到了答案;

svn st | grep ? | sed "s/?//" |xargs svn add

svn st | awk '{if($1 == "?"){print $2}}'|xargs svn add

     第一种方案使用sed 把?替换为空然后传过去就好了,第二种使用了awk命令;这两个命令在进行字符串的替换等处理时是非常常用的,有了他们思路就比较完整了;建议和我一样的新手们好好研究一下sed以及正则表达式,很组合成很强大的脚本哦;)

阅读(2322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~