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