You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Christopher D Haakinson <cd...@us.ibm.com> on 2011/02/23 17:19:44 UTC

^M Appends to every line?


I have SVN up and running and things are working well, except when editing
shell scripts from windows.

My server is RHEL5-based and I will have clients connecting from linux and
windows. Linux commits work great, and even some times from windows.
However some times I commit a file from Windows(running tortoiseSVN and
Komodo EDIT) it corrupts the script and adds ^M to the end of every line,
often times ruining the structure of the file too.

Is there a way to disable this or do I have to run a dos2unix script after
every commit to remove them?

Re: ^M Appends to every line?

Posted by David Weintraub <qa...@gmail.com>.
As others have mentioned, you need to set svn:eol-style on files that
MUST have particular line endings. For example, shell scripts and
Makefiles MUST have Unix line endings. DOS Batch files MUST have
Windows line endings.

You might need to check everything out, clean it up, and set the
property on it. I have a pre-commit hook and one of the things you can
do is to force users to set a property to a particular value on
specified files. If the property isn't on the file, you can't commit
the change. You can get it from here: http://db.tt/H3o1i7S.

If you're using Ant,  take a look at the <FixCRNL> task when you do your builds.

On Wed, Feb 23, 2011 at 11:19 AM, Christopher D Haakinson
<cd...@us.ibm.com> wrote:
> I have SVN up and running and things are working well, except when editing
> shell scripts from windows.
>
> My server is RHEL5-based and I will have clients connecting from linux and
> windows. Linux commits work great, and even some times from windows. However
> some times I commit a file from Windows(running tortoiseSVN and Komodo EDIT)
> it corrupts the script and adds ^M to the end of every line, often times
> ruining the structure of the file too.
>
> Is there a way to disable this or do I have to run a dos2unix script after
> every commit to remove them?



-- 
David Weintraub
qazwart@gmail.com

Re: ^M Appends to every line?

Posted by David Chapman <dc...@acm.org>.
On 2/23/2011 8:19 AM, Christopher D Haakinson wrote:
>
> I have SVN up and running and things are working well, except when 
> editing shell scripts from windows.
>
> My server is RHEL5-based and I will have clients connecting from linux 
> and windows. Linux commits work great, and even some times from 
> windows. However some times I commit a file from Windows(running 
> tortoiseSVN and Komodo EDIT) it corrupts the script and adds ^M to the 
> end of every line, often times ruining the structure of the file too.
>
> Is there a way to disable this or do I have to run a dos2unix script 
> after every commit to remove them?
>

Look up "propset" and "eol-style".   In particular, in the [auto-props] 
section of my configuration file I have a number of lines of the form

*.c = svn:eol-style=native
*.txt = svn:eol-style=native
*.pl = svn:eol-style=native;svn:executable

I do this both in Windows and in Linux so that I don't have files with 
only ^J when I check them out under Windows.

You can also add this property manually after the files are committed:

svn propset svn:eol-style=native file1 file2 ...

Since you are seeing ^M now, you will need to do this manually for the 
affected files.

Other useful commands:

svn proplist file
svn propget svn:eol-style file

where "file" is the name of the file you are looking at.

-- 
     David Chapman         dcchapman@acm.org
     Chapman Consulting -- San Jose, CA


Re: ^M Appends to every line?

Posted by Les Mikesell <le...@gmail.com>.
On 2/23/11 8:03 PM, Nico Kadel-Garcia wrote:
>> Uh, no.  Use of "svn:eol-style" avoids a world of hurt - programmers do not
>> have to run a script *every* time they check out a file.  Requiring users to
>> run a script to fix line endings in every sandbox is a recipe for disaster.
>>
>> "dos2unix" and "unix2dos" are precisely the kind of local rewriting you want
>> to avoid.
>>
>> My two cents (and one million lines of code) worth...
>
> Not when the same working working copy is accessible from both Linux
> or UNIX, and Windows, as is commonplace in a mixed platform
> environment.

There are lots of ways to cause trouble. My opinion is that if it hurts, don't 
do it.  And that will hurt.

> If your working copies on each platform are distinct, you
> should be able to get away with it. But hit the same checked out
> Windows repository with TortoiseSVN and CygWin, and suddenly you're in
> a world of hurt again with the non-binary handling of EOL. Some text
> editors will autoparse it for you, but it can get extremely nasty, and
> I've had to clean up some serious messes this way.

More things that hurt - and to avoid.  But setting eol-style native and using 
normal, native tools on each OS isn't one of them.


