~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/foreign.py

  • Committer: Jelmer Vernooij
  • Date: 2011-12-16 16:40:10 UTC
  • mto: This revision was merged to the branch mainline in revision 6391.
  • Revision ID: jelmer@samba.org-20111216164010-z3hy00xrnclnkf7a
Update tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2008, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2008-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
20
20
 
21
21
from bzrlib.branch import (
22
22
    Branch,
23
 
    InterBranch,
24
23
    )
25
24
from bzrlib.commands import Command, Option
26
25
from bzrlib.repository import Repository
29
28
lazy_import(globals(), """
30
29
from bzrlib import (
31
30
    errors,
32
 
    osutils,
33
31
    registry,
34
32
    transform,
35
33
    )
 
34
from bzrlib.i18n import gettext
36
35
""")
37
36
 
38
37
class VcsMapping(object):
265
264
    branch unless the --no-rebase option is used, in which case 
266
265
    the two branches will be out of sync after the push. 
267
266
    """
268
 
    hidden = True
269
267
    takes_args = ['location?']
270
268
    takes_options = [
271
269
        'remember',
284
282
    def run(self, location=None, remember=False, directory=None,
285
283
            no_rebase=False, strict=None):
286
284
        from bzrlib import urlutils
287
 
        from bzrlib.bzrdir import BzrDir
 
285
        from bzrlib.controldir import ControlDir
288
286
        from bzrlib.errors import BzrCommandError, NoWorkingTree
289
287
        from bzrlib.workingtree import WorkingTree
290
288
 
304
302
        stored_loc = source_branch.get_push_location()
305
303
        if location is None:
306
304
            if stored_loc is None:
307
 
                raise BzrCommandError("No push location known or specified.")
 
305
                raise BzrCommandError(gettext("No push location known or specified."))
308
306
            else:
309
307
                display_url = urlutils.unescape_for_display(stored_loc,
310
308
                        self.outf.encoding)
311
 
                self.outf.write("Using saved location: %s\n" % display_url)
 
309
                self.outf.write(
 
310
                       gettext("Using saved location: %s\n") % display_url)
312
311
                location = stored_loc
313
312
 
314
 
        bzrdir = BzrDir.open(location)
315
 
        target_branch = bzrdir.open_branch()
 
313
        controldir = ControlDir.open(location)
 
314
        target_branch = controldir.open_branch()
316
315
        target_branch.lock_write()
317
316
        try:
318
317
            try:
319
 
                push_result = source_branch.lossy_push(target_branch)
 
318
                push_result = source_branch.push(target_branch, lossy=True)
320
319
            except errors.LossyPushToSameVCS:
321
 
                raise BzrCommandError("%r and %r are in the same VCS, lossy "
322
 
                    "push not necessary. Please use regular push." %
323
 
                    (source_branch, target_branch))
 
320
                raise BzrCommandError(gettext("{0!r} and {1!r} are in the same VCS, lossy "
 
321
                    "push not necessary. Please use regular push.").format(
 
322
                    source_branch, target_branch))
324
323
            # We successfully created the target, remember it
325
324
            if source_branch.get_push_location() is None or remember:
326
325
                source_branch.set_push_location(target_branch.base)
339
338
            push_result.report(self.outf)
340
339
        finally:
341
340
            target_branch.unlock()
342
 
 
343
 
 
344
 
class InterToForeignBranch(InterBranch):
345
 
 
346
 
    def lossy_push(self, stop_revision=None):
347
 
        """Push deltas into another branch.
348
 
 
349
 
        :note: This does not, like push, retain the revision ids from 
350
 
            the source branch and will, rather than adding bzr-specific 
351
 
            metadata, push only those semantics of the revision that can be 
352
 
            natively represented by this branch' VCS.
353
 
 
354
 
        :param target: Target branch
355
 
        :param stop_revision: Revision to push, defaults to last revision.
356
 
        :return: BranchPushResult with an extra member revidmap: 
357
 
            A dictionary mapping revision ids from the target branch 
358
 
            to new revision ids in the target branch, for each 
359
 
            revision that was pushed.
360
 
        """
361
 
        raise NotImplementedError(self.lossy_push)