[devel] Import cvs to git
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Ср Янв 24 20:00:43 MSK 2007
On Wed, Jan 24, 2007 at 04:47:17PM +0300, Vitaly Ostanin wrote:
> Скажите, пожалуйста, какой способ импортирования cvs в git сейчас
> даёт наилучшие результаты?
Из-за неустранимых недостатков cvs (прежде всего неатомарности
коммитов) идеальных результатов не даёт ни один метод - за всеми нужно
проверять. Особенно плохо, если пользователи cvs любят коммитить
файлы с сообщением "empty log message" - в этом случае соседние
коммиты то и дело путаются друг с другом.
Обычно результат parsecvs или cvs2svn -> git-svn ближе к правильному,
чем результат git-cvsimport; с другой стороны, только git-cvsimport
позволяет отслеживать в git последующие изменения, вносимые в cvs.
Впрочем, и за parsecvs, и за cvs2svn во многих случаях приходится
проводить подчистку с помощью cg-admin-uncommit (удалять ничего не
изменяющие коммиты и прочий мусор, порождаемый cvs2svn).
> Например, чтобы импортировать cvs docs, к которому у меня нет
> прямого доступа.
Думаю, что в данном случае проблем с получением такого доступа при
необходимости не возникнет. Кстати, это имеет смысл сделать даже в
том случае, если в дальнейшем предполагается отслеживать изменения в
cvs через git-cvsimport - хотя git-cvsimport и может обращаться к
удалённому cvs-репозиторию через pserver или ssh, при этом очень
активно потребляется трафик, поскольку git-cvsimport не умеет
запрашивать от сервера патчи (что делает обычный cvs update) - каждая
версия каждого файла будет передана полностью; да и скорость работы в
таком режиме оставляет желать лучшего. Кстати, этим долгое время
страдал и git-svn - только в последних версиях в git-1.5.0-rcX
реализовали получение с сервера дельт от предыдущих версий файлов.
> Я правильно понимаю, что для перевода пакета на gear с
> сохранением истории проекта нужно создавать 2 бранча? Один для
> проекта и один для пакета?
Да - в одном бранче отслеживаются изменения в оригинальных исходниках
(импортом либо тарболов, либо VCS апстрима), в другом к этим
исходникам добавляются spec-файл, .gear-rules и прочие изменения,
вносимые в пакете. Конечно, можно завести любое количество
дополнительных бранчей, содержащих отдельные по смыслу изменения (в
этом случае обычно лучше порождать их от оригинальных исходников, а не
от какой-то версии пакета - так проще получить из этого патчи для
отправки в апстрим).
> В примере с mutt в git импортирована только последняя версия
> исходников. Как импортировать всю историю исходников, или их
> предыдущие версии?
Последовательно закоммитить нужные версии в бранч upstream - для
каждой версии удалить старые файлы (git-rm .; в git-1.5.0 нужно ещё
добавить опцию -r), распаковать очередной архив и переименовать
каталог, добавить файлы (git-add .), закоммитить с faketime, создать
тег с указанием версии.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: Digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20070124/2330e77a/attachment-0001.bin>
Подробная информация о списке рассылки Devel