git svn и работаешь с частными филиалами? - PullRequest
5 голосов
/ 03 октября 2011

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

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

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

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

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

  • Когда я буду готов, я хочу объединить ветку объектовв с мастером и передайте это обратно в SVN.

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

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

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

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

1 Ответ

2 голосов
/ 03 октября 2011

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

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

...