44
votes

I have a number of files that I checked into SVN without having set up their Mime types correctly. SVN initially classified them as binary.

I've since set their Mime type in SVN via propset to "text/plain; charset=UTF-8" and I'vc made sure that all the files are UTF-8 signed. When I do 'svn blame filename', svn says that the file is binary and does not give me explicit blame-type output.

Any suggestions on how to persuade SVN that these are truly text files?

4
Does propget return the proper mime-type?Adam Peck
Thanks for the interaction! Yes, propget does return proper type. I just did one: svn propget svn:mime-type filename Output: text/plain; charset=UTF-8DWright
stackoverflow.com/questions/73797/… has the same idea, but in reverse. The citations therein are still relevant to your query.Eddie Parker
Yeah, I tried that in reverse, setting the property to text/plain. Didn't seem to work.DWright
@DWright, just to confirm, svn-propset changes the type in the local working copy and requires an svn commit for the type to be changed in the repository. Both types need to match and be "diff-able" for svn diff/svn blame to be able to work.Fox

4 Answers

60
votes

Setting the svn:mime-type property to just "text/plain" helps:

svn propset svn:mime-type text/plain build.xml
svn commit build.xml

Also, you can force Subversion to treat a file as text when blaming:

svn blame file/to/blame --force
5
votes

I had the same problem: I checked in a number of utf8 files (native encoding for Linux), some of which were picked up wrongly as binary and showing "(bin)". I did not delve into how the error occurred, but checked what was there...

$ svn propget svn:mime-type *

...noted that correctly checked-in text files had no svn:mime property at all, and simply deleted the svn:mime-type property from text files wrongly mislabled binary.

$ svn propdel svn:mime-type [mislabeled-text-file...]
$ svn ci -m "zap binary mime-types" [mislabeled-text-file...]

This seems to have worked with no ill effect. Caveat usor: I have no idea how Windows would behave in this case, though this is easily testable.

0
votes

After you've added a file to the repository, you probably also need to set the type on the REPOSITORY. Use the URL to the repository instead of the path to the working copy on your propset command.

0
votes

Looks like manipulations with mime-type do not convince svn to treat a file as a text. But if proper mime-type was set before first commit then svn treat the file properly. For example, svn adds eclipse .project and .classpath as application/xml and treats them as bin. But if before first commit you change it to text/xml they will be treated as text.