Скопируйте измененные файлы из хранилища CVS - PullRequest
2 голосов
/ 28 декабря 2011

Я пытаюсь перенести репозиторий CVS в git.Я импортировал всю историю CVS в git, но мне просто нужно просмотреть все измененные / новые файлыЕсть простой способ сделать это?Я использую Debian Linux, поэтому предпочитаю инструменты командной строки.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Я наконец нашел способ получить измененные файлы и скопировать их в другой каталог:

cvs -qn update -d 2>/dev/null | grep '^[M|\?|P] ' | awk '{print $2}' > files.list
while read file; do cp -r -f --parents "$file" /tmp/dest/; done < files.list

В основном, cvs -qn update -d выполняет фиктивное обновление (не изменяет файлы), направляется в grep, чтобы вывести только измененные файлы, используйте awk, чтобы исключить M, P,? и т.д., вывод в файл.

Зацикливание строк в новом файле с помощью cp --parents для сохранения структуры каталогов

0 голосов
/ 07 января 2012

Один из подходов, описанных в « HOW-TO импорт и экспорт в и из Git и CVS », заключается в использовании наборов исправлений из CVS, чтобы вы могли регулярно обновлять свое git-репо для любых новых изменений из ваше CVS репо:

Первоначальный импорт:

убедитесь, что в вашем сеансе инициализирован параметр $CVSROOT, и выполните следующую команду:

$ git cvsimport -d $CVSROOT -C dir_to_create -r cvs -k cvs_module_to_checkout

Длинная версия:

cvsps -x --norc -u -A ojs2 > ~/cvsps.out
mkdir ojs
cd ojs
# the ojs2 at the end is the CVS module name
git-cvsimport -o HEAD -v -k -P ~/cvsps.out ojs2

Тогда:

$ git config cvsimport.module cvs_module_to_checkout
$ git config cvsimport.r cvs
$ git config cvsimport.d $CVSROOT

После того, как вы запустите эти команды конфигурации, поддерживать ветку master в актуальном состоянии можно просто:

$ git cvsimport -k
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...