[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