aboutsummaryrefslogtreecommitdiffhomepage
path: root/gbp/deb/git.py
diff options
context:
space:
mode:
Diffstat (limited to 'gbp/deb/git.py')
-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):