У меня есть Perl-скрипт (слишком большой и слишком общий, чтобы публиковать его в качестве ответа на этот вопрос), который собирает копию каждой ревизии указанного файла в git.(Это также работает с RCS и CVS).
РЕДАКТИРОВАТЬ: Я наконец-то дошел до выпуская его на Github .
Ядроэто (псевдокод):
- Выполнить
git log --date=raw -- filename
- Искать выходные данные для
commit
и Date:
строк. - Для каждогоcommit-id:
- Run
git show commit-id ./filename > target-filename
Целевое имя файла создается из некоторой комбинации commit-id, timestamp и / илипоследовательный индекс.
Результатом может быть, например, набор файлов, таких как:
foo__001.txt
foo__002.txt
foo__003.txt
, где каждый является версией foo.txt
из репозитория git.Затем я могу просмотреть каждый файл и / или различные его версии.
Это не дает вам все, о чем вы просите, но это должно стать хорошим началом.