diff options
author | Guido Günther <agx@sigxcpu.org> | 2016-11-16 14:12:17 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2016-11-16 14:12:17 +0100 |
commit | 420e2996bc572e41c78dec5e3762089fbbb551f9 (patch) | |
tree | 71b62e60362b4d46349dea5accd2ba39788ee52f | |
parent | 53fa200700db07d7f71d08f06bd2210d0449d05a (diff) |
DebianGitRepository: Handle dot escaping
as specified in DEP-14
Closes: #843840
-rw-r--r-- | gbp/deb/git.py | 15 |
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): |