Я читал многочисленные вопросы и блоги SO на git-svn
и слияния. Некоторые из них (в частности, git-svn
man page) предупреждают против, используя слияние где-нибудь рядом с филиалом. Я планирую dcommit
от.Git-svn объединяет две ветви SVN
Другие, как этот SO answer, утверждают, что слияние хорошо до тех пор, пока я использую разовый полнометражных ветви, которые я удаляю перед тем dcommitting
.
У меня есть установка с двумя долгоживущей SVN (и мерзавца) ветви:
- ствол (ГИТ-SVN:
svn/trunk
, мерзавец:master
) - стабильную ветвь - филиалы/devel (git-svn:
svn/devel
, git:devel
) - основная ветка развития, из которой я вилка от ветвей функции (и я могу жить с их перезагрузкой обратно вdevel
вместо слияния).
В приведенном выше рисунке, (1) показывает прошлые истории SVN, где branches/devel
была слита в trunk
.
(2) показывает, что у меня есть dcommitted
мое текущее развитие в SVN.
Вопрос: можно использовать git-svn
слить две ветви SVN так, что история показывает, точка слияния (как и сама SVN можно сделать)? Другими словами: что произойдет, если я буду dcommit
от master
, как показано на странице (3)?
Будет ли это испортить мою историю SVN (или git)? Или это просто забыть, что devel
был объединен в master
?
EDIT: Если git
просто забывает, что devel
был слит в master
, есть разница между dcommiting
с точки (3) и применяя все коммиты как единый патч?
Очень круто! Благодаря! – msrxthr
Есть ли способ заставить это работать: 'git-merge-svn master mybranch', за которым следует сразу' git-merge-svn mybranch master'? Второе слияние пытается dcommit к mybranch, и если вы попробуете еще раз, то он говорит, что он уже слит (ложь, вероятно, из-за того, что git-хозяин сливается с ша-хэшем, который соответствует шагу mybranch, несмотря на то, что он не был привязан к svn - хотя строка git-svn-id существует, поскольку она была объединена с фиксацией, которая была передана с mybranch на svn). –
@ShadowCreeper - на самом деле сообщение, вероятно, верно - SVN сообщает, что коммиты уже присутствуют в 'mybranch', какие они есть. Ваш ожидаемый результат будет заключаться в том, что 'mybranch' и' master' указывают на тот же SHA1, но это невозможно с SVN - это ветки, по существу, папки, а две ветви должны указывать на разные папки. Итак, в SVN все в лучшем случае, а в Git вы не можете использовать полную функциональность - так оно и есть. – Laas