summaryrefslogtreecommitdiff
path: root/src/setuptools_scm/hg_git.py
diff options
context:
space:
mode:
authorpaugier <pierre.augier@univ-grenoble-alpes.fr>2021-03-23 09:52:50 +0100
committerpaugier <pierre.augier@univ-grenoble-alpes.fr>2021-03-23 09:52:50 +0100
commitebd205f844e948decd4a370dac5b3409696ec31e (patch)
tree259970043b3e7e375a7778ce30cd24d1ee01a76b /src/setuptools_scm/hg_git.py
parent004612997ea7d88ec3ddd74e24d7f554c2654d87 (diff)
downloadsetuptools-scm-ebd205f844e948decd4a370dac5b3409696ec31e.tar.gz
hg-git: fix 2 corner cases
Diffstat (limited to 'src/setuptools_scm/hg_git.py')
-rw-r--r--src/setuptools_scm/hg_git.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/setuptools_scm/hg_git.py b/src/setuptools_scm/hg_git.py
index 843b44c..c6ac23f 100644
--- a/src/setuptools_scm/hg_git.py
+++ b/src/setuptools_scm/hg_git.py
@@ -47,22 +47,30 @@ class GitWorkdirHgClient(GitWorkdir, HgWorkdir):
if not ret:
return node
- def node(self):
- hg_node = self.get_hg_node()
- if hg_node is None:
- return
-
+ def _hg2git(self, hg_node):
git_node = None
with open(os.path.join(self.path, ".hg/git-mapfile")) as file:
for line in file:
if hg_node in line:
git_node, hg_node = line.split()
break
+ return git_node
+
+ def node(self):
+ hg_node = self.get_hg_node()
+ if hg_node is None:
+ return
+
+ git_node = self._hg2git(hg_node)
if git_node is None:
# trying again after hg -> git
self.do_ex("hg gexport")
- return self.node()
+ git_node = self._hg2git(hg_node)
+
+ if git_node is None:
+ trace("Cannot get git node so we use hg node", hg_node)
+ return hg_node
return git_node[:7]
@@ -91,6 +99,9 @@ class GitWorkdirHgClient(GitWorkdir, HgWorkdir):
return None, None, None
hg_tags = hg_tags.split()
+ if not hg_tags:
+ return None, None, None
+
git_tags = {}
with open(os.path.join(self.path, ".hg/git-tags")) as file:
for line in file: