2010-08-24 3 views
3

Я клонировал реплицированный репозиторий svn (svnsync в локальную файловую систему). Все ветки и т. Д. Теперь доступны в git. Теперь я хотел бы начать работу над Svn ветвямиgit svn импортированный репозиторий с использованием ветвей svn

git checkout remotes/B_XYZ 

и делать некоторые коммиты через мерзавец. Теперь я хочу, чтобы перейти к другой ветви SVN через

git checkout remotes/B_ABC 

и делать некоторые изменения, а также.

И теперь последний вопрос: возможно ли внести изменения, внесенные мной на ветках (в git) в исходный репозиторий Subversion, в соответствующие ветви?

ответ

2

После некоторых экспериментов я выяснил, как выполнить фиксацию нового репозитория, который не является реплицированным.

git svn dcommit --commit-url URL/branches/BRANCHNAME 

С помощью команды выше я могу зафиксировать изменения, внесенные в git, в новый репозиторий svn.

2

git svn dcommit Не работает для вас?

+0

Но насколько я понимаю, doc git svn dcommit будет зафиксирован в том месте, где я клонирован, из которого локальный репозиторий, который я синхронизировал. Но я хотел бы dcommit изменения в другой репозиторий (например, http://svn.exz.de/)? – khmarbaise

+0

Извините, я сначала не понял эту часть. Возможно, вы могли бы вручную добавить несколько пультов, но для меня было бы проще создать новую интеграцию 'git svn' (которая фактически говорит об истинном' svn' repo, а не копии) в отдельном репозитории, а затем [' git cherry-pick'] (http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html) изменения в нем. –

+0

Я использовал реплицированный репозиторий SVN, потому что исходный файл в настоящий момент недоступен. В этом причина использования реплицированных SVN-репозиций вместо оригинала. – khmarbaise

0

Это возможно, если вы устанавливаете SubGit в свой репозиторий SVN и используете его вместо git-svn. Он создаст чистый репозиторий Git (не репозиторий git-svn!) Для вас, так что любое нажатие на него приведет к фиксации SVN и наоборот (вызвано перехватами). Любое новое нажатие ветки создаст ветвь в SVN, любое нажатие тега создаст тег.

Единственное ограничение заключается в том, что у вас должен быть доступ к вашему SVN repostiory, но, похоже, это именно ваш случай.

Чтобы сделать, которые выполняются

$ subgit install path/to/svn/repostiory 

Связанный репозиторий Git будет в пути/к/СВН/repostiory/.git.

Смежные вопросы