~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/foreign.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2008-2011 Canonical Ltd
 
1
# Copyright (C) 2008-2012 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
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
 
18
17
"""Foreign branch utilities."""
19
18
 
 
19
from __future__ import absolute_import
 
20
 
20
21
 
21
22
from bzrlib.branch import (
22
23
    Branch,
23
 
    InterBranch,
24
24
    )
25
25
from bzrlib.commands import Command, Option
26
26
from bzrlib.repository import Repository
32
32
    registry,
33
33
    transform,
34
34
    )
 
35
from bzrlib.i18n import gettext
35
36
""")
36
37
 
37
38
class VcsMapping(object):
264
265
    branch unless the --no-rebase option is used, in which case 
265
266
    the two branches will be out of sync after the push. 
266
267
    """
267
 
    hidden = True
268
268
    takes_args = ['location?']
269
269
    takes_options = [
270
270
        'remember',
283
283
    def run(self, location=None, remember=False, directory=None,
284
284
            no_rebase=False, strict=None):
285
285
        from bzrlib import urlutils
286
 
        from bzrlib.bzrdir import BzrDir
 
286
        from bzrlib.controldir import ControlDir
287
287
        from bzrlib.errors import BzrCommandError, NoWorkingTree
288
288
        from bzrlib.workingtree import WorkingTree
289
289
 
303
303
        stored_loc = source_branch.get_push_location()
304
304
        if location is None:
305
305
            if stored_loc is None:
306
 
                raise BzrCommandError("No push location known or specified.")
 
306
                raise BzrCommandError(gettext("No push location known or specified."))
307
307
            else:
308
308
                display_url = urlutils.unescape_for_display(stored_loc,
309
309
                        self.outf.encoding)
310
 
                self.outf.write("Using saved location: %s\n" % display_url)
 
310
                self.outf.write(
 
311
                       gettext("Using saved location: %s\n") % display_url)
311
312
                location = stored_loc
312
313
 
313
 
        bzrdir = BzrDir.open(location)
314
 
        target_branch = bzrdir.open_branch()
 
314
        controldir = ControlDir.open(location)
 
315
        target_branch = controldir.open_branch()
315
316
        target_branch.lock_write()
316
317
        try:
317
318
            try:
318
 
                push_result = source_branch.lossy_push(target_branch)
 
319
                push_result = source_branch.push(target_branch, lossy=True)
319
320
            except errors.LossyPushToSameVCS:
320
 
                raise BzrCommandError("%r and %r are in the same VCS, lossy "
321
 
                    "push not necessary. Please use regular push." %
322
 
                    (source_branch, target_branch))
 
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))
323
324
            # We successfully created the target, remember it
324
325
            if source_branch.get_push_location() is None or remember:
 
326
                # FIXME: Should be done only if we succeed ? -- vila 2012-01-18
325
327
                source_branch.set_push_location(target_branch.base)
326
328
            if not no_rebase:
327
329
                old_last_revid = source_branch.last_revision()
338
340
            push_result.report(self.outf)
339
341
        finally:
340
342
            target_branch.unlock()
341
 
 
342
 
 
343
 
class InterToForeignBranch(InterBranch):
344
 
 
345
 
    def lossy_push(self, stop_revision=None):
346
 
        """Push deltas into another branch.
347
 
 
348
 
        :note: This does not, like push, retain the revision ids from 
349
 
            the source branch and will, rather than adding bzr-specific 
350
 
            metadata, push only those semantics of the revision that can be 
351
 
            natively represented by this branch' VCS.
352
 
 
353
 
        :param target: Target branch
354
 
        :param stop_revision: Revision to push, defaults to last revision.
355
 
        :return: BranchPushResult with an extra member revidmap: 
356
 
            A dictionary mapping revision ids from the target branch 
357
 
            to new revision ids in the target branch, for each 
358
 
            revision that was pushed.
359
 
        """
360
 
        raise NotImplementedError(self.lossy_push)