equal
deleted
inserted
replaced
99 |
99 |
100 def __getitem__(self, key): |
100 def __getitem__(self, key): |
101 try: |
101 try: |
102 return self.map[key] |
102 return self.map[key] |
103 except TypeError: |
103 except TypeError: |
104 self.read() |
104 self.lazyread() |
105 return self[key] |
105 return self[key] |
106 |
106 |
107 def __contains__(self, key): |
107 def __contains__(self, key): |
108 if not self.map: self.read() |
108 self.lazyread() |
109 return key in self.map |
109 return key in self.map |
110 |
110 |
111 def parents(self): |
111 def parents(self): |
112 if not self.pl: |
112 self.lazyread() |
113 self.read() |
|
114 return self.pl |
113 return self.pl |
115 |
114 |
116 def markdirty(self): |
115 def markdirty(self): |
117 if not self.dirty: |
116 if not self.dirty: |
118 self.dirty = 1 |
117 self.dirty = 1 |
119 |
118 |
120 def setparents(self, p1, p2=nullid): |
119 def setparents(self, p1, p2=nullid): |
121 if not self.pl: |
120 self.lazyread() |
122 self.read() |
|
123 self.markdirty() |
121 self.markdirty() |
124 self.pl = p1, p2 |
122 self.pl = p1, p2 |
125 |
123 |
126 def state(self, key): |
124 def state(self, key): |
127 try: |
125 try: |
128 return self[key][0] |
126 return self[key][0] |
129 except KeyError: |
127 except KeyError: |
130 return "?" |
128 return "?" |
131 |
129 |
|
130 def lazyread(self): |
|
131 if self.map is None: |
|
132 self.read() |
|
133 |
132 def read(self): |
134 def read(self): |
133 if self.map is not None: return self.map |
|
134 |
|
135 self.map = {} |
135 self.map = {} |
136 self.pl = [nullid, nullid] |
136 self.pl = [nullid, nullid] |
137 try: |
137 try: |
138 st = self.opener("dirstate").read() |
138 st = self.opener("dirstate").read() |
139 if not st: return |
139 if not st: return |
152 self.copies[f] = c |
152 self.copies[f] = c |
153 self.map[f] = e[:4] |
153 self.map[f] = e[:4] |
154 pos += l |
154 pos += l |
155 |
155 |
156 def copy(self, source, dest): |
156 def copy(self, source, dest): |
157 self.read() |
157 self.lazyread() |
158 self.markdirty() |
158 self.markdirty() |
159 self.copies[dest] = source |
159 self.copies[dest] = source |
160 |
160 |
161 def copied(self, file): |
161 def copied(self, file): |
162 return self.copies.get(file, None) |
162 return self.copies.get(file, None) |
167 m needs merging |
167 m needs merging |
168 r marked for removal |
168 r marked for removal |
169 a marked for addition''' |
169 a marked for addition''' |
170 |
170 |
171 if not files: return |
171 if not files: return |
172 self.read() |
172 self.lazyread() |
173 self.markdirty() |
173 self.markdirty() |
174 for f in files: |
174 for f in files: |
175 if state == "r": |
175 if state == "r": |
176 self.map[f] = ('r', 0, 0, 0) |
176 self.map[f] = ('r', 0, 0, 0) |
177 else: |
177 else: |
182 if self.copies.has_key(f): |
182 if self.copies.has_key(f): |
183 del self.copies[f] |
183 del self.copies[f] |
184 |
184 |
185 def forget(self, files): |
185 def forget(self, files): |
186 if not files: return |
186 if not files: return |
187 self.read() |
187 self.lazyread() |
188 self.markdirty() |
188 self.markdirty() |
189 for f in files: |
189 for f in files: |
190 try: |
190 try: |
191 del self.map[f] |
191 del self.map[f] |
192 except KeyError: |
192 except KeyError: |
196 def clear(self): |
196 def clear(self): |
197 self.map = {} |
197 self.map = {} |
198 self.markdirty() |
198 self.markdirty() |
199 |
199 |
200 def write(self): |
200 def write(self): |
201 st = self.opener("dirstate", "w") |
201 st = self.opener("dirstate", "w", atomic=True) |
202 st.write("".join(self.pl)) |
202 st.write("".join(self.pl)) |
203 for f, e in self.map.items(): |
203 for f, e in self.map.items(): |
204 c = self.copied(f) |
204 c = self.copied(f) |
205 if c: |
205 if c: |
206 f = f + "\0" + c |
206 f = f + "\0" + c |
256 util.pathto(self.getcwd(), f), |
256 util.pathto(self.getcwd(), f), |
257 kind)) |
257 kind)) |
258 return False |
258 return False |
259 |
259 |
260 def statwalk(self, files=None, match=util.always, dc=None): |
260 def statwalk(self, files=None, match=util.always, dc=None): |
261 self.read() |
261 self.lazyread() |
262 |
262 |
263 # walk all files by default |
263 # walk all files by default |
264 if not files: |
264 if not files: |
265 files = [self.root] |
265 files = [self.root] |
266 if not dc: |
266 if not dc: |