> The messes are aggravated by the lack of the "obliterate" function, to
> entirely strip out erroneously configured file additions, and the
> difficulty running "diff" operations against files that have been
> stored and had their EOL settings updated and their contents revised.
> It really messes with "svn diff" operations before and after the
> change.

Any time you use dos2unix or the like it is going to be a change in every line 
and will screw up any concept of version differences.   If svn does it 
internally, you don't have that problem.

-- 
    Les Mikesell
     lesmikesell@gmail.com


Re: ^M Appends to every line?

Posted by Nico Kadel-Garcia <nk...@gmail.com>.
On Wed, Feb 23, 2011 at 8:48 PM, David Chapman <dc...@acm.org> wrote:
> On 2/23/2011 4:44 PM, Nico Kadel-Garcia wrote:
>>
>> On Wed, Feb 23, 2011 at 11:39 AM, Les Mikesell<le...@gmail.com>

>>> Short version: set the svn:eol-style property to native on the files
>>> where
>>> you want subversion to manage line endings.  Your client may have a list
>>> of
>>> file suffixes where this would be set automatically.
>>
>> But in general, avoid it. If you're in a mixed platform environment,
>> and you are tweaking files back and forth in end-of-line settings when
>> you check them out in UNIX versis checking them out in Windows, you
>> are in for a *world* of hurt. This is a source of enormous confusion
>> for programmers when it works right, on one system, but not on the
>> other due to local re-writing.
>>
>> If you're on the UNIX or Linux sides, the "dos2unix" and "unix2dos"
>> utilities are available with almost every distribution. For Windows,
>> there are other tools, including the same tools under CygWin.
>>
>>
>
> Uh, no.  Use of "svn:eol-style" avoids a world of hurt - programmers do not
> have to run a script *every* time they check out a file.  Requiring users to
> run a script to fix line endings in every sandbox is a recipe for disaster.
>
> "dos2unix" and "unix2dos" are precisely the kind of local rewriting you want
> to avoid.
>
> My two cents (and one million lines of code) worth...

Not when the same working working copy is accessible from both Linux
or UNIX, and Windows, as is commonplace in a mixed platform
environment. If your working copies on each platform are distinct, you
should be able to get away with it. But hit the same checked out
Windows repository with TortoiseSVN and CygWin, and suddenly you're in
a world of hurt again with the non-binary handling of EOL. Some text
editors will autoparse it for you, but it can get extremely nasty, and
I've had to clean up some serious messes this way.

The messes are aggravated by the lack of the "obliterate" function, to
entirely strip out erroneously configured file additions, and the
difficulty running "diff" operations against files that have been
stored and had their EOL settings updated and their contents revised.
It really messes with "svn diff" operations before and after the
change.

Re: ^M Appends to every line?

Posted by Christopher D Haakinson <cd...@us.ibm.com>.
Linux is the final home for these scripts. Currently I'm still in testing
mode, so the shell script I am trying is very simple, only a few lines with
a while loop, which is why I thought there may be something like
svn:eof-style to handle the EOF properly too..


|------------>
| From:      |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |David Chapman <dc...@acm.org>                                                                                                               |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Christopher D Haakinson/Raleigh/IBM@IBMUS                                                                                                       |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Cc:        |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Ryan Schmidt <su...@ryandesign.com>, users@subversion.apache.org                                                                     |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |02/24/2011 11:22 AM                                                                                                                             |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: ^M Appends to every line?                                                                                                                   |
  >------------------------------------------------------------------------------------------------------------------------------------------------|





On 2/24/2011 8:02 AM, Christopher D Haakinson wrote:
>
> OK, so I've been testing out the svn:eol-style prop and it appears to
> work, but it seems like an awful lot of work for such a simple issue.
>
> Is there something server-side I can setup to ensure that all files
> contain the correct eol style?
>
>
> Also I've noticed that my shell scripts are now failing with an EOF
> error? Does this mean that there's a style setting for the end of file
> too??
>
>
>

You can define a pre-commit hook script that looks at the file name and
then verifies the property is present.  These are described in the
Subversion book.

Multi-platform work is an awful lot of work; it is not as simple as it
seems.  Heuristics to determine whether a file is "plain text" can fail,
with catastrophic results.  File transfers done carelessly will corrupt
binary files; in integrated circuit design the OASIS geometry file
format has an "almost text" string defined solely to catch this error.
If you try to use the same text files across platforms, things will fail
unless *every* tool you use - all editors, all file analysis software,
all file transfer programs - deals with mixed or "wrong platform" line
ending styles properly.  This is a high standard that has never been met
in my experience.

