获取 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
.
.
.
我有一个 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
.
.
.