~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/foreign.py

(gz) Fix test failure on alpha by correcting format string for
 gc_chk_sha1_record (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2008-2011 Canonical Ltd
 
1
# Copyright (C) 2008, 2009, 2010 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,
23
24
    )
24
25
from bzrlib.commands import Command, Option
25
26
from bzrlib.repository import Repository
28
29
lazy_import(globals(), """
29
30
from bzrlib import (
30
31
    errors,
 
32
    osutils,
31
33
    registry,
32
34
    transform,
33
35
    )
34
 
from bzrlib.i18n import gettext
35
36
""")
36
37
 
37
38
class VcsMapping(object):
303
304
        stored_loc = source_branch.get_push_location()
304
305
        if location is None:
305
306
            if stored_loc is None:
306
 
                raise BzrCommandError(gettext("No push location known or specified."))
 
307
                raise BzrCommandError("No push location known or specified.")
307
308
            else:
308
309
                display_url = urlutils.unescape_for_display(stored_loc,
309
310
                        self.outf.encoding)
310
 
                self.outf.write(
311
 
                       gettext("Using saved location: %s\n") % display_url)
 
311
                self.outf.write("Using saved location: %s\n" % display_url)
312
312
                location = stored_loc
313
313
 
314
314
        bzrdir = BzrDir.open(location)
316
316
        target_branch.lock_write()
317
317
        try:
318
318
            try:
319
 
                push_result = source_branch.push(target_branch, lossy=True)
 
319
                push_result = source_branch.lossy_push(target_branch)
320
320
            except errors.LossyPushToSameVCS:
321
 
                raise BzrCommandError(gettext("{0!r} and {1!r} are in the same VCS, lossy "
322
 
                    "push not necessary. Please use regular push.").format(
323
 
                    source_branch, target_branch))
 
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))
324
324
            # We successfully created the target, remember it
325
325
            if source_branch.get_push_location() is None or remember:
326
326
                source_branch.set_push_location(target_branch.base)
339
339
            push_result.report(self.outf)
340
340
        finally:
341
341
            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)