I haven't seen script errors related to end of file; Windows no longer
puts a ^Z at the end of files, so you shouldn't need to strip that out.
Have you done an octal dump of the scripts to see what is at the end of
the files?  On which platform are they failing - Windows or Linux?

--
     David Chapman         dcchapman@acm.org
     Chapman Consulting -- San Jose, CA



Re: ^M Appends to every line?

Posted by David Chapman <dc...@acm.org>.
On 2/24/2011 8:02 AM, Christopher D Haakinson wrote:
>
> OK, so I've been testing out the svn:eol-style prop and it appears to 
> work, but it seems like an awful lot of work for such a simple issue.
>
> Is there something server-side I can setup to ensure that all files 
> contain the correct eol style?
>
>
> Also I've noticed that my shell scripts are now failing with an EOF 
> error? Does this mean that there's a style setting for the end of file 
> too??
>
>
>

You can define a pre-commit hook script that looks at the file name and 
then verifies the property is present.  These are described in the 
Subversion book.

Multi-platform work is an awful lot of work; it is not as simple as it 
seems.  Heuristics to determine whether a file is "plain text" can fail, 
with catastrophic results.  File transfers done carelessly will corrupt 
binary files; in integrated circuit design the OASIS geometry file 
format has an "almost text" string defined solely to catch this error.  
If you try to use the same text files across platforms, things will fail 
unless *every* tool you use - all editors, all file analysis software, 
all file transfer programs - deals with mixed or "wrong platform" line 
ending styles properly.  This is a high standard that has never been met 
in my experience.

I haven't seen script errors related to end of file; Windows no longer 
puts a ^Z at the end of files, so you shouldn't need to strip that out.  
Have you done an octal dump of the scripts to see what is at the end of 
the files?  On which platform are they failing - Windows or Linux?

-- 
     David Chapman         dcchapman@acm.org
     Chapman Consulting -- San Jose, CA


Re: ^M Appends to every line?

Posted by Andy Levy <an...@gmail.com>.
On Fri, Feb 25, 2011 at 12:08, David Weintraub <qa...@gmail.com> wrote:

> For those who want something a bit more GUI oriented, there's ScitTE
> (http://www.scintilla.org/SciTE.html). And a great Notepad replacement is
> Notepad++ (http://notepad-plus-plus.org/). It provides a very similar
> looking Notepad like interface, but understands line and file endings.

FYI Notepad++ & SciTE use the same text editor component (or at least
last I checked they did); they're just different
shells/wrappers/features bolted on. Not saying that's bad; on the
contrary, it means that it's been checked & tested twice as much.

I used to swear by SciTE, now I've switched to Notepad++ (but I keep
both installed, for different features).

Re: ^M Appends to every line?

Posted by David Weintraub <qa...@gmail.com>.
On Thu, Feb 24, 2011 at 12:55 PM, Christopher D Haakinson <
cdhaakin@us.ibm.com> wrote:

> 2) I copy this entire script from notepad in windows into a new file named
> test2.sh, also in notepad.
>
The guy who wrote "Notepad" and had them put it on Windows as a text editor
should be shot, hung, and then shot again. Then, stampeded by a bunch of
wild horses, and for good measure shot again.

As you can tell, I have a strong opinion of "Notepad".

Notepad is NOT A PROGRAM EDITOR. Yes, I was shouting. Sorry about that,
after 15 years of Windows and having developers use it as their program
editor, I get a little tense sometimes.

Notepad is not a program editor. Nothing will mess up a program quicker than
Notepad. It mucks up line endings, changes Unicode characters, and will mess
up the end of file. The developers in my organization know not to use
Notepad or face the Wrath of Dave.

