Как мне использовать git-svn для объединения изменений из транка в ветку в svn? - PullRequest
8 голосов
/ 02 сентября 2011

Я видел, как люди предлагают использовать git-svn для слияния и передачи его обратно в svn.

Я ищу хорошее пошаговое руководство.

  • Стоит ли беспокоиться, или я должен просто использовать svn для этого.
  • Будут ли люди видеть, что я использовал git, и есть ли какие-либо метаданные о слиянии в svn?
  • МожетЯ делаю клон ствола и выбираю 1 ветвь?
  • Нужен ли полный клон или я могу импортировать его из точки, где была создана ветвь?

Ответы [ 3 ]

10 голосов
/ 07 сентября 2011

Я использовал инструкцию в этом посте с большим успехом. http://justaddwater.dk/2009/03/09/using-git-for-svn-repositories-workflow/

Я использую git для объединения веток, а затем фиксирую их в репозитории svn. Это не соответствует процедуре слияния для svn, поэтому это может быть проблемой для других пользователей. свойство svn: merge не установлено

git-svn не оставляет никаких свидетельств в репозитории svn, что вы используете git-svn.

3 голосов
/ 05 сентября 2011

Стоит ли эта проблема или я должен просто использовать svn для этого?

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

Будут ли люди видетьЯ использовал git, и есть ли какие-либо метаданные о слиянии в svn?

Нет, это будет выглядеть как новый коммит на транк.

Могу ли ясделать клон ствола и 1 ветвь, которую я выберу?

Если вы имеете в виду клонировать ваш git-svn в новый репозиторий git, тогда да.Просто клонируйте git-svn и удалите посторонние ветки или сделайте это непосредственно в репозитории git-svn перед тем, как клонировать.1020 *.Я думаю, что большая часть этого применима в этой ситуации.

Нужен ли полный клон или я могу импортировать его из того места, где была создана ветка?

Gitклоны обычно будут полными клонами, если вы не используете опцию --depth.Если вы хотите выбросить предыдущую историю, вы всегда можете сжать все коммиты в более старую или просто удалить каталог .git и начать новый репо.

1 голос
/ 02 сентября 2011

Я читал несколько статей людей, предлагающих это, но я думаю, что его следует использовать, только если вы оба работаете с GIT и SVN для одного и того же кода (локальное репозиторий с git и размещенное репозиторий с svn). Я бы посоветовал вам просто придерживаться вашей VCS и получить подходящий инструмент слияния, такой как BeyondCompare или Kaleidoscope

Небольшое руководство по git-svn можно найти на

http://flavio.castelli.name/howto_use_git_with_svn

...