Reposurgeon создает ветви вместо тегов
Я пытаюсь преобразовать CVS в GIT, следуя этому руководству: http://www.catb.org/~esr/reposurgeon/dvcs-migration-guide.html
В целом все выглядит нормально, однако для некоторых тегов CVS (и, похоже, он запускается в определенный момент времени в хранилище, а затем делает это впоследствии) вместо тегов GIT создаются ветви GIT.
Любая идея, почему ветви создаются в первую очередь вместо тегов?
В основном это ветки, которые создаются при сборке с помощью автоматического инструмента сборки (в основном по одной на сборку) + ветки релиза (по одной на релиз). Их сотни, поэтому я хотел бы убедиться, что они создаются не как ветви, а как теги.
Может ли репохирург сделать это или даже правильный инструмент для работы?
К вашему сведению - что делает этот ответ: /questions/8857480/est-li-prostaya-komanda-dlya-preobrazovaniya-vetki-v-teg/8857485#8857485 предоставляет:
git tag BRANCH_A BRANCH_A
git branch -d BRANCH_A
результаты в:
error: The branch 'BRANCH_A' is not fully merged.
If you are sure you want to delete it, run 'git branch -D BRANCH_A'
похоже, что-то здесь не правильно прикреплено. Вы знаете, что может быть причиной этого?
2 ответа
Автор репохирурга здесь, я только что узнал об этом вопросе.
То, с чем вы сталкиваетесь, не является ошибкой репозитория. Это то, как cvs-fast-export взаимодействует, когда обнаруживает тег, который не реплицируется по набору основных устройств... что означает, что в метаданных репозитория произошла ошибка оператора CVS.
cvs-fast-export пытается справиться с этим, создавая ветвь с одной фиксацией для неполного тега. Это поведение описано на странице руководства, но я думаю, что его легко пропустить без контекста его просмотра.
Использование cvs2git может быть лучшим вариантом для вас.
Он преобразует ваши CVS-теги в git-теги, предполагая, что CVS-тег представляет одну ревизию репо (или может быть подделана достаточно легко). В противном случае вы получите TAG.FIXUP
филиал, о котором можно позаботиться, следуя инструкциям в разделе Использование ссылки.