1463 ('a', 'add', '', _('add the given manifest node to the cache'), |
1463 ('a', 'add', '', _('add the given manifest node to the cache'), |
1464 _('NODE')) |
1464 _('NODE')) |
1465 ], '') |
1465 ], '') |
1466 def debugmanifestfulltextcache(ui, repo, add=None, **opts): |
1466 def debugmanifestfulltextcache(ui, repo, add=None, **opts): |
1467 """show, clear or amend the contents of the manifest fulltext cache""" |
1467 """show, clear or amend the contents of the manifest fulltext cache""" |
1468 with repo.lock(): |
1468 |
|
1469 def getcache(): |
1469 r = repo.manifestlog.getstorage(b'') |
1470 r = repo.manifestlog.getstorage(b'') |
1470 try: |
1471 try: |
1471 cache = r._fulltextcache |
1472 return r._fulltextcache |
1472 except AttributeError: |
1473 except AttributeError: |
1473 ui.warn(_( |
1474 msg = _("Current revlog implementation doesn't appear to have a " |
1474 "Current revlog implementation doesn't appear to have a " |
1475 "manifest fulltext cache\n") |
1475 'manifest fulltext cache\n')) |
1476 raise error.Abort(msg) |
1476 return |
1477 |
1477 |
1478 if opts.get(r'clear'): |
1478 if opts.get(r'clear'): |
1479 with repo.lock(): |
|
1480 cache = getcache() |
1479 cache.clear() |
1481 cache.clear() |
1480 |
1482 |
1481 if add: |
1483 if add: |
|
1484 with repo.lock(): |
1482 try: |
1485 try: |
1483 manifest = repo.manifestlog[r.lookup(add)] |
1486 m = repo.manifestlog |
|
1487 manifest = m[m.getstorage(b'').lookup(add)] |
1484 except error.LookupError as e: |
1488 except error.LookupError as e: |
1485 raise error.Abort(e, hint="Check your manifest node id") |
1489 raise error.Abort(e, hint="Check your manifest node id") |
1486 manifest.read() # stores revisision in cache too |
1490 manifest.read() # stores revisision in cache too |
1487 |
1491 |
1488 if not len(cache): |
1492 cache = getcache() |
1489 ui.write(_('cache empty\n')) |
1493 if not len(cache): |
1490 else: |
1494 ui.write(_('cache empty\n')) |
1491 ui.write( |
1495 else: |
1492 _('cache contains %d manifest entries, in order of most to ' |
1496 ui.write( |
1493 'least recent:\n') % (len(cache),)) |
1497 _('cache contains %d manifest entries, in order of most to ' |
1494 totalsize = 0 |
1498 'least recent:\n') % (len(cache),)) |
1495 for nodeid in cache: |
1499 totalsize = 0 |
1496 # Use cache.get to not update the LRU order |
1500 for nodeid in cache: |
1497 data = cache.get(nodeid) |
1501 # Use cache.get to not update the LRU order |
1498 size = len(data) |
1502 data = cache.get(nodeid) |
1499 totalsize += size + 24 # 20 bytes nodeid, 4 bytes size |
1503 size = len(data) |
1500 ui.write(_('id: %s, size %s\n') % ( |
1504 totalsize += size + 24 # 20 bytes nodeid, 4 bytes size |
1501 hex(nodeid), util.bytecount(size))) |
1505 ui.write(_('id: %s, size %s\n') % ( |
1502 ondisk = cache._opener.stat('manifestfulltextcache').st_size |
1506 hex(nodeid), util.bytecount(size))) |
1503 ui.write( |
1507 ondisk = cache._opener.stat('manifestfulltextcache').st_size |
1504 _('total cache data size %s, on-disk %s\n') % ( |
1508 ui.write( |
1505 util.bytecount(totalsize), util.bytecount(ondisk)) |
1509 _('total cache data size %s, on-disk %s\n') % ( |
1506 ) |
1510 util.bytecount(totalsize), util.bytecount(ondisk)) |
|
1511 ) |
1507 |
1512 |
1508 @command('debugmergestate', [], '') |
1513 @command('debugmergestate', [], '') |
1509 def debugmergestate(ui, repo, *args): |
1514 def debugmergestate(ui, repo, *args): |
1510 """print merge state |
1515 """print merge state |
1511 |
1516 |