2016-02-16 2 views
0

У меня есть CVS-сервер, который имеет около 50 версий файла. Я хочу получить md5sum из всех версий. конечно, одним из способов было бы вернуться ко всей версии и получить их md5sum, но я ищу менее болезненный метод.получить md5sum всей версии файла в CVS

ответ

3

Предполагая, что GNU/Linux или аналогичная среда, следующий дамп сеанса оболочки иллюстрирует потенциальное решение. Поскольку 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 
. 
. 
. 
+0

Спасибо, это сработало, однако, я должен был заменить '/^ревизии: /' с '/^пересмотр /'. В cvs log в моей настройке нет ':'. –