Местные отделения с базаром?

Недавно я поигрался с Git, чтобы разобраться в распределенном управлении версиями. Теперь я смотрю на Bazaar, но не могу понять, как создать локальную ветку, то есть ветку, на которую мне не нужно нажимать, когда я хочу зафиксировать изменения. С Git я бы сделал

git branch branch_name

or

git checkout -b branch_name

Затем я могу работать в своей локальной ветке, фиксируя изменения по ходу, без необходимости отправлять изменения в удаленное репо. Когда я закончу с веткой, я могу объединить ее с моей локальной главной веткой. Если я захочу, я могу отправить эти изменения в удаленное репо.

Возможно ли это с Базаром? Bazaar больше похож на SVN, где ветки - это просто отдельные каталоги, так что, может быть, и нет.


person ThisSuitIsBlackNot    schedule 29.10.2009    source источник


Ответы (4)


Да, вы определенно сможете это сделать.

Допустим, есть удаленный репозиторий по адресу bzr + ssh: //foo.com/repo/mainline

Вы можете создать локальную ветку, выполнив:

bzr branch bzr+ssh://foo.com/repo/mainline local_branch

Теперь вы можете внести изменения в local_branch и зафиксировать их, и эти изменения будут только в этом локальном каталоге. например.:

cd local_branch
touch foo
bzr add foo
bzr commit -m "Add foo."

Это добавит foo только в локальную ветку.

person Pete    schedule 29.10.2009
comment
Я думаю, что часть cd, которая проверила, что ветки просто являются частью вопроса с отдельными каталогами. Ветви менее полезны, если мне нужно перенастроить свои инструменты при смене ветвей. - person Dustin; 30.10.2009

Если вы правильно настроили репозиторий, вы можете работать аналогично git.

cd ~/dev
bzr init-repo
bzr reconfigure --with-no-trees
mkdir branches
bzr branch bzr+ssh://foo.com/repo branches/mainline
bzr checkout --lightweight branches/mainline working

Это создаст такую ​​структуру:

/dev
    /branches
        /mainline
        <other branches go here>
    /working
        <this is your working tree>

А если вы хотите сделать ветки, вы можете сделать следующее:

cd ~/dev/checkout
bzr branch --switch ~/dev/branches/mainline ~/dev/branches/some-feature

и теперь вы будете в ветке some-feature, которая будет в том же месте, что и основная ветка.

person FryGuy    schedule 15.12.2009

Старый вопрос, но похоже, что разнесенные ветки - это лучший способ это в наши дни. Bzr включает плагин с различными удобными функциями, включая colo-init для создания репозитории с поддержкой colocated-branch и colo-branch для фактического использования / создания веток (я еще не широко использовал эти функции, поэтому я могу немного запутаться ..)

person John Chadwick    schedule 06.10.2012
comment
Подробные инструкции можно найти здесь. - person Daniel Reis; 13.09.2013

bzr отличается от git тем, что вы не можете переключать ветку, представленную рабочим каталогом. Однако вы можете выполнить ответвление из рабочего каталога вместо того, чтобы переходить из удаленного репозитория. Так что вместо

git clone git+ssh://foo.com/repo
cd repo
git checkout -b new_branch

ты бы сделал

bzr branch bzr+ssh://foo.com/repo
bzr branch repo new_branch
person jamessan    schedule 29.10.2009
comment
bzr отличается от git тем, что вы не можете переключать ветку, представленную рабочим каталогом. Означает ли это, что проекты bzr обычно создаются с подкаталогами trunk / и branch /, как в типичных проектах SVN? - person ThisSuitIsBlackNot; 29.10.2009
comment
В некотором роде, но не в том жестком смысле, который связан с SVN, а каталоги не являются частью фактического репозитория. Вместо этого пользователь просто публикует свою ветку в Интернете, и другие люди могут получить к ней доступ, слить из нее и т.д. все опубликованные ветки, связанные с проектом. Несмотря на то, что разные ветки знают друг о друге (через историю коммитов и информацию о том, из какого репозитория они были разветвлены), все они представляют собой отдельный репозиторий. - person jamessan; 29.10.2009