Вот метод, который я придумал, бородавки и все такое.Это немного «грузоподъемно», так как я в основном ничего не знаю о CVS и немного (пока) о Mercurial:
У меня есть виртуальная машина Windows XP, с которой я могу делать снимки, поэтому я сделал это, а затемустановил CVSNT и версию Mercurial для командной строки Windows (я использую TortoiseHg на моей основной машине).Я сделал это на виртуальной машине, чтобы я мог легко избавиться от CVSNT, Mercurial и всего остального, что мне пришлось создать во время этой одноразовой миграции.Да, мне, вероятно, не нужно было этого делать, но виртуальная машина была уже доступна, и у меня уже было достаточно странных кусков приложений, оставшихся после циклов установки / удаления за эти годы.: -)
Насколько я могу судить, CVSNT была единственной доступной программой, которая могла легко настроить сервер CVS на компьютере с Windows.Кажется, это было бесплатно в свое время, но текущий сайт владельца теперь просит денег.Это не плохо, но я действительно не мог оправдать тратить деньги только на одноразовое обращение.В конце концов я отследил более старую версию CVSNT с помощью поиска Google и установил ее без проблем.
Вот заметки, которые я сделал, изучая, как заставить это преобразование работать:
Длинная версия
Скопируйте нужную папку с исходным кодом с диска основного компьютера на диск виртуальной машины.Скопируйте различные файлы ", v" из структуры папок C: \ RCS в ту же папку с исходным кодом на ВМ.Просто скопируйте, v файлы из соответствующей папки в C: \ RCS.Откройте окно командной строки на ВМ и введите следующее:
path %PATH%;C:\Program Files\cvsnt
mkdir \cvs-repo [or clean the folder out if it already exists]
cvs -d \cvs-repo init
[A DIR of \cvs-repo should show a CVSROOT folder in there.]
Сделайте копию папки с исходным кодом в \cvs-repo
.\cvs-repo
теперь должно иметь только две папки: CVSROOT и вашу новую папку.Скопируйте также в соответствующие файлы ", v".
mkdir \cvs-checkout [or clean that folder out if it already exists]
cd \cvs-checkout
cvs -d \cvs-repo co name_of_your_source_code_folder
DIR "\ cvs-checkout \ name_of_your_source_code_folder" должен показать все ваши файлы исходного кода, которые теперь извлечены из CVS.
Если вы еще этого не сделали, загрузите Mercurial с https://www.mercurial -scm.org / и установите его.Откройте копию Блокнота и перетащите в нее файл «C: \ Program Files \ Mercurial \ hgrc.d \ Mercurial.rc».В разделе «[extensions]» удалите точку с запятой в начале строки «;convert =
».Сохраните файл в «C: \ Documents and Settings \ имя_пользователя \ Mercurial.ini»
В командной строке виртуальной машины:
path %PATH%;C:\Program Files\Mercurial
mkdir \my-repo.hg [or clean that folder out if it already exists]
hg convert --datesort \cvs-checkout\source_code_folder_name \my-repo.hg
cd \my-repo.hg
[A DIR of \my-repo.hg should show a new ".hg" folder.]
hg update
[A DIR should now show the ".hg" folder and all the checked-out files.]
Скопируйте папку «.hg» из \ my- Перепишите в папку с исходным кодом на жестком диске вашего главного компьютера.Папка назначения теперь будет отображаться в TortoiseHg со всей соответствующей историей изменений, но все файлы будут помечены как Измененные (значок с восклицательным знаком в красном круге).Это связано с тем, что новый репозиторий Mercurial считает, что файлы были отмечены с окончаниями строк Unix (0x0A) вместо Windows (0x0D, 0x0A).Похоже, это происходит в процессе «hg convert», и я не нашел никакого способа обойти это.
Короткая версия
Как только все настроено в ВМ, вот что нужно сделать:
- Удалите все в \ cvs-repo, \ cvs-checkout и \ my-repo.hg.
- В командной строке
cvs -d \cvs-repo init
. - Вернувшись на свою главную машину, скопируйте папку с исходным кодом в общую папку вашей виртуальной машины (именно так вы делаете это в VirtualBox; другое программное обеспечение для виртуальных машин может позволить вам просто перетащить папку в виртуальную машину).
- Скопируйте соответствующие файлы ", v" в папку с исходным кодом в общей папке виртуальной машины.
- Вернувшись на виртуальную машину, переместите папку с исходным кодом в \ cvs-repo.
cd \cvs-checkout
cvs -d \cvs-repo co name_of_your_source_code_folder
hg convert --datesort \cvs-checkout\name_of_your_source_code_folder \my-repo.hg
cd \my-repo.hg
hg update
- Копироватьпапка .hg из \ my-repo на диск L: на виртуальной машине (буква L - это буква подключенного диска общей папки моей виртуальной машины).
- Переместить эту папку из папки переноса виртуальной машиныПерейдите в конечную папку с исходным кодом на главном компьютере.
Handy Batch File
После того, как я получил эту работу, я установил этот пакетный файл на виртуальной машине, чтобы автоматизировать процесскак можно больше:
@echo off
rem Converts source code under RCS control to a Mercurial repository.
rem This batch takes one argument: the name of the source-code folder (in quotes if necessary).
rem
rem This is for a VirtualBox VM that already has CVSNT and Mercurial installed, and has a Shared Folder mapped to drive L.
@echo On the host, copy the source-code folder into the Virtual Machine Transfer folder. Copy the appropriate ",v" files into the source-code folder in the Virtual Machine Transfer folder.
pause
@echo on
cd \
rmdir /S/Q \cvs-repo
mkdir \cvs-repo
rmdir /S/Q \cvs-checkout
mkdir \cvs-checkout
rmdir /S/Q \my-repo.hg
mkdir \my-repo.hg
cvs -d \cvs-repo init
xcopy L:\%1 \cvs-repo\%1 /E/I
cd \cvs-checkout
cvs -d \cvs-repo co %1
hg convert --datesort %1 \my-repo.hg
cd \my-repo.hg
hg update
xcopy \my-repo.hg\.hg L:\.hg /E/I
Заключение
Итак, все это работало, но у меня остались файлы с неправильными окончаниями строк.Глядя на этот вопрос , я вижу, что я не единственный с этой проблемой.Я могу жить с этим, но я все еще хотел бы исправить это, если кто-нибудь знает о решении.