[Pkg-bazaar-commits] ./bzr-builddeb/trunk.old r256: Make merge-upstream in an empty branch work.
James Westby
jw+debian at jameswestby.net
Wed Dec 10 08:32:59 UTC 2008
------------------------------------------------------------
revno: 256
committer: James Westby <jw+debian at jameswestby.net>
branch nick: 2.0
timestamp: Wed 2008-08-27 18:38:37 +0100
message:
Make merge-upstream in an empty branch work.
It simply ends up doing "bzr import", "bzr tag".
modified:
__init__.py
import_dsc.py
-------------- next part --------------
=== modified file '__init__.py'
--- a/__init__.py 2008-08-27 16:59:55 +0000
+++ b/__init__.py 2008-08-27 17:38:37 +0000
@@ -427,10 +427,19 @@
if config.split:
raise BzrCommandError("Split mode is not yet supported")
- changelog = find_changelog(tree, False)[0]
+ try:
+ changelog = find_changelog(tree, False)[0]
+ current_version = changelog.version
+ if package is None:
+ package = changelog.package
+ except MissingChangelogError:
+ current_version = None
+
if package is None:
- package = changelog.package
- current_version = changelog.version
+ raise BzrCommandError("You did not specify --package, and there "
+ "is no changelog from which to determine the package "
+ "name, which is needed to know the name to give the "
+ ".orig.tar.gz. Please specify --package.")
orig_dir = config.orig_dir or default_orig_dir
orig_dir = os.path.join(tree.basedir, orig_dir)
@@ -455,6 +464,8 @@
distribution_name = target_distribution
db = DistributionBranch(distribution_name, tree.branch, None,
tree=tree)
+ dbs = DistributionBranchSet()
+ dbs.add_branch(db)
conflicts = db.merge_upstream(tarball_filename,
Version(version), current_version)
info("The new upstream version has been imported. You should "
@@ -575,28 +586,7 @@
last_version)
db._extract_upstream_tree(upstream_tip, tempdir)
else:
- to_location = os.path.join(tempdir,
- distribution_name + "-upstream")
- to_transport = get_transport(to_location)
- to_transport.ensure_base()
- format = bzrdir.format_registry.make_bzrdir('default')
- try:
- existing_bzrdir = bzrdir.BzrDir.open_from_transport(
- to_transport)
- except NotBranchError:
- # really a NotBzrDir error...
- create_branch = bzrdir.BzrDir.create_branch_convenience
- branch = create_branch(to_transport.base,
- format=format,
- possible_transports=[to_transport])
- else:
- if existing_bzrdir.has_branch():
- raise AlreadyBranchError(location)
- else:
- branch = existing_bzrdir.create_branch()
- existing_bzrdir.create_workingtree()
- db.upstream_branch = branch
- db.upstream_tree = branch.bzrdir.open_workingtree()
+ db._create_empty_upstream_tree(tempdir)
self.import_many(db, files_list, orig_target)
finally:
shutil.rmtree(tempdir)
=== modified file 'import_dsc.py'
--- a/import_dsc.py 2008-08-27 16:59:55 +0000
+++ b/import_dsc.py 2008-08-27 17:38:37 +0000
@@ -50,6 +50,7 @@
UncommittedChanges,
NotBranchError,
NoRepositoryPresent,
+ AlreadyBranchError,
)
from bzrlib.osutils import file_iterator, isdir, basename, splitpath
from bzrlib.revision import NULL_REVISION
@@ -1797,6 +1798,30 @@
self.upstream_tree = dir_to.open_workingtree()
self.upstream_branch = br_to
+ def _create_empty_upstream_tree(self, basedir):
+ to_location = os.path.join(basedir,
+ self.name + "-upstream")
+ to_transport = transport.get_transport(to_location)
+ to_transport.ensure_base()
+ format = bzrdir.format_registry.make_bzrdir('default')
+ try:
+ existing_bzrdir = bzrdir.BzrDir.open_from_transport(
+ to_transport)
+ except NotBranchError:
+ # really a NotBzrDir error...
+ create_branch = bzrdir.BzrDir.create_branch_convenience
+ branch = create_branch(to_transport.base,
+ format=format,
+ possible_transports=[to_transport])
+ else:
+ if existing_bzrdir.has_branch():
+ raise AlreadyBranchError(location)
+ else:
+ branch = existing_bzrdir.create_branch()
+ existing_bzrdir.create_workingtree()
+ self.upstream_branch = branch
+ self.upstream_tree = branch.bzrdir.open_workingtree()
+
def _extract_tarball_to_tempdir(self, tarball_filename):
tempdir = tempfile.mkdtemp()
try:
@@ -1814,11 +1839,14 @@
def merge_upstream(self, tarball_filename, version, previous_version):
assert self.upstream_branch is None, \
"Should use self.upstream_branch if set"
- upstream_tip = self._revid_of_upstream_version_from_branch(
- previous_version)
tempdir = tempfile.mkdtemp(dir=os.path.join(self.tree.basedir, '..'))
try:
- self._extract_upstream_tree(upstream_tip, tempdir)
+ if previous_version is not None:
+ upstream_tip = self._revid_of_upstream_version_from_branch(
+ previous_version)
+ self._extract_upstream_tree(upstream_tip, tempdir)
+ else:
+ self._create_empty_upstream_tree(tempdir)
if self.has_upstream_version(version):
raise UpstreamAlreadyImported(version)
m = md5.new()
@@ -1827,11 +1855,18 @@
tarball_dir = self._extract_tarball_to_tempdir(tarball_filename)
try:
# FIXME: should use upstream_parents()?
+ parents = []
+ if self.upstream_branch.last_revision() != NULL_REVISION:
+ parents = [self.branch.last_revision()]
self.import_upstream(tarball_dir, version, md5sum,
- [self.upstream_branch.last_revision()])
+ parents)
finally:
shutil.rmtree(tarball_dir)
- conflicts = self.tree.merge_from_branch(self.upstream_branch)
+ if self.branch.last_revision() != NULL_REVISION:
+ conflicts = self.tree.merge_from_branch(self.upstream_branch)
+ else:
+ conflicts = 0
+ self.tree.pull(self.upstream_branch)
self.upstream_branch.tags.merge_to(self.branch.tags)
return conflicts
finally:
More information about the Pkg-bazaar-commits
mailing list