[MERGE] Make pull more forgiving of its location

Matthew D. Fuller fullermd at over-yonder.net
Tue Sep 11 10:34:50 BST 2007


I ran across a case earlier tonite where I wanted to reset the head of
a branch, and the natural choice is "pull -rwhatever .".  That croaks
unpleasantly if you're not in the root of the branch, though, since it
just tries to open() the given location.  Attached fixes that.

It would be nice to use Branch.open_containing_from_transport() to
solve it simply, but that's slightly hampered by the fact that the
method doesn't exist.  Making it exist would be more work than I can
bite off, and would need add'l tests and all, so I just did it
manually.  Sorry.


-- 
Matthew Fuller     (MF4839)   |  fullermd at over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: fullermd at over-yonder.net-20070911090736-\
#   9hwjpvwmnn1wl2tb
# target_branch: ../../bzr.dev/
# testament_sha1: 0a76925df137ecaf2961f4c9235ea17cf514f304
# timestamp: 2007-09-11 04:12:27 -0500
# base_revision_id: pqm at pqm.ubuntu.com-20070911020027-bmt9h0jgy3zdlge3
# 
# Begin patch
=== modified file 'bzrlib/builtins.py'
--- bzrlib/builtins.py	2007-09-10 10:05:51 +0000
+++ bzrlib/builtins.py	2007-09-11 09:07:36 +0000
@@ -628,7 +628,9 @@
                 mergeable.get_merge_request(branch_to.repository)
             branch_from = branch_to
         else:
-            branch_from = Branch.open_from_transport(location_transport)
+            # This should really be Branch.open_containing_from_transport()
+            branch_from = bzrdir.BzrDir.open_containing_from_transport(
+                location_transport)[0].open_branch()
 
             if branch_to.get_parent() is None or remember:
                 branch_to.set_parent(branch_from.base)

=== modified file 'bzrlib/tests/blackbox/test_pull.py'
--- bzrlib/tests/blackbox/test_pull.py	2007-08-21 13:52:55 +0000
+++ bzrlib/tests/blackbox/test_pull.py	2007-09-11 08:58:53 +0000
@@ -305,3 +305,18 @@
         self.assertContainsRe(out, 'bar')
         self.assertNotContainsRe(out, 'added:')
         self.assertNotContainsRe(out, 'foo')
+
+    def test_pull_opens_containing(self):
+        """Pull should search for a branch up from the given source"""
+        # Build a tree with a subdir
+        tree_a = self.make_branch_and_tree('me')
+        self.build_tree(['me/a/'])
+        tree_a.add('a', 'file-a')
+        tree_a.commit('message')
+
+        # Step into it, and try to pull from its subdir
+        os.chdir('me')
+        out = self.run_bzr(['pull', 'a'])[0]
+
+        # Better have worked
+        self.assertEqual(out, 'No revisions to pull.\n')

# Begin bundle
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


More information about the bazaar mailing list