There are tons of freeware program editors out there, and there's just no
excuse for anyone who is involved in development to use Notepad. VIM is
great (http://www.vi.org) -- if you're a VI fanboy. I happen to be one. I
have yet found a program editor that is as fast as VI. VIM adds all sorts of
goodies to VI including automatic syntax indentations and syntax
highlighting. It is not the easiest editor to use (it can take months to
learn all of its ins and outs), but once you learn it, it's the best.

For those who want something a bit more GUI oriented, there's ScitTE (
http://www.scintilla.org/SciTE.html). And a great Notepad replacement is
Notepad++ (http://notepad-plus-plus.org/). It provides a very similar
looking Notepad like interface, but understands line and file endings.

-- 
David Weintraub
qazwart@gmail.com

Re: ^M Appends to every line?

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Feb 24, 2011, at 12:44, Christopher D Haakinson wrote:

> I opened the file in notepad and added a couple blank lines under my exit 0 and it worked!! How weird is that?

Sounds normal to me. I text file is not a text file, according to UNIX definitions, if it does not end with a newline.



Re: ^M Appends to every line?

Posted by Christopher D Haakinson <cd...@us.ibm.com>.
It's possible that the eol-style has nothing to do with this, because
before I added the style, my script was still failing and complaining about
the EOF as well as EOL errors...

Running your od command yields the following on the last 3 lines:
0000620   s   t       t   i   m   e   .   .   .   .   "  \r  \n  \r  \n
0000640  \r  \n   e   x   i   t       0
0000650

so it is missing \n ...

I opened the file in notepad and added a couple blank lines under my exit 0
and it worked!! How weird is that?

Thanks for your help! It's been much appreciated.


|------------>
| From:      |
|------------>
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
  |David Chapman <dc...@acm.org>                                                                                                                |
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
  |Christopher D Haakinson/Raleigh/IBM@IBMUS                                                                                                        |
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Cc:        |
|------------>
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
  |users@subversion.apache.org                                                                                                                      |
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
  |02/24/2011 01:28 PM                                                                                                                              |
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  >-------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: ^M Appends to every line?                                                                                                                    |
  >-------------------------------------------------------------------------------------------------------------------------------------------------|





On 2/24/2011 9:55 AM, Christopher D Haakinson wrote:
>
> I'd like someone to explain how this small shell script, which works
> fine, gets corrupted simply by creating a new file and copy/pasting
> the text in it. Here's what I'm doing:
>
> 1) I have a test shell script that runs fine. Here's the content:
> <------------------------- start
> lock="/tmp/deleteme"
> if [ -f $lock ]
> then
> echo "Lock file exists. Wait until it's gone to proceed. ."
> while [ -f $lock ]
> do
> echo "Waiting for lockfile to be removed. ."
> sleep 1s
> done
> echo "Now creating lock file"
> echo "locked" > $lock
> else
> echo "No lock file found. Creating it. ."
> echo "locked" > $lock
> fi
> echo "Lets try this again, hopefully for the last time...."
> exit 0
> <-------------------------- end
>
> 2) I copy this entire script from notepad in windows into a new file
> named test2.sh, also in notepad.
> 3) Using TortoiseSVN, I add test2.sh into my project
> 4) I commit the changes to the server
> 5) On my linux server, I run: svn update ... to get the test2.sh file
> 6) Now when I try to run it I get this:
> syntax error: unexpected end of file
>
>
> Now, this is the most simple task I could think of doing, and this
> doesn't work. I've also tried creating the new shell script with
> Komodo EDIT with the same results.
>
> This occurs even though I've tried adding svn:eol-style from both my
> linux server and my windows wrx... I'm lost!!
>

In Notepad, can you move your cursor below the last line of text in the
file?  If not, there won't be a newline after the final line.  Under
Linux, try "od -c test2.sh | more" and verify that there is a "\n" at
the very end of the listing.  If not, you'll need to add one in Notepad,
Komodo, or your favorite Linux editor.

I have no idea why you would see this problem only with "svn:eol-style"
defined (if in fact this is the problem).

--
     David Chapman         dcchapman@acm.org
     Chapman Consulting -- San Jose, CA



Re: ^M Appends to every line?

Posted by David Chapman <dc...@acm.org>.
On 2/24/2011 9:55 AM, Christopher D Haakinson wrote:
>
> I'd like someone to explain how this small shell script, which works 
> fine, gets corrupted simply by creating a new file and copy/pasting 
> the text in it. Here's what I'm doing:
>
> 1) I have a test shell script that runs fine. Here's the content:
> <------------------------- start
> lock="/tmp/deleteme"
> if [ -f $lock ]
> then
> echo "Lock file exists. Wait until it's gone to proceed. ."
> while [ -f $lock ]
> do
> echo "Waiting for lockfile to be removed. ."
> sleep 1s
> done
> echo "Now creating lock file"
> echo "locked" > $lock
> else
> echo "No lock file found. Creating it. ."
> echo "locked" > $lock
> fi
> echo "Lets try this again, hopefully for the last time...."
> exit 0
> <-------------------------- end
>
> 2) I copy this entire script from notepad in windows into a new file 
> named test2.sh, also in notepad.
> 3) Using TortoiseSVN, I add test2.sh into my project
> 4) I commit the changes to the server
> 5) On my linux server, I run: svn update ... to get the test2.sh file
> 6) Now when I try to run it I get this:
> syntax error: unexpected end of file
>
>
> Now, this is the most simple task I could think of doing, and this 
> doesn't work. I've also tried creating the new shell script with 
> Komodo EDIT with the same results.
>
> This occurs even though I've tried adding svn:eol-style from both my 
> linux server and my windows wrx... I'm lost!!
>

