Integrate the content of a branch into the trunk
Adrián Ribao Martínez
aribao at gmail.com
Mon Jun 8 21:26:07 BST 2009
Thank you very much for this example!
When you tried:
> nmb at guttle[/tmp/test_new]$ bzr push ../test # push doesn't work
The push won't work, but can this be done?
nmb at guttle[/tmp/test]$ cd ../test_new
nmb at guttle[/tmp/test_new]$ merge
and then:
nmb at guttle[/tmp/test_new]$ bzr push
Thank you
On Lunes, 8 de Junio de 2009 22:06:12 Neil Martinsen-Burrell escribió:
> On 2009-06-08 09:40 , Adrián Ribao Martínez wrote:
>
> > I've created a branch of the trunk a few days ago, Now I want to send
> > the content of the new branch to the trunk. I think this is done with
> > the send command, but I'm not sure, and I don't know the best way of
> > doing it. I'd appreciate some help here.
>
> Welcome to the world of distributed VCS! This is of course the
> fundamental operation in this world. The most basic way to accomplish
> this is with ``bzr push`` but that requires that your new branch be up
> to date with the trunk. If the trunk has new revisions that are not
> present in your branch, then pushing will fail and you will have to
> merge the new revisions from the trunk before you can push. (This means
> ``bzr merge``, <test, test, test>, ``bzr commit``, then do the push again.)
>
> I prefer to use ``bzr merge`` for these sorts of things since it is the
> most general operation for combining branches. Here's an example::
>
> nmb at guttle[/tmp]$ bzr init test
> Created a standalone tree (format: pack-0.92)
> nmb at guttle[/tmp]$ cd test
> nmb at guttle[/tmp/test]$ echo "new file text" > a
> nmb at guttle[/tmp/test]$ bzr add
> adding a
> nmb at guttle[/tmp/test]$ bzr ci -m 'first commit'
> Committing to: /private/tmp/test/
> added a
> Committed revision 1.
> nmb at guttle[/tmp/test]$ bzr branch . ../test_new
> Branched 1 revision(s).
> nmb at guttle[/tmp/test]$ cd ../test_new
> nmb at guttle[/tmp/test_new]$ echo "another file in a branch" > b
> nmb at guttle[/tmp/test_new]$ bzr add
> adding b
> nmb at guttle[/tmp/test_new]$ bzr ci -m 'changed on the branch'
> Committing to: /private/tmp/test_new/
> added b
> Committed revision 2.
> nmb at guttle[/tmp/test_new]$ cd ../test
> nmb at guttle[/tmp/test]$ echo "an unrelated change" >> a
> nmb at guttle[/tmp/test]$ bzr ci -m 'more trunk changes'
> Committing to: /private/tmp/test/
> modified a
> Committed revision 2.
> nmb at guttle[/tmp/test]$ cd ../test_new
> nmb at guttle[/tmp/test_new]$ bzr push ../test # push doesn't work
> bzr: ERROR: These branches have diverged. See "bzr help
> diverged-branches" for more information.
> nmb at guttle[/tmp/test_new]$ cd ../test
> nmb at guttle[/tmp/test]$ bzr merge ../test_new
> +N b
>
> All changes applied successfully.
> nmb at guttle[/tmp/test]$ bzr st
> added:
> b
> pending merge tips: (use -v to see all merge revisions)
> Neil Martinsen-Bu... 2009-06-08 changed on the branch
> nmb at guttle[/tmp/test]$ cat b
> another file in a branch
> nmb at guttle[/tmp/test]$ bzr ci -m 'everything looks OK'
> Committing to: /private/tmp/test/
> added b
> Committed revision 3.
> nmb at guttle[/tmp/test]$ bzr log -n0
> 3 Neil Martinsen-Burrell 2009-06-08 [merge]
> everything looks OK
>
> 1.1.1 Neil Martinsen-Burrell 2009-06-08
> changed on the branch
>
> 2 Neil Martinsen-Burrell 2009-06-08
> more trunk changes
>
> 1 Neil Martinsen-Burrell 2009-06-08
> first commit
>
> I believe that it is individual preference as to whether one solves
> possible conflicts and integration problems on the branch (as is the
> case when using ``bzr push``) or on the trunk (as above when using ``bzr
> merge``). I guess the thing to understand is that a merge operation
> must occur somewhere. If the branches have not diverged, then the merge
> can happen automatically as part of a pull or push. If the branches
> have diverged (as in the above example) then an explicit merge command
> is required somewhere. (I know that the terminology used here is
> inexact. Please don't shoot me.)
>
> -Neil
>
More information about the bazaar
mailing list