[PATCH] eol: fix missing trailing newlines in comitted files

Matt Mackall mpm at selenic.com
Wed Jun 29 17:39:46 CDT 2011


On Thu, 2011-06-30 at 01:45 +0400, Stepan Koltsov wrote:
> # HG changeset patch
> # User Stepan Koltsov <stepancheg at yandex-team.ru>
> # Date 1309383716 -14400
> # Node ID 222e553fc1f59d83c01123c63dda918fd76f66ce
> # Parent  c64bd320e4f0a0bf36f64292900822e6f1f09a56
> eol: fix missing trailing newlines in comitted files
> 
> Some text editors (Eclipse, for example) do not add trailing newlines,
> so diffs often contain annoying "\ No newline at the end of file".
> This patch to eol extension simply adds trailing newline on commit.

This strikes me as the wrong thing to do: it makes it impossible to make
a file with no trailing newline. As it happens, some people actually
don't want your proposed behavior:

http://stackoverflow.com/questions/1050640/vim-disable-automatic-newline-at-end-of-file

I think this issue is rather solidly in the domain of editor
configuration.

> diff -r c64bd320e4f0 -r 222e553fc1f5 hgext/eol.py
> --- a/hgext/eol.py	Mon Jun 27 16:39:02 2011 -0500
> +++ b/hgext/eol.py	Thu Jun 30 01:41:56 2011 +0400
> @@ -106,6 +106,8 @@
>          return s
>      if ui.configbool('eol', 'only-consistent', True) and inconsistenteol(s):
>          return s
> +    if s and s[-1] != '\n':
> +        s = s + '\n'
>      return eolre.sub('\n', s)
>  
>  def tocrlf(s, params, ui, **kwargs):
> @@ -114,6 +116,8 @@
>          return s
>      if ui.configbool('eol', 'only-consistent', True) and inconsistenteol(s):
>          return s
> +    if s and s[-1] != '\n':
> +        s = s + '\n'
>      return eolre.sub('\r\n', s)
>  
>  def isbinary(s, params):
> diff -r c64bd320e4f0 -r 222e553fc1f5 tests/test-eol-trailing-newline.t
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/tests/test-eol-trailing-newline.t	Thu Jun 30 01:41:56 2011 +0400
> @@ -0,0 +1,39 @@
> +Test trailing newline
> +
> +  $ cat >> $HGRCPATH <<EOF
> +  > [extensions]
> +  > eol=
> +  > EOF
> +
> +setup repository
> +
> +  $ hg init repo
> +  $ cd repo
> +  $ cat > .hgeol <<EOF
> +  > [patterns]
> +  > **.txt = native
> +  > EOF
> +
> +add text without trailing newline
> +
> +  $ printf "first\nsecond" > a.txt
> +  $ hg commit --addremove -m 'checkin'
> +  adding .hgeol
> +  adding a.txt
> +  $ rm a.txt
> +  $ hg update -C -q
> +  $ cat a.txt
> +  first
> +  second
> +
> +append a line without trailing newline
> +
> +  $ printf "third" >> a.txt
> +  $ hg commit -m 'adding third line'
> +  $ rm a.txt
> +  $ hg update -C -q
> +  $ cat a.txt
> +  first
> +  second
> +  third
> +
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list