In Notepad, can you move your cursor below the last line of text in the 
file?  If not, there won't be a newline after the final line.  Under 
Linux, try "od -c test2.sh | more" and verify that there is a "\n" at 
the very end of the listing.  If not, you'll need to add one in Notepad, 
Komodo, or your favorite Linux editor.

I have no idea why you would see this problem only with "svn:eol-style" 
defined (if in fact this is the problem).

-- 
     David Chapman         dcchapman@acm.org
     Chapman Consulting -- San Jose, CA


Re: ^M Appends to every line?

Posted by Christopher D Haakinson <cd...@us.ibm.com>.
I'd like someone to explain how this small shell script, which works fine,
gets corrupted simply by creating a new file and copy/pasting the text in
it. Here's what I'm doing:

1) I have a test shell script that runs fine. Here's the content:
<------------------------- start
	lock="/tmp/deleteme"
	if [ -f $lock ]
	then
		echo "Lock file exists. Wait until it's gone to proceed. ."
		while [ -f $lock ]
		do
			echo "Waiting for lockfile to be removed. ."
			sleep 1s
		done
		echo "Now creating lock file"
		echo "locked" > $lock
	else
		echo "No lock file found. Creating it. ."
		echo "locked" > $lock
	fi
echo "Lets try this again, hopefully for the last time...."
exit 0
<-------------------------- end

2) I copy this entire script from notepad in windows into a new file named
test2.sh, also in notepad.
3) Using TortoiseSVN, I add test2.sh into my project
4) I commit the changes to the server
5) On my linux server, I run:  svn update  ... to get the test2.sh file
6) Now when I try to run it I get this:
		syntax error: unexpected end of file


Now, this is the most simple task I could think of doing, and this doesn't
work. I've also tried creating the new shell script with Komodo EDIT with
the same results.

This occurs even though I've tried adding svn:eol-style from both my linux
server and my windows wrx... I'm lost!!



|------------>
| From:      |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Les Mikesell <le...@gmail.com>                                                                                                            |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |users@subversion.apache.org                                                                                                                     |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |02/24/2011 11:27 AM                                                                                                                             |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: ^M Appends to every line?                                                                                                                   |
  >------------------------------------------------------------------------------------------------------------------------------------------------|





On 2/24/2011 10:02 AM, Christopher D Haakinson wrote:
> OK, so I've been testing out the svn:eol-style prop and it appears to
> work, but it seems like an awful lot of work for such a simple issue.
>
> Is there something server-side I can setup to ensure that all files
> contain the correct eol style?

No, the server can't possibly know what is right either for any
particular file or for any particular client platform.  But, your client
configs control auto-props which can sometimes do the right thing
automatically on the client side.  Unfortunately those have to match
filename patterns that won't necessarily correspond to the file content
or use.

> Also I've noticed that my shell scripts are now failing with an EOF
> error? Does this mean that there's a style setting for the end of file
too??

No, that probably is related to some other error or parsing issue in the
file.

--
   Les Mikesell
     lesmikesell@gmail.com


Re: ^M Appends to every line?

Posted by Les Mikesell <le...@gmail.com>.
On 2/24/2011 10:02 AM, Christopher D Haakinson wrote:
> OK, so I've been testing out the svn:eol-style prop and it appears to
> work, but it seems like an awful lot of work for such a simple issue.
>
> Is there something server-side I can setup to ensure that all files
> contain the correct eol style?

No, the server can't possibly know what is right either for any 
particular file or for any particular client platform.  But, your client 
configs control auto-props which can sometimes do the right thing 
automatically on the client side.  Unfortunately those have to match 
filename patterns that won't necessarily correspond to the file content 
or use.

> Also I've noticed that my shell scripts are now failing with an EOF
> error? Does this mean that there's a style setting for the end of file too??

No, that probably is related to some other error or parsing issue in the 
file.

-- 
   Les Mikesell
     lesmikesell@gmail.com

Re: ^M Appends to every line?

Posted by Blair Zajac <bl...@orcaware.com>.
On 2/24/2011 8:02 AM, Christopher D Haakinson wrote:
> OK, so I've been testing out the svn:eol-style prop and it appears to
> work, but it seems like an awful lot of work for such a simple issue.
>
> Is there something server-side I can setup to ensure that all files
> contain the correct eol style?

