Rev 1704: More upgrade improvements. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Fri Aug 29 21:03:14 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1704
revision-id: jelmer at samba.org-20080829200311-vz7f7enoxqc2kxvl
parent: jelmer at samba.org-20080829190227-wml9s50qb4hmfbvp
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Fri 2008-08-29 22:03:11 +0200
message:
More upgrade improvements.
modified:
__init__.py __init__.py-20051008155114-eae558e6cf149e1d
changes.py changes.py-20080330205801-lh92uht2ztppvdcz-1
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
mapping3/__init__.py __init__.py-20080502174630-9324zh25kka98vlw-1
mapping4.py mapping4.py-20080827182338-y4xzpsf43vyiwcir-1
tests/test_changes.py test_changes.py-20080529111734-f7fbshmnlgnvue45-1
tests/test_mapping.py test_mapping.py-20080201131338-0zd86eznn4bojtee-1
upgrade.py upgrade.py-20070106192108-0rakplee2lzah4gs-1
workingtree.py workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file '__init__.py'
--- a/__init__.py 2008-08-29 19:02:27 +0000
+++ b/__init__.py 2008-08-29 20:03:11 +0000
@@ -510,6 +510,7 @@
value_switches=True)]
def run(self, location=".", mapping=None):
+ from bzrlib.errors import BzrCommandError
from bzrlib.repository import Repository
from bzrlib.plugins.svn.upgrade import set_revprops
from bzrlib.plugins.svn.mapping import get_default_mapping
@@ -517,6 +518,9 @@
if mapping is None:
mapping = get_default_mapping()
new_mapping = mapping.from_repository(repos)
+ if not new_mapping.supports_custom_revprops():
+ raise BzrCommandError("Please specify a different mapping, %s doesn't support revision properties." % new_mapping.name)
+
set_revprops(repos, new_mapping)
=== modified file 'changes.py'
--- a/changes.py 2008-08-29 17:24:52 +0000
+++ b/changes.py 2008-08-29 20:03:11 +0000
@@ -88,12 +88,13 @@
"""
if paths == []:
return None
+ paths = sorted(paths)
root = paths[0]
for p in paths[1:]:
- if p.startswith("%s/" % root):
+ if p.startswith("%s/" % root): # new path is child of root
continue
- elif root.startswith("%s/" % p):
+ elif root.startswith("%s/" % p): # new path is parent of root
root = p
else:
- return None
+ return None # Mismatch
return root
=== modified file 'commit.py'
--- a/commit.py 2008-08-26 01:44:41 +0000
+++ b/commit.py 2008-08-29 20:03:11 +0000
@@ -26,6 +26,7 @@
from bzrlib.trace import mutter, warning
from cStringIO import StringIO
+from copy import copy
from bzrlib.plugins.svn import core, properties
from bzrlib.plugins.svn.core import SubversionException
@@ -191,9 +192,13 @@
else:
base_branch_props = lazy_dict({}, self.repository.branchprop_list.get_properties, self.base_path, self.base_revnum)
self.supports_custom_revprops = self.repository.transport.has_capability("commit-revprops")
- (self._svn_revprops, self._svnprops) = self.base_mapping.export_revision(self.supports_custom_revprops,
+ if self.supports_custom_revprops:
+ self._svn_revprops = {}
+ else:
+ self._svnprops = copy(base_branch_props)
+ self.base_mapping.export_revision(
self.branch.get_branch_path(), timestamp, timezone, committer, revprops,
- revision_id, self.base_revno+1, merges, base_branch_props)
+ revision_id, self.base_revno+1, merges, self._svn_revprops, self._svnprops)
if len(merges) > 0:
new_svk_merges = update_svk_features(base_branch_props.get(SVN_PROP_SVK_MERGE, ""), merges)
@@ -474,17 +479,15 @@
repository_latest_revnum = self.repository.get_latest_revnum()
lock = self.repository.transport.lock_write(".")
- (fileids, text_parents) = self._determine_texts_identity()
+ if self.push_metadata:
+ (fileids, text_parents) = self._determine_texts_identity()
- self.base_mapping.export_text_parents(self.supports_custom_revprops, text_parents,
- self._svn_revprops, self._svnprops)
- self.base_mapping.export_fileid_map(self.supports_custom_revprops, fileids,
- self._svn_revprops, self._svnprops)
- if self._config.get_log_strip_trailing_newline():
- self.base_mapping.export_message(self.supports_custom_revprops, message,
- self._svn_revprops, self._svnprops)
- message = message.rstrip("\n")
- if not self.push_metadata:
+ self.base_mapping.export_text_parents(text_parents, self._svn_revprops, self._svnprops)
+ self.base_mapping.export_fileid_map(fileids, self._svn_revprops, self._svnprops)
+ if self._config.get_log_strip_trailing_newline():
+ self.base_mapping.export_message(message, self._svn_revprops, self._svnprops)
+ message = message.rstrip("\n")
+ if not self.supports_custom_revprops:
self._svn_revprops = {}
self._svn_revprops[properties.PROP_REVISION_LOG] = message.encode("utf-8")
=== modified file 'mapping.py'
--- a/mapping.py 2008-08-29 19:02:27 +0000
+++ b/mapping.py 2008-08-29 20:03:11 +0000
@@ -267,7 +267,7 @@
@classmethod
def from_revprops(cls, revprops):
- return cls()
+ raise NotImplementedError
@classmethod
def supports_roundtripping(cls):
@@ -361,7 +361,7 @@
"""
raise NotImplementedError(self.import_fileid_map)
- def export_fileid_map(self, can_use_custom_revprops, fileids, revprops, fileprops):
+ def export_fileid_map(self, fileids, revprops, fileprops):
"""Adjust the properties for a file id map.
:param fileids: Dictionary
@@ -378,7 +378,7 @@
"""
raise NotImplementedError(self.import_text_parents)
- def export_text_parents(self, can_use_custom_revprops, text_parents, revprops, fileprops):
+ def export_text_parents(self, text_parents, revprops, fileprops):
"""Store a text parent map.
:param text_parents: Text parent map
@@ -387,13 +387,13 @@
"""
raise NotImplementedError(self.export_text_parents)
- def export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, fileprops):
+ def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops):
"""Determines the revision properties and branch root file
properties.
"""
raise NotImplementedError(self.export_revision)
- def export_message(self, can_use_custom_revprops, log, revprops, fileprops):
+ def export_message(self, log, revprops, fileprops):
raise NotImplementedError(self.export_message)
def get_revision_id(self, branch_path, revprops, fileprops):
@@ -511,10 +511,10 @@
return {}
return parse_text_parents_property(metadata)
- def export_text_parents(self, can_use_custom_revprops, text_parents, svn_revprops, fileprops):
+ def export_text_parents(self, text_parents, svn_revprops, fileprops):
if text_parents != {}:
fileprops[SVN_PROP_BZR_TEXT_PARENTS] = generate_text_parents_property(text_parents)
- else:
+ elif SVN_PROP_BZR_TEXT_PARENTS in fileprops:
fileprops[SVN_PROP_BZR_TEXT_PARENTS] = ""
def get_rhs_parents(self, branch_path, revprops, fileprops):
@@ -547,25 +547,23 @@
return svnprops
- def export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, old_fileprops):
+ def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops):
# Keep track of what Subversion properties to set later on
- fileprops = {}
- fileprops[SVN_PROP_BZR_REVISION_INFO] = generate_revision_metadata(
+ svn_fileprops = {}
+ svn_fileprops[SVN_PROP_BZR_REVISION_INFO] = generate_revision_metadata(
timestamp, timezone, committer, revprops)
if len(merges) > 0:
- fileprops.update(self.record_merges(merges, old_fileprops))
+ svn_fileprops.update(self.record_merges(merges, svn_fileprops))
# Set appropriate property if revision id was specified by
# caller
if revision_id is not None:
- old = old_fileprops.get(SVN_PROP_BZR_REVISION_ID+self.name, "")
- fileprops[SVN_PROP_BZR_REVISION_ID+self.name] = old + "%d %s\n" % (revno, revision_id)
-
- return ({}, fileprops)
-
- def export_message(self, can_use_custom_revprops, message, revprops, fileprops):
+ old = svn_fileprops.get(SVN_PROP_BZR_REVISION_ID+self.name, "")
+ svn_fileprops[SVN_PROP_BZR_REVISION_ID+self.name] = old + "%d %s\n" % (revno, revision_id)
+
+ def export_message(self, message, revprops, fileprops):
fileprops[SVN_PROP_BZR_LOG] = message.encode("utf-8")
def is_bzr_revision(self, revprops, fileprops):
@@ -587,11 +585,11 @@
mutter(str(e))
return (None, None)
- def export_fileid_map(self, can_use_custom_revprops, fileids, revprops, fileprops):
+ def export_fileid_map(self, fileids, revprops, fileprops):
if fileids != {}:
file_id_text = generate_fileid_property(fileids)
fileprops[SVN_PROP_BZR_FILEIDS] = file_id_text
- else:
+ elif SVN_PROP_BZR_FILEIDS in fileprops:
fileprops[SVN_PROP_BZR_FILEIDS] = ""
@@ -615,8 +613,9 @@
return {}
return parse_text_parents_property(svn_revprops[SVN_REVPROP_BZR_TEXT_PARENTS])
- def export_text_parents(self, can_use_custom_revprops, text_parents, svn_revprops, fileprops):
- svn_revprops[SVN_REVPROP_BZR_TEXT_PARENTS] = generate_text_parents_property(text_parents)
+ def export_text_parents(self, text_parents, svn_revprops, fileprops):
+ if text_parents != {}:
+ svn_revprops[SVN_REVPROP_BZR_TEXT_PARENTS] = generate_text_parents_property(text_parents)
def get_rhs_parents(self, branch_path, svn_revprops,
fileprops):
@@ -636,11 +635,10 @@
return (revno, revid)
return (None, None)
- def export_message(self, can_use_custom_revprops, message, revprops, fileprops):
+ def export_message(self, message, revprops, fileprops):
revprops[SVN_REVPROP_BZR_LOG] = message.encode("utf-8")
- def export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, fileprops):
- svn_revprops = {}
+ def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops):
if timestamp is not None:
svn_revprops[SVN_REVPROP_BZR_TIMESTAMP] = format_highres_date(timestamp, timezone)
@@ -661,10 +659,9 @@
svn_revprops[SVN_REVPROP_BZR_MERGE] = "".join([x+"\n" for x in merges])
svn_revprops[SVN_REVPROP_BZR_REVNO] = str(revno)
- return (svn_revprops, {})
-
- def export_fileid_map(self, can_use_custom_revprops, fileids, revprops, fileprops):
- revprops[SVN_REVPROP_BZR_FILEIDS] = generate_fileid_property(fileids)
+ def export_fileid_map(self, fileids, revprops, fileprops):
+ if fileids != {}:
+ revprops[SVN_REVPROP_BZR_FILEIDS] = generate_fileid_property(fileids)
def get_rhs_ancestors(self, branch_path, revprops, fileprops):
raise NotImplementedError(self.get_rhs_ancestors)
@@ -711,9 +708,16 @@
def find_mapping(revprops, fileprops):
if SVN_REVPROP_BZR_MAPPING_VERSION in revprops:
- ret = BzrSvnMapping.from_revprops(revprops)
- if ret is not None:
- return ret
+ try:
+ cls = mapping_registry.get(revprops[SVN_REVPROP_BZR_MAPPING_VERSION])
+ ret = BzrSvnMapping.from_revprops(revprops)
+ except KeyError:
+ pass
+ except NotImplementedError:
+ pass
+ else:
+ if ret is not None:
+ return ret
for k, v in fileprops.items():
if k.startswith(SVN_PROP_BZR_REVISION_ID):
return parse_mapping_name(k[len(SVN_PROP_BZR_REVISION_ID):])
=== modified file 'mapping3/__init__.py'
--- a/mapping3/__init__.py 2008-08-29 19:02:27 +0000
+++ b/mapping3/__init__.py 2008-08-29 20:03:11 +0000
@@ -351,34 +351,31 @@
self.name = "v3-" + str(scheme)
self.revprop_map = mapping.BzrSvnMappingRevProps()
- def export_text_parents(self, can_use_custom_revprops, text_parents, svn_revprops, fileprops):
- mapping.BzrSvnMappingFileProps.export_text_parents(self, can_use_custom_revprops, text_parents, svn_revprops, fileprops)
- if can_use_custom_revprops:
- self.revprop_map.export_text_parents(can_use_custom_revprops, text_parents, svn_revprops, fileprops)
-
- def export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, old_fileprops):
- (svn_revprops, fileprops) = mapping.BzrSvnMappingFileProps.export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, old_fileprops)
- if can_use_custom_revprops:
- (extra_svn_revprops, _) = self.revprop_map.export_revision(can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, None, revno, merges, old_fileprops)
- svn_revprops.update(extra_svn_revprops)
- return (svn_revprops, fileprops)
-
- def export_fileid_map(self, can_use_custom_revprops, fileids, revprops, fileprops):
- mapping.BzrSvnMappingFileProps.export_fileid_map(self, can_use_custom_revprops, fileids, revprops, fileprops)
- if can_use_custom_revprops:
- self.revprop_map.export_fileid_map(can_use_custom_revprops, fileids, revprops, fileprops)
-
- def export_message(self, can_use_custom_revprops, log, revprops, fileprops):
- mapping.BzrSvnMappingFileProps.export_message(self, can_use_custom_revprops, log, revprops, fileprops)
- if can_use_custom_revprops:
- self.revprop_map.export_message(can_use_custom_revprops, log, revprops, fileprops)
+ def export_text_parents(self, text_parents, svn_revprops, fileprops):
+ mapping.BzrSvnMappingFileProps.export_text_parents(self, text_parents, svn_revprops, fileprops)
+ if svn_revprops is not None:
+ self.revprop_map.export_text_parents(text_parents, svn_revprops, fileprops)
+
+ def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops):
+ mapping.BzrSvnMappingFileProps.export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops)
+ if svn_revprops is not None:
+ self.revprop_map.export_revision(branch_root, timestamp, timezone, committer, revprops, None, revno, merges, svn_revprops, svn_fileprops)
+
+ def export_fileid_map(self, fileids, revprops, fileprops):
+ mapping.BzrSvnMappingFileProps.export_fileid_map(self, fileids, revprops, fileprops)
+ if revprops is not None:
+ self.revprop_map.export_fileid_map(fileids, revprops, fileprops)
+
+ def export_message(self, log, revprops, fileprops):
+ mapping.BzrSvnMappingFileProps.export_message(self, log, revprops, fileprops)
+ if revprops is not None:
+ self.revprop_map.export_message(log, revprops, fileprops)
class BzrSvnMappingv3RevProps(mapping.BzrSvnMappingRevProps, BzrSvnMappingv3):
- def export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, fileprops):
- (revprops, fileprops) = mapping.BzrSvnMappingRevProps.export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, fileprops)
- revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] = "3"
- return (revprops, fileprops)
+ def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops):
+ mapping.BzrSvnMappingRevProps.export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges, svn_revprops, svn_fileprops)
+ svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] = "3"
=== modified file 'mapping4.py'
--- a/mapping4.py 2008-08-29 16:00:52 +0000
+++ b/mapping4.py 2008-08-29 20:03:11 +0000
@@ -41,6 +41,14 @@
return True
@classmethod
+ def from_revprops(cls, revprops):
+ return cls()
+
+ @staticmethod
+ def supports_custom_revprops():
+ return True
+
+ @classmethod
def revision_id_bzr_to_foreign(cls, revid):
assert isinstance(revid, str)
@@ -95,28 +103,27 @@
else:
return self.fileprops.import_fileid_map(svn_revprops, fileprops)
- def export_revision(self, can_use_custom_revprops, branch_root, timestamp, timezone, committer, revprops, revision_id,
- revno, merges, fileprops):
- if can_use_custom_revprops:
- (svn_revprops, fileprops) = self.revprops.export_revision(can_use_custom_revprops, branch_root, timestamp, timezone, committer,
- revprops, revision_id, revno, merges, fileprops)
- svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] = "4"
- return (svn_revprops, fileprops)
- else:
- return self.fileprops.export_revision(can_use_custom_revprops, branch_root, timestamp, timezone, committer,
- revprops, revision_id, revno, merges, fileprops)
-
- def export_fileid_map(self, can_use_custom_revprops, fileids, revprops, fileprops):
- if can_use_custom_revprops:
- self.revprops.export_fileid_map(can_use_custom_revprops, fileids, revprops, fileprops)
- else:
- self.fileprops.export_fileid_map(can_use_custom_revprops, fileids, revprops, fileprops)
-
- def export_text_parents(self, can_use_custom_revprops, text_parents, revprops, fileprops):
- if can_use_custom_revprops:
- self.revprops.export_text_parents(can_use_custom_revprops, text_parents, revprops, fileprops)
- else:
- self.fileprops.export_text_parents(can_use_custom_revprops, text_parents, revprops, fileprops)
+ def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id,
+ revno, merges, svn_revprops, svn_fileprops):
+ if svn_revprops is not None:
+ self.revprops.export_revision(branch_root, timestamp, timezone, committer,
+ revprops, revision_id, revno, merges, svn_revprops, svn_fileprops)
+ svn_revprops[mapping.SVN_REVPROP_BZR_MAPPING_VERSION] = "v4"
+ else:
+ self.fileprops.export_revision(branch_root, timestamp, timezone, committer,
+ revprops, revision_id, revno, merges, svn_revprops, svn_fileprops)
+
+ def export_fileid_map(self, fileids, revprops, fileprops):
+ if revprops is not None:
+ self.revprops.export_fileid_map(fileids, revprops, fileprops)
+ else:
+ self.fileprops.export_fileid_map(fileids, revprops, fileprops)
+
+ def export_text_parents(self, text_parents, revprops, fileprops):
+ if revprops is not None:
+ self.revprops.export_text_parents(text_parents, revprops, fileprops)
+ else:
+ self.fileprops.export_text_parents(text_parents, revprops, fileprops)
def import_revision(self, svn_revprops, fileprops, uuid, branch, revnum, rev):
if svn_revprops.has_key(mapping.SVN_REVPROP_BZR_REQUIRED_FEATURES):
=== modified file 'tests/test_changes.py'
--- a/tests/test_changes.py 2008-08-29 17:24:52 +0000
+++ b/tests/test_changes.py 2008-08-29 20:03:11 +0000
@@ -63,6 +63,9 @@
def test_simple(self):
self.assertEquals("bla", changes_root(["bla", "bla/blie"]))
+ def test_siblings(self):
+ self.assertEquals("bla", changes_root(["bla/blie", "bla/bloe", "bla"]))
+
def test_simple_other(self):
self.assertEquals("bla", changes_root(["bla/blie", "bla"]))
=== modified file 'tests/test_mapping.py'
--- a/tests/test_mapping.py 2008-08-29 16:35:32 +0000
+++ b/tests/test_mapping.py 2008-08-29 20:03:11 +0000
@@ -154,7 +154,7 @@
raise TestNotApplicable
fileids = {"": "some-id", "bla/blie": "other-id"}
(revprops, fileprops) = self.mapping.export_revision(True, "branchp", 432432432.0, 0, "somebody", {}, "arevid", 4, ["merge1"], dict())
- self.mapping.export_fileid_map(True, fileids, revprops, fileprops)
+ self.mapping.export_fileid_map(fileids, revprops, fileprops)
revprops["svn:date"] = "2008-11-03T09:33:00.716938Z"
self.assertEquals(fileids,
self.mapping.import_fileid_map(revprops, fileprops))
@@ -165,7 +165,7 @@
revprops = {}
fileprops = {}
text_parents = {"bla": "bloe", "ll": "12"}
- self.mapping.export_text_parents(True, text_parents, revprops, fileprops)
+ self.mapping.export_text_parents(text_parents, revprops, fileprops)
self.assertEquals(text_parents,
self.mapping.import_text_parents(revprops, fileprops))
@@ -176,7 +176,7 @@
{"arevprop": "val"}, "arevid", 4, ["merge1"], dict())
revprops["svn:date"] = "2008-11-03T09:33:00.716938Z"
try:
- self.mapping.export_message(True, "My Commit message", revprops, fileprops)
+ self.mapping.export_message("My Commit message", revprops, fileprops)
except NotImplementedError:
raise TestNotApplicable
targetrev = Revision(None)
=== modified file 'upgrade.py'
--- a/upgrade.py 2008-08-29 19:02:27 +0000
+++ b/upgrade.py 2008-08-29 20:03:11 +0000
@@ -229,6 +229,7 @@
graph = repository.get_graph()
assert from_revnum <= to_revnum
pb = ui.ui_factory.nested_progress_bar()
+ logcache = getattr(repository._log, "cache", None)
try:
for (paths, revnum, revprops) in repository._log.iter_changes(None, to_revnum, from_revnum, pb=pb):
# Find the root path of the change
@@ -239,19 +240,24 @@
else:
fileprops = logwalker.lazy_dict({}, repository.branchprop_list.get_properties, bp, revnum)
old_mapping = mapping.find_mapping(revprops, fileprops)
- if old_mapping is None:
+ if old_mapping is None or old_mapping == new_mapping:
continue
+ assert old_mapping.supports_custom_revprops() or bp is not None
+ new_revprops = dict(revprops.items())
rev = Revision(old_mapping.get_revision_id(bp, revprops, fileprops)[1])
old_mapping.import_revision(revprops, fileprops, repository.uuid, bp, revnum, rev)
revno = graph.find_distance_to_null(rev.revision_id, [])
- (new_revprops, new_fileprops) = new_mapping.export_revision(True, bp, rev.timestamp, rev.timezone, rev.committer, rev.properties, rev.revision_id, revno, old_mapping.get_rhs_parents(bp, revprops, fileprops), fileprops)
- new_mapping.export_fileid_map(True, old_mapping.import_fileid_map(revprops, fileprops),
- new_revprops, new_fileprops)
- new_mapping.export_text_parents(True, old_mapping.import_text_parents(revprops, fileprops),
- new_revprops, new_fileprops)
+ new_mapping.export_revision(bp, rev.timestamp, rev.timezone, rev.committer, rev.properties, rev.revision_id, revno, old_mapping.get_rhs_parents(bp, revprops, fileprops), new_revprops, None)
+ new_mapping.export_fileid_map(old_mapping.import_fileid_map(revprops, fileprops),
+ new_revprops, None)
+ new_mapping.export_text_parents(old_mapping.import_text_parents(revprops, fileprops),
+ new_revprops, None)
# new_mapping.export_message
- assert new_fileprops == fileprops, "expected %r got %r" % (new_fileprops, fileprops)
for k, v in new_revprops.items():
- repository.transport.change_rev_prop(revnum, k, v)
+ if v != revprops.get(k):
+ repository.transport.change_rev_prop(revnum, k, v)
+ # Might as well update the cache while we're at it
+ if logcache is not None:
+ logcache.insert_revprops(revnum, new_revprops)
finally:
pb.finished()
=== modified file 'workingtree.py'
--- a/workingtree.py 2008-08-28 02:07:43 +0000
+++ b/workingtree.py 2008-08-29 20:03:11 +0000
@@ -613,9 +613,8 @@
else:
assert isinstance(id, str)
new_entries[path] = id
- revprops = {}
fileprops = self._get_branch_props()
- self.branch.mapping.export_fileid_map(False, new_entries, revprops, fileprops)
+ self.branch.mapping.export_fileid_map(new_entries, None, fileprops)
self._set_branch_props(subwc, fileprops)
if wc is None:
subwc.close()
More information about the bazaar-commits
mailing list