Rev 995: Wrap ra reporter. in file:///data/jelmer/bzr-svn/pyrex/

Jelmer Vernooij jelmer at samba.org
Sun Mar 16 14:51:32 GMT 2008


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

------------------------------------------------------------
revno: 995
revision-id:jelmer at samba.org-20080316145130-da5gsbilkecxu6cg
parent: jelmer at samba.org-20080316141723-gfcom3f4nvgh5ltk
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Sun 2008-03-16 15:51:30 +0100
message:
  Wrap ra reporter.
added:
  ra.pxd                         ra.pxd-20080316145122-rpus5mpg799ld67s-1
modified:
  NEWS                           news-20061231030336-h9fhq245ie0de8bs-1
  logwalker.py                   logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
  ra.pyx                         ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
  wc.pyx                         wc.pyx-20080313142018-10l8l23vha2j9e6b-1
=== modified file 'NEWS'
--- a/NEWS	2008-03-12 19:05:08 +0000
+++ b/NEWS	2008-03-16 14:51:30 +0000
@@ -1,5 +1,11 @@
 bzr-svn 0.4.9	UNRELEASED
 
+  CHANGES
+
+   * The Python-Subversion bindings are no longer necessary. Instead, 
+     bzr-svn now comes with its own Python bindings for the Subversion 
+	 libraries.
+
   FEATURES
 
    * Set revision properties when possible.

=== modified file 'logwalker.py'
--- a/logwalker.py	2008-03-16 06:11:05 +0000
+++ b/logwalker.py	2008-03-16 14:51:30 +0000
@@ -248,7 +248,40 @@
             return []
         assert ft == core.NODE_DIR
 
-        class TreeLister(svn.delta.Editor):
+        class DirLister:
+            def __init__(self, path, files):
+                self.files = files
+                self.path = path
+
+            def change_prop(self, name, value):
+                pass
+
+            def add_directory(self, path):
+                """See Editor.add_directory()."""
+                self.files.append(urlutils.join(self.base, path))
+                return DirLister(path, self.files)
+
+            def add_file(self, path):
+                self.files.append(urlutils.join(self.base, path))
+                return FileLister()
+
+            def close(self, id):
+                pass
+
+        class FileLister:
+            def __init__(self):
+                pass
+
+            def change_prop(self, name, value):
+                pass
+
+            def apply_textdelta(self, base_checksum=None):
+                pass
+
+            def close(self, checksum):
+                pass
+
+        class TreeLister:
             def __init__(self, base):
                 self.files = []
                 self.base = base
@@ -257,39 +290,16 @@
                 """See Editor.set_target_revision()."""
                 pass
 
-            def open_root(self, revnum, baton):
+            def open_root(self, revnum):
                 """See Editor.open_root()."""
-                return path
-
-            def add_directory(self, path, parent_baton, copyfrom_path, copyfrom_revnum):
-                """See Editor.add_directory()."""
-                self.files.append(urlutils.join(self.base, path))
-                return path
-
-            def change_dir_prop(self, id, name, value):
-                pass
-
-            def change_file_prop(self, id, name, value):
-                pass
-
-            def add_file(self, path, parent_id, copyfrom_path, copyfrom_revnum, baton):
-                self.files.append(urlutils.join(self.base, path))
-                return path
-
-            def close_dir(self, id):
-                pass
-
-            def close_file(self, path, checksum):
-                pass
-
-            def close_edit(self):
-                pass
-
-            def abort_edit(self):
-                pass
-
-            def apply_textdelta(self, file_id, base_checksum):
-                pass
+                return DirLister(path, self.files)
+
+            def close(self, checksum=None):
+                pass
+
+            def abort(self):
+                pass
+
         editor = TreeLister(path)
         old_base = transport.base
         try:

=== added file 'ra.pxd'
--- a/ra.pxd	1970-01-01 00:00:00 +0000
+++ b/ra.pxd	2008-03-16 14:51:30 +0000
@@ -0,0 +1,43 @@
+# Copyright (C) 2008 Jelmer Vernooij <jelmer at samba.org>
+# vim: ft=pyrex
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from types cimport svn_error_t
+from apr cimport apr_pool_t
+
+cdef extern from "svn_ra.h":
+    ctypedef struct svn_ra_reporter2_t:
+        svn_error_t *(*set_path)(void *report_baton,
+                           char *path,
+                           long revision,
+                           int start_empty,
+                           char *lock_token,
+                           apr_pool_t *pool) except *
+
+        svn_error_t *(*delete_path)(void *report_baton, 
+                char *path, apr_pool_t *pool) except *
+
+        svn_error_t *(*link_path)(void *report_baton,
+                                char *path,
+                                char *url,
+                                long revision,
+                                int start_empty,
+                                char *lock_token,
+                                apr_pool_t *pool) except *
+
+        svn_error_t *(*finish_report)(void *report_baton, apr_pool_t *pool) except *
+
+        svn_error_t *(*abort_report)(void *report_baton, apr_pool_t *pool) except *

=== modified file 'ra.pyx'
--- a/ra.pyx	2008-03-16 14:17:23 +0000
+++ b/ra.pyx	2008-03-16 14:51:30 +0000
@@ -138,29 +138,6 @@
 cdef extern from "svn_ra.h":
     svn_version_t *svn_ra_version()
 
