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 не будет работать должным образом, пока вы не линеаризуете историю вашего ствола (или ветки).
Пожалуйста, опубликуйте сведения о вашей попытке миграции. В то время как то, что вы опубликовали, является полезным сообщением об ошибке, было бы в десять раз более полезно использовать список шагов, которые вы использовали для получения этой ошибки.