Создание веток внутри существующего проекта bzr - PullRequest
2 голосов
/ 12 октября 2010

Я единственный разработчик небольшого проекта. Я провожу этот проект на базаре. На начальных этапах я сделал следующее:

mkdir myProject
cd myProject
bzr init
bzr mkdir src
bzr mkdir data
bzr mkdir foo
....

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

trunk
rel
testFeature1
testFeature2
...

Каков наилучший способ сделать это?

То, что я сделал, было:

cd myProject
mkdir repo
mv .bzr repo
mv .bzrignore repo
del src data foo

mkdir trunk
cd trunk
bzr branch ../repo ./ --use-existing-dir

Я в значительной степени удовлетворен результатом, за исключением того факта, что bzr status, выпущенный внутри myProject/repo, жалуется на все эти отсутствующие файлы.

Теперь к вопросам: приемлем ли мой подход? Что мне делать с отсутствующими файлами в каталоге repo?

1 Ответ

2 голосов
/ 12 октября 2010

Я бы хотел сделать следующее: начать с проекта, подобного тому, который вы создали:

mkdir myProject
cd myProject
bzr init
bzr mkdir src
bzr mkdir data
bzr mkdir foo
....
# (As per your steps above)
bzr add
bzr ci -m "Done stuff"

Теперь создайте репозиторий и вставьте в него ветку:

# Now make it into a multi-branch project
cd ..
# Make a new repository with no working trees
bzr init-repo --no-trees repo
# Branch the project into the repository
bzr branch myProject repo/trunk
# Get rid of the project (by moving, to keep a backup)
mv myProject myProject_backup

Теперь начните работать с оформлением заказа (облегченное или иное в зависимости от ваших предпочтений):

# Now get a working copy and put it in a separate folder to the repo
bzr co --lightweight repo/trunk myProject
# Now do stuff
cd myProject
# Hack hack hack
bzr ci -m "Done stuff"

Теперь вы можете создавать ветви для объектов или чего-либо еще:

# Time to change branch (-b creates the new branch in the repository):
bzr switch -b testFeature1
# Now it is a lightweight checkout of ../repo/testFeature1, which is branched off trunk
# Hack hack hack
bzr ci -m "Done stuff with testFeature1: seems to work"

объединить изменения обратно в транк:

bzr switch trunk
bzr merge ../repo/testFeature1
bzr ci -m "Merged testFeature1 development."

Обратите внимание, что bzr switch принимает либо путь, который либо относительно текущего каталога, абсолютного, либо относительно хранилища, когда вы связаны с хранилищем,но bzr merge требуется путь относительно текущего каталога или абсолютный (не относительно хранилища).


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

...