[Pkg-bazaar-commits] ./bzr-builddeb/trunk.old r258: Also record the native status in the working tree when using DistributionBranch.
James Westby
jw+debian at jameswestby.net
Wed Dec 10 08:32:59 UTC 2008
------------------------------------------------------------
revno: 258
committer: James Westby <jw+debian at jameswestby.net>
branch nick: 2.0
timestamp: Wed 2008-08-27 20:52:16 +0100
message:
Also record the native status in the working tree when using DistributionBranch.
modified:
import_dsc.py
tests/test_import_dsc.py
-------------- next part --------------
=== modified file 'import_dsc.py'
--- a/import_dsc.py 2008-08-27 17:38:37 +0000
+++ b/import_dsc.py 2008-08-27 19:52:16 +0000
@@ -1184,6 +1184,34 @@
self.upstream_branch.tags.set_tag(tag_name,
self.upstream_branch.last_revision())
+ def _default_config_for_tree(self, tree):
+ # FIXME: shouldn't go to configobj directly
+ path = '.bzr-builddeb/default.conf'
+ c_fileid = tree.path2id(path)
+ config = None
+ if c_fileid is not None:
+ tree.lock_read()
+ try:
+ config = ConfigObj(tree.get_file(c_fileid, path))
+ try:
+ config['BUILDDEB']
+ except KeyError:
+ config['BUILDDEB'] = {}
+ finally:
+ tree.unlock()
+ return config
+
+
+ def _is_tree_native(self, tree):
+ config = self._default_config_for_tree(tree)
+ if config is not None:
+ try:
+ current_value = config['BUILDDEB']['native']
+ except KeyError:
+ current_value = False
+ return current_value == "True"
+ return False
+
def is_version_native(self, version):
"""Determines whether the given version is native.
@@ -1193,6 +1221,9 @@
imported, False otherwise.
"""
revid = self.revid_of_version(version)
+ rev_tree = self.branch.repository.revision_tree(revid)
+ if self._is_tree_native(rev_tree):
+ return True
rev = self.branch.repository.get_revision(revid)
try:
prop = rev.properties["deb-native"]
@@ -1522,6 +1553,52 @@
sep = "\n"
return (message, author)
+ def _mark_native_config(self, native):
+ poss_native_tree = self.branch.repository.revision_tree(
+ self.branch.last_revision())
+ current_native = self._is_tree_native(poss_native_tree)
+ current_config = self._default_config_for_tree(poss_native_tree)
+ dirname = os.path.join(self.tree.basedir,
+ '.bzr-builddeb')
+ if current_config is not None:
+ # Add that back to the current tree
+ os.mkdir(dirname)
+ current_config.filename = os.path.join(dirname,
+ 'default.conf')
+ current_config.write()
+ dir_id = poss_native_tree.path2id('.bzr-builddeb')
+ file_id = poss_native_tree.path2id(
+ '.bzr-builddeb/default.conf')
+ self.tree.add(['.bzr-builddeb/',
+ '.bzr-builddeb/default.conf'],
+ ids=[dir_id, file_id])
+ if native != current_native:
+ if current_config is None:
+ needs_add = True
+ if native:
+ current_config = ConfigObj()
+ current_config['BUILDDEB'] = {}
+ if current_config is not None:
+ if native:
+ current_config['BUILDDEB']['native'] = True
+ else:
+ del current_config['BUILDDEB']['native']
+ if len(current_config['BUILDDEB']) == 0:
+ del current_config['BUILDDEB']
+ if len(current_config) == 0:
+ self.tree.remove(['.bzr-builddeb',
+ '.bzr-builddeb/default.conf'],
+ keep_files=False)
+ else:
+ if needs_add:
+ os.mkdir(dirname)
+ current_config.filename = os.path.join(dirname,
+ 'default.conf')
+ current_config.write()
+ if needs_add:
+ self.tree.add(['.bzr-builddeb/',
+ '.bzr-builddeb/default.conf'])
+
def import_debian(self, debian_part, version, parents, md5,
native=False):
"""Import the debian part of a source package.
@@ -1578,6 +1655,7 @@
revprops={"deb-md5":md5}
if native:
revprops['deb-native'] = "True"
+ self._mark_native_config(native)
self.tree.commit(message, author=author, revprops=revprops)
self.tag_version(version)
@@ -1857,7 +1935,7 @@
# FIXME: should use upstream_parents()?
parents = []
if self.upstream_branch.last_revision() != NULL_REVISION:
- parents = [self.branch.last_revision()]
+ parents = [self.upstream_branch.last_revision()]
self.import_upstream(tarball_dir, version, md5sum,
parents)
finally:
=== modified file 'tests/test_import_dsc.py'
--- a/tests/test_import_dsc.py 2008-07-30 15:10:40 +0000
+++ b/tests/test_import_dsc.py 2008-08-27 19:52:16 +0000
@@ -2242,6 +2242,8 @@
self.db1.tag_version(version1)
self.tree1.commit("two", revprops={'deb-native': "True"})
self.db1.tag_version(version2)
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertFalse(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
@@ -2255,7 +2257,11 @@
up_rh1 = self.up_tree1.branch.revision_history()
self.assertEqual(len(rh1), 1)
self.assertEqual(len(up_rh1), 0)
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertTrue(self.db1.is_version_native(version))
+ revtree = self.tree1.branch.repository.revision_tree(rh1[0])
+ self.assertTrue(self.db1._is_tree_native(revtree))
def test_import_native_two(self):
version1 = Version("1.0")
@@ -2285,6 +2291,8 @@
modified=["debian/changelog", "COPYING"])
self.assertEqual(self.db1.revid_of_version(version1), rh1[0])
self.assertEqual(self.db1.revid_of_version(version2), rh1[1])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertTrue(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
@@ -2313,6 +2321,8 @@
modified=["README", "debian/changelog"])
self.assertEqual(self.db1.revid_of_version(version1), rh1[0])
self.assertEqual(self.db1.revid_of_version(version2), rh1[1])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertTrue(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
@@ -2342,10 +2352,13 @@
self.assertEqual(rev_tree1.get_parent_ids(), [rh1[0]])
self.assertEqual(rev_tree2.get_parent_ids(), [rh1[1]])
self.check_changes(rev_tree2.changes_from(rev_tree1),
- added=["NEWS"], removed=["BUGS"],
- modified=["debian/changelog", "COPYING"])
+ added=["NEWS", ".bzr-builddeb/",
+ ".bzr-builddeb/default.conf"],
+ removed=["BUGS"], modified=["debian/changelog", "COPYING"])
self.assertEqual(self.db1.revid_of_version(version1), rh1[1])
self.assertEqual(self.db1.revid_of_version(version2), rh1[2])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertFalse(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
@@ -2378,18 +2391,23 @@
self.assertEqual(rev_tree2.get_parent_ids(), [rh1[0], up_rh1[1]])
self.assertEqual(up_rev_tree1.get_parent_ids(), [rh1[0]])
self.check_changes(rev_tree2.changes_from(rev_tree1),
- added=["NEWS"], removed=["BUGS"],
+ added=["NEWS"],
+ removed=["BUGS", ".bzr-builddeb/",
+ ".bzr-builddeb/default.conf"],
modified=["debian/changelog", "COPYING"])
self.check_changes(up_rev_tree1.changes_from(rev_tree1),
added=["NEWS"],
removed=["debian/", "debian/changelog", "debian/control",
- "BUGS", "README"],
+ "BUGS", "README", ".bzr-builddeb/",
+ ".bzr-builddeb/default.conf"],
modified=["COPYING"])
self.check_changes(rev_tree2.changes_from(up_rev_tree1),
added=["debian/", "debian/changelog", "debian/control",
"README"])
self.assertEqual(self.db1.revid_of_version(version1), rh1[0])
self.assertEqual(self.db1.revid_of_version(version2), rh1[1])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertTrue(self.db1.is_version_native(version1))
self.assertFalse(self.db1.is_version_native(version2))
@@ -2430,6 +2448,8 @@
self.assertEqual(self.db1.revid_of_version(version3), rh1[3])
self.assertEqual(self.db1.revid_of_upstream_version(version1),
up_rh1[0])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertFalse(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
self.assertFalse(self.db1.is_version_native(version3))
@@ -2481,6 +2501,8 @@
up_rh1[0])
self.assertEqual(self.db1.revid_of_upstream_version(version3),
up_rh1[1])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertFalse(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
self.assertFalse(self.db1.is_version_native(version3))
@@ -2531,6 +2553,8 @@
up_rh1[0])
self.assertEqual(self.db1.revid_of_upstream_version(version3),
up_rh1[1])
+ self.tree1.lock_read()
+ self.addCleanup(self.tree1.unlock)
self.assertFalse(self.db1.is_version_native(version1))
self.assertTrue(self.db1.is_version_native(version2))
self.assertFalse(self.db1.is_version_native(version3))
More information about the Pkg-bazaar-commits
mailing list