Rev 605: Deal with newer versions of get_commit_editor(). in file:///data/jelmer/bzr-svn/revprops/

Jelmer Vernooij jelmer at samba.org
Fri Dec 14 23:43:14 GMT 2007


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

------------------------------------------------------------
revno: 605
revision-id:jelmer at samba.org-20071214234314-3ldj3arfomn51xeu
parent: jelmer at samba.org-20071214232001-8tzylqgxqeg1xaw9
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: revprops
timestamp: Sat 2007-12-15 00:43:14 +0100
message:
  Deal with newer versions of get_commit_editor().
modified:
  BRANCH.TODO                    branch.todo-20070721175243-w23kkak0gm2jbr8b-1
  commit.py                      commit.py-20060607190346-qvq128wgfubhhgm2-1
  transport.py                   transport.py-20060406231150-b3472d06b3a0818d
=== modified file 'BRANCH.TODO'
--- a/BRANCH.TODO	2007-12-14 16:14:27 +0000
+++ b/BRANCH.TODO	2007-12-14 23:43:14 +0000
@@ -15,4 +15,8 @@
 bzr-svn should not be looking at any file properties set on the branch root if any 
 of these revision properties is set.
 
-Needs more tests...
+Needs more tests...:
+
+ * 
+
+Make sure that bzr revprops set as bzr:* in svn properties don't get converted to svn:bzr: in bzr revprops.

=== modified file 'commit.py'
--- a/commit.py	2007-12-10 01:18:44 +0000
+++ b/commit.py	2007-12-14 23:43:14 +0000
@@ -453,18 +453,18 @@
         """Finish the commit.
 
         """
-        def done(revision, date, author):
+        def done(revision_data, pool):
             """Callback that is called by the Subversion commit editor 
             once the commit finishes.
 
-            :param revision: Revision number
-            :param date: Date recorded for this commit
+            :param revision_metadata: Revision metadata
             """
-            assert revision > 0
-            self.revnum = revision
-            self.date = date
-            self.author = author
+            self.revision_metadata = revision_data
         
+        # No point storing an empty revision property
+        if self._svn_revprops[SVN_REVPROP_BZR_FILEIDS] == "":
+            del self._svn_revprops[SVN_REVPROP_BZR_FILEIDS]
+
         self._svn_revprops[SVN_REVPROP_BZR_ROOT] = self.branch.get_branch_path()
         bp_parts = self.branch.get_branch_path().split("/")
         repository_latest_revnum = self.repository.transport.get_latest_revnum()
@@ -475,7 +475,7 @@
         try:
             existing_bp_parts = _check_dirs_exist(self.repository.transport, 
                                               bp_parts, -1)
-            self.revnum = None
+            self.revision_metadata = None
             self._svn_revprops[svn.core.SVN_PROP_REVISION_LOG] = message.encode("utf-8")
             try:
                 self.editor = self.repository.transport.get_commit_editor(self._svn_revprops, 
@@ -529,27 +529,27 @@
         finally:
             lock.unlock()
 
-        assert self.revnum is not None
+        assert self.revision_metadata is not None
 
         # Make sure the logwalker doesn't try to use ra 
         # during checkouts...
-        self.repository._log.fetch_revisions(self.revnum)
+        self.repository._log.fetch_revisions(self.revision_metadata.revision)
 
-        revid = self.branch.generate_revision_id(self.revnum)
+        revid = self.branch.generate_revision_id(self.revision_metadata.revision)
 
         assert self._new_revision_id is None or self._new_revision_id == revid
 
         self.mutter('commit %d finished. author: %r, date: %r, revid: %r' % 
-               (self.revnum, self.author, self.date, revid))
+               (self.revision_metadata.revision, self.revision_metadata.author, self.revision_metadata.date, revid))
 
         if self.repository.get_config().get_override_svn_revprops():
-            set_svn_revprops(self.repository.transport, self.revnum, {
+            set_svn_revprops(self.repository.transport, self.revision_metadata.revision, {
                 svn.core.SVN_PROP_REVISION_AUTHOR: self._committer,
                 svn.core.SVN_PROP_REVISION_DATE: svn_time_to_cstring(1000000*self._timestamp)
                 })
 
         try:
-            set_svn_revprops(self.repository.transport, self.revnum, 
+            set_svn_revprops(self.repository.transport, self.revision_metadata.revision, 
                          self._svn_revprops) 
         except RevpropChangeFailed:
             pass # Ignore for now

=== modified file 'transport.py'
--- a/transport.py	2007-12-14 16:04:31 +0000
+++ b/transport.py	2007-12-14 23:43:14 +0000
@@ -519,9 +519,15 @@
             elif revprops.keys() != [svn.core.SVN_PROP_REVISION_LOG]:
                 raise NotImplementedError()
             else:
+                def done_wrapper(new_rev, date, author):
+                    commit_info = svn.core.svn_commit_info_t()
+                    commit_info.revision = new_rev
+                    commit_info.date = date
+                    commit_info.author = author
+                    done_cb(commit_info)
                 editor = svn.ra.get_commit_editor(self._ra, 
                             revprops[svn.core.SVN_PROP_REVISION_LOG],
-                            done_cb, lock_token, keep_locks)
+                            done_wrapper, lock_token, keep_locks)
 
             return Editor(self, editor)
         except:




More information about the bazaar-commits mailing list