Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "Inheritable-Ignores-AutoProps" page has been changed by pburba:
http://wiki.apache.org/subversion/Inheritable-Ignores-AutoProps?action=diff&rev1=10&rev2=11

Comment:
Yet another rename of the new inheritable properties - 
http://svn.haxx.se/dev/archive-2012-11/0121.shtml

  This effort started life as an alternative approach to the server dictated 
configuration ideas described in 
http://wiki.apache.org/subversion/ServerDictatedConfiguration and as such a 
quick read of that original design is suggested.  If you've already read that a 
lot of this will sound familiar since the goals are essentially the same.
  }}}
  === Behavioral Specification ===
- New Subversion reserved properties with the prefix 
"svn:inheritable-*"<<FootNote(Prefer "svn:config-*" or some other option?  
Don't worry, it's not too late to paint the bike shed a new color)>> will 
provide additional configuration information that overrides/extends the 
settings found in the user's run-time configuration.  Initially there will be 
two such properties "svn:inheritable-auto-props" and "svn:inheritable-ignores".
+ New Subversion reserved properties with the prefix 
"svn:inheritable-*"<<FootNote(Prefer "svn:config-*" or some other option?  
Don't worry, it's not too late to paint the bike shed a new color)>> will 
provide additional configuration information that overrides/extends the 
settings found in the user's run-time configuration.  Initially there will be 
two such properties "svn:auto-props" and "svn:global-ignores".
  
- This "svn:inheritable-auto-props" property will (no surprise!) 
override/extend the auto-props configuration settings which dictate the 
properties which are automatically set  on newly added or imported files.  
Unlike traditional auto-props, which can be disabled in the run-time config 
(i.e. "enable-auto-props = no"), svn:inheritable-auto-props cannot be disabled 
by a well-behaved client.
+ This "svn:auto-props" property will (no surprise!) override/extend the 
auto-props configuration settings which dictate the properties which are 
automatically set  on newly added or imported files.  Unlike traditional 
auto-props, which can be disabled in the run-time config (i.e. 
"enable-auto-props = no"), svn:auto-props cannot be disabled by a well-behaved 
client.
  
- The "svn:inheritable-ignores" property will extend the global-ignores 
configuration settings and the existing svn:ignore property, both of which 
define file patterns that are ignored by the svn status, import, and add 
subcommands. Like svn:inheritable-auto-props, svn:inheritable-ignores cannot be 
disregarded by a well-behaved client.
+ The "svn:global-ignores" property will extend the global-ignores 
configuration settings and the existing svn:ignore property, both of which 
define file patterns that are ignored by the svn status, import, and add 
subcommands. Like svn:auto-props, svn:global-ignores cannot be disregarded by a 
well-behaved client.
  
  {{{#!wiki warning
  "Well-Behaved Clients" and "Trust, But Verify"
  
  The configuration dictated by the "svn:inheritable-*" properties can at best 
be only a suggestion to the client. Older clients will obviously not understand 
the meaning of these properties and as open source software it is relatively 
easy for a malicious user to modify a client to ignore these special 
properties.  Given this reality, server-side enforcement of desired behaviors 
(where possible, and often via hook scripts) is still strongly recommended.
  
- The new "ephemeral transaction properties" feature (see 
http://subversion.tigris.org/issues/show_bug.cgi?id=4124) provide a simple way 
for servers to disallow commits from clients which don't understand 
svn:inheritable-auto-props. Thus there is no new capability string required for 
this feature.
+ The new "ephemeral transaction properties" feature (see 
http://subversion.tigris.org/issues/show_bug.cgi?id=4124) provide a simple way 
for servers to disallow commits from clients which don't understand 
svn:auto-props. Thus there is no new capability string required for this 
feature.
  }}}
  === Auto-Props Format ===
- The values of the svn:inheritable-auto-props property are as per the existing 
run-time configuration auto-props, they contain "any number of key-value pairs 
in the format ''PATTERN'' = ''PROPNAME''=''VALUE''[;''PROPNAME''=''VALUE''...], 
where ''PATTERN'' is a file pattern that matches one or more filenames and the 
rest of the line is a semicolon-delimited set of property assignments. (If you 
need to use a semicolon in your property's name or value, you can escape it by 
doubling it.)")<<FootNote(Thank you 'Version Control with Subversion' book, 
http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.advanced.confarea)>>
+ The values of the svn:auto-props property are as per the existing run-time 
configuration auto-props, they contain "any number of key-value pairs in the 
format ''PATTERN'' = ''PROPNAME''=''VALUE''[;''PROPNAME''=''VALUE''...], where 
''PATTERN'' is a file pattern that matches one or more filenames and the rest 
of the line is a semicolon-delimited set of property assignments. (If you need 
to use a semicolon in your property's name or value, you can escape it by 
doubling it.)")<<FootNote(Thank you 'Version Control with Subversion' book, 
http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.advanced.confarea)>>
  
- Like the svn:ignore property it only makes sense to set 
svn:inheritable-auto-props on directories, so attempts to propset the latter on 
a file will fail.
+ Like the svn:ignore property it only makes sense to set svn:auto-props on 
directories, so attempts to propset the latter on a file will fail.
  
  === Ignores Format ===
- The values for the svn:inheritable-ignores property are per the format of 
configuration defined global-ignores: A whitespace-delimited collection of file 
patterns.  Like svn:inheritable-auto-props, the svn:inheritable-ignores 
property can only be set on directories.
+ The values for the svn:global-ignores property are per the format of 
configuration defined global-ignores: A whitespace-delimited collection of file 
patterns.  Like svn:auto-props, the svn:global-ignores property can only be set 
on directories.
  
  === Auto-Props Hierarchy and Precedence ===
