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

Shell 获取CVS中文件的所有版本的md5sum,shell,cvs,md5sum,Shell,Cvs,Md5sum,我有一个CVS服务器,它有大约50个版本的文件。我想得到所有版本的md5sum。当然,一种方法是恢复到所有版本并获得md5sum,但我正在寻找一种不那么痛苦的方法 假设是GNU/Linux或类似的环境,下面的shell会话转储说明了一个潜在的解决方案。由于CVS在内部将文件存储为diff,必须对这些文件进行处理才能重建修订,因此确实没有“不那么痛苦”的方法,但当然可以通过使用脚本来消除一些痛苦: 首先,确保文件没有本地修改: $ FILE=FileToSum $ cvs -nq update $

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

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

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

$ 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
.
.
.

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

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

$ 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
.
.
.

谢谢,它成功了,但是,我不得不用“/^revision/”替换“/^revision:/”。在我的设置中,cvs日志中没有“:”。谢谢,它工作正常,但是,我必须将“/^revision:/”替换为“/^revision/”。在我的设置中,cvs日志中没有“:”。