~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Robert Collins
  • Date: 2005-10-11 08:31:29 UTC
  • Revision ID: robertc@lifelesslap.robertcollins.net-20051011083129-fa720bc6cd6c039f
inline and simplify branch.find_branch_root, it should just try to create a branch at each step, which is simpler than probing for a specific dir and has less round trips.

Show diffs side-by-side

added added

removed removed

Lines of Context:
91
91
    return os.sep.join(s)
92
92
        
93
93
 
94
 
def find_branch_root(t):
95
 
    """Find the branch root enclosing the transport's base.
96
 
 
97
 
    t is a Transport object.
98
 
 
99
 
    It is not necessary that the base of t exists.
100
 
 
101
 
    Basically we keep looking up until we find the control directory or
102
 
    run into the root.  If there isn't one, raises NotBranchError.
103
 
    """
104
 
    orig_base = t.base
105
 
    while True:
106
 
        if t.has(bzrlib.BZRDIR):
107
 
            return t
108
 
        new_t = t.clone('..')
109
 
        if new_t.base == t.base:
110
 
            # reached the root, whatever that may be
111
 
            raise NotBranchError('%s is not in a branch' % orig_base)
112
 
        t = new_t
113
 
 
114
 
 
115
94
######################################################################
116
95
# branch objects
117
96
 
145
124
        """Open an existing branch which contains url.
146
125
        
147
126
        This probes for a branch at url, and searches upwards from there.
 
127
 
 
128
        Basically we keep looking up until we find the control directory or
 
129
        run into the root.  If there isn't one, raises NotBranchError.
148
130
        """
149
131
        t = get_transport(url)
150
 
        t = find_branch_root(t)
151
 
        return _Branch(t)
 
132
        while True:
 
133
            try:
 
134
                return _Branch(t)
 
135
            except NotBranchError:
 
136
                pass
 
137
            new_t = t.clone('..')
 
138
            if new_t.base == t.base:
 
139
                # reached the root, whatever that may be
 
140
                raise NotBranchError('%s is not in a branch' % url)
 
141
            t = new_t
152
142
 
153
143
    @staticmethod
154
144
    def initialize(base):