У меня есть существующий репозиторий git с длинной историей. По деловым причинам я должен отразить этот репозиторий на сервере svn. Я пробовал несколько способов, но до сих пор не работал.Как я могу нажать git history на svn
ответ
Мне сложно сделать это некоторое время назад, поэтому я сделал несколько шагов из разных источников, чтобы сделать это. Эта процедура сохранит вашу полную историю git. Перед началом работы убедитесь, что у вас есть резервная копия вашего репозитория.
Первое, что нужно сделать, это создать пустой репозиторий svn
. Когда вы закончите с этим убедитесь, что git-svn
установлен и редактировать YOUT .git/config
отслеживать вновь созданных svn
сделок РЕПО:
[svn-remote "svn"]
url = https://your.svn.repo
fetch = :refs/remotes/git-svn
Теперь вы можете получить свой svn
репозиторий:
git svn fetch
Вы должны увидеть удаленный филиал после вашего svn
репо, вы можете проверить с:
git branch -a
Теперь получить хэш ваш root commit
и в svn
отрасли:
git rev-list --parents master | grep '^.\{40\}$'
git rev-parse remotes/git-svn
Создание трансплантата:
echo <hash-of-root-commit> <hash-of-svn-branch-commit> >> .git/info/grafts
Теперь, если вы используете графическую обертку для git
(я использую tig
) вы увидите, что ваш root commit
спускается с svn-branch
,
На этом этапе вы должны распространять graft
делает его постоянным:
git filter-branch -- remotes/git-svn --all
Теперь нам не нужно больше, чтобы мы могли удалить его
rm .git/info/grafts
Проверьте с вашим графическим мерзавца обертке что svn-branch
является предком master
.
Теперь вы почти закончили, перебазировать свою историю на верхней части туловища:
git svn rebase
Теперь вы готовы совершить на ваш svn
репо с использованием
git svn dcommit
Я создал эту процедуру слияния информация я нашел here и here, поэтому спасибо соответствующим авторам. Я изменил первую часть, потому что предлагаемая процедура не сработала для меня.
Обратите внимание, что подход git-svn
ведет к частичной потери истории. Вместо этого используйте SubGit, он сможет конвертировать хранилище Git в SVN, сохраняя историю всех филиалов.
Ниже вы можете найти пример использования SubGit в локальном режиме, т.е.когда оба диверсий и Git репозитории находятся на одном хосте:
$ subgit configure SVN_REPO
# adjust SVN_REPO/conf/subgit.conf, so git.default.repository points to GIT_REPO
# adjust SVN_REPO/conf/authors.txt to map SVN usernames to Git identities
$ subgit install SVN_REPO
$ subgit uninstall --purge SVN_REPO
После того, как мы конвертированы Linux ядра Git репозиторий SVN таким образом. Надеюсь, это поможет.
- 1. Как я могу нажать фиксацию на Git
- 2. Я не могу нажать на git?
- 3. Невозможно нажать на SVN-репо с помощью git svn
- 4. Как нажать на удаленный репозиторий SVN ... что я отслеживание
- 5. Как я могу оценить предел git-svn?
- 6. Как я могу совершить/нажать псевдоним git (в .git/config)?
- 7. Я могу нажать, но не тянуть git
- 8. Как я могу нажать git-replace на дистанционное репо?
- 9. Могу ли я сделать git-svn больше похожим на git?
- 10. Удалить Commit in git History
- 11. GitHub - как я могу нажать?
- 12. Удалить все Git Commit History
- 13. Git Error Commit History
- 14. Могу ли я нажать исправление на тег в git
- 15. Git - Github push history
- 16. Я не могу нажать на heroku
- 17. svn history через командную строку
- 18. Не могу нажать на мой репозиторий git
- 19. Почему я не могу нажать на git origin master?
- 20. Я не могу нажать код на git-сервер
- 21. Получение SVN Commit Eclipse history
- 22. Как нажать на git поддерево?
- 23. Как клонировать svn repo с git svn и уметь фиксировать как git, так и svn?
- 24. Как я могу нажать/получить git-репозиторий по Bluetooth-соединению?
- 25. Git: Как я могу проверить/нажать только мои файлы?
- 26. git commit history lost?
- 27. Могу ли я сделать git-svn handle svn: eol-style?
- 28. Как я могу нажать новую ветку?
- 29. Как я могу нажать одну Git-фиксацию без предыдущей?
- 30. Добавить Eclipse Refactor History в Git Repository