Как пропустить первые 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
сервер