Mercurial > hg
annotate mercurial/repo.py @ 7383:b501c7f3c2ad
graphlog: fix regression with filelogs introduced by 7bc62ebe7693
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Sun, 16 Nov 2008 20:55:30 +0100 |
parents | cfeeac24fc1e |
children | 1d54e2f6c0b7 |
rev | line source |
---|---|
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 # |
6 # This software may be used and distributed according to the terms | |
7 # of the GNU General Public License, incorporated herein by reference. | |
8 | |
5455
08d6e8754388
import gettext since '_' is used
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5259
diff
changeset
|
9 from i18n import _ |
08d6e8754388
import gettext since '_' is used
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5259
diff
changeset
|
10 |
2612
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
11 class RepoError(Exception): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
12 pass |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
13 |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
14 class NoCapability(RepoError): |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
15 pass |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
16 |
2612
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
17 class repository(object): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
18 def capable(self, name): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
19 '''tell whether repo supports named capability. |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
20 return False if not supported. |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
21 if boolean capability, return True. |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
22 if string capability, return string.''' |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
23 if name in self.capabilities: |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
24 return True |
2612
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
25 name_eq = name + '=' |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
26 for cap in self.capabilities: |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
27 if cap.startswith(name_eq): |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
28 return cap[len(name_eq):] |
ffb895f16925
add support for streaming clone.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1089
diff
changeset
|
29 return False |
5259
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
30 |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
31 def requirecap(self, name, purpose): |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
32 '''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
|
33 if not self.capable(name): |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
34 raise NoCapability(_('cannot %s; remote repository does not ' |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
35 'support the %r capability') % |
65dc707606ed
Push capability checking into protocol-level code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4635
diff
changeset
|
36 (purpose, name)) |
6311
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
37 |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
38 def local(self): |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
39 return False |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
40 |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
41 def cancopy(self): |
a079cf630065
Add default local() and cancopy() methods to repository base class
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
5455
diff
changeset
|
42 return self.local() |
6526
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
43 |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
44 def rjoin(self, path): |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
45 url = self.url() |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
46 if url.endswith('/'): |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
47 return url + path |
cfeeac24fc1e
repo: add rjoin method
Bryan O'Sullivan <bos@serpentine.com>
parents:
6312
diff
changeset
|
48 return url + '/' + path |