On 13.11.2021 00:05, C. Michael Pilato wrote:
WARNING: This is a /total/ drive-by post as I skim the thread.
Are there any svn:auto-props syntaxes that are legal .ini but not
legal for auto-props? I'm thinking of the use of a forward slash
character. Could the format be extended such that a key/propname
under the [auto-props] section that starts with '//' (convenient
comment-esque) indicates some parsing option flag?
*[auto_props]*
*// accept_gnu_extension = true*
*// some_other_keyword_that_does_something_else = 3.14
!(CMakeLists).txt = svn:mime-type=text/plain
CMakeLists.txt = svn:mime-type=text/x-cmake*
Another total drive-by, as I'm not actually looking at the code right
now: but if memory serves, we just look for the separator (= or :) and
accept anything from the start of the line to there as the property name.
This is even documented:
https://cwiki.apache.org/confluence/display/SVN/Configuration+File+Syntax
There's a formal syntax definition there, so anyone who wants to
introduce extensions can check them against those rules.
-- Brane
On Fri, Nov 12, 2021 at 5:23 PM Eugeny Sosnovsky
<eugeny.sosnov...@silverfirsoftware.com> wrote:
Hello again,
One solution that comes to mind would be something like the
following: allow *svn:auto-props* to have certain keywords at the
beginning, which, if present, modify the matching behavior? I
don't mean keyword-value pairs (which the code could confuse for
being patterns to automatically assign SVN properties to), but
literally keywords. Something along the lines of:
*accept_gnu_extensions
some_other_keyword_that_does_something_else
#
!(CMakeLists).txt = svn:mime-type=text/plain
CMakeLists.txt = svn:mime-type=text/x-cmake*
The parser of the *svn:auto-props* property would have to get more
complicated of course, but I don't think there is a possibility of
an existing *svn:auto-props* having such a keyword? (And yes,
something similar could be done to *svn:ignore* as well.)
Another option would be to add a property (e.g.,
*svn:auto-props-modifiers* and *svn:ignore-modifiers* or something
to that effect) that would only contain such keywords, and would
propagate recursively to subdirectories in the same way
*svn:auto-props* does. Then if someone already has
*svn:auto-props* that work for them, they wouldn't have to do
anything - but if they later want to add new ones with GNU
extensions, they can set these additional keywords only in the
directories where they want the extensions activated.
Another option would be to have a modifier to the *svn add*
command that would make use of GNU extensions in *svn:auto-props*.
(And perhaps a client-side setting, or again, an SVN property like
the above, that would automatically activate it.) Something like
*svn add --auto-props-ext <path>*. The downside of this option is
that if one forgets that the *svn:auto-props* that apply to the
path being added make use of GNU extensions, the command would
still work, but the result would be undesired.
Another option would be to add another reserved property like
*svn:auto-props-ext*, yes, but it seems to me like the first
option above is easier. *svn:auto-props-ext* would definitely have
to take precedence over *svn:auto-props*, simply because it can be
more specific than *svn:auto-props* can be, due to the GNU extensions.
I can see about allocating some resources to implementing this
feature if a solution is agreed upon.
Eugeny
On Fri, Nov 12, 2021 at 1:30 PM Daniel Sahlberg
<daniel.l.sahlb...@gmail.com> wrote:
Den fre 12 nov. 2021 kl 13:57 skrev Eugeny Sosnovsky
<eugeny.sosnov...@silverfirsoftware.com>:
>
> To whom it may concern,
> On October 21, 2021, I have inquired on the SVN user mailing
list about any means to use glob patterns in svn:auto-props
that would be more powerful than the Unix fnmatch patterns it
currently uses.
>
> The need to do so was driven by a desire to have different
svn:auto-props settings for "CMakeLists.txt" (a script file
written in the CMake language), and all other "*.txt" files
(general plain text files). It's not too significant in this
particular case, in that they are both plain text files, but I
can imagine a scenario where the inability to set one property
for a specific set of files with a given extension, and
another property for all other files with this extension,
would be limiting. The fnmatch glob syntax does not easily
allow this, but the GNU extensions to it allow, for example,
the use of "!(CMakeLists).txt", which will match anything that
"*.txt" would match, except "CMakeLists.txt". For those
unfamiliar with the GNU extensions, this is a very good
summary (written here for a Python library that duplicates the
functionality):
> https://facelessuser.github.io/wcmatch/fnmatch/
>
> I looked at the SVN DesignNotes wiki, and was unable to find
any entries for something like this. So here I am requesting
this feature. Please let me know if you have any questions
about it. Looking forward to hearing from you!
I'm making another quote [1] from the same e-mail thread as in
your
last message:
> On 11.06.2020 09:42, Branko Čibej wrote:
> > About feature design -- unfortunately we can't just invent
a syntax that
> > would invert the meaning of the glob patterns in
svn:ignore, as that
> > would break backward compatibility. Any ideas for a
solution would be
> > most welcome.
I'm not opposing the idea but implementing the GNU extensions
might
break someone's existing svn:auto-props. It would obviously be
possible to make a compile time switch but I don't know how
many are
rolling their own releases.
Anyhow, please feel free to submit an idea for a new solution and
preferably a patch. Maybe a new svn:auto-props-ext? (In which case
there should also be companion svn:ignore-ext etc. and a
precedance
rule)
Kind regards,
Daniel
[1]
http://mail-archives.apache.org/mod_mbox/subversion-users/202006.mbox/%3ced8b17ea-4116-8007-d660-74ac06791...@apache.org%3e
>
> Eugeny Sosnovsky
> Chief Engineer at Silver Fir Software
>
>