Shell 命令行,svn add 需要添加很多文件时的简化脚本

Shell 命令行,svn add 需要添加很多文件时的简化脚本

我一直使用 git 版本管理工具,对于 svn 很不熟悉。现在接到一个项目是用 svn 进行管理的。我简单看了一下 svn 的管理命令,就开始上手工作了。

结果发现,svn 貌似没有 gitgit add -A 这样的添加所有未添加文件的命令。

或许有,我没有更深的研究,因为用过就不用了。

现在我添加了很多的新文件,一条一条命令的输入显得非常的麻烦。因此,我随手写了一个脚本,来实现了我需要的这个功能。

实现脚本

files=$(svn st | grep ? | sed 's/\?//g' | sed 's/ //g')
for i in $files; do
  svn add $i
done

实现原理:

  1. svn st 可以查看当前的 svn 的状态,最前面是 ? 表示未添加的文件
  2. 我们可以用 grep ? 过滤出来需要添加的文件。
  3. sed 可以过滤掉 ? 和 空格,只留下这些要上传的文件的路径
  4. 使用一个 for 循环,在文件路径前面加上 svn add 就可以实现添加文件了。

整体代码非常短,也非常简单,但是避免了我一次次的输入。

最后,我把这个代码写成全局的命令,命名为 svnadd 就可以在任何地方使用了。

实现方式2

上面用了循环,其实,svn add 是可以接受多个文件参数的,也就是可以通过命令,来添加所有的文件。

并且,上面的代码用了两个 sed 来分别替换问号和空格。这些可以简化到一个命令里面去,因此,这个命令可以优化为以下代码:

svn add $(svn st | grep ? | sed 's/[\?][ ]//g')

以上脚本均在 MAC 下测试通过,在 linux 下可能会有稍许不同。

本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...