# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1289507431 -3600 # Node ID 6252f0cc7b7a0dd2ae305ab14495fd2fc3706557 # Parent 6d6be528405608135722f46b3d19f2db895893b6 svnmeta: cache the UUID in an attribute. We use a try/except clause in the getter to keep complicated logic in the setter. diff --git a/hgsubversion/svnmeta.py b/hgsubversion/svnmeta.py --- a/hgsubversion/svnmeta.py +++ b/hgsubversion/svnmeta.py @@ -44,7 +44,7 @@ class SVNMeta(object): if not os.path.isdir(self.meta_data_dir): os.makedirs(self.meta_data_dir) - self._set_uuid(uuid) + self.uuid = uuid # TODO: validate subdir too self.revmap = maps.RevMap(repo) @@ -127,7 +127,11 @@ class SVNMeta(object): return self._editor def _get_uuid(self): - return open(os.path.join(self.meta_data_dir, 'uuid')).read() + try: + return self.__uuid + except AttributeError: + self.__uuid = open(os.path.join(self.meta_data_dir, 'uuid')).read() + return self.__uuid def _set_uuid(self, uuid): if not uuid: @@ -145,6 +149,8 @@ class SVNMeta(object): else: raise hgutil.Abort('unable to operate on unrelated repository') + self.__uuid = uuid + uuid = property(_get_uuid, _set_uuid, None, 'Error-checked UUID of source Subversion repository.')