代码之家  ›  专栏  ›  技术社区  ›  Boris Gorelik

在现有bzr项目中创建分支

  •  2
  • Boris Gorelik  · 技术社区  · 14 年前

    我是一个小项目的唯一开发者。我用集市把那个项目搞砸了。在最初阶段,我做了以下工作:

    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 回复  |  直到 14 年前
        1
  •  2
  •   DrAl    14 年前

    我要做的是:从一个像你创建的项目开始:

    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


    这可能不适合您的工作流程(签出等),但这是实现您想要做的事情的相当有效的方法。希望有帮助。