aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2016-11-16 14:12:17 +0100
committerGuido Günther <agx@sigxcpu.org>2016-11-16 14:12:17 +0100
commit420e2996bc572e41c78dec5e3762089fbbb551f9 (patch)
tree71b62e60362b4d46349dea5accd2ba39788ee52f
parent53fa200700db07d7f71d08f06bd2210d0449d05a (diff)
DebianGitRepository: Handle dot escaping
as specified in DEP-14 Closes: #843840
-rw-r--r--gbp/deb/git.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/gbp/deb/git.py b/gbp/deb/git.py
index 5f4cdf4f..80fb23b7 100644
--- a/gbp/deb/git.py
+++ b/gbp/deb/git.py
@@ -169,6 +169,8 @@ class DebianGitRepository(GitRepository):
def _sanitize_version(version):
"""sanitize a version so git accepts it as a tag
+ as descirbed in DEP14
+
>>> DebianGitRepository._sanitize_version("0.0.0")
'0.0.0'
>>> DebianGitRepository._sanitize_version("0.0~0")
@@ -177,17 +179,26 @@ class DebianGitRepository(GitRepository):
'0%0.0'
>>> DebianGitRepository._sanitize_version("0%0~0")
'0%0_0'
+ >>> DebianGitRepository._sanitize_version("0....0")
+ '0.#.#.#.0'
+ >>> DebianGitRepository._sanitize_version("0.lock")
+ '0.#lock'
"""
- return version.replace('~', '_').replace(':', '%')
+ v = re.sub('\.(?=\.|$|lock$)', '.#', version)
+ return v.replace('~', '_').replace(':', '%')
@staticmethod
def _unsanitize_version(tag):
"""Reverse _sanitize_version
+ as descirbed in DEP14
+
>>> DebianGitRepository._unsanitize_version("1%0_bpo3")
'1:0~bpo3'
+ >>> DebianGitRepository._unsanitize_version("1%0_bpo3.#.")
+ '1:0~bpo3..'
"""
- return tag.replace('_', '~').replace('%', ':')
+ return tag.replace('_', '~').replace('%', ':').replace('#', '')
@staticmethod
def tag_to_version(tag, format):