git-svn - клонировал одну ветку, теперь dcommit к другой ветви? - PullRequest
2 голосов
/ 05 февраля 2012

Я использовал git-svn для удаленной работы с шипом для новой функции. Теперь я хочу зафиксировать свои изменения в SVN, но в ветке SVN, отличной от той, которую я впервые клонировал . Как я могу это сделать ?

Исходная ветвь изменилась, и я не готов объединить их. Я хотел бы создать новую ветку SVN из исходной ветки и зафиксировать изменения, которые у меня есть в git.

У меня мелкий клон только одной ветки SVN:

git svn clone -r:HEAD svn://***/branches/main
git branch MySpike
git checkout MySpike
// Did some work, a lot of commits.

Как передать изменения в другую ветку SVN? Является ли это возможным ?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Расширение до the.malkolm ответ:

Если вы посмотрите на .git/config, вы найдете строку, подобную fetch = branches/main:refs/remotes/git-svn. Добавьте еще одну похожую строку, ссылаясь на имя удаленной ветви, которую вы хотите зафиксировать, и имя, чтобы дать его локально (или, для транка Subversion, fetch = trunk:refs/remotes/trunk).

Затем запустите git svn fetch. Это загрузит историю ветки, которую вы только что добавили; не стесняйтесь ограничивать ревизии, которые он выбирает, если это то, что вам нужно.

Затем перейдите на новую ветку и выполните коммит оттуда!

git rebase $(git merge-base remotes/git-svn MySpike) MySpike --onto remotes/newbranch
git svn dcommit
1 голос
/ 07 февраля 2012

После того, как вам удалось настроить две ветви svn (просто измените файл .git / config).Вот как перебазировать весь код, который вы сделали поверх svn / original / branch в ветви с именем cool / feature , в другую ветку svn svn / another / branch :

git rebase --onto svn/another/branch $(git merge-base svn/original/branch cool/feature) cool/feature
...