- Any path added to the working copy or imported to the repository must have a 
previously versioned parent. Both the svn:inheritable-auto-props explicitly set 
on that parent and the properties inherited by that parent, in addition to the 
run-time configuration auto-props, will determine the auto-props for the 
added/imported files under the versioned parent.  Where the auto-prop values 
'''for the same file pattern''' conflict there are a few simple rules:
+ Any path added to the working copy or imported to the repository must have a 
previously versioned parent. Both the svn:auto-props explicitly set on that 
parent and the properties inherited by that parent, in addition to the run-time 
configuration auto-props, will determine the auto-props for the added/imported 
files under the versioned parent.  Where the auto-prop values '''for the same 
file pattern''' conflict there are a few simple rules:
  
-  1. svn:inheritable-auto-props override the run-time configuration auto-props.
+  1. svn:auto-props override the run-time configuration auto-props.
-  1. svn:inheritable-auto-props inherited from a nearer parent override those 
from a more distant parent.
+  1. svn:auto-props inherited from a nearer parent override those from a more 
distant parent.
-  1. Explicit svn:inheritable-auto-props override inherited auto-props.
+  1. Explicit svn:auto-props override inherited auto-props.
  
  Auto-props are overridden by individual file pattern.  This means the if a 
run-time config defines auto-props for several different file patterns (say 
*.c, *.h, and *.py) and a single pattern (*.c) is defined in a 
svn:inheritabled-auto-props property at the root of the repository, then only 
the *.h and *.py auto-props from the run-time config still apply, only the *.c 
value is overridden.
  
@@ -55, +55 @@

  *.h  = svn:eol-style=native
  *.py = svn:eol-style=native
  }}}
- And a repository with this hierarchy and svn:inheritable-auto-props set as 
shown:
+ And a repository with this hierarchy and svn:auto-props set as shown:
  
  {{{
- /                svn:inheritable-auto-props = '*.bat = svn:executable'
+ /                svn:auto-props = '*.bat = svn:executable'
- /ProjX           svn:inheritable-auto-props = '*.c = svn:eol-style=CRLF'
+ /ProjX           svn:auto-props = '*.c = svn:eol-style=CRLF'
-                                               '*.h = svn:eol-style=CRLF'
+                                   '*.h = svn:eol-style=CRLF'
  /ProjY
  /ProjZ
  }}}
  If we check out ^/ProjX and add the files 'bar.py', 'baz.c', and 'foo.bat':
  
  {{{
- >svn pg svn:inheritable-auto-props -vR --show-inherited-props
+ >svn pg svn:auto-props -vR --show-inherited-props
  Properties inherited from '%ROOT-URL%':
-   svn:inheritable-auto-props
+   svn:auto-props
      *.bat = svn:executable
  Properties on '.':
-   svn:inheritable-auto-props
+   svn:auto-props
      *.c = svn:eol-style=CRLF
      *.h = svn:eol-style=CRLF
  
@@ -86, +86 @@

  A         baz.c
  A         foo.bat
  }}}
- Thee file 'bar.py' has its automatic svn:eol-style dictated by the auto-props 
for *.py which exist soley in the run-time configuration.  While bar.py has 
parents with the svn:inheritable-auto-props property, none of them have a 
matching pattern, so there is no override.
+ Thee file 'bar.py' has its automatic svn:eol-style dictated by the auto-props 
for *.py which exist soley in the run-time configuration.  While bar.py has 
parents with the svn:auto-props property, none of them have a matching pattern, 
so there is no override.
  
- The file 'baz.c' gets its auto-props from the svn:inheritable-auto-props set 
on '.', which override those set for the same pattern in the run-time config.
+ The file 'baz.c' gets its auto-props from the svn:auto-props set on '.', 
which override those set for the same pattern in the run-time config.
  
- Lastly the file 'foo.bat' gets its auto-props from the 
svn:inheritable-auto-props property set on the root of the repository.  Even 
though svn:inheritable-auto-props is set on foo.bat's nearest parent '.', there 
is no matching pattern, so the no override occurs and the next nearest parent 
with svn:inheritable-auto-props applies.
+ Lastly the file 'foo.bat' gets its auto-props from the svn:auto-props 
property set on the root of the repository.  Even though svn:auto-props is set 
on foo.bat's nearest parent '.', there is no matching pattern, so the no 
override occurs and the next nearest parent with svn:auto-props applies.
  
  {{{
  >svn pl -v bar.py baz.c foo.bat
@@ -105, +105 @@

      *
  }}}
  {{{#!wiki warning
- If multiple patterns, defined at different levels (i.e. the run-time config 
and multiple parent's svn:inheritable-auto-props) all match a given file, then, 
like multiple matching patterns within the run-time config, there is no 
guarantee that auto-props will be applied in any particular order.  One rule 
only overrides another rule if they have the exact same pattern.
+ If multiple patterns, defined at different levels (i.e. the run-time config 
and multiple parent's svn:auto-props) all match a given file, then, like 
multiple matching patterns within the run-time config, there is no guarantee 
that auto-props will be applied in any particular order.  One rule only 
overrides another rule if they have the exact same pattern.
  }}}
  === Ignores "Hierarchy" ===
  The cumulative set of ignores patterns in effect for a given path are the sum 
of the patterns found in:

Reply via email to