Переключите ветку svn git dcommit на

У меня был master dcommitrebase от) Subversion trunk.

Я создал промежуточную ветку Subversion tc, чтобы объединить изменения из двух разных веток, используя:

git branch master
git svn branch tc -m "Branch for merging"
git checkout -b tcl --track tc
git merge cat #Another branch, whose changes I merged here
git commit -m 'Merged changes from cat branch'
git svn dcommit

Поскольку все было хорошо, я хотел продвинуть это на trunk. Я делал следующее:

git branch master
git merge tcl
git svn dcommit

Теперь, поскольку master был объединен из другой ветки, указывающей на другую ветку Subversion, он пытается выполнить фиксацию в ветке Subversion tc. Я хочу, чтобы это было связано с Subversion trunk.

Есть там git svn switch или что-то в этом роде?

Я знаю, что мой рабочий процесс не оптимален, и приветствуются любые предложения по его улучшению.


person lprsd    schedule 18.07.2011    source источник
comment
Я не знаю ответа на ваш вопрос, но я настоятельно рекомендую всегда выполнять git svn dcommit -n (пробный запуск) перед выполнением фактического dcommit. Одна из причин этого в том, что вы можете быть уверены, что совершаете фиксацию в ветке svn, которую хотите зафиксировать.   -  person MatrixFrog    schedule 21.07.2011


Ответы (2)


Как упоминалось в этот вопрос, использование git merge в репозитории с git-svn не является хорошей идеей.

Вместо этого вы должны были "объединить" изменения в master:

git checkout master
git format-patch --stdout master..tcl | git am
git svn dcommit

Проблема с git merge в этом случае заключается в том, что он также устанавливает URL-адрес git-svn для master в ветку SVN tc. Комбинация format-patch и am принимает только сами изменения.

person Daniel Hershcovich    schedule 21.07.2011
comment
Будет ли такая же проблема возникать при перебазировании вместо слияния? - person RationalGeek; 19.12.2013
comment
Никогда не следует переустанавливать что-либо из ветки svn, если вы хотите зафиксировать это, потому что вы не сможете этого сделать. svn не поддерживает изменение истории. - person Daniel Hershcovich; 19.12.2013
comment
Что ж, в следующий раз я этого не сделаю. Но как решить проблему, если проблема уже существует? - person jlengrand; 06.03.2014
comment
@jlengrand вы можете объяснить свой вопрос? Если вы уже слились и хотите выполнить dcommit, вам придется git reset вернуться к предыдущему слиянию и повторить это с помощью описанного выше метода. - person Daniel Hershcovich; 06.03.2014
comment
Да уже слился :). Я нашел здесь решение stackoverflow.com/questions / 2835791 / в @dyodji ответят через некоторое время :). Спасибо за ответ! - person jlengrand; 07.03.2014

AFAIK слияние --no-ff прошло бы так, как вы хотите:

git branch master
git merge --no-ff tcl
git svn dcommit
person BrunoJCM    schedule 09.06.2015