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

时间:2016-02-16 06:44:34

标签: shell cvs md5sum

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

1 个答案:

答案 0 :(得分:3)

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

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

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

接下来,生成文件的所有修订列表,迭代它们,签出每个修订版本,收集MD5总和,然后清除工作区中的粘性版本以进行清理。

$ cvs log -NS "${FILE}" \
> | awk '/^revision:/ { print $2 }' - \
> | 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
.
.
.