~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

[merge] from robert

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
    # XXX: leave this here for about one release, then remove it
65
65
    raise NotImplementedError('find_branch() is not supported anymore, '
66
66
                              'please use one of the new branch constructors')
67
 
def _relpath(base, path):
68
 
    """Return path relative to base, or raise exception.
69
 
 
70
 
    The path may be either an absolute path or a path relative to the
71
 
    current working directory.
72
 
 
73
 
    Lifted out of Branch.relpath for ease of testing.
74
 
 
75
 
    os.path.commonprefix (python2.4) has a bad bug that it works just
76
 
    on string prefixes, assuming that '/u' is a prefix of '/u2'.  This
77
 
    avoids that problem."""
78
 
    rp = os.path.abspath(path)
79
 
 
80
 
    s = []
81
 
    head = rp
82
 
    while len(head) >= len(base):
83
 
        if head == base:
84
 
            break
85
 
        head, tail = os.path.split(head)
86
 
        if tail:
87
 
            s.insert(0, tail)
88
 
    else:
89
 
        raise NotBranchError("path %r is not within branch %r" % (rp, base))
90
 
 
91
 
    return os.sep.join(s)
92
 
        
93
67
 
94
68
######################################################################
95
69
# branch objects
303
277
            return self._transport.base
304
278
        return None
305
279
 
306
 
    base = property(_get_base)
 
280
    base = property(_get_base, doc="The URL for the root of this branch.")
307
281
 
308
282
    def _finish_transaction(self):
309
283
        """Exit the current transaction."""
377
351
            self._lock_mode = self._lock_count = None
378
352
 
379
353
    def abspath(self, name):
380
 
        """Return absolute filename for something in the branch"""
 
354
        """Return absolute filename for something in the branch
 
355
        
 
356
        XXX: Robert Collins 20051017 what is this used for? why is it a branch
 
357
        method and not a tree method.
 
358
        """
381
359
        return self._transport.abspath(name)
382
360
 
383
 
    def relpath(self, path):
384
 
        """Return path relative to this branch of something inside it.
385
 
 
386
 
        Raises an error if path is not in this branch."""
387
 
        return self._transport.relpath(path)
388
 
 
389
 
 
390
361
    def _rel_controlfilename(self, file_or_path):
391
362
        if isinstance(file_or_path, basestring):
392
363
            file_or_path = [file_or_path]
1060
1031
        # much more complex to keep consistent than our careful .bzr subset.
1061
1032
        # instead, we should say that working trees are local only, and optimise
1062
1033
        # for that.
1063
 
        return WorkingTree(self._transport.base, self.read_working_inventory())
 
1034
        return WorkingTree(self.base, branch=self)
1064
1035
 
1065
1036
 
1066
1037
    def basis_tree(self):