Перенести проект из RCS в git?
Вопрос
У меня есть проект 20-летней давности что я хотел бы перейти с RCS на git, не теряя историю.Все веб-страницы предполагают, что Единственный Верный Путь лежит через CVS.Но после часа поисков в Google и пробования разных сценариев я так и не нашел ничего, что успешно преобразует дерево моего проекта RCS в CVS.Я надеюсь, что хорошие люди в Stackoverflow будут знать, что на самом деле работает, в отличие от того, что, как утверждается, работает, но на самом деле этого не делает.
(Я искал Stackoverflow, используя как собственный поиск SO, так и поиск Google, но если в базе данных есть полезный ответ, я его пропустил.)
Обновить:В rcs-fast-export
инструмент в http://git.oblomov.eu/rcs-fast-export был отремонтирован 14 апреля 2009 года, и эта версия, кажется, работает для меня.Этот инструмент преобразует Гетеро для git без промежуточных резюме.Спасибо Джузеппе и Якубу!!!
Вещи, которые не сработали, которые я до сих пор помню:
В
rcs-to-cvs
скрипт, который отправляется вcontrib
каталог источников резюмеВ
rcs-fast-export
инструмент в http://git.oblomov.eu/rcs-fast-export в версиях до 13 апреля 2010 г.В
rcs2cvs
скрипт, найденный в документе под названием "CVS-RCS- HOW-TO Document для Linux"
Решение
Видишь Интерфейсы , интерфейсы и инструменты страница на Git Wiki, в разделах "Инструменты", "Взаимодействие с другими системами контроля версий", "Другое".Там вы найдете описание и ссылку на rcs-быстрый экспорт (gitweb - веб - сайт) Рубиновый сценарий Джузеппе "Обломова" Билотты.
(Поиск в Интернете также приведет к поиску страницы Ohloh и объявления для упомянутого проекта).
Другие советы
Как правило, вы должны быть осторожны с тем, какие скрипты вы запускаете.Для 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|
...
Хорошо, после небольшой переделки я обнаружил, что преобразовать 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_
Только что нашел это, которое отлично сработало для меня:
http://cynic.cc/blog/posts/migrate-from-rcs-to-git/
Просто обратите внимание, что "cvs-source-dir" на этой странице должен быть абсолютным путем.
У меня тоже была эта проблема, и я боролся с cvs2svn, parsecvs и еще много с чем.парсеквс подобрал самый близкий, но Кит, похоже, оставил его позади, и теперь появляются случайные развилки.Проблема, с которой я столкнулся, заключалась в том, что он отлично анализировал файлы RCS, но последнее, что он сделал, было git rm
файл, так что мне пришлось бы возиться с git reset
чтобы отменить удаление.
Затем я открыл для себя mercurial's convert
:
https://www.mercurial-scm.org/wiki/ConvertExtension
Проблема решена!
Я попытался постепенно добавлять некоторые материалы из отдельных деревьев RCS, кажется, это сработало.