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, создать тег с указанием версии.