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:
