Mercurial > hg-git
annotate hggit/gitrepo.py @ 1144:c9ba526e82d6 default tip master
Added signature for changeset c651bb6fcf33
author | Kevin Bullock <kbullock@ringworld.org> |
---|---|
date | Sun, 14 Oct 2018 21:43:45 -0500 |
parents | 5edabf9db748 |
children |
rev | line source |
---|---|
920
0e975d03f8ca
gitrepo: use isgitsshuri in islocal
Sean Farley <sean@farley.io>
parents:
890
diff
changeset
|
1 from util import isgitsshuri |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1126
diff
changeset
|
2 from mercurial import ( |
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1126
diff
changeset
|
3 error, |
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1126
diff
changeset
|
4 util |
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1126
diff
changeset
|
5 ) |
1051
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
6 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
7 peerapi = False |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
8 try: |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
9 from mercurial.repository import peer as peerrepository |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
10 peerapi = True |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
11 except ImportError: |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
12 from mercurial.peer import peerrepository |
461
de618e24dcdd
gitrepo: cope with module/class renames in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
458
diff
changeset
|
13 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1094
diff
changeset
|
14 |
462
406ed78809b2
gitrepo: correct capitalization of peerrepository
Augie Fackler <raf@durin42.com>
parents:
461
diff
changeset
|
15 class gitrepo(peerrepository): |
1126
e41773ad3584
gitrepo: add missing 'intents' keyword (from hg 4.6) to gitrepo.__init__
Paul Morelle <paul.morelle@octobus.net>
parents:
1115
diff
changeset
|
16 def __init__(self, ui, path, create, intents=None): |
890 | 17 if create: # pragma: no cover |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1126
diff
changeset
|
18 raise error.Abort('Cannot create a git repository.') |
1051
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
19 self._ui = ui |
179
c5c63783ace0
Initial clone/pull/push support for git repositories
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
61
diff
changeset
|
20 self.path = path |
556
affd119533ae
peer: pass localrepo to new gitrepo instances
David M. Carr <david@carrclan.us>
parents:
465
diff
changeset
|
21 self.localrepo = None |
347
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
22 |
1051
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
23 _peercapabilities = ['lookup'] |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
24 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
25 def _capabilities(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
26 return self._peercapabilities |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
27 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
28 def capabilities(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
29 return self._peercapabilities |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
30 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
31 @property |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
32 def ui(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
33 return self._ui |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
34 |
458
dfb2b7b5d586
gitrepo: add url() attribute to fix subrepo support
Augie Fackler <raf@durin42.com>
parents:
409
diff
changeset
|
35 def url(self): |
dfb2b7b5d586
gitrepo: add url() attribute to fix subrepo support
Augie Fackler <raf@durin42.com>
parents:
409
diff
changeset
|
36 return self.path |
dfb2b7b5d586
gitrepo: add url() attribute to fix subrepo support
Augie Fackler <raf@durin42.com>
parents:
409
diff
changeset
|
37 |
232
0ba1aee0467c
initial support for pull -r
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
215
diff
changeset
|
38 def lookup(self, key): |
0ba1aee0467c
initial support for pull -r
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
215
diff
changeset
|
39 if isinstance(key, str): |
0ba1aee0467c
initial support for pull -r
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
215
diff
changeset
|
40 return key |
347
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
41 |
257
75063203cfb5
Simple hack for handling wrong use of git repos (fixes issue 24 bb)
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
232
diff
changeset
|
42 def local(self): |
75063203cfb5
Simple hack for handling wrong use of git repos (fixes issue 24 bb)
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
232
diff
changeset
|
43 if not self.path: |
1128
6141895a53c9
compat: switch from hgutil.Abort to error.Abort
Kevin Bullock <kbullock@ringworld.org>
parents:
1126
diff
changeset
|
44 raise error.RepoError |
347
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
45 |
344
af48a5961432
Add just enough code to handle changes to cset discovery.
Augie Fackler <durin42@gmail.com>
parents:
260
diff
changeset
|
46 def heads(self): |
af48a5961432
Add just enough code to handle changes to cset discovery.
Augie Fackler <durin42@gmail.com>
parents:
260
diff
changeset
|
47 return [] |
257
75063203cfb5
Simple hack for handling wrong use of git repos (fixes issue 24 bb)
Abderrahim Kitouni <a.kitouni@gmail.com>
parents:
232
diff
changeset
|
48 |
347
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
49 def listkeys(self, namespace): |
557
4f4ab2d89375
gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents:
556
diff
changeset
|
50 if namespace == 'namespaces': |
890 | 51 return {'bookmarks': ''} |
557
4f4ab2d89375
gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents:
556
diff
changeset
|
52 elif namespace == 'bookmarks': |
661
a0c7824d28ae
gitrepo.listkeys: use githandler from localrepo
Siddharth Agarwal <sid0@fb.com>
parents:
564
diff
changeset
|
53 if self.localrepo is not None: |
a0c7824d28ae
gitrepo.listkeys: use githandler from localrepo
Siddharth Agarwal <sid0@fb.com>
parents:
564
diff
changeset
|
54 handler = self.localrepo.githandler |
1094
5e49230a6cd5
fetch_pack: refactor to use compat.FetchPackResult
Sean Farley <sean@farley.io>
parents:
1091
diff
changeset
|
55 result = handler.fetch_pack(self.path, heads=[]) |
717
40c43c02f5b1
listkeys: while looking for bookmarks, don't fetch a pack
Siddharth Agarwal <sid0@fb.com>
parents:
678
diff
changeset
|
56 # map any git shas that exist in hg to hg shas |
1091
367f9e0dc198
gitrepo: slight refactor to use {} instead of dict()
Sean Farley <sean@farley.io>
parents:
1051
diff
changeset
|
57 stripped_refs = { |
367f9e0dc198
gitrepo: slight refactor to use {} instead of dict()
Sean Farley <sean@farley.io>
parents:
1051
diff
changeset
|
58 ref[11:]: handler.map_hg_get(val) or val |
1094
5e49230a6cd5
fetch_pack: refactor to use compat.FetchPackResult
Sean Farley <sean@farley.io>
parents:
1091
diff
changeset
|
59 for ref, val in result.refs.iteritems() |
1091
367f9e0dc198
gitrepo: slight refactor to use {} instead of dict()
Sean Farley <sean@farley.io>
parents:
1051
diff
changeset
|
60 if ref.startswith('refs/heads/') |
367f9e0dc198
gitrepo: slight refactor to use {} instead of dict()
Sean Farley <sean@farley.io>
parents:
1051
diff
changeset
|
61 } |
557
4f4ab2d89375
gitrepo: initial support for listkeys
David M. Carr <david@carrclan.us>
parents:
556
diff
changeset
|
62 return stripped_refs |
347
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
63 return {} |
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
64 |
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
65 def pushkey(self, namespace, key, old, new): |
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
66 return False |
2efbee89d3f7
gitrepo: update for pushable bookmarks
Augie Fackler <durin42@gmail.com>
parents:
344
diff
changeset
|
67 |
1051
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
68 if peerapi: |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
69 def branchmap(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
70 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
71 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
72 def canpush(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
73 return True |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
74 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
75 def close(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
76 pass |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
77 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
78 def debugwireargs(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
79 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
80 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
81 def getbundle(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
82 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
83 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
84 def iterbatch(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
85 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
86 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
87 def known(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
88 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
89 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
90 def peer(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
91 return self |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
92 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
93 def stream_out(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
94 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
95 |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
96 def unbundle(self): |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
97 raise NotImplementedError |
5db8d0d0ae47
compat: update for upcoming hg 4.4 release
Kevin Bullock <kbullock@ringworld.org>
parents:
966
diff
changeset
|
98 |
1129
5edabf9db748
gitrepo: implement commandexecutor for hg 4.6
Sean Farley <sean@farley.io>
parents:
1128
diff
changeset
|
99 def commandexecutor(self): |
5edabf9db748
gitrepo: implement commandexecutor for hg 4.6
Sean Farley <sean@farley.io>
parents:
1128
diff
changeset
|
100 from mercurial.wireprotov1peer import peerexecutor |
5edabf9db748
gitrepo: implement commandexecutor for hg 4.6
Sean Farley <sean@farley.io>
parents:
1128
diff
changeset
|
101 return peerexecutor(self) |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1094
diff
changeset
|
102 |
60
05a96f7750ad
add support for `hg clone git://github.com/defunkt/facebox.git`
Chris Wanstrath <chris@ozmm.org>
parents:
diff
changeset
|
103 instance = gitrepo |
402 | 104 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1094
diff
changeset
|
105 |
402 | 106 def islocal(path): |
920
0e975d03f8ca
gitrepo: use isgitsshuri in islocal
Sean Farley <sean@farley.io>
parents:
890
diff
changeset
|
107 if isgitsshuri(path): |
0e975d03f8ca
gitrepo: use isgitsshuri in islocal
Sean Farley <sean@farley.io>
parents:
890
diff
changeset
|
108 return True |
0e975d03f8ca
gitrepo: use isgitsshuri in islocal
Sean Farley <sean@farley.io>
parents:
890
diff
changeset
|
109 |
402 | 110 u = util.url(path) |
111 return not u.scheme or u.scheme == 'file' |