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