一次向svn中增加所有新增文件 svn add all new files
我经常会一次往Subversion里添加一批文件。在使用命令行做这件事时,你必须指定所有想要添加的文件名。如果文件不多的话这还不算太糟糕,但如果你要添加20个文件,那就费事了。当然你也可以用通配符,但这样一来就可能匹配到已经在版本控制之下的文件(这不会有什么损害,只不过会输出一堆错误信息,可能会跟别的错误信息混淆)。为了解决这个问题,我写了一行简单的bash命令:
svn st | grep '^\?' | tr '^\?' ' ' | sed 's/[ ]*//' | sed 's/[ ]/\\ /g' | xargs svn add
| 命令 | 效果 |
|---|---|
| svn st | 获取当前目录及子目录中所有文件Subversion状态,每个文件一行,未加入版本控制的文件以一个(?)问号开头,随后是一个Tab, 接着是文件名 |
| grep ‘^\?’ | 找出所有以问号(?)开头的行 |
| tr ‘^\?’ ‘ ‘ | 把问号(?)替换成空格(‘’), tr把一个字符串替换成另一个字符串 |
| sed ‘s/[ ]*//‘ | 用sed把每行的空格去掉 |
| sed ‘s/[ ]/\ /g’ | 把文件名中的空格替换转义 |
| xargs svn add | 针对结果进行处理 |
以下为精简脚本
//添加
svn st | awk '{if ( $1 == "?") { print $2}}' | xargs svn add
//删除
svn st | awk '{if ( $1 == "!") { print $2}}' | xargs svn del