~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

  • Committer: John Arbash Meinel
  • Date: 2013-05-19 14:29:37 UTC
  • mfrom: (6437.63.9 2.5)
  • mto: (6437.63.10 2.5)
  • mto: This revision was merged to the branch mainline in revision 6575.
  • Revision ID: john@arbash-meinel.com-20130519142937-21ykz2n2y2f22za9
Merge in the actual 2.5 branch. It seems I failed before

Show diffs side-by-side

added added

removed removed

Lines of Context:
149
149
    return location
150
150
 
151
151
 
152
 
def lookup_sibling_branch(control_dir, location, possible_transports=None):
153
 
    """Lookup sibling branch.
154
 
    
 
152
def open_sibling_branch(control_dir, location, possible_transports=None):
 
153
    """Open a branch, possibly a sibling.
 
154
 
155
155
    :param control_dir: Control directory relative to which to lookup the
156
156
        location.
157
157
    :param location: Location to look up
162
162
        return control_dir.open_branch(location, 
163
163
            possible_transports=possible_transports)
164
164
    except (errors.NotBranchError, errors.NoColocatedBranchSupport):
 
165
        this_url = _get_branch_location(control_dir)
 
166
        return Branch.open(
 
167
            urlutils.join(
 
168
                this_url, '..', urlutils.escape(location)))
 
169
 
 
170
 
 
171
def open_nearby_branch(near=None, location=None, possible_transports=None):
 
172
    """Open a nearby branch.
 
173
 
 
174
    :param near: Optional location of container from which to open branch
 
175
    :param location: Location of the branch
 
176
    :return: Branch instance
 
177
    """
 
178
    if near is None:
 
179
        if location is None:
 
180
            location = "."
165
181
        try:
166
 
            return Branch.open(location)
 
182
            return Branch.open(location,
 
183
                possible_transports=possible_transports)
167
184
        except errors.NotBranchError:
168
 
            this_url = _get_branch_location(control_dir)
169
 
            return Branch.open(
170
 
                urlutils.join(
171
 
                    this_url, '..', urlutils.escape(location)))
 
185
            near = "."
 
186
    cdir = controldir.ControlDir.open(near,
 
187
        possible_transports=possible_transports)
 
188
    return open_sibling_branch(cdir, location,
 
189
        possible_transports=possible_transports)
172
190
 
173
191
 
174
192
@symbol_versioning.deprecated_function(symbol_versioning.deprecated_in((2, 3, 0)))
6248
6266
                 possible_transports=possible_transports,
6249
6267
                 source_branch=branch).open_branch()
6250
6268
        else:
6251
 
            to_branch = lookup_sibling_branch(control_dir, to_location)
 
6269
            try:
 
6270
                to_branch = Branch.open(to_location,
 
6271
                    possible_transports=possible_transports)
 
6272
            except errors.NotBranchError:
 
6273
                to_branch = open_sibling_branch(control_dir, to_location,
 
6274
                    possible_transports=possible_transports)
6252
6275
        if revision is not None:
6253
6276
            revision = revision.as_revision_id(to_branch)
6254
6277
        switch.switch(control_dir, to_branch, force, revision_id=revision)
6451
6474
 
6452
6475
    takes_args = ["location?"]
6453
6476
 
 
6477
    takes_options = ['directory',
 
6478
        Option('force', help='Remove branch even if it is the active branch.')]
 
6479
 
6454
6480
    aliases = ["rmbranch"]
6455
6481
 
6456
 
    def run(self, location=None):
6457
 
        if location is None:
6458
 
            location = "."
6459
 
        cdir = controldir.ControlDir.open_containing(location)[0]
6460
 
        cdir.destroy_branch()
 
6482
    def run(self, directory=None, location=None, force=False):
 
6483
        br = open_nearby_branch(near=directory, location=location)
 
6484
        if not force and br.bzrdir.has_workingtree():
 
6485
            try:
 
6486
                active_branch = br.bzrdir.open_branch(name="")
 
6487
            except errors.NotBranchError:
 
6488
                active_branch = None
 
6489
            if (active_branch is not None and
 
6490
                br.control_url == active_branch.control_url):
 
6491
                raise errors.BzrCommandError(
 
6492
                    gettext("Branch is active. Use --force to remove it."))
 
6493
        br.bzrdir.destroy_branch(br.name)
6461
6494
 
6462
6495
 
6463
6496
class cmd_shelve(Command):