As others have said, you can use a pre-commit script to check the files.

If you have a number of files already checked in that you want to update 
their properties, you can use the svn_apply_autoprops.py script that I 
wrote a while back on a working copy to fix up everything in one commit:

http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svn_apply_autoprops.py

Regards,
Blair

Re: ^M Appends to every line?

Posted by Christopher D Haakinson <cd...@us.ibm.com>.
OK, so I've been testing out the svn:eol-style prop and it appears to work,
but it seems like an awful lot of work for such a simple issue.

Is there something server-side I can setup to ensure that all files contain
the correct eol style?


Also I've noticed that my shell scripts are now failing with an EOF error?
Does this mean that there's a style setting for the end of file too??




|------------>
| From:      |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Ryan Schmidt <su...@ryandesign.com>                                                                                                  |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |David Chapman <dc...@acm.org>                                                                                                               |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Cc:        |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Nico Kadel-Garcia <nk...@gmail.com>, users@subversion.apache.org                                                                               |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |02/23/2011 09:04 PM                                                                                                                             |
  >------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  >------------------------------------------------------------------------------------------------------------------------------------------------|
  |Re: ^M Appends to every line?                                                                                                                   |
  >------------------------------------------------------------------------------------------------------------------------------------------------|





On Feb 23, 2011, at 19:48, David Chapman wrote:
> On 2/23/2011 4:44 PM, Nico Kadel-Garcia wrote:
>> On Wed, Feb 23, 2011 at 11:39 AM, Les Mikesell wrote:
>>> Short version: set the svn:eol-style property to native on the files
where
>>> you want subversion to manage line endings.  Your client may have a
list of
>>> file suffixes where this would be set automatically.
>> But in general, avoid it. If you're in a mixed platform environment,
>> and you are tweaking files back and forth in end-of-line settings when
>> you check them out in UNIX versis checking them out in Windows, you
>> are in for a *world* of hurt. This is a source of enormous confusion
>> for programmers when it works right, on one system, but not on the
>> other due to local re-writing.
>>
>> If you're on the UNIX or Linux sides, the "dos2unix" and "unix2dos"
>> utilities are available with almost every distribution. For Windows,
>> there are other tools, including the same tools under CygWin.
>
> Uh, no.  Use of "svn:eol-style" avoids a world of hurt - programmers do
not have to run a script *every* time they check out a file.  Requiring
users to run a script to fix line endings in every sandbox is a recipe for
disaster.
>
> "dos2unix" and "unix2dos" are precisely the kind of local rewriting you
want to avoid.


Some have the view that setting svn:eol-style to native is a problem;
perhaps that's what Nico meant. Certainly, it would be a problem (wouldn't
work as designed) if you check out a working copy on a platform with one
eol convention (e.g. Mac OS X) and move that working copy to an OS with a
different eol convention (e.g. Windows). If that is something you plan to
do, the alternative is to still use svn:eol-style but set it to a specific
eol style instead -- for example LF. Then you would have to configure all
your editors on all platforms to use that line ending style.*

* Actually it does not matter if the editor decided, for example, to
completely convert the file from, say, LF to CRLF line endings. On commit,
your Subversion client would notice the change and convert it back to just
LF before submitting it to the repository. The situation Subversion won't
handle for you, and will abort the commit with an error message, is if your
editor decides to save a file with mixed line endings. Such editors are
broken IMHO. UltraEdit is an example of an editor we used which was broken
in this way, unless you remembered to change a particular preference
setting.

NOT using svn:eol-style at all will remove all eol checks that Subversion
does, and if you are using multiple editors on multiple platforms, you will
most probably end up with files of mixed line ending styles. THAT is a
recipe for disaster.




Re: ^M Appends to every line?

