This section is from the "Version Control with Subversion" book, by Ben Collins-Sussman, Brian W. Fitzpatrick and C. Michael Pilato. Also available from Amazon: Version Control with Subversion.
Subversion joins the ranks of the many applications that
recognize and make use of Multipurpose Internet Mail
Extensions (MIME) content types. Besides being a
general-purpose storage location for a file's content type,
the value of the svn:mime-type
file
property determines some behavioral characteristics of
Subversion itself.
For example, one of the benefits that Subversion typically
provides is contextual, line-based merging of changes received
from the server during an update into your working file. But
for files containing nontextual data, there is often no
concept of a “line.” So, for versioned files
whose svn:mime-type
property is set to a
nontextual MIME type (generally, something that doesn't begin
with text/
, though there are exceptions),
Subversion does not attempt to perform contextual merges
during updates. Instead, any time you have locally modified a
binary working copy file that is also being updated, your file
is left untouched and Subversion creates two new files. One
file has a .oldrev
extension and contains
the BASE revision of the file. The other file has a
.newrev
extension and contains the
contents of the updated revision of the file. This behavior
is really for the protection of the user against failed
attempts at performing contextual merges on files that simply
cannot be contextually merged.
The svn:mime-type
property, when set
to a value that does not indicate textual file contents, can
cause some unexpected behaviors with respect to other
properties. For example, since the idea of line endings
(and therefore, line-ending conversion) makes no sense when
applied to nontextual files, Subversion will prevent you
from setting the svn:eol-style
property
on such files. This is obvious when attempted on a single
file target—svn propset will error
out. But it might not be as clear if you perform a
recursive property set, where Subversion will silently skip
over files that it deems unsuitable for a given
property.
Beginning in Subversion 1.5, users can configure a new
mime-types-file
runtime configuration
parameter, which identifies the location of a MIME types
mapping file. Subversion will consult this mapping file to
determine the MIME type of newly added and imported
files.
Also, if the svn:mime-type
property is
set, then the Subversion Apache module will use its value to
populate the Content-type:
HTTP header when
responding to GET requests. This gives your web browser a
crucial clue about how to display a file when you use it to
peruse your Subversion repository's contents.
[11] You think that was rough? During that same era,
WordPerfect also used .DOC
for their
proprietary file format's preferred extension!