Почему бы git merge установить мой svn url на ветку - PullRequest
1 голос
/ 25 ноября 2010

На моей главной проверке я могу сделать git svn info, а URL-адрес svn://myrepo.com/trun k когда на моем оформлении покупки в new_feature указан URL-адрес svn svn://myrepo.com/branches/new_feature.

После запуска git merge new_feature на моей главной проверке главный URL-адрес изменяется на svn://myrepo.com/branches/new_feature. Это заставляет и моего master, и new_feature указывать на какое-то место, и я больше не могу git svn dcommit соединиться с магистралью.

ПРИМЕЧАНИЕ: это работало на прошлой неделе, и единственное, о чем я могу думать, это могло бы быть по-другому, это то, что мне нужно было обновить ветку на транк. Я побежал git merge trunk на моей ветке. Возможно, этот мерзавец больше не позволит мне слить ветку обратно в магистраль?

Я хотел бы знать, почему это так и как предотвратить это, или исправить это после того, как это произошло.

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

git svn не предпринимает серьезных попыток представить слияния git в модели данных svn (возможно, потому что это не может быть сделано должным образом). Информация о ветке svn берется из сообщений журнала git; каким-то образом new_feature появился первым в журнале. После первого родителя слияния было бы лучше (edit: git-svn, вероятно, сделал, см. Ниже).

В любом случае, рекомендуемый способ справиться с этим - не записывать слияния (вместо этого используйте git merge --squash) или полностью переключаться на git.

Видя ваше редактирование: ваше слияние обратно в ствол должно быть ускоренным. Таким образом, git-svn следовал за первым родителем первого увиденного слияния, которым было слияние ствола с new_feature, пока не нашел сообщение журнала с метаданными git-svn. Предотвратите слияния git от быстрой пересылки в транк с помощью git merge --no-ff feature_branch.

0 голосов
/ 04 сентября 2013

в документации git :

If you do merge, note the following rule: git svn dcommit will

attempt to commit on top of the SVN commit named in

git log --grep=^git-svn-id: --first-parent -1

... поэтому, когда вы объединили ветку new-feature (которая была dcommitted и имеет журнал git с git-svn-idуказывая на его ветвь) в вашу ветку master (которая до слияния имела журнал git-svn-id, указывающий на ствол), вы дали master a --first-parent журнал с git-svn-id, указывающим на неправильную ветвь new-feature

Вот почему повсюду предостерегают, чтобы быть осторожными при объединении вещей, поддерживаемых svn (или вообще не делать этого).

...