Должен ли я использовать push или switch, чтобы создать ветку на базаре?

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

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

или же

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

Мои вопросы:

  • Эти две операции дают одинаковый результат?
  • Каковы лучшие практики о отрасли?

3 ответа

Решение

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

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

хобот:

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

ветка:

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

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

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

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

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

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

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

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

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

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

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

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

хобот:

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

ветка:

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

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

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

хобот:

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

ветка:

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

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

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

Другие вопросы по тегам