##// END OF EJS Templates
localrepo: prevent to copy repo local config, copy baseui instead...
localrepo: prevent to copy repo local config, copy baseui instead Copying a repos local configuration to another repo is a bad idea because the 2nd repo gets the configuration of the first. Prevent this by really calling repo.baseui.copy when repo.ui.copy is called. This requires some changes in commandserver which needs to clone repo.ui for rejecting temporary changes. This patch has its roots back in the topic "repo isolation" around f0564402d059 and was suggested by mpm.

File last commit:

r17273:4ed6b3a2 stable
r20082:b04cc865 default
Show More
peer.py
46 lines | 1.3 KiB | text/x-python | PythonLexer
# peer.py - repository base classes for mercurial
#
# Copyright 2005, 2006 Matt Mackall <mpm@selenic.com>
# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from i18n import _
import error
class peerrepository(object):
def capable(self, name):
'''tell whether repo supports named capability.
return False if not supported.
if boolean capability, return True.
if string capability, return string.'''
caps = self._capabilities()
if name in caps:
return True
name_eq = name + '='
for cap in caps:
if cap.startswith(name_eq):
return cap[len(name_eq):]
return False
def requirecap(self, name, purpose):
'''raise an exception if the given capability is not present'''
if not self.capable(name):
raise error.CapabilityError(
_('cannot %s; remote repository does not '
'support the %r capability') % (purpose, name))
def local(self):
'''return peer as a localrepo, or None'''
return None
def peer(self):
return self
def canpush(self):
return True
def close(self):
pass