DEP14 policy for two dots
Ian Jackson
ijackson at chiark.greenend.org.uk
Tue Nov 8 18:36:04 UTC 2016
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 <ijackson at 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.
More information about the vcs-pkg-discuss
mailing list