Должен ли я использовать push или switch для создания филиала на базаре? - PullRequest
2 голосов
/ 20 сентября 2011

Чтобы создать ветку на базаре, я могу сделать две вещи:

  • Извлечь транк, выполнить модификации, локальную фиксацию и затем отправить мою версию в MyProject / MyBranch

или

  • создайте MyProject / MyBranch и переключите мою проверку на новую ветку, затем внесите изменения и зафиксируйте.

Мои вопросы:

  • Дают ли эти две операции один и тот же результат?
  • Какая лучшая практика в отрасли?

Ответы [ 3 ]

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

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

Оказывается, что в обоих случаях вы получите историю вроде:

Ствол:

  1. старый коммит
  2. и т.д.

Отрасль:

  1. новый коммит
  2. старый коммит
  3. и т.д.

Тем не менее, ветвление сначала и работа с извлечением ветки - намного лучший способ сделать это. Если у вас есть проверка с локальными коммитами и вы делаете bzr update, вы не сможете набрать bzr push до совершения.

Во-вторых, если у вас есть проверка транка с локальными коммитами, «bzr push», чтобы создать ветку, затем попробуйте «bzr switch» на ветку, сначала вы должны совершить или вернуться, чтобы избежать «Cannot switch». как локальные коммиты найдены в кассе "ошибка.

2 голосов
/ 20 сентября 2011

Редактировать: этот ответ предполагает настройку, отличную от описанной в вопросе, поскольку первоначальная формулировка вопроса была неясной.

Две операции, которые вы описали, не приводят к одному и тому же результату.Будут ли различия значимыми или нет, во многом зависит от вашей среды.Например, работаете ли вы с другими разработчиками или самостоятельно.

В первом случае у вас есть ветка с рабочим деревом.Когда вы толкаете в местоположение, которое еще не является ветвью, вы создаете новую ветвь с той же историей, что и первоначальная ветвь.

Во втором примере кажется, что вы работаете ссуществующая касса.Я не уверен, что вы имеете в виду при создании папки веток.

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

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

Чтение документа Bazaar Workflows , bzr help checkouts и bzr help branches может помочь вам решить, какой подход будет работатьлучше всего подходит для вашей ситуации.

0 голосов
/ 20 сентября 2011

Чтобы ответить на ваш первый вопрос, я не верю, что он даст тот же результат.

Ваш первый вариант создаст эту историю:

Ствол:

  1. новый коммит
  2. старый коммит
  3. и т.д.

Отрасль:

  1. новый коммит
  2. старый коммит

т.е. Ствол и ветвь будут иметь одинаковую историю.

Ваш второй вариант создаст эту историю:

Ствол:

  1. старый коммит
  2. и т.д.

Отрасль:

  1. новый коммит
  2. старый коммит
  3. и т.д.

т.е. Ваш новый коммит появится только в ветке. Чтобы получить его на соединительной линии с помощью этого метода, вам нужно будет слить ответвление в ствол.

Лучшая практика будет зависеть от того, чего вы хотите достичь. Если вы делаете ветвь для фиксации некоторых изменений, которые вам не нужны, в стволе, то сначала ветвитесь.

...