git: make changelog.tiprev() return int instead of tuple (issue6510) stable
authorMatt Harbison <matt_harbison@yahoo.com>
Tue, 27 Apr 2021 12:31:30 -0400
branchstable
changeset 47046 497cedcb6504
parent 47045 846920d89476
child 47047 8d733cbc2724
git: make changelog.tiprev() return int instead of tuple (issue6510) Differential Revision: https://phab.mercurial-scm.org/D10522
hgext/git/gitlog.py
tests/test-git-interop.t
--- a/hgext/git/gitlog.py	Tue Apr 27 00:26:12 2021 -0400
+++ b/hgext/git/gitlog.py	Tue Apr 27 12:31:30 2021 -0400
@@ -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):
--- a/tests/test-git-interop.t	Tue Apr 27 00:26:12 2021 -0400
+++ b/tests/test-git-interop.t	Tue Apr 27 12:31:30 2021 -0400
@@ -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 <test>
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     Introduce file a/mu
+  
+  changeset:   6:80adc61cf57e
+  user:        test <test>
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     test interactive commit
+  
+  changeset:   7:116aee5ecdff
+  bookmark:    master
+  tag:         tip
+  user:        test <test>
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     remove beta
+  
+