At file:///data/jelmer/bzr-svn/trunk/

------------------------------------------------------------
revno: 1879
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Jelmer Vernooij <[EMAIL PROTECTED]>
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


-- 
bazaar-commits mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/bazaar-commits

Reply via email to