Как пропустить первые N коммитов при конвертации svn репо в Git с использованием reposurgeon?

Как пропустить первые два коммита хранилища subversion при преобразовании его в Git с помощью reposurgeon?

Первый svn коммит импортировал код, используя неправильный макет ветки (trunk, tags, branches) и второй коммит удалил все это.

Третьим коммитом был импорт в правильную ветвь макета (subdir/trunk, subdir/tags, subdir/branches).

Этот фальстарт, кажется, сбивает с толку репозитория, потому что результирующий репозиторий Git имеет только один коммит: начальный фальстарт. Все последующие коммиты игнорируются.

Вот что я попробовал:

# installed reposurgeon 3.29
mkdir foo
cd foo
repotool initialize foo svn git
# edited the Makefile and set REMOTE_URL
make stubmap
# edited the resulting authors map (foo.map)
echo "1..2 delete" >>foo.lift
make

2 ответа

Решение

Используйте следующее для удаления первых двух коммитов svn:

<1>..<2> delete

Эта строка означает "выбрать коммиты из старого ID" 1 на старый ID 2 (включительно) и удалите их ". В качестве альтернативы вы можете использовать этот синтаксис:

<#1>..<#2> delete

Это означает "выбрать коммиты от первого коммита до второго (включительно) и удалить их". Этот синтаксис работает с входными репозиториями без svn. Будьте осторожны - коммит № 2 может не быть потомком коммита № 1 (например, они могут быть двумя корневыми коммитами из репозитория Git).

1..2 селектор означает "выбрать события от первого до второго (включительно) и удалить их". События не совпадают с коммитами - к событиям относятся BLOB-объекты (файлы), теги, сбросы и т. Д. Поскольку события BLOB-объектов должны появляться до коммитов, которые к ним относятся, 1..2 скорее всего выберет BLOB-объекты, а не коммиты.

Я не знаком с reposurgeon Если вы клонируете из командной строки, вы можете указать количество коммитов, которые вы хотите клонировать + имя ветки, которую вы хотите клонировать.

// Clona last X commits of branchA
git clone ... --depth=X --branch=branchA

Теперь вы можете добавить этот репозиторий в свой reposurgeon сервер

Другие вопросы по тегам