[MERGE REVIEW] Added option --remember to merge command

Michael Ellerman michael at ellerman.id.au
Tue Mar 21 00:04:04 GMT 2006


On 3/20/06, Olaf Conradi <olaf at conradi.org> wrote:
> Hello,
>
> I redid my patch a bit after Michael's comments.
> Please have a look.
>
> If it's OK then I'll do a commit to my branch so it's mergable to
> bzr.dev mainline.
>
>
> On 19/03/06, Michael Ellerman <michael at ellerman.id.au> wrote:
> > On 3/18/06, Olaf Conradi <oohlaf at gmail.com> wrote:
> > > I just copied this from cmd_pull, which mentions this as first paragraph.
> >
> > Ok, in that case we should fix cmd_pull also. That's not the first
> > thing a user needs to know about pull when they read the help.
>
> I will do this in a separate commit when remember option patch has two
> +1 reviews.
>
>
> This is the new patch:
> I changed the name of argument branch to location for consistency with
> pull and push.
>
>
> === modified file 'a/bzrlib/builtins.py'
> --- a/bzrlib/builtins.py
> +++ b/bzrlib/builtins.py
> @@ -1780,7 +1780,7 @@
>  class cmd_merge(Command):
>      """Perform a three-way merge.
>
> -    The branch is the branch you will merge from.  By default, it will
> +    The location is the branch you will merge from.  By default, it will
>      merge the latest revision.  If you specify a revision, that
>      revision will be merged.  If you specify two revisions, the first
>      will be used as a BASE, and the second one as OTHER.  Revision
> @@ -1797,6 +1797,10 @@
>
>      Use bzr resolve when you have fixed a problem.  See also bzr conflicts.
>
> +    If there is no default location set, the first merge will set it. After
> +    that, you can omit the location to use the default.  To change the
> +    default, use --remember.
> +
>      Examples:
>
>      To merge the latest revision from bzr.dev
> @@ -1811,39 +1815,44 @@
>      merge refuses to run if there are any uncommitted changes, unless
>      --force is given.
>      """
> -    takes_args = ['branch?']
> -    takes_options = ['revision', 'force', 'merge-type', 'reprocess',
> +    takes_args = ['location?']
> +    takes_options = ['revision', 'force', 'merge-type', 'reprocess',
> 'remember',
>                       Option('show-base', help="Show base revision text in "
>                              "conflicts")]
>
> -    def run(self, branch=None, revision=None, force=False, merge_type=None,
> -            show_base=False, reprocess=False):
> +    def run(self, location=None, revision=None, force=False, merge_type=None,
> +            show_base=False, reprocess=False, remember=False):
>          if merge_type is None:
>              merge_type = Merge3Merger
> -        if branch is None:
> -            branch = WorkingTree.open_containing(u'.')[0].branch.get_parent()
> -            if branch is None:
> +
> +        tree = WorkingTree.open_containing(u'.')[0]
> +        stored_loc = tree.branch.get_parent()
> +        if location is None:
> +            if stored_loc is None:
>                  raise BzrCommandError("No merge location known or specified.")
>              else:
> -                print "Using saved location: %s" % branch
> +                print "Using saved location: %s" % stored_loc
> +                location = stored_loc
> +
>          if revision is None or len(revision) < 1:
>              base = [None, None]
> -            other = [branch, -1]
> +            other = [location, -1]
>          else:
>              if len(revision) == 1:
>                  base = [None, None]
> -                other_branch = Branch.open_containing(branch)[0]
> +                other_branch = Branch.open_containing(location)[0]
>                  revno = revision[0].in_history(other_branch).revno
> -                other = [branch, revno]
> +                other = [location, revno]
>              else:
>                  assert len(revision) == 2
>                  if None in revision:
>                      raise BzrCommandError(
>                          "Merge doesn't permit that revision specifier.")
> -                b = Branch.open_containing(branch)[0]
> -
> -                base = [branch, revision[0].in_history(b).revno]
> -                other = [branch, revision[1].in_history(b).revno]
> +                other_branch = Branch.open_containing(location)[0]
> +
> +                base = [location, revision[0].in_history(other_branch).revno]
> +                other = [location, revision[1].in_history(other_branch).revno]
> +
>          pb = bzrlib.ui.ui_factory.nested_progress_bar()
>          try:
>              try:
> @@ -1854,6 +1863,10 @@
>                                         pb=pb)
>              finally:
>                  pb.finished()
> +
> +            if tree.branch.get_parent() is None or remember:
> +                tree.branch.set_parent(location)
> +
>              if conflict_count != 0:
>                  return 1
>              else:

+1 from me :)




More information about the bazaar mailing list