git: decode node IDs back into Python strings (
issue6349)
db.text_factory = bytes, so the database contains only strings. The object IDs
we get from pygit2 are Python strings. b'foo' != 'foo'
This change allows the "don't reindex" optimization to work by allowing the
"cur_cache_heads == cache_heads" comparison a few lines down to succeed.
Differential Revision: https://phab.mercurial-scm.org/D8622
--- a/hgext/git/index.py Tue Jun 09 22:02:09 2020 +0530
+++ b/hgext/git/index.py Tue Jun 09 13:18:21 2020 -0700
@@ -245,7 +245,10 @@
# TODO: we should figure out how to incrementally index history
# (preferably by detecting rewinds!) so that we don't have to do a
# full changelog walk every time a new commit is created.
- cache_heads = {x[0] for x in db.execute('SELECT node FROM possible_heads')}
+ cache_heads = {
+ pycompat.sysstr(x[0])
+ for x in db.execute('SELECT node FROM possible_heads')
+ }
walker = None
cur_cache_heads = {h.hex for h in possible_heads}
if cur_cache_heads == cache_heads: