changeset 715:5770a5a8bc00

revset_fromgit: use repo.changelog.node instead of contexts hg perfrevset 'max(fromgit())' on a repo with around 60,000 commits: before: ! wall 1.055093 comb 1.050000 user 1.050000 sys 0.000000 (best of 10) after: ! wall 0.148586 comb 0.140000 user 0.140000 sys 0.000000 (best of 62) In reality, perfrevset doesn't clear the Git-to-Mercurial map, which means that a call like `hg log -r 'max(fromgit())'` speeds up from around 1.5 seconds to 0.6.
author Siddharth Agarwal <sid0@fb.com>
date Mon, 14 Apr 2014 21:05:13 -0700
parents 96f0463a4e54
children 268b9f6ed1c8
files hggit/__init__.py
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/__init__.py
+++ b/hggit/__init__.py
@@ -191,7 +191,8 @@
     '''
     args = revset.getargs(x, 0, 0, "fromgit takes no arguments")
     git = repo.githandler
-    return [r for r in subset if git.map_git_get(repo[r].hex()) is not None]
+    node = repo.changelog.node
+    return [r for r in subset if git.map_git_get(hex(node(r))) is not None]
 
 def revset_gitnode(repo, subset, x):
     '''``gitnode(hash)``