Git -2-SVN миграция?

Да, я знаю. Почему вы хотите перейти от Git к SVN?

Ну, мне повезло, что мне нужно перенести огромный репозиторий Git в Subversion! Вот один рабочий процесс, который я пробовал на комментарий Эдвина:

сначала создайте локальное репо SVN: svnadmin create svn_repo

Далее я просматриваю репозиторий Git: git clone git:myNameSpace/myProject

cd в myProject и запустите:

git svn init -s --prefix=svn/ file:///home/myHome/svn_repo/myProject

git svn fetch

git rev-list --parents master | grep '^.\{40\}$', чтобы просмотреть хэш вашего корневого коммита и дает только одно коммит как следует.

Далее нужно получить хэш пустой транзакции: git rev-parse svn/trunk

К сожалению, это не удается:

fatal: ambiguous argument 'svn/trunk': unknown revision or path not in the working tree. Use '--' to separate paths from revisions

Ну, я не могу много пойти после этого....

Ответы

Ответ 1

Я бы рекомендовал вам перенести это с помощью SubGit несколькими шагами.

$ svnadmin create svn.repo
$ subgit configure svn.repo
$ nano svn.repo/conf/subgit.conf #edit path to your (bare!) Git repository (you may use "git clone --bare <URL> bare.git.repo" if you don't have it locally)
$ subgit install

Это все. Во время перевода SubGit будет пытаться сохранить все коммиты (даже временные), ветки, слияния, игнорирование, даты, настройки EOL, теги и т.д., Как это возможно.

После перевода репозитории будут синхронизироваться (каждое нажатие на Git переводится в SVN-версию и наоборот). Чтобы разбить синхронизацию (если она вам не нужна), запустите

$ subgit uninstall svn.repo

Ответ 2

--- Отредактировано после добавления деталей ---

Вы выполнили пустую начальную фиксацию на svn/trunk? Если нет, то это объясняет, почему вы получаете сообщение об ошибке, которое невозможно найти в истории.

Комментарии (в сочетании)

The --prefix gives you remote tracking branches like "svn/trunk" which
is nice because you don't get ambiguous names if you call your local
branch just "trunk" then. 

и

Then get the hash of the empty trunk commit:

Тенденции подразумевают, что они сделали фиксацию svn/trunk, чтобы предотвратить конфликт svn с ранее существующим каталогом trunk. Если это так, возможно, ваш единственный промах не означает, что svn/trunk будет найден позже?

--- Исходный пост следует ---

Вы пробовали это? dcommit не будет работать должным образом, пока вы не линеаризуете историю вашего ствола (или ветки).

Пожалуйста, опубликуйте сведения о вашей попытке миграции. В то время как то, что вы опубликовали, является полезным сообщением об ошибке, было бы в десять раз более полезно использовать список шагов, которые вы использовали для получения этой ошибки.