diff --git a/hgext/git/gitlog.py b/hgext/git/gitlog.py --- a/hgext/git/gitlog.py +++ b/hgext/git/gitlog.py @@ -159,8 +159,11 @@ def tiprev(self): t = self._db.execute( 'SELECT rev FROM changelog ' 'ORDER BY REV DESC ' 'LIMIT 1' - ) - return next(t) + ).fetchone() + + if t is not None: + return t[0] + return -1 def _partialmatch(self, id): if wdirhex.startswith(id): diff --git a/tests/test-git-interop.t b/tests/test-git-interop.t --- a/tests/test-git-interop.t +++ b/tests/test-git-interop.t @@ -49,6 +49,16 @@ > log-index-cache-miss = yes > EOF +Test some edge cases around a commitless repo first + $ mkdir empty + $ cd empty + $ git init + Initialized empty Git repository in $TESTTMP/empty/.git/ + $ hg init --git + $ hg heads + [1] + $ cd .. + Make a new repo with git: $ mkdir foo $ cd foo @@ -377,3 +387,24 @@ $ hg rm beta $ hg ci -m 'remove beta' +This covers changelog.tiprev() (issue6510) + $ hg log -r '(.^^):' + heads mismatch, rebuilding dagcache + changeset: 5:ae1ab744f95b + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Introduce file a/mu + + changeset: 6:80adc61cf57e + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: test interactive commit + + changeset: 7:116aee5ecdff + bookmark: master + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: remove beta + +