Ответ 1
Посмотрите SubGit.
SubGit - это серверное решение, оно позволяет Subversion получить доступ к репозиторию Git и наоборот. Вы можете обратиться к documenation для получения более подробной информации, но в целом довольно легко использовать SubGit:
SubGit нуждается в локальном доступе к репозиторию Git, на который вы нажимаете. Создайте репозиторий Subversion на одном компьютере:
$ svnadmin create $SVN_REPOS
затем запустите
$ subgit configure $SVN_REPOS
Эта команда создает файл $SVN_REPOS/conf/subgit.conf
, настраивает его git.default.repository
следующим образом:
[git "default"]
repository = /path/to/your/git/repository.git
Вы можете указать много репозиториев Git, синхронизированных с одним репозиторием Subversion, просто добавьте необходимые разделы [git "identifier"]
.
Вы также можете указать произвольный макет репозитория, например. стандартный выглядит следующим образом:
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/*
Вы также можете настроить $SVN_REPOS/conf/authors.txt
, чтобы сопоставить имена авторов svn с именами Git.
После этого запуска:
$ subgit install $SVN_REPOS
$ ... let initial translation complete ...
$ TRANSLATION SUCCESSFUL
В настоящий момент у вас есть репозиторий Subversion и его копия Git, которые непрерывно синхронизируются, то есть SubGit немедленно переводит svn-версию в Git commit на каждом svn commit
и Git commit в svn-ревизию на каждом git push
,
Итак, вы можете зафиксировать изменения в созданном репозитории Subversion и сохранить все изменения в синхронизации с основным репозиторием Git.