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