Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8, 0.8.1, and 0.8.2

shellext/dirstate: limit cache to 10 entries

Also, reduced debug noise

Changeset e72457ed153c

Parent a9cb537302bd

by Adrian Buehlmann

Changes to 3 files · Browse files at e72457ed153c Showing diff from parent a9cb537302bd Diff from another changeset...

 
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 
60
61
62
 
 
63
64
65
 
 
66
 
 
 
67
68
69
 
83
84
85
 
 
86
 
87
88
89
90
 
 
91
 
92
93
 
 
94
95
96
@@ -60,17 +60,10 @@
 {   std::string path = WideToMultibyte(pwszPath);   - TDEBUG_TRACE("IsMemberOf: search for " << path); -   std::string hgroot = GetHgRepoRoot(path);     if (hgroot.empty()) - { - TDEBUG_TRACE("IsMemberOf: Not a Hg repo (hgroot is empty)");   return S_FALSE; - } - - TDEBUG_TRACE("IsMemberOf: hgroot = " << hgroot);     size_t offset = hgroot.length();   if (path[offset] == '\\') @@ -90,22 +83,14 @@
  return S_FALSE; // don't descend into .hg dir     if (!HgQueryDirstateDirectory(hgroot, path, relpath, status)) - { - TDEBUG_TRACE("IsMemberOf: HgQueryDirstateDirectory returns false");   return S_FALSE; - }   }   else   {   if (!HgQueryDirstateFile(hgroot, path, relpath, status)) - { - TDEBUG_TRACE("IsMemberOf: HgQueryDirstateFile returns false");   return S_FALSE; - }   }   - TDEBUG_TRACE("IsMemberOf: status = " << status); -   if (myTortoiseClass == TORTOISE_OLE_ADDED && status == 'A')   return S_OK;   else if (myTortoiseClass == TORTOISE_OLE_MODIFIED && status == 'M')
 
189
190
191
192
193
194
195
 
189
190
191
 
192
193
194
@@ -189,7 +189,6 @@
   std::string GetHgRepoRoot(const std::string& path)  { - TDEBUG_TRACE(" GetHgRepoRoot: find repo root for " << path);   std::string p = IsDirectory(path)? path : DirName(path);   while (!IsDirectory(p + "\\.hg"))   {
 
133
134
135
 
 
136
137
 
 
138
 
139
140
141
 
169
170
171
 
 
172
173
174
 
214
215
216
217
 
 
 
 
 
 
 
218
219
 
220
221
222
 
246
247
248
249
 
250
251
252
 
328
329
330
331
332
333
334
335
336
 
337
338
339
340
341
342
343
344
345
 
347
348
349
350
351
352
353
354
355
 
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 
174
175
176
177
178
179
180
181
 
221
222
223
 
224
225
226
227
228
229
230
231
232
233
234
235
236
 
260
261
262
 
263
264
265
266
 
342
343
344
 
 
 
345
346
 
347
348
349
350
 
 
 
351
352
353
 
355
356
357
 
358
 
359
360
361
@@ -133,9 +133,14 @@
   std::auto_ptr<dirstate> dirstate::read(const char *path)  { + TDEBUG_TRACE("dirstate::read: path = " << path); +   FILE *f = fopen(path, "rb");   if (!f) + { + TDEBUG_TRACE("dirstate::read: returning 0");   return std::auto_ptr<dirstate>(0); + }     std::auto_ptr<dirstate> pd(new dirstate());   @@ -169,6 +174,8 @@
    fclose(f);   + TDEBUG_TRACE("dirstate::read: done. size = " << pd->entries.size()); +   return pd;  }   @@ -214,9 +221,16 @@
  }     if (iter == _cache.end()) - { + { + if (_cache.size() >= 10) + { + TDEBUG_TRACE("dirstatecache::get: dropping " << _cache.back().hgroot); + delete _cache.back().dstate; + _cache.pop_back(); + }   entry e;   e.hgroot = hgroot; + TDEBUG_TRACE("dirstatecache::get: adding " << hgroot);   _cache.push_front(e);   iter = _cache.begin();   } @@ -246,7 +260,7 @@
  ppd = dirstatecache::get(hgroot);   if (!ppd)   { - TDEBUG_TRACE("HgQueryDirstate: dirstatecache::get returns NULL"); + TDEBUG_TRACE("HgQueryDirstate: dirstatecache::get returns 0");   return 0;   }   @@ -328,18 +342,12 @@
  const dirstate* pd = 0;   struct _stat stat;   - TDEBUG_TRACE("HgQueryDirstateFile: search for " << abspath); - TDEBUG_TRACE("HgQueryDirstateFile: hgroot = " << hgroot); -   if (!HgQueryDirstate(hgroot, abspath, relpath, pd, stat))   { - TDEBUG_TRACE("HgQueryDirstateFile: HgQueryDirstate returns false"); + TDEBUG_TRACE("HgQueryDirstateFile: HgQueryDirstate returns 0");   return 0;   }   - TDEBUG_TRACE("HgQueryDirstateFile: pd->entries.size() = " << pd->entries.size()); - TDEBUG_TRACE("HgQueryDirstateFile: relpath = " << relpath); -   for (dirstate::Iter iter = pd->entries.begin();   iter != pd->entries.end(); ++iter)   { @@ -347,9 +355,7 @@
    if (relpath == e.name)   { - TDEBUG_TRACE("HgQueryDirstateFile: found relpath");   outStatus = e.status(stat); - TDEBUG_TRACE("HgQueryDirstateFile: outStatus = " << outStatus);   return outStatus != '?';   }   }