Мигрировать проект из RCS в git? - PullRequest
41 голосов
/ 25 октября 2009

У меня есть 20-летний проект , который я хотел бы перенести из RCS в git без потери истории.Все веб-страницы предполагают, что One True Path проходит через CVS.Но после часа поиска в Google и пробного использования различных сценариев мне еще не удалось найти ничего, что успешно преобразует мое дерево проектов RCS в CVS.Я надеюсь, что хорошие люди в Stackoverflow будут знать, что на самом деле работает, в отличие от того, что, как утверждается, работает и не работает.

(Я искал Stackoverflow, используя как собственный поиск SO, так и поиск Google, ноесли в базе данных есть полезный ответ, я его пропустил.)

ОБНОВЛЕНИЕ : инструмент rcs-fast-export в http://git.oblomov.eu/rcs-fast-export был отремонтирован 14 апреля 2009 года, и эта версиякажется, работает на меня.Этот инструмент преобразует прямо в мерзавец без промежуточного CVS.Спасибо Джузеппе и Якубу !!!


Вещи, которые не сработали, я до сих пор помню:

  • Скрипт rcs-to-cvs, который поставляется в contribкаталог источников CVS

  • Инструмент rcs-fast-export в http://git.oblomov.eu/rcs-fast-export в версиях до 13 апреля 2010 г.

  • rcs2cvs скрипт найден в документе под названием «CVS-RCS-HOW-TO документ для Linux»

Ответы [ 5 ]

22 голосов
/ 25 октября 2009

См. InterfacesFrontendsAndTools на странице Git Wiki, в "Инструменты", "Взаимодействие с другими системами контроля версий", "Другое". Там вы найдете описание и ссылку на rcs-fast-export ( gitweb ) Рубиновый скрипт Джузеппе "Обломов" Билотта.

(веб-поиск также найдет страницу Ohloh и объявление для упомянутого проекта) .

1 голос
/ 20 августа 2015

ОК, после небольшого изменения я обнаружил, что преобразовать RCS в CVS было тривиально. Файлы имеют одинаковый формат, поэтому нужно просто переместить файлы в существующий корень CVS. Это предполагает, что у вас есть доступ к файлам RCS.

# Create CVS root dir. You only need to do this once.
mkdir $HOME/cvs/
cd $HOME/cvs/
cvs init

# Import a repository from RCS to CVS
cp -a _projectname_/RCS $HOME/cvs/_projectname_
1 голос
/ 07 марта 2011

Как правило, вы должны быть осторожны в отношении того, какие скрипты вы запускаете. Для RCS -> GIT в ваших интересах следовать методологии RCS-> CVS-> GIT.

Бегло взглянул на rcs-fast-export.rb по состоянию на 2011-01-12 и перебрал эту часть кода. В лучшем случае это страшно.

# steal username/email data from other init files that may contain the
# information
def steal_username
    [
            # the user's .hgrc file for a username field
            ['~/.hgrc',   /^\s*username\s*=\s*(["'])?(.*)\1$/,       2],
            # the user's .(g)vimrc for a changelog_username setting
            ['~/.vimrc',  /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            ['~/.gvimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            []
    ].each do |fn, rx, idx|
...
0 голосов
/ 16 января 2015

Только что нашел это, который работал хорошо для меня:

http://cynic.cc/blog/posts/migrate-from-rcs-to-git/

Просто обратите внимание, что "cvs-source-dir" на этой странице должен быть абсолютным путем.

0 голосов
/ 15 апреля 2010

У меня тоже была эта проблема, и я боролся с cvs2svn, parsecvs и еще много чего. parsecvs получил самое близкое, но Кит, кажется, оставил его позади, и теперь появляются случайные вилки. Проблема, с которой я столкнулся, заключалась в том, что он отлично разбирал файлы RCS, но последнее, что он делал, было git rm файл, поэтому мне пришлось бы обойти с помощью git reset, чтобы отменить удаление.

Тогда я обнаружил ртутный convert: https://www.mercurial -scm.org / вики / ConvertExtension Задача решена!

Я пытался постепенно добавлять некоторые вещи из отдельных деревьев RCS, похоже, это сработало.

...