Check system and installed pysqlite's sqlite versions.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 20 May 2007 21:31:44 +0000 (22:31 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 20 May 2007 21:31:44 +0000 (22:31 +0100)
NEWS
README
__init__.py
cache.py [new file with mode: 0644]
logwalker.py
repository.py

diff --git a/NEWS b/NEWS
index 694b2a4..d882be9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,10 @@
 bzr-svn 0.3.4  UNRELEASED
 
+  BUG FIXES
+
+  * Check for a working pysqlite, rather than checking that the 
+    first one found works. (#115026)
+
 bzr-svn 0.3.3  2007-04-29
 
   IMPROVEMENTS
diff --git a/README b/README
index 0ef5f92..87c7cc7 100644 (file)
--- a/README
+++ b/README
@@ -4,7 +4,11 @@ Introduction
 
 This directory contains a simple plugin that adds 
 Subversion (http://subversion.tigris.org/) branch support to 
-Bazaar (http://www.bazaar-vcs.org/)
+Bazaar (http://www.bazaar-vcs.org/). This allows ``bzr branch``, ``bzr push``, 
+``bzr pull``, and ``bzr co`` to work directly against Subversion repositories.
+
+The plugin can at the moment be used to commit to, pull from, merge from, push 
+to and view logs of Subversion branches from Bazaar.
 
 ============
 Dependencies
index d2fd88e..aa44ad0 100644 (file)
@@ -59,29 +59,8 @@ def check_subversion_version():
                 'bindings. See the bzr-svn README for details.')
         raise bzrlib.errors.BzrError("incompatible python subversion bindings")
 
-def check_pysqlite_version():
-    """Check that sqlite library is compatible.
-
-    """
-    try:
-        try:
-            import sqlite3
-        except ImportError:
-            from pysqlite2 import dbapi2 as sqlite3
-    except:
-        warning('Needs at least Python2.5 or Python2.4 with the pysqlite2 '
-                'module')
-        raise bzrlib.errors.BzrError("missing sqlite library")
-
-    if (sqlite3.sqlite_version_info[0] < 3 or 
-            (sqlite3.sqlite_version_info[0] == 3 and 
-             sqlite3.sqlite_version_info[1] < 3)):
-        warning('Needs at least sqlite 3.3.x')
-        raise bzrlib.errors.BzrError("incompatible sqlite library")
-
 check_bzrlib_version(COMPATIBLE_BZR_VERSIONS)
 check_subversion_version()
-check_pysqlite_version()
 
 import branch
 import convert
diff --git a/cache.py b/cache.py
new file mode 100644 (file)
index 0000000..e4c2b0c
--- /dev/null
+++ b/cache.py
@@ -0,0 +1,61 @@
+# Copyright (C) 2006-2007 Jelmer Vernooij <jelmer@samba.org>
+
+# 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
+"""Subversion cache directory access."""
+
+import bzrlib
+from bzrlib.config import config_dir, ensure_config_dir_exists
+from bzrlib.trace import warning
+
+import os
+
+def create_cache_dir():
+    ensure_config_dir_exists()
+    cache_dir = os.path.join(config_dir(), 'svn-cache')
+
+    if not os.path.exists(cache_dir):
+        os.mkdir(cache_dir)
+
+        open(os.path.join(cache_dir, "README"), 'w').write(
+"""This directory contains information cached by the bzr-svn plugin.
+
+It is used for performance reasons only and can be removed 
+without losing data.
+
+See http://bazaar-vcs.org/BzrSvn for details.
+""")
+    return cache_dir
+
+def check_pysqlite_version(sqlite3):
+    """Check that sqlite library is compatible.
+
+    """
+    if (sqlite3.sqlite_version_info[0] < 3 or 
+            (sqlite3.sqlite_version_info[0] == 3 and 
+             sqlite3.sqlite_version_info[1] < 3)):
+        warning('Needs at least sqlite 3.3.x')
+        raise bzrlib.errors.BzrError("incompatible sqlite library")
+
+try:
+    try:
+        import sqlite3
+        check_pysqlite_version(sqlite3)
+    except ImportError, bzrlib.errors.BzrError:
+        from pysqlite2 import dbapi2 as sqlite3
+        check_pysqlite_version(sqlite3)
+except:
+    warning('Needs at least Python2.5 or Python2.4 with the pysqlite2 '
+            'module')
+    raise bzrlib.errors.BzrError("missing sqlite library")
index 52bd6d0..4c5c55a 100644 (file)
@@ -26,10 +26,7 @@ import svn.core
 
 import base64
 
-try:
-    import sqlite3
-except ImportError:
-    from pysqlite2 import dbapi2 as sqlite3
+from cache import sqlite3
 
 def _escape_commit_message(message):
     """Replace xml-incompatible control characters."""
index 2f12bac..8c97421 100644 (file)
@@ -17,7 +17,6 @@
 
 import bzrlib
 from bzrlib.branch import BranchCheckResult
-from bzrlib.config import config_dir, ensure_config_dir_exists
 from bzrlib.errors import (InvalidRevisionId, NoSuchRevision, 
                            NotBranchError, UninitializableFormat)
 from bzrlib.inventory import Inventory
@@ -33,12 +32,9 @@ from svn.core import SubversionException, Pool
 import svn.core
 
 import os
-try:
-    import sqlite3
-except ImportError:
-    from pysqlite2 import dbapi2 as sqlite3
 
 from branchprops import BranchPropertyList
+from cache import create_cache_dir, sqlite3
 import errors
 import logwalker
 from tree import SvnRevisionTree
@@ -131,24 +127,6 @@ def revision_id_to_svk_feature(revid):
     return "%s:/%s:%d" % (uuid, branch, revnum)
 
 
-def create_cache_dir():
-    ensure_config_dir_exists()
-    cache_dir = os.path.join(config_dir(), 'svn-cache')
-
-    if not os.path.exists(cache_dir):
-        os.mkdir(cache_dir)
-
-        open(os.path.join(cache_dir, "README"), 'w').write(
-"""This directory contains information cached by the bzr-svn plugin.
-
-It is used for performance reasons only and can be removed 
-without losing data.
-
-See http://bazaar-vcs.org/BzrSvn for details.
-""")
-    return cache_dir
-
-
 class SvnRepositoryFormat(RepositoryFormat):
     rich_root_data = False