很多时候我们需要两个文件夹的内容保持完全一致。比如说在 Android 平台开发中,当上游厂商 release 出新的版本的代码的时候,就需要合并新的代码到我们的代码仓库中。对于一两个文件的 对比,使用任何方法都可以。但是对于 Android 源码来说,加上仓库一共有 50 ~ 60 GB 的代码, 上百万的文件,此时就需要选取合适的工具。本文介绍怎么使用 rsync 命令来自动对比并 Merge 代码。
rsync 简介
下面是 rsync 的 Manual Page 中的简介。
rsync - a fast, versatile, remote (and local) file-copying tool
上面的一句话简单明了的概括了 rsync 的功能特性:快速,功能强大,远程复制,以及本地复制。 rsync 可以说是一个功能强大的复制工具。本文我们只会介绍一些使用 rsync 在本地 Merge 代码 时会用到的选项。
语法
rsync 在本地 Merge 两个文件夹的语法如下:
rsync [OPTION...] SRC... DEST
选项
下面是一些合并代码会用到的选项
-v, --verbose
:详尽的输出-i, --itemize-changes
: 输出文件变化的总结-C, --cvs-exclude
:按照版本控制系统的模式自动忽略文件-c, --checksum
:比较校验和,而不是时间和大小-n, --dry-run
:只打印出差异,而不进行 Merge--delete
:删除只在 dest 中存在的文件--exclude
:跳过某些文件或者文件夹--no-times
:如果两个文件只是时间不同,则不改变 dest 的时间--no-perms
:如果两个文件只是权限不同,则不改变 dest 的权限
用法示例:
rsync -av -C --exclude=.repo/ --exclude=.git/ -c -i --no-times --no-perms --delete src/ dest/
更多信息
上面只介绍了 rsync 全部功能的一小部分,更多的用法请查看 rsync 的官方手册。
man rsync