Как я могу git-cvsimport несколько модулей из хранилища CVS, с различными ветвями?
Я пытаюсь git-cvsimport
несколько разных модулей из CVS, все они находятся в разных ветках.
Пока что я сделал это (в псевдо-bash-коде):
for each ($MODULE, $BRANCH); do
git-cvsimport -p x -v -d "$CVS_REPO" "$MODULE" -o "$BRANCH" -C "$MODULE"
done
Но это делает разные репозитории для каждого модуля. Как бы я объединил их всех в одно, если это вообще возможно?
2 ответа
Теоретически, вы можете использовать Git Grafts для объединения ваших репозиториев в одно:
Смотрите "Есть ли чистый способ обработки двух оригинальных git-репозиториев, которые начинались с одного и того же контента?"
На практике вы можете захотеть взглянуть на другой инструмент, такой как cvs2git, и проверить, не импортирует ли он более согласованным образом.
Что я сделал, так это изменил скрипт perl git-cvsimport, я изменил update_index()
метод от:
sub update_index (\ @ \ @) { мой $old = shift; мой $ новый = сдвиг; open(my $fh, '|-', qw(git update-index -z --index-info)) или умри "не могу открыть git update-index: $!"; печатать $ fh (карта { "0 0000000000000000000000000000000000000000\t$_\0" } @$ Старый), (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$_->[2]\0" } @$ Новый) или умри "не могу написать в git update-index: $!"; закрыть $ fh или умри "не могу написать в git update-index: $!"; $? и умереть "git update-index сообщил об ошибке: $?"; }
Для того, чтобы:
sub update_index (\ @ \ @) { мой $old = shift; мой $ новый = сдвиг; open(my $fh, '|-', qw(git update-index -z --index-info)) или умри "не могу открыть git update-index: $!"; печатать $ fh (карта { "0 0000000000000000000000000000000000000000\t$cvs_tree/$_\0" } @$ Старый), (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$cvs_tree/$_->[2]\0" } @$ Новый) или умри "не могу написать в git update-index: $!"; закрыть $ fh или умри "не могу написать в git update-index: $!"; $? и умереть "git update-index сообщил об ошибке: $?"; }
(Обратите внимание на добавление $cvs_tree
переменная.)
Работает как шарм. Выполнить:
perl git-cvsimport -v... (остальные обычные аргументы git-cvsimport)