git cvsimport не работает: не удалось объединить мастер в текущую ветку

Я пытаюсь импортировать проект, который за несколько лет вырос в cvs. У него есть несколько веток для релизов патчей, тегов и заголовка. Это команда, которую я использую:

 git cvsimport -r cvs -k -d :pserver:<USERNAME>@cvs:/home/cvsroot <MODULNAME>

Несколько недель назад он работал отлично. Несколько дней назад была создана ветка для текущего релиза, в которой люди все еще делают коммит, а другие уже работают над следующей вехой. Эта ветка будет добавлена ​​в голову позже.

На мгновение процесс завершается ошибкой со следующими сообщениями ниже:

fatal: Needed a single revision
fatal: Can merge only exactly one commit into empty head
Could not merge master into the current branch.

В чем может быть причина? Как я могу с этим справиться?


person Spindizzy    schedule 14.03.2014    source источник


Ответы (2)


Я нашел обходной путь, не импортировав всю историю, которая датируется 2006 годом. Это моя процедура:

  • Создайте новый репозиторий git
  • Коснитесь нового файла
  • Добавьте и зафиксируйте этот файл с переключателем даты
  • сделать CVS импорт

Вот задействованные команды:

mkdir project.cvs    
mkdir project.git    
cd project.git
git init
touch test
git add test
git commit -m "initial" --date="2010-01-01 00:00:00"
cd ../project.cvs
git cvsimport -o master -C ../project.git -k -d :pserver:<USERNAME>@cvs:/home/cvsroot <MODULENAME>

В моем случае это заняло некоторое время, но когда я вернулся к репозиторию git, история с 2010 года была доступна.

person Spindizzy    schedule 18.03.2014

Я обнаружил, что это работает:

$ cvs -d :pserver:[email protected]:/path/to/cvsroot login
$ git-cvsimport -v -a -i -k -d pserver:[email protected]:/path/to/cvsroot -C <git_repository> <cvs_module>

Аргументы командной строки:

-v: verbose; report a lot of information about what's going on
-a: import all commits, not just recent ones
-i: import-only. don't mess with working directory
-k: 'kill keywords': no CVS keyword expansion (e.g. $Date$)
-d: root of cvs archive (you could also set CVSROOT if you really wanted to)
person crististm    schedule 31.01.2015