Shell 命令行,svn add 需要添加很多文件时的简化脚本
我一直使用 git
版本管理工具,对于 svn
很不熟悉。现在接到一个项目是用 svn
进行管理的。我简单看了一下 svn
的管理命令,就开始上手工作了。
结果发现,svn
貌似没有 git
的 git add -A
这样的添加所有未添加文件的命令。
或许有,我没有更深的研究,因为用过就不用了。
现在我添加了很多的新文件,一条一条命令的输入显得非常的麻烦。因此,我随手写了一个脚本,来实现了我需要的这个功能。
实现脚本
files=$(svn st | grep ? | sed 's/\?//g' | sed 's/ //g')
for i in $files; do
svn add $i
done
实现原理:
svn st
可以查看当前的svn
的状态,最前面是?
表示未添加的文件- 我们可以用
grep ?
过滤出来需要添加的文件。 sed
可以过滤掉?
和 空格,只留下这些要上传的文件的路径- 使用一个
for
循环,在文件路径前面加上svn add
就可以实现添加文件了。
整体代码非常短,也非常简单,但是避免了我一次次的输入。
最后,我把这个代码写成全局的命令,命名为 svnadd
就可以在任何地方使用了。
实现方式2
上面用了循环,其实,svn add
是可以接受多个文件参数的,也就是可以通过命令,来添加所有的文件。
并且,上面的代码用了两个 sed
来分别替换问号和空格。这些可以简化到一个命令里面去,因此,这个命令可以优化为以下代码:
svn add $(svn st | grep ? | sed 's/[\?][ ]//g')
以上脚本均在 MAC 下测试通过,在 linux 下可能会有稍许不同。
本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。