git svn а работаешь с частными ветками?

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

Я хочу, чтобы мой рабочий процесс был:

  • главная ветка git, которая идет в ногу со стволом svn.

  • локальные ветки git, в которых я работаю с моей функцией и ошибкой.

  • Я хочу часто обновлять функциональные ветки с помощью master.

  • Когда я буду готов, я хочу объединить ветку функций с master и зафиксировать ее обратно в svn.

Это типичный рабочий процесс?

Изначально я использовал git merge для объединения моей основной ветки и ветвей функций. Это приводило к разного рода конфликтам и проблемам. Позже я прочитал, чтобы вообще не использовать git merge и придерживаться git rebase. Тогда будут ли следующие команды git правильными?

  • git svn rebase (чтобы загрузить последние изменения в мастер)
  • git checkout -b myAwesomeFeature (чтобы создать функциональную ветку для работы)
  • ... поработайте, сделайте коммиты в моей функциональной ветке
  • ‹-------------------------------- ВРЕМЯ ПРОДОЛЖАЕТ >>>
  • мастер проверки git
  • git svn rebase (чтобы загрузить новый материал)
  • git checkout myAwesomeFeature
  • git rebase master (чтобы получить материал svn trunk в моей функциональной ветке)
  • ‹------------------------------------ ГОТОВЫ ОТВЕТИТЬ НА МОЙ ФУНКЦИОНАЛЬНЫЙ ФИЛИАЛ >>>
  • мастер проверки git
  • git rebase myAwesomeFeature (чтобы быстро перемотать голову мастеров, чтобы получить мои функции)
  • git svn dcommit (окончательно опубликовать)

Мы будем очень благодарны за любые советы или предложения, которые помогут начинающему пользователю git жить в мире svn. Спасибо


person D.C.    schedule 03.10.2011    source источник


Ответы (1)


Ваш рабочий процесс примерно такой же, как у меня. Это достаточно хорошо, если вы выполняете только фиксацию в стволе svn. Это усложняется, когда вы фиксируете несколько веток svn, где rebase не только объединяет содержимое, но и изменяет указанную ветку svn, и в этом случае вы можете только git cherry-pick, когда вам нужно выполнить фиксацию в одной ветке svn, нацеленной на ветку git в другой, как обсуждается здесь: Преодолеть предостережения git svn

Также стоит понимать, что SVN не может обрабатывать нелинейную историю и что слияние git нельзя использовать с ним: git svn workflow - функциональные ветки и слияние

person lprsd    schedule 03.10.2011
comment
Фактически можно использовать git merge с git svn. dcommit с радостью отправит фиксацию с несколькими родителями в Subversion, хотя Subversion будет рассматривать ее только как обычную фиксацию со всеми изменениями из ветки. Это даже единственный способ, когда вы действительно начнете сотрудничать в git (например, пытаетесь постепенно переключаться). - person Jan Hudec; 03.10.2011