mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
f1c3dc9f91
Summary: To use linelog, we need to be able to translate between hg commit hashes and linelog revision numbers. This diff implements such a revmap using the most direct way. The revmap also contains an extra "flag" for each revision, which will be used to mark if the revision is in the main branch or not, to handle merge commits. Test Plan: `import revmap` from IPython and test its interface manually. Also have a simple script to get some idea about its perf with 10000 revisions: ``` import contextlib, time, os, random, revmap, sys @contextlib.contextmanager def benchmark(msg): sys.stderr.write('%s: ' % msg) t1 = time.time() yield t2 = time.time() sys.stderr.write('%f seconds\n' % (t2 - t1)) def randomid(): return ''.join([chr(random.randint(0,255)) for _ in xrange(0, 20)]) rm = revmap.revmap('revmap1') with benchmark('insert 10000 random revisions'): # ~0.3 seconds for i in xrange(0, 10000): rm.append(randomid(), flag=1, flush=False) with benchmark('writing to disk'): # 0.02 seconds rm.flush() os.rename('revmap1', 'revmap2') with benchmark('loading'): # ~0.015 seconds rm = revmap.revmap('revmap2') ``` Reviewers: ttung, #sourcecontrol, ikostia Reviewed By: ikostia Subscribers: ikostia, mjpieters Differential Revision: https://phabricator.intern.facebook.com/D3709706 Signature: t1:3709706:1471936489:0bbe35ed39a2af3f06e1000c4f9674149ad43995 |
||
---|---|---|
.. | ||
revmap.py |