Posted by Tony Butt <To...@cea.com.au>.
On Wed, 2011-02-23 at 20:03 -0600, Ryan Schmidt wrote:
> On Feb 23, 2011, at 19:48, David Chapman wrote:
> > On 2/23/2011 4:44 PM, Nico Kadel-Garcia wrote:
> >> On Wed, Feb 23, 2011 at 11:39 AM, Les Mikesell wrote:
> >>> Short version: set the svn:eol-style property to native on the files where
> >>> you want subversion to manage line endings.  Your client may have a list of
> >>> file suffixes where this would be set automatically.
> >> But in general, avoid it. If you're in a mixed platform environment,
> >> and you are tweaking files back and forth in end-of-line settings when
> >> you check them out in UNIX versis checking them out in Windows, you
> >> are in for a *world* of hurt. This is a source of enormous confusion
> >> for programmers when it works right, on one system, but not on the
> >> other due to local re-writing.
> >> 
> >> If you're on the UNIX or Linux sides, the "dos2unix" and "unix2dos"
> >> utilities are available with almost every distribution. For Windows,
> >> there are other tools, including the same tools under CygWin.
> > 
> > Uh, no.  Use of "svn:eol-style" avoids a world of hurt - programmers do not have to run a script *every* time they check out a file.  Requiring users to run a script to fix line endings in every sandbox is a recipe for disaster.
> > 
> > "dos2unix" and "unix2dos" are precisely the kind of local rewriting you want to avoid.
> 
> 
> Some have the view that setting svn:eol-style to native is a problem; perhaps that's what Nico meant. Certainly, it would be a problem (wouldn't work as designed) if you check out a working copy on a platform with one eol convention (e.g. Mac OS X) and move that working copy to an OS with a different eol convention (e.g. Windows). If that is something you plan to do, the alternative is to still use svn:eol-style but set it to a specific eol style instead -- for example LF. Then you would have to configure all your editors on all platforms to use that line ending style.*
> 
> * Actually it does not matter if the editor decided, for example, to completely convert the file from, say, LF to CRLF line endings. On commit, your Subversion client would notice the change and convert it back to just LF before submitting it to the repository. The situation Subversion won't handle for you, and will abort the commit with an error message, is if your editor decides to save a file with mixed line endings. Such editors are broken IMHO. UltraEdit is an example of an editor we used which was broken in this way, unless you remembered to change a particular preference setting.
Another example is emacs (the one true ring (um) editor). But only if
there were mixed line endings to begin with.
> 
> NOT using svn:eol-style at all will remove all eol checks that Subversion does, and if you are using multiple editors on multiple platforms, you will most probably end up with files of mixed line ending styles. THAT is a recipe for disaster.
> 
I have in the past tried to use a smb exported share form a unix box on
a windows client. Don't do that, nothing but trouble.
> 

-- 
Tony Butt <To...@cea.com.au>
CEA Technologies

Re: ^M Appends to every line?

Posted by Ryan Schmidt <su...@ryandesign.com>.
On Feb 23, 2011, at 19:48, David Chapman wrote:
> On 2/23/2011 4:44 PM, Nico Kadel-Garcia wrote:
>> On Wed, Feb 23, 2011 at 11:39 AM, Les Mikesell wrote:
>>> Short version: set the svn:eol-style property to native on the files where
>>> you want subversion to manage line endings.  Your client may have a list of
>>> file suffixes where this would be set automatically.
>> But in general, avoid it. If you're in a mixed platform environment,
>> and you are tweaking files back and forth in end-of-line settings when
>> you check them out in UNIX versis checking them out in Windows, you
>> are in for a *world* of hurt. This is a source of enormous confusion
>> for programmers when it works right, on one system, but not on the
>> other due to local re-writing.
>> 
>> If you're on the UNIX or Linux sides, the "dos2unix" and "unix2dos"
>> utilities are available with almost every distribution. For Windows,
>> there are other tools, including the same tools under CygWin.
> 
> Uh, no.  Use of "svn:eol-style" avoids a world of hurt - programmers do not have to run a script *every* time they check out a file.  Requiring users to run a script to fix line endings in every sandbox is a recipe for disaster.
> 
> "dos2unix" and "unix2dos" are precisely the kind of local rewriting you want to avoid.


Some have the view that setting svn:eol-style to native is a problem; perhaps that's what Nico meant. Certainly, it would be a problem (wouldn't work as designed) if you check out a working copy on a platform with one eol convention (e.g. Mac OS X) and move that working copy to an OS with a different eol convention (e.g. Windows). If that is something you plan to do, the alternative is to still use svn:eol-style but set it to a specific eol style instead -- for example LF. Then you would have to configure all your editors on all platforms to use that line ending style.*

* Actually it does not matter if the editor decided, for example, to completely convert the file from, say, LF to CRLF line endings. On commit, your Subversion client would notice the change and convert it back to just LF before submitting it to the repository. The situation Subversion won't handle for you, and will abort the commit with an error message, is if your editor decides to save a file with mixed line endings. Such editors are broken IMHO. UltraEdit is an example of an editor we used which was broken in this way, unless you remembered to change a particular preference setting.

NOT using svn:eol-style at all will remove all eol checks that Subversion does, and if you are using multiple editors on multiple platforms, you will most probably end up with files of mixed line ending styles. THAT is a recipe for disaster.



