在现有bzr项目中创建分支

时间:2010-10-12 09:36:53

标签: project-management bazaar directory-structure

我是一个小项目的唯一开发者。我用集市卡车那个项目。在最初阶段,我做了以下几点:

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 个答案:

答案 0 :(得分:2)

我要做的就是这样做:从你创建的项目开始:

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"

并将更改合并回trunk:

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

请注意,当bzr switch链接到存储库时,bzr merge采用相对于当前目录的路径,绝对路径或相对于存储库,但{{1}}需要路径相对于当前目录或绝对目录(不是相对于存储库)。


这可能不适合您的工作流程(结帐等),但它是实现您想要做的事情的一种相当有效的方式。希望它有所帮助。