Mercurial > hg > hg-git
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)``