Мені це потрібно було і мені, і за допомогою відповіді Бомбе + трохи обмацуючи, я працював. Ось рецепт:
Імпорт Git -> Subversion
1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase origin/trunk
5.1. git status
5.2. git add (conflicted-files)
5.3. git rebase --continue
5.4. (repeat 5.1.)
6. git svn dcommit
Після №3 ви отримаєте таке криптовалютне повідомлення:
Використання більш високого рівня URL-адреси: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo
Просто ігноруйте це.
Під час запуску №5 у вас можуть виникнути конфлікти. Вирішіть їх, додавши файли із станом "без вимикання" та відновлення відновлення. Врешті-решт, ви закінчите; потім синхронізуйте назад до сховища SVN, використовуючи dcommit
. Це все.
Синхронізація зберігання сховищ
Тепер ви можете синхронізувати з SVN в Git, використовуючи наступні команди:
git svn fetch
git rebase trunk
А для синхронізації з Git до SVN використовуйте:
git svn dcommit
Заключна примітка
Ви можете спробувати це на локальній копії, перш ніж подати заявку в реальний сховище. Ви можете зробити копію вашого сховища Git до тимчасового місця; просто використовувати cp -r
, оскільки всі дані знаходяться в самому сховищі. Потім можна налаштувати файловий тестовий сховище, використовуючи:
svnadmin create /home/name/tmp/test-repo
І перевірте робочу копію, використовуючи:
svn co file:///home/name/tmp/test-repo svn-working-copy
Це дозволить вам пограти з речами, перш ніж робити якісь постійні зміни.
Додаток: Якщо ви зіпсуєте git svn init
Якщо ви випадково запустили git svn init
неправильну URL-адресу, і ви не були достатньо розумні, щоб зробити резервну копію вашої роботи (не питайте ...), ви не можете просто запустити ту ж команду ще раз. Однак ви можете скасувати зміни, видавши:
rm -rf .git/svn
edit .git/config
І видаліть розділ [svn-remote "svn"]
розділу.
Потім можна запустити git svn init
заново.