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

dirstate.cpp: eliminate calls to HgQueryDirstate

Changeset dbf1b0d5b272

Parent 4dabccb94253

by Adrian Buehlmann

Changes to one file · Browse files at dbf1b0d5b272 Showing diff from parent 4dabccb94253 Diff from another changeset...

 
276
277
278
279
280
 
 
 
 
 
 
281
282
 
283
284
285
286
 
 
287
288
289
 
293
294
295
 
 
296
297
298
 
338
339
340
341
342
 
 
 
 
 
343
344
 
 
345
346
347
 
348
349
350
 
 
 
 
 
 
351
352
353
 
276
277
278
 
 
279
280
281
282
283
284
285
 
286
287
 
 
 
288
289
290
291
292
 
296
297
298
299
300
301
302
303
 
343
344
345
 
346
347
348
349
350
351
352
 
353
354
355
 
 
356
357
358
359
360
361
362
363
364
365
366
367
368
@@ -276,14 +276,17 @@
  const std::string& hgroot, const std::string& abspath,   std::string& relpath, char& outStatus)  { - const dirstate* pd = 0; - struct _stat stat; + const dirstate* pd = dirstatecache::get(hgroot); + if (!pd) + { + TDEBUG_TRACE("HgQueryDirstateDirectory: dirstatecache::get(" << hgroot << ") returns 0"); + return 0; + }   - if (!HgQueryDirstate(hgroot, abspath, relpath, pd, stat)) + for (size_t i = 0; i < relpath.size(); ++i)   { - TDEBUG_TRACE("HgQueryDirstateDirectory: HgQueryDirstate returns 0." - << " hgroot = " << hgroot << ", abspath = " << abspath); - return 0; + if (relpath[i] == '\\') + relpath[i] = '/';   }     bool added = false; @@ -293,6 +296,8 @@
  const size_t len = relpath.size();   const std::string hgroot_slash = hgroot + "/";   + struct _stat stat; +   for (dirstate::Iter iter = pd->begin();   iter != pd->end() && !modified; ++iter)   { @@ -338,16 +343,26 @@
  const std::string& hgroot, const std::string& abspath,   std::string& relpath, char& outStatus)  { - const dirstate* pd = 0;   struct _stat stat; + if (0 != lstat(abspath.c_str(), stat)) + { + TDEBUG_TRACE("HgQueryDirstateFile: lstat(" << abspath << ") fails"); + return 0; + }   - if (!HgQueryDirstate(hgroot, abspath, relpath, pd, stat)) + const dirstate* pd = dirstatecache::get(hgroot); + if (!pd)   { - TDEBUG_TRACE("HgQueryDirstateFile: HgQueryDirstate returns 0." - << " hgroot = " << hgroot << ", abspath = " << abspath); + TDEBUG_TRACE("HgQueryDirstateFile: dirstatecache::get(" << hgroot << ") returns 0");   return 0;   }   + for (size_t i = 0; i < relpath.size(); ++i) + { + if (relpath[i] == '\\') + relpath[i] = '/'; + } +   for (dirstate::Iter iter = pd->begin(); iter != pd->end(); ++iter)   {   const direntry& e = *iter;