-    ctypedef struct svn_ra_reporter2_t:
-        svn_error_t *(*set_path)(void *report_baton,
-                           char *path,
-                           long revision,
-                           int start_empty,
-                           char *lock_token,
-                           apr_pool_t *pool) except *
-
-        svn_error_t *(*delete_path)(void *report_baton, 
-                char *path, apr_pool_t *pool) except *
-
-        svn_error_t *(*link_path)(void *report_baton,
-                                char *path,
-                                char *url,
-                                long revision,
-                                int start_empty,
-                                char *lock_token,
-                                apr_pool_t *pool) except *
-
-        svn_error_t *(*finish_report)(void *report_baton, apr_pool_t *pool) except *
-
-        svn_error_t *(*abort_report)(void *report_baton, apr_pool_t *pool) except *
-
     ctypedef void (*svn_ra_progress_notify_func_t)(apr_off_t progress, 
             apr_off_t total, void *baton, apr_pool_t *pool) except *
 
@@ -1005,3 +982,4 @@
     check_error(svn_txdelta_send_stream(new_py_stream(pool, stream), handler.txdelta, handler.txbaton, <unsigned char *>digest, pool))
     apr_pool_destroy(pool)
     return PyString_FromStringAndSize(<char *>digest, 16)
+

=== modified file 'wc.pyx'
--- a/wc.pyx	2008-03-16 14:17:23 +0000
+++ b/wc.pyx	2008-03-16 14:51:30 +0000
@@ -16,6 +16,7 @@
 
 from apr cimport apr_pool_t, apr_initialize, apr_hash_t, apr_pool_destroy, apr_time_t, apr_hash_first, apr_hash_next, apr_hash_this, apr_hash_index_t, apr_array_header_t
 from types cimport svn_error_t, svn_version_t, svn_boolean_t, svn_cancel_func_t , svn_string_t, svn_string_ncreate, svn_node_kind_t, svn_revnum_t, svn_prop_t, svn_lock_t
+from ra cimport svn_ra_reporter2_t
 
 from core cimport check_error, Pool, py_cancel_func
 
@@ -211,6 +212,22 @@
                             svn_wc_notify_func2_t notify_func,
                             void *notify_baton,
                             apr_pool_t *pool)
+    
+    ctypedef struct svn_wc_traversal_info_t
+
+    svn_error_t *svn_wc_crawl_revisions2(char *path,
+                        svn_wc_adm_access_t *adm_access,
+                        svn_ra_reporter2_t *reporter,
+                        void *report_baton,
+                        svn_boolean_t restore_files,
+                        svn_boolean_t recurse,
+                        svn_boolean_t use_commit_times,
+                        svn_wc_notify_func2_t notify_func,
+                        void *notify_baton,
+                        svn_wc_traversal_info_t *traversal_info,
+                        apr_pool_t *pool)
+
+    svn_wc_traversal_info_t *svn_wc_init_traversal_info(apr_pool_t *pool)
 
 def version():
     """Get libsvn_wc version information.
@@ -392,6 +409,20 @@
                                 temp_pool))
         apr_pool_destroy(temp_pool)
 
+    def crawl_revisions(self, path, reporter, restore_files=True, 
+                        recurse=True, use_commit_times=True,
+                        notify_func=None):
+        cdef apr_pool_t *temp_pool
+        cdef svn_wc_traversal_info_t *traversal_info
+        temp_pool = Pool(self.pool)
+        traversal_info = svn_wc_init_traversal_info(temp_pool)
+        check_error(svn_wc_crawl_revisions2(path, self.adm, 
+                    &py_ra_reporter, <void *>reporter, 
+                    restore_files, recurse, use_commit_times, 
+                    py_wc_notify_func, <void *>notify_func,
+                    traversal_info, temp_pool))
+        apr_pool_destroy(temp_pool)
+
     def close(self):
         if self.adm != NULL:
             svn_wc_adm_close(self.adm)
@@ -454,3 +485,36 @@
 SCHEDULE_ADD = 1
 SCHEDULE_DELETE = 2
 SCHEDULE_REPLACE = 3
+
+
+cdef svn_error_t *py_ra_report_set_path(void *baton, char *path, long revision, int start_empty, char *lock_token, apr_pool_t *pool) except *:
+    self = <object>baton
+    self.set_path(path, revision, start_empty, lock_token)
+    return NULL
+
+cdef svn_error_t *py_ra_report_delete_path(void *baton, char *path, apr_pool_t *pool) except *:
+    self = <object>baton
+    self.delete_path(path)
+    return NULL
+
+cdef svn_error_t *py_ra_report_link_path(void *report_baton, char *path, char *url, long revision, int start_empty, char *lock_token, apr_pool_t *pool) except *:
+    self = <object>report_baton
+    self.link_path(path, url, revision, start_empty, lock_token)
+    return NULL
+
+cdef svn_error_t *py_ra_report_finish(void *baton, apr_pool_t *pool) except *:
+    self = <object>baton
+    self.finish()
+    return NULL
+
+cdef svn_error_t *py_ra_report_abort(void *baton, apr_pool_t *pool) except *:
+    self = <object>baton
+    self.abort()
+    return NULL
+
+cdef svn_ra_reporter2_t py_ra_reporter
+py_ra_reporter.finish_report = py_ra_report_finish
+py_ra_reporter.abort_report = py_ra_report_abort
+py_ra_reporter.link_path = py_ra_report_link_path
+py_ra_reporter.delete_path = py_ra_report_delete_path
+py_ra_reporter.set_path = py_ra_report_set_path




More information about the bazaar-commits mailing list