Mercurial > hg
annotate mercurial/interfaces/dirstate.py @ 49487:e8481625c582
rust: add Debug constraint to Matcher trait
This makes sure we can easily debug which Matcher we're looking at when using
trait objects, and is just generally useful. Effort to make the debugging
output nicer has been kept to a minimum, please feel free to improve.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Mon, 11 Jul 2022 11:59:13 +0200 |
parents | 9c8d67a3af5e |
children | 9ea66d166ec7 |
rev | line source |
---|---|
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 import contextlib |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43008
diff
changeset
|
3 from . import util as interfaceutil |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43008
diff
changeset
|
4 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 class idirstate(interfaceutil.Interface): |
47280
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
7 def __init__( |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
8 opener, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
9 ui, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
10 root, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
11 validate, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
12 sparsematchfn, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
13 nodeconstants, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
14 use_dirstate_v2, |
1766130fe9ba
dirstate-v2: Change the on-disk format when the requirement is enabled
Simon Sapin <simon.sapin@octobus.net>
parents:
47012
diff
changeset
|
15 ): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
16 """Create a new dirstate object. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
17 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 opener is an open()-like callable that can be used to open the |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 dirstate file; root is the root of the directory tracked by |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
20 the dirstate. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
21 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
23 # TODO: all these private methods and attributes should be made |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
24 # public or removed from the interface. |
43008
5f8b6617e962
interfaces: use triple quotes for Attribute value
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42929
diff
changeset
|
25 _ignore = interfaceutil.Attribute("""Matcher for ignored files.""") |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
26 |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
27 def _ignorefiles(): |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
28 """Return a list of files containing patterns to ignore.""" |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
29 |
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
30 def _ignorefileandline(f): |
43787
be8552f25cab
cleanup: fix docstring formatting
Matt Harbison <matt_harbison@yahoo.com>
parents:
43077
diff
changeset
|
31 """Given a file `f`, return the ignore file and line that ignores it.""" |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
32 |
43008
5f8b6617e962
interfaces: use triple quotes for Attribute value
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42929
diff
changeset
|
33 _checklink = interfaceutil.Attribute("""Callable for checking symlinks.""") |
5f8b6617e962
interfaces: use triple quotes for Attribute value
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42929
diff
changeset
|
34 _checkexec = interfaceutil.Attribute("""Callable for checking exec bits.""") |
42929
97b79354e9f0
idirstate: group private methods and attrs that are in the interface
Augie Fackler <augie@google.com>
parents:
42928
diff
changeset
|
35 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
36 @contextlib.contextmanager |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
37 def parentchange(): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
38 """Context manager for handling dirstate parents. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
39 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
40 If an exception occurs in the scope of the context manager, |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
41 the incoherent dirstate won't be written when wlock is |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
42 released. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
43 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
44 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
45 def pendingparentchange(): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
46 """Returns true if the dirstate is in the middle of a set of changes |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
47 that modify the dirstate parent. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
48 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
49 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
50 def hasdir(d): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
51 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
52 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
53 def flagfunc(buildfallback): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
54 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
55 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
56 def getcwd(): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
57 """Return the path from which a canonical path is calculated. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
58 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
59 This path should be used to resolve file patterns or to convert |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
60 canonical paths back to file paths for display. It shouldn't be |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
61 used to get real file paths. Use vfs functions instead. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
62 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
63 |
49076
9c8d67a3af5e
idirstate: add missing get_entry() method
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
64 def get_entry(path): |
9c8d67a3af5e
idirstate: add missing get_entry() method
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
65 """return a DirstateItem for the associated path""" |
9c8d67a3af5e
idirstate: add missing get_entry() method
Matt Harbison <matt_harbison@yahoo.com>
parents:
48875
diff
changeset
|
66 |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
67 def pathto(f, cwd=None): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
68 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
69 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
70 def __contains__(key): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
71 """Check if bytestring `key` is known to the dirstate.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
72 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
73 def __iter__(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
74 """Iterate the dirstate's contained filenames as bytestrings.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
75 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
76 def items(): |
47539
84391ddf4c78
dirstate-item: rename the class to DirstateItem
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47280
diff
changeset
|
77 """Iterate the dirstate's entries as (filename, DirstateItem. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
78 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
79 As usual, filename is a bytestring. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
80 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
81 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
82 iteritems = items |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
83 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
84 def parents(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
85 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
86 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
87 def p1(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
88 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
89 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
90 def p2(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
91 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
92 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
93 def branch(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
94 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
95 |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46780
diff
changeset
|
96 def setparents(p1, p2=None): |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
97 """Set dirstate parents to p1 and p2. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
98 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
99 When moving from two parents to one, 'm' merged entries a |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
100 adjusted to normal and previous copy records discarded and |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
101 returned by the call. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
102 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
103 See localrepo.setparents() |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
104 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
105 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
106 def setbranch(branch): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
107 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
108 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
109 def invalidate(): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
110 """Causes the next access to reread the dirstate. |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
111 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
112 This is different from localrepo.invalidatedirstate() because it always |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
113 rereads the dirstate. Use localrepo.invalidatedirstate() if you want to |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
114 check whether the dirstate has changed before rereading it.""" |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
115 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
116 def copy(source, dest): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
117 """Mark dest as a copy of source. Unmark dest if source is None.""" |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
118 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
119 def copied(file): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
120 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
121 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
122 def copies(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
123 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
124 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
125 def normalize(path, isknown=False, ignoremissing=False): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
126 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
127 normalize the case of a pathname when on a casefolding filesystem |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
128 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
129 isknown specifies whether the filename came from walking the |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
130 disk, to avoid extra filesystem access. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
131 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
132 If ignoremissing is True, missing path are returned |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
133 unchanged. Otherwise, we try harder to normalize possibly |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
134 existing path components. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
135 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
136 The normalized case is determined based on the following precedence: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
137 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
138 - version of name already stored in the dirstate |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
139 - version of name stored on disk |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
140 - version provided via command arguments |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
141 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
142 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
143 def clear(): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
144 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
145 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
146 def rebuild(parent, allfiles, changedfiles=None): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
147 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
148 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
149 def identity(): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
150 """Return identity of dirstate it to detect changing in storage |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
151 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
152 If identity of previous dirstate is equal to this, writing |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
153 changes based on the former dirstate out can keep consistency. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
154 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
155 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
156 def write(tr): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
157 pass |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
158 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
159 def addparentchangecallback(category, callback): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
160 """add a callback to be called when the wd parents are changed |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
161 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
162 Callback will be called with the following arguments: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
163 dirstate, (oldp1, oldp2), (newp1, newp2) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
164 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
165 Category is a unique identifier to allow overwriting an old callback |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
166 with a newer callback. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
167 """ |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
168 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
169 def walk(match, subrepos, unknown, ignored, full=True): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
170 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
171 Walk recursively through the directory tree, finding all files |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
172 matched by match. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
173 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
174 If full is False, maybe skip some known-clean files. |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
175 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
176 Return a dict mapping filename to stat-like object (either |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
177 mercurial.osutil.stat instance or return value of os.stat()). |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
178 |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
179 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
180 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
181 def status(match, subrepos, ignored, clean, unknown): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
182 """Determine the status of the working copy relative to the |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
183 dirstate and return a pair of (unsure, status), where status is of type |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
184 scmutil.status and: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
185 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
186 unsure: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
187 files that might have been modified since the dirstate was |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
188 written, but need to be read to be sure (size is the same |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
189 but mtime differs) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
190 status.modified: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
191 files that have definitely been modified since the dirstate |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
192 was written (different size or mode) |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
193 status.clean: |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
194 files that have definitely not been modified since the |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
195 dirstate was written |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
196 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
197 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
198 def matches(match): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
199 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
200 return files in the dirstate (in whatever state) filtered by match |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43787
diff
changeset
|
201 """ |
42927
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
202 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
203 def savebackup(tr, backupname): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
204 '''Save current dirstate into backup file''' |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
205 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
206 def restorebackup(tr, backupname): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
207 '''Restore dirstate by backup file''' |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
208 |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
209 def clearbackup(tr, backupname): |
d459cd8ea42d
interfaces: introduce an interface for dirstate implementations
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
210 '''Clear backup file''' |