author | Patrick Mezard <pmezard@gmail.com> |
Tue, 29 Dec 2009 01:32:40 +0100 | |
changeset 10148 | fdeffbc9a6cc |
parent 9436 | 96379c93ba6f |
child 10263 | 25e572394f5c |
permissions | -rw-r--r-- |
1089 | 1 |
# repo.py - repository base classes for mercurial |
2 |
# |
|
4635
63b9d2deed48
Updated copyright notices and add "and others" to "hg version"
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3930
diff
changeset
|
3 |
# Copyright 2005, 2006 Matt Mackall <mpm@selenic.com> |
2859 | 4 |
# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> |
1089 | 5 |
# |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
7873
diff
changeset
|
6 |
# This software may be used and distributed according to the terms of the |
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
7873
diff
changeset
|
7 |
# GNU General Public License version 2, incorporated herein by reference. |
1089 | 8 |
|
5455
08d6e8754388
import gettext since '_' is used
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5259
diff
changeset
|
9 |
from i18n import _ |
7873
4a4c7f6a5912
cleanup: drop unused imports
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
7637
diff
changeset
|
10 |
import error |
5455
08d6e8754388
import gettext since '_' is used
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5259
diff
changeset
|
11 |
|
2612
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
12 |
class repository(object): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
13 |
def capable(self, name): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
14 |
'''tell whether repo supports named capability. |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
15 |
return False if not supported. |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
16 |
if boolean capability, return True. |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
17 |
if string capability, return string.''' |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
18 |
if name in self.capabilities: |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
19 |
return True |
2612
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
20 |
name_eq = name + '=' |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
21 |
for cap in self.capabilities: |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
22 |
if cap.startswith(name_eq): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
23 |
return cap[len(name_eq):] |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
24 |
return False |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
25 |
|
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
26 |
def requirecap(self, name, purpose): |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
27 |
'''raise an exception if the given capability is not present''' |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
28 |
if not self.capable(name): |
7637 | 29 |
raise error.CapabilityError( |
30 |
_('cannot %s; remote repository does not ' |
|
31 |
'support the %r capability') % (purpose, name)) |
|
6311
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
32 |
|
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
33 |
def local(self): |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
34 |
return False |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
35 |
|
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
36 |
def cancopy(self): |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
37 |
return self.local() |
6526
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
38 |
|
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
39 |
def rjoin(self, path): |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
40 |
url = self.url() |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
41 |
if url.endswith('/'): |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
42 |
return url + path |
9436 | 43 |
else: |
44 |
return url + '/' + path |