Integrate the content of a branch into the trunk
Neil Martinsen-Burrell
nmb at wartburg.edu
Mon Jun 8 21:55:01 BST 2009
On Mon, Jun 08, 2009 at 10:26:07PM +0200, Adrián Ribao Martínez wrote:
> 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
Nearly right. After the ``bzr merge`` in test_new, you need to resolve
any conflicts, test the resulting working tree and ``bzr commit`` to
accept the merged revisions from the trunk. Then you can ``bzr push``
to the test branch.
-Neil
>
>
> 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