Re: ^M Appends to every line?

Posted by David Chapman <dc...@acm.org>.
On 2/23/2011 4:44 PM, Nico Kadel-Garcia wrote:
> On Wed, Feb 23, 2011 at 11:39 AM, Les Mikesell<le...@gmail.com>  wrote:
>> On 2/23/2011 10:19 AM, Christopher D Haakinson wrote:
>>> I have SVN up and running and things are working well, except when
>>> editing shell scripts from windows.
>>>
>>> My server is RHEL5-based and I will have clients connecting from linux
>>> and windows. Linux commits work great, and even some times from windows.
>>> However some times I commit a file from Windows(running tortoiseSVN and
>>> Komodo EDIT) it corrupts the script and adds ^M to the end of every
>>> line, often times ruining the structure of the file too.
>>>
>>> Is there a way to disable this or do I have to run a dos2unix script
>>> after every commit to remove them?
>>>
>> Long version:
>> http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.props.file-portability
>>
>> Short version: set the svn:eol-style property to native on the files where
>> you want subversion to manage line endings.  Your client may have a list of
>> file suffixes where this would be set automatically.
> But in general, avoid it. If you're in a mixed platform environment,
> and you are tweaking files back and forth in end-of-line settings when
> you check them out in UNIX versis checking them out in Windows, you
> are in for a *world* of hurt. This is a source of enormous confusion
> for programmers when it works right, on one system, but not on the
> other due to local re-writing.
>
> If you're on the UNIX or Linux sides, the "dos2unix" and "unix2dos"
> utilities are available with almost every distribution. For Windows,
> there are other tools, including the same tools under CygWin.
>
>

Uh, no.  Use of "svn:eol-style" avoids a world of hurt - programmers do 
not have to run a script *every* time they check out a file.  Requiring 
users to run a script to fix line endings in every sandbox is a recipe 
for disaster.

"dos2unix" and "unix2dos" are precisely the kind of local rewriting you 
want to avoid.

My two cents (and one million lines of code) worth...

-- 
     David Chapman         dcchapman@acm.org
     Chapman Consulting -- San Jose, CA


Re: ^M Appends to every line?

Posted by Nico Kadel-Garcia <nk...@gmail.com>.
On Wed, Feb 23, 2011 at 11:39 AM, Les Mikesell <le...@gmail.com> wrote:
> On 2/23/2011 10:19 AM, Christopher D Haakinson wrote:
>>
>> I have SVN up and running and things are working well, except when
>> editing shell scripts from windows.
>>
>> My server is RHEL5-based and I will have clients connecting from linux
>> and windows. Linux commits work great, and even some times from windows.
>> However some times I commit a file from Windows(running tortoiseSVN and
>> Komodo EDIT) it corrupts the script and adds ^M to the end of every
>> line, often times ruining the structure of the file too.
>>
>> Is there a way to disable this or do I have to run a dos2unix script
>> after every commit to remove them?
>>
>
> Long version:
> http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.props.file-portability
>
> Short version: set the svn:eol-style property to native on the files where
> you want subversion to manage line endings.  Your client may have a list of
> file suffixes where this would be set automatically.

But in general, avoid it. If you're in a mixed platform environment,
and you are tweaking files back and forth in end-of-line settings when
you check them out in UNIX versis checking them out in Windows, you
are in for a *world* of hurt. This is a source of enormous confusion
for programmers when it works right, on one system, but not on the
other due to local re-writing.

If you're on the UNIX or Linux sides, the "dos2unix" and "unix2dos"
utilities are available with almost every distribution. For Windows,
there are other tools, including the same tools under CygWin.

Re: ^M Appends to every line?

Posted by Les Mikesell <le...@gmail.com>.
On 2/23/2011 10:19 AM, Christopher D Haakinson wrote:
> I have SVN up and running and things are working well, except when
> editing shell scripts from windows.
>
> My server is RHEL5-based and I will have clients connecting from linux
> and windows. Linux commits work great, and even some times from windows.
> However some times I commit a file from Windows(running tortoiseSVN and
> Komodo EDIT) it corrupts the script and adds ^M to the end of every
> line, often times ruining the structure of the file too.
>
> Is there a way to disable this or do I have to run a dos2unix script
> after every commit to remove them?
>

Long version:
http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.advanced.props.file-portability

Short version: set the svn:eol-style property to native on the files 
where you want subversion to manage line endings.  Your client may have 
a list of file suffixes where this would be set automatically.

-- 
   Les Mikesell
    lesmikesell@gmail.com