Ian Jackson writes ("Re: DEP14 policy for two dots"): > Raphael Hertzog writes ("Re: DEP14 policy for two dots"): > > On Fri, 04 Nov 2016, Ian Jackson wrote: > > > My proposal is reversible. It does not need to be extensible. > > > > So what about "..."? Would it give ".#.#."? > > Yes. I said (fixing my bug): > > > Insert "#": > > - between each pair of adjacent dots > > - after any trailing dot > > - before any leading dot > - after the `.' of a trailing `.lock' > > The latter is necessary because git reserves .lock. (!) > The summary is `add # after any troublesome dot' (discounting leading > dots which you say are now illegal in Debian). > > I'm running some exhaustive tests to check that this rule is > sufficient, because I'm not sure I trust the git docs.
I have now: * Read the code in git upstream master. It's not particularly easy to analyse conclusively, but I'm pretty sure it doesn't have any special cases which involve longer strings than ".lock". I felt I was able to identify the manpage rule corresponding to each element of the logic. * Conducted an exhaustive search of all strings of length 6 or less. Specifically, I generated all strings of between zero and 6 characters from this set (in C notation): "0123456789" "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ".-+:~" filtered them by whether the `parseversion' function in dpkg likes them, escaped them with the following perl script #!/usr/bin/perl -pw use strict; y/:~/%_/; s/\.(?=\.|$|lock$)/.#/g; prepended "refs/tags/" to each one and fed them to git-check-ref-format (modified to run in a pipe mode). I also verified that when I don't escape ".lock", my exhaustive search correctly detects the illegal ref name "refs/tags/1.lock" genrated by version "1.lock" (and similar). > The reverse rule is to convert _ and % and delete all #. Quoted for completeness. Ian. -- Ian Jackson <ijack...@chiark.greenend.org.uk> These opinions are my own. If I emailed you from an address @fyvzl.net or @evade.org.uk, that is a private address which bypasses my fierce spamfilter.