本文转至: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) |