Mercurial > hg
annotate hgext/narrow/narrowrepo.py @ 37908:8808d5d401ee
templates: split getgraphnode() body into two functions
getgraphnodecurrent() is checking if the node is currently checked out and
getgraphnodesymbol() is checking properties that have more to do with the
stored data and the DAG.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Tue, 08 May 2018 17:54:57 +0800 |
parents | c3c76194f0c1 |
children | 1cba497491be |
rev | line source |
---|---|
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 # narrowrepo.py - repository which supports narrow revlogs, lazy loading |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 # |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 # Copyright 2017 Google, Inc. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 # |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 from mercurial import ( |
36464
3f0af89e008d
narrow: move requirement constant to core
Martin von Zweigbergk <martinvonz@google.com>
parents:
36160
diff
changeset
|
11 changegroup, |
36159
0fe7e39dc683
hg: move share._getsrcrepo into core
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36155
diff
changeset
|
12 hg, |
36160
9fd8c2a3db5a
narrowspec: move module into core
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36159
diff
changeset
|
13 narrowspec, |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 scmutil, |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
15 ) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
17 from . import ( |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 narrowrevlog, |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 ) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
20 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 def wrappostshare(orig, sourcerepo, destrepo, **kwargs): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 orig(sourcerepo, destrepo, **kwargs) |
36464
3f0af89e008d
narrow: move requirement constant to core
Martin von Zweigbergk <martinvonz@google.com>
parents:
36160
diff
changeset
|
23 if changegroup.NARROW_REQUIREMENT in sourcerepo.requirements: |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
24 with destrepo.wlock(): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
25 with destrepo.vfs('shared', 'a') as fp: |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
26 fp.write(narrowspec.FILENAME + '\n') |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
27 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
28 def unsharenarrowspec(orig, ui, repo, repopath): |
36464
3f0af89e008d
narrow: move requirement constant to core
Martin von Zweigbergk <martinvonz@google.com>
parents:
36160
diff
changeset
|
29 if (changegroup.NARROW_REQUIREMENT in repo.requirements |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 and repo.path == repopath and repo.shared()): |
36159
0fe7e39dc683
hg: move share._getsrcrepo into core
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36155
diff
changeset
|
31 srcrepo = hg.sharedreposource(repo) |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 with srcrepo.vfs(narrowspec.FILENAME) as f: |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
33 spec = f.read() |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
34 with repo.vfs(narrowspec.FILENAME, 'w') as f: |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
35 f.write(spec) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
36 return orig(ui, repo, repopath) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
37 |
36466
a8b4d7673d8e
narrow: move checking for narrow requirement into _narrowmatch()
Martin von Zweigbergk <martinvonz@google.com>
parents:
36464
diff
changeset
|
38 def wraprepo(repo): |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
39 """Enables narrow clone functionality on a single local repository.""" |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
40 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
41 class narrowrepository(repo.__class__): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
42 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
43 def file(self, f): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
44 fl = super(narrowrepository, self).file(f) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
45 narrowrevlog.makenarrowfilelog(fl, self.narrowmatch()) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
46 return fl |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
47 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
48 # I'm not sure this is the right place to do this filter. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
49 # context._manifestmatches() would probably be better, or perhaps |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
50 # move it to a later place, in case some of the callers do want to know |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
51 # which directories changed. This seems to work for now, though. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
52 def status(self, *args, **kwargs): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
53 s = super(narrowrepository, self).status(*args, **kwargs) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
54 narrowmatch = self.narrowmatch() |
36155
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
55 modified = list(filter(narrowmatch, s.modified)) |
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
56 added = list(filter(narrowmatch, s.added)) |
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
57 removed = list(filter(narrowmatch, s.removed)) |
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
58 deleted = list(filter(narrowmatch, s.deleted)) |
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
59 unknown = list(filter(narrowmatch, s.unknown)) |
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
60 ignored = list(filter(narrowmatch, s.ignored)) |
0c104ee51918
narrowrepo: filter() is a generator on py3, wrap in list()
Augie Fackler <augie@google.com>
parents:
36092
diff
changeset
|
61 clean = list(filter(narrowmatch, s.clean)) |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
62 return scmutil.status(modified, added, removed, deleted, unknown, |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
63 ignored, clean) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
64 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
65 repo.__class__ = narrowrepository |