According to the documentation on .gitattributes, text enables end-of-line normalization:
textSetting the text attribute on a path enables end-of-line normalization and marks the path as a text file. End-of-line conversion takes place without guessing the content type.
According to the same documentation, eol=lf will also normalize linebreaks:
eolThis attribute sets a specific line-ending style to be used in the working directory. It enables end-of-line normalization without any content checks, effectively setting the text attribute.
The fact that the examples given mix them in the same file seems to imply that there is some (perhaps subtle) difference between them:
*.txt text
*.vcproj eol=crlf
*.sh eol=lf
*.jpg -text
Also, there seems to nowhere be an unambiguous statement that they are the same, or that text is shorthand for eol=lf—though that appears to be the case. The closest thing I could find to such a statement is what I quoted above, where it says "effectively setting the text attribute". But the word effectively seems to back-pedal just slightly, as though it's not actually setting the text attribute, but just more-or-less setting it, or having almost the same effect.
What, precisely, is the difference between these two? (Or is text just shorthand for the common use case?) Is there any reason you would mix the two in one .gitattributes file?
OR: does text require that Git guess which kind of linebreak you need, while eol (obviously) specifies?