Committers need to properly configure their svn client so that the appropriate subversion properties are set on newly added files. One of the most important properties is the eol-style property that configures OS-specific line-endings for text files.

Add the configuration text below to your subversion client configuration file that is normally in the following location:

Windows

%USERPROFILE%\Application Data\Subversion\config

Linux

~/.subversion/config

Warning

Make sure the settings are merged into the appropriate section if it already exists, as duplicate section names can cause problems.

[miscellany]
global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store build dist target
enable-auto-props = yes

[auto-props]
*.c = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.cpp = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.h = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.dsp = svn:eol-style=CRLF
*.dsw = svn:eol-style=CRLF
*.sh = svn:executable;svn:eol-style=native;svn:keywords=Date Revision
*.cmd = svn:mime-type=text/plain;svn:eol-style=CRLF
*.bat = svn:mime-type=text/plain;svn:eol-style=CRLF
Makefile = svn:eol-style=native;svn:keywords=Date Author Id Revision HeadURL
*.obj = svn:mime-type=application/octet-stream
*.bin = svn:mime-type=application/octet-stream
*.bmp = svn:mime-type=image/bmp
*.class = svn:mime-type=application/java
*.doc = svn:mime-type=application/msword
*.exe = svn:mime-type=application/octet-stream
*.gif = svn:mime-type=image/gif
*.gz = svn:mime-type=application/x-gzip
*.jar = svn:mime-type=application/java-archive
*.jelly = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.jpg = svn:mime-type=image/jpeg
*.jpeg = svn:mime-type=image/jpeg
*.pdf = svn:mime-type=application/pdf
*.png = svn:mime-type=image/png
*.tgz = svn:mime-type=application/octet-stream
*.tif = svn:mime-type=image/tiff
*.tiff = svn:mime-type=image/tiff
*.zip = svn:mime-type=application/zip
*.txt = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.xml = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date Revision
*.ent = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.dtd = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.vsl = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.xsd = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date Revision
*.xsl = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date Revision
*.wsdl = svn:mime-type=text/xml;svn:eol-style=native;svn:keywords=Date Revision
*.htm = svn:mime-type=text/html;svn:eol-style=native;svn:keywords=Date Revision
*.html = svn:mime-type=text/html;svn:eol-style=native;svn:keywords=Date Revision
*.css = svn:mime-type=text/css;svn:eol-style=native;svn:keywords=Date Revision
*.js = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.jsp = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.txt = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.java = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.properties = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision
*.sql = svn:mime-type=text/plain;svn:eol-style=native;svn:keywords=Date Revision

Useful Information

The names of svn keywords that are substituted in files may not match the SVN keywords in this config file. This is because a number of SVN keywords have alternate names that can be used. For example the "Revision" keyword may be specified as "Rev" and "LastChangedRevision" and can be used interchangably. This file uses the standard Subversion Keywords, not their alternate forms for clarity and consistency with the Subversion config files used by other ASF projects. This config file does not need to be changed to use the alternate forms for the alternate forms to be able to be used. For further information on Subversion keywords see http://svnbook.red-bean.com/en/1.1/ch07s02.html#svn-ch-7-sect-2.3.4.

To verify the auto-props processing is working you can test adding a file without committing it (Windows example):

C:\geronimo>echo testdata>test-auto-props.xml

C:\geronimo>svn add test-auto-props.xml
A         test-auto-props.xml

C:\geronimo>svn proplist test-auto-props.xml
Properties on 'test-auto-props.xml':
 svn:mime-type
 svn:keywords
 svn:eol-style

C:\geronimo>svn propget svn:mime-type test-auto-props.xml
text/xml

C:\geronimo>svn propget svn:keywords test-auto-props.xml
Date Revision

C:\geronimo>svn propget svn:eol-style test-auto-props.xml
native

C:\geronimo>svn revert test-auto-props.xml
Reverted 'test-auto-props.xml'

C:\geronimo>del test-auto-props.xml

If you didn't get the results above, double check that the following line in the [miscellany] section is set and not commented out or set elsewhere.

enable-auto-props = yes
  • No labels