Rev 1879: Fix another test - special-case pushing from svn to svn. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Tue Sep 9 02:46:57 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1879
revision-id: jelmer at samba.org-20080909014656-snrv0sekt6ocutga
parent: jelmer at samba.org-20080909010958-rnsv5ofpgip5w0z6
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Tue 2008-09-09 03:46:56 +0200
message:
Fix another test - special-case pushing from svn to svn.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
versionedfiles.py versionedfiles.py-20080626134117-j8g0ntz1pj228iox-1
=== modified file 'commit.py'
--- a/commit.py 2008-09-09 00:50:59 +0000
+++ b/commit.py 2008-09-09 01:46:56 +0000
@@ -37,6 +37,7 @@
from bzrlib.plugins.svn.logwalker import lazy_dict
from bzrlib.plugins.svn.mapping import mapping_registry
from bzrlib.plugins.svn.repository import SvnRepositoryFormat, SvnRepository
+from bzrlib.plugins.svn.versionedfiles import SvnTexts
def _revision_id_to_svk_feature(revid):
"""Create a SVK feature identifier from a revision id.
@@ -625,11 +626,17 @@
accessed when the entry has a revision of None - that is when
it is a candidate to commit.
"""
- if self._texts is None or ie.revision is None:
- self._text_parents[ie.file_id] = []
- for parent_inv in parent_invs:
- if ie.file_id in parent_inv:
- self._text_parents[ie.file_id].append(parent_inv[ie.file_id].revision)
+ if self._texts is None:
+ self._text_parents[ie.file_id] = [parent_inv[ie.file_id].revision for parent_inv in parent_invs if ie.file_id in parent_inv]
+ elif isinstance(self._texts, SvnTexts):
+ overridden_parents = self._texts._get_parent(ie.file_id, ie.revision)
+ if overridden_parents is None:
+ if ie.file_id in self.old_inv:
+ self._text_parents[ie.file_id] = [self.old_inv[ie.file_id].revision]
+ else:
+ self._text_parents[ie.file_id] = []
+ else:
+ self._text_parents[ie.file_id] = overridden_parents
else:
key = (ie.file_id, ie.revision)
parent_map = self._texts.get_parent_map([key])
@@ -637,6 +644,7 @@
# non-rich-root repositories don't have a text for the root
self._text_parents[ie.file_id] = self.parents
else:
+ assert parent_map[key] is not None, "No parents found for %r" % (key,)
self._text_parents[ie.file_id] = [r[1] for r in parent_map[key]]
self.new_inventory.add(ie)
assert (ie.file_id not in self.old_inv or
=== modified file 'versionedfiles.py'
--- a/versionedfiles.py 2008-09-08 21:41:47 +0000
+++ b/versionedfiles.py 2008-09-09 01:46:56 +0000
@@ -71,16 +71,32 @@
sha1=osutils.sha_strings(lines),
text=''.join(lines))
+ def _get_parent(self, fileid, revid):
+ revmeta, mapping = self.repository._get_revmeta(revid)
+ fileidmap = self.repository.get_fileid_map(revmeta.revnum, revmeta.branch_path, mapping)
+ path = None
+ for k, (v_fileid, v_revid) in fileidmap.items():
+ if v_fileid == fileid:
+ path = k
+ if path is None:
+ return
+
+ text_parents = mapping.import_text_parents(revmeta.get_revprops(), revmeta.get_changed_fileprops())
+ if path in text_parents:
+ return text_parents[path]
+
+ # Not explicitly record - so find the last place where this file was modified
+ # and report that.
+
+ return
+
def get_parent_map(self, keys):
invs = {}
# First, figure out the revision number/path
ret = {}
for (fileid, revid) in keys:
- # FIXME: Evil hack
- # TODO: find revision revid, call import_text_revisions
- # and retrieve parents for fileid
- ret[(fileid, revid)] = None
+ ret[(fileid, revid)] = self._get_parent(fileid, revid)
return ret
# TODO: annotate, get_sha1s, iter_lines_added_or_present_in_keys, keys
More information about the bazaar-commits
mailing list