获取 CVS 中文件所有版本的 md5sum

get md5sum of all the version of a file in CVS

我有一个 CVS 服务器,其中有大约 50 个版本的文件。我想获得所有版本的 md5sum。当然,一种方法是恢复到所有版本并获取它们的 md5sum,但我正在寻找一种不那么痛苦的方法。

假设 GNU/Linux 或类似的环境,以下 shell 会话的转储说明了一个潜在的解决方案。由于 CVS 在内部将文件存储为 diffs,必须对其进行处理以重建修订版,因此确实没有 "less painful" 方法,但肯定可以通过使用脚本来消除一些痛苦:

首先,确保文件没有本地修改:

$ FILE=FileToSum
$ cvs -nq update ${FILE}

接下来,生成文件所有修订的列表,遍历它们,检查每个修订,收集 MD5 总和,然后从工作 space 中清除粘性版本以进行清理。

$ cvs log -NS "${FILE}" \
> | awk '/^revision:/ { print  }' - \
> | while read revision; \
>   do \
>     echo -en "revision: ${revision}\n  "; \
>     cvs update -r ${revision} "${FILE}" >/dev/null 2>&1; \
>     md5sum "${FILE}"; \
>   done >md5sums; \
> cvs update -A ${FILE}

输出如下所示:

$ cat md5sums
revision: 1.17
  4e70589a177f688a3bf29a3843b840dd  FileToSum
revision: 1.16
  e9663f204cbc440235db7918e0be0a6a  FileToSum
revision: 1.15
.
.
.