Rev 2863: option -c for merge command (bialix, r=ian) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Tue Sep 25 20:46:04 BST 2007


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 2863
revision-id: pqm at pqm.ubuntu.com-20070925194602-h8z36snrc8eqjj4j
parent: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
parent: bialix at ukr.net-20070925190431-latvmyau7wq0ny90
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2007-09-25 20:46:02 +0100
message:
  option -c for merge command (bialix,r=ian)
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
    ------------------------------------------------------------
    revno: 2839.5.3
    merged: bialix at ukr.net-20070925190431-latvmyau7wq0ny90
    parent: bialix at ukr.net-20070925190148-otovr0vsac3h9nps
    parent: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: merge.--changes
    timestamp: Tue 2007-09-25 22:04:31 +0300
    message:
      merge bzr.dev
    ------------------------------------------------------------
    revno: 2839.5.2
    merged: bialix at ukr.net-20070925190148-otovr0vsac3h9nps
    parent: bialix at ukr.net-20070922175238-utwpezl628vcusbl
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: merge.--changes
    timestamp: Tue 2007-09-25 22:01:48 +0300
    message:
      tweaks suggested by Ian
    ------------------------------------------------------------
    revno: 2839.5.1
    merged: bialix at ukr.net-20070922175238-utwpezl628vcusbl
    parent: pqm at pqm.ubuntu.com-20070920125023-upjqmzln7mjtvj1h
    committer: Alexander Belchenko <bialix at ukr.net>
    branch nick: merge.--changes
    timestamp: Sat 2007-09-22 20:52:38 +0300
    message:
      add -c option to merge command
=== modified file 'NEWS'
--- a/NEWS	2007-09-25 09:20:14 +0000
+++ b/NEWS	2007-09-25 19:04:31 +0000
@@ -57,6 +57,9 @@
    * Mutt is now a supported mail client; set ``mail_client=mutt`` in your
      bazaar.conf and ``send`` will use mutt. (Keir Mierle)
 
+   * New option ``-c``/``--change`` for ``merge`` command for cherrypicking 
+     changes from one revision. (Alexander Belchenko, #141368)
+
    * Show encodings, locale and list of plugins in the traceback message.
      (Martin Pool, #63894)
 

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2007-09-25 03:21:08 +0000
+++ b/bzrlib/builtins.py	2007-09-25 19:04:31 +0000
@@ -2701,6 +2701,7 @@
     _see_also = ['update', 'remerge', 'status-flags']
     takes_args = ['branch?']
     takes_options = [
+        'change',
         'revision',
         Option('force',
                help='Merge even if the destination tree has uncommitted changes.'),

=== modified file 'bzrlib/tests/blackbox/test_merge.py'
--- a/bzrlib/tests/blackbox/test_merge.py	2007-09-14 13:58:32 +0000
+++ b/bzrlib/tests/blackbox/test_merge.py	2007-09-25 19:01:48 +0000
@@ -344,3 +344,39 @@
         self.run_bzr('merge -d target -r revid:rev2a branch_b')
         self.failUnlessExists('target/file1')
         self.failIfExists('target/file2')
+
+    def assertDirectoryContent(self, directory, entries, message=''):
+        """Assert whether entries (file or directories) exist in a directory.
+        
+        It also checks that there are no extra entries.
+        """
+        ondisk = os.listdir(directory)
+        if set(ondisk) == set(entries):
+            return
+        if message:
+            message += '\n'
+        raise AssertionError(
+            '%s"%s" directory content is different:\na = %s\nb = %s\n'
+            % (message, directory, sorted(entries), sorted(ondisk)))
+
+    def test_cherrypicking_merge(self):
+        # make source branch
+        source = self.make_branch_and_tree('source')
+        for f in ('a', 'b', 'c', 'd'):
+            self.build_tree(['source/'+f])
+            source.add(f)
+            source.commit('added '+f, rev_id='rev_'+f)
+        # target branch
+        target = source.bzrdir.sprout('target', 'rev_a').open_workingtree()
+        self.assertDirectoryContent('target', ['.bzr', 'a'])
+        # pick 1 revision
+        self.run_bzr('merge -d target -r revid:rev_b..revid:rev_c source')
+        self.assertDirectoryContent('target', ['.bzr', 'a', 'c'])
+        target.revert()
+        # pick 2 revisions
+        self.run_bzr('merge -d target -r revid:rev_b..revid:rev_d source')
+        self.assertDirectoryContent('target', ['.bzr', 'a', 'c', 'd'])
+        target.revert()
+        # pick 1 revision with option --changes
+        self.run_bzr('merge -d target -c revid:rev_d source')
+        self.assertDirectoryContent('target', ['.bzr', 'a', 'd'])




More information about the bazaar-commits mailing list