repo.py
48 lines
| 1.4 KiB
| text/x-python
|
PythonLexer
/ mercurial / repo.py
mpm@selenic.com
|
r1089 | # repo.py - repository base classes for mercurial | ||
# | ||||
Thomas Arendsen Hein
|
r4635 | # Copyright 2005, 2006 Matt Mackall <mpm@selenic.com> | ||
Vadim Gelfer
|
r2859 | # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> | ||
mpm@selenic.com
|
r1089 | # | ||
# This software may be used and distributed according to the terms | ||||
# of the GNU General Public License, incorporated herein by reference. | ||||
Benoit Boissinot
|
r5455 | from i18n import _ | ||
Vadim Gelfer
|
r2612 | class RepoError(Exception): | ||
pass | ||||
Bryan O'Sullivan
|
r5259 | class NoCapability(RepoError): | ||
pass | ||||
Vadim Gelfer
|
r2612 | class repository(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.''' | ||||
Bryan O'Sullivan
|
r5259 | if name in self.capabilities: | ||
return True | ||||
Vadim Gelfer
|
r2612 | name_eq = name + '=' | ||
for cap in self.capabilities: | ||||
if cap.startswith(name_eq): | ||||
return cap[len(name_eq):] | ||||
return False | ||||
Bryan O'Sullivan
|
r5259 | |||
def requirecap(self, name, purpose): | ||||
'''raise an exception if the given capability is not present''' | ||||
if not self.capable(name): | ||||
raise NoCapability(_('cannot %s; remote repository does not ' | ||||
'support the %r capability') % | ||||
(purpose, name)) | ||||
John Mulligan
|
r6311 | |||
def local(self): | ||||
return False | ||||
def cancopy(self): | ||||
return self.local() | ||||
Bryan O'Sullivan
|
r6526 | |||
def rjoin(self, path): | ||||
url = self.url() | ||||
if url.endswith('/'): | ||||
return url + path | ||||
return url + '/' + path | ||||