1
# Copyright (C) 2008-2011 Canonical Ltd
1
# Copyright (C) 2008-2012 Canonical Ltd
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
18
17
"""Foreign branch utilities."""
19
from __future__ import absolute_import
21
22
from bzrlib.branch import (
282
283
def run(self, location=None, remember=False, directory=None,
283
284
no_rebase=False, strict=None):
284
285
from bzrlib import urlutils
285
from bzrlib.bzrdir import BzrDir
286
from bzrlib.controldir import ControlDir
286
287
from bzrlib.errors import BzrCommandError, NoWorkingTree
287
288
from bzrlib.workingtree import WorkingTree
302
303
stored_loc = source_branch.get_push_location()
303
304
if location is None:
304
305
if stored_loc is None:
305
raise BzrCommandError("No push location known or specified.")
306
raise BzrCommandError(gettext("No push location known or specified."))
307
308
display_url = urlutils.unescape_for_display(stored_loc,
308
309
self.outf.encoding)
309
self.outf.write("Using saved location: %s\n" % display_url)
311
gettext("Using saved location: %s\n") % display_url)
310
312
location = stored_loc
312
bzrdir = BzrDir.open(location)
313
target_branch = bzrdir.open_branch()
314
controldir = ControlDir.open(location)
315
target_branch = controldir.open_branch()
314
316
target_branch.lock_write()
317
319
push_result = source_branch.push(target_branch, lossy=True)
318
320
except errors.LossyPushToSameVCS:
319
raise BzrCommandError("%r and %r are in the same VCS, lossy "
320
"push not necessary. Please use regular push." %
321
(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))
322
324
# We successfully created the target, remember it
323
325
if source_branch.get_push_location() is None or remember:
326
# FIXME: Should be done only if we succeed ? -- vila 2012-01-18
324
327
source_branch.set_push_location(target_branch.base)
325
328
if not no_rebase:
326
329
old_last_revid = source_branch.last_revision()