Rev 766: Support custom user options for repository config. in file:///data/jelmer/bzr-svn/override-svnrevprops/

Jelmer Vernooij jelmer at samba.org
Tue Oct 30 19:49:39 GMT 2007


At file:///data/jelmer/bzr-svn/override-svnrevprops/

------------------------------------------------------------
revno: 766
revision-id:jelmer at samba.org-20071030194937-bks3vfnud60eanq7
parent: jelmer at samba.org-20071029223405-3c4sash4qc1d9pyv
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: override-svnrevprops
timestamp: Tue 2007-10-30 20:49:37 +0100
message:
  Support custom user options for repository config.
modified:
  config.py                      config.py-20070624185721-0j8f1ly75uo4s1lk-1
  repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
  tests/test_repos.py            test_repos.py-20060508151940-ddc49a59257ca712
=== modified file 'config.py'
--- a/config.py	2007-08-09 14:54:13 +0000
+++ b/config.py	2007-10-30 19:49:37 +0000
@@ -16,7 +16,7 @@
 """Stores per-repository settings."""
 
 from bzrlib import osutils
-from bzrlib.config import IniBasedConfig, config_dir, ensure_config_dir_exists
+from bzrlib.config import IniBasedConfig, config_dir, ensure_config_dir_exists, GlobalConfig
 
 import os
 
@@ -30,6 +30,7 @@
     """Return per-user configuration ini file filename."""
     return osutils.pathjoin(config_dir(), 'subversion.conf')
 
+
 class SvnRepositoryConfig(IniBasedConfig):
     """Per-repository settings."""
 
@@ -47,25 +48,30 @@
         """
         self.set_user_option('branching-scheme', str(scheme))
 
+    def _get_user_option(self, name, use_global=True):
+        try:
+            return self._get_parser()[self.uuid][name]
+        except KeyError:
+            if not use_global:
+                return None
+            return GlobalConfig()._get_user_option(name)
+
     def get_branching_scheme(self):
         """Get the branching scheme.
 
         :return: BranchingScheme instance.
         """
-        try:
-            return BranchingScheme.find_scheme(self._get_parser()[self.uuid]['branching-scheme'])
-        except KeyError:
-            return None
+        return BranchingScheme.find_scheme(self._get_user_option("branching-scheme", use_global=False))
 
     def get_locations(self):
         """Find the locations this repository has been seen at.
 
         :return: Set with URLs.
         """
-        try:
-            return set(self._get_parser()[self.uuid]['locations'].split(";"))
-        except KeyError:
+        val = self._get_user_option("locations", use_global=False)
+        if val is None:
             return set()
+        return set(val.split(";"))
 
     def add_location(self, location):
         """Add a location for this repository.

=== modified file 'repository.py'
--- a/repository.py	2007-10-29 22:34:05 +0000
+++ b/repository.py	2007-10-30 19:49:37 +0000
@@ -287,8 +287,7 @@
         self._serializer = None
         self.dir_cache = {}
         self.pool = Pool()
-        self.config = SvnRepositoryConfig(self.uuid)
-        self.config.add_location(self.base)
+        self.get_config().add_location(self.base)
         self._revids_seen = {}
         cache_dir = self.create_cache_dir()
         cachedir_transport = get_transport(cache_dir)
@@ -327,7 +326,7 @@
         if self._scheme is not None:
             return self._scheme
 
-        scheme = self.config.get_branching_scheme()
+        scheme = self.get_config().get_branching_scheme()
         if scheme is not None:
             self._scheme = scheme
             return scheme
@@ -375,7 +374,7 @@
     def set_branching_scheme(self, scheme, store=True):
         self._scheme = scheme
         if store:
-            self.config.set_branching_scheme(str(scheme))
+            self.get_config().set_branching_scheme(str(scheme))
 
     def _warn_if_deprecated(self):
         # This class isn't deprecated
@@ -945,6 +944,9 @@
                      
             yield (bp, paths, revnum)
 
+    def get_config(self):
+        return SvnRepositoryConfig(self.uuid)
+
     def has_signature_for_revision_id(self, revision_id):
         """Check whether a signature exists for a particular revision id.
 

=== modified file 'tests/test_repos.py'
--- a/tests/test_repos.py	2007-10-29 22:34:05 +0000
+++ b/tests/test_repos.py	2007-10-30 19:49:37 +0000
@@ -20,6 +20,7 @@
 
 from bzrlib.branch import Branch
 from bzrlib.bzrdir import BzrDir, format_registry
+from bzrlib.config import GlobalConfig
 from bzrlib.errors import NoSuchRevision, UninitializableFormat, BzrError
 from bzrlib.inventory import Inventory
 from bzrlib.repository import Repository
@@ -74,6 +75,25 @@
         repos = Repository.open(repos_url)
         self.assertFalse(repos.make_working_trees())
 
+    def test_get_config_global_set(self):
+        repos_url = self.make_client("a", "dc")
+        cfg = GlobalConfig()
+        cfg.set_user_option("foo", "Still Life")
+
+        repos = Repository.open(repos_url)
+        self.assertEquals("Still Life", 
+                repos.get_config().get_user_option("foo"))
+
+    def test_get_config(self):
+        repos_url = self.make_client("a", "dc")
+        repos = Repository.open(repos_url)
+        repos.get_config().set_user_option("foo", "Van Der Graaf Generator")
+
+        repos = Repository.open(repos_url)
+        self.assertEquals("Van Der Graaf Generator", 
+                repos.get_config().get_user_option("foo"))
+
+
     def test_get_physical_lock_status(self):
         repos_url = self.make_client("a", "dc")
         repos = Repository.open(repos_url)




More information about the bazaar-commits mailing list