Chris
2018-02-22 12:52:12 UTC
Re-awakening my previous thread about the auto-properties. I get really confused by where to use ;; and ; as a separator.
I currently have this in the auto-props on the repo:
*.txt = svn:mime-type=text/plain;;charset=iso-8859-1;svn:eol-style=LF
And then if I add a text file:
prompt> touch foo.txt; svn add foo.txt; svn pg svn:mime-type foo.txt
A foo.txt
text/plain;charset=iso-8859-1
So the property itself is with just one semicolon in there despite the auto-prop having ;;
Is this the correct behavior?
While if I to the same thing manually, i.e.
prompt> touch foo; svn add foo; svn propset svn:mime-type "text/plain;;charset=iso-8859-1" foo; svn pg svn:mime-type foo
A foo
property 'svn:mime-type' set on 'foo'
text/plain;;charset=iso-8859-1
That is, I'm passing in the exact string that I have in my auto-props into propset for a file without .txt-suffix so I don't get the auto-properties. But as you see in the resulting property that I now have has double semi-colons.
My guess is that the former is the intended behavior and I should not be passing in the ";;" into the manual command, but I'm getting really confused here. I seems very error-prone that manual propset can't use the strings from the config file or auto-props wihtout getting a different result.
Which version is the correct one, or do both actually do the job?
BR
Chris
--------------------------------------------
On Wed, 1/10/18, Daniel Shahaf <***@daniel.shahaf.name> wrote:
Subject: Re: auto-props syntax in file vs. property
To: "Chris" <***@yahoo.se>, ***@subversion.apache.org
Date: Wednesday, January 10, 2018, 8:51 PM
Chris wrote on Wed, 10 Jan 2018
(/subversion/trunk/contrib/client-side/svn_apply_autoprops.py)
non-
do
+ for prop in re.split(semicolonpattern, props):
That's clever, but it will
misparse sequences of three or more semicolons in a row,
such as
*.foo =
key=val;;with;;semicolons;;;anotherkey=anotherval
Daniel
I currently have this in the auto-props on the repo:
*.txt = svn:mime-type=text/plain;;charset=iso-8859-1;svn:eol-style=LF
And then if I add a text file:
prompt> touch foo.txt; svn add foo.txt; svn pg svn:mime-type foo.txt
A foo.txt
text/plain;charset=iso-8859-1
So the property itself is with just one semicolon in there despite the auto-prop having ;;
Is this the correct behavior?
While if I to the same thing manually, i.e.
prompt> touch foo; svn add foo; svn propset svn:mime-type "text/plain;;charset=iso-8859-1" foo; svn pg svn:mime-type foo
A foo
property 'svn:mime-type' set on 'foo'
text/plain;;charset=iso-8859-1
That is, I'm passing in the exact string that I have in my auto-props into propset for a file without .txt-suffix so I don't get the auto-properties. But as you see in the resulting property that I now have has double semi-colons.
My guess is that the former is the intended behavior and I should not be passing in the ";;" into the manual command, but I'm getting really confused here. I seems very error-prone that manual propset can't use the strings from the config file or auto-props wihtout getting a different result.
Which version is the correct one, or do both actually do the job?
BR
Chris
--------------------------------------------
On Wed, 1/10/18, Daniel Shahaf <***@daniel.shahaf.name> wrote:
Subject: Re: auto-props syntax in file vs. property
To: "Chris" <***@yahoo.se>, ***@subversion.apache.org
Date: Wednesday, January 10, 2018, 8:51 PM
Chris wrote on Wed, 10 Jan 2018
I think the fix to
svn_apply_autoprops.py should be something like below(/subversion/trunk/contrib/client-side/svn_apply_autoprops.py)
If anyone with commit rights wants to fix
it on the repo, feel free touse the
below, or improve it as necessary (my python knowledge isnon-
existing)
Index: svn_apply_autoprops.py
===================================================================Index: svn_apply_autoprops.py
--- svn_apply_autoprops.py
(revision 103617)+++
svn_apply_autoprops.py (revision 103618)@@ -101,7 +101,11 @@
# leading and trailing whitespce
from the propery names and# leading and trailing whitespce
#
values. props_list = []
- for prop in
+ #
Since ;; is a separator within one property, we need to- for prop in
+ #
do
+ # regex and use both negative
lookahead and lookbehind to avoid+
# ever matching a more than one semicolon in the split+ semicolonpattern =
re.compile("(?<!;);(?!;)")+ for prop in re.split(semicolonpattern, props):
That's clever, but it will
misparse sequences of three or more semicolons in a row,
such as
*.foo =
key=val;;with;;semicolons;;;anotherkey=anotherval
Daniel