[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Merge handles svn:eol-style wrongly

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 03 Sep 2008 12:01:39 +0100

Summary:

With svn 1.5.2, a merge to some target branch of the following two
successive changes on a file F:

  1: make line endings consistent

  2: set svn:eol-style=native

works correctly if the two changes are merged successively but fails
(aborts the merge) if they are merged together within a single phase of
merging.

Details:

Change 31766 of merge_authz_tests.py was a change of line endings from
inconsistent (CRLF and LF) line endings to consistent (LF) line endings.
There was no "svn:eol-style" property on the file, before or after this
change.

Change 32334 of merge_authz_tests.py, which is the next change to that
file, was setting "svn:eol-style" to "native".

In my branch, I have r31765 of the file. The command

  svn merge -c31766,32334 $SVN_REPOS/trunk/$FILE $FILE

succeeds, whereas

  svn merge -r31765:32334 $SVN_REPOS/trunk/$FILE $FILE

fails, complaining of "inconsistent line endings".

(It is a fundamental tenet of our merge-tracking merge algorithm that
the result of merging two successive changes together or separately must
be the same. This allows it to split the revision range into arbitrary
sub-ranges and still expect the right end result.)

Here is the transcript:

[[[
> $ svn info .
> Path: .
> URL: http://svn.collab.net/repos/svn/branches/double-delete
> Repository Root: http://svn.collab.net/repos/svn
> Repository UUID: 612f8ebc-c883-4be0-9ee0-a4e9ef946e3a
> Revision: 32866
> Node Kind: directory
> Schedule: normal
> Last Changed Author: sbutler
> Last Changed Rev: 30791
> Last Changed Date: 2008-04-26 06:11:22 +0100 (Sat, 26 Apr 2008)
>
> $ svn up
> At revision 32866.
>
> $ svn mergeinfo --show-revs=merged \
> $SVN_REPOS/trunk/subversion/tests/cmdline/merge_authz_tests.py \
> subversion/tests/cmdline/merge_authz_tests.py
> r30471
>
> $ svn mergeinfo --show-revs=eligible \
> $SVN_REPOS/trunk/subversion/tests/cmdline/merge_authz_tests.py \
> subversion/tests/cmdline/merge_authz_tests.py
> r31766
> r32334
> r32495
> r32722
>
> $ svn merge -c31766,32334 \
> $SVN_REPOS/trunk/subversion/tests/cmdline/merge_authz_tests.py \
> subversion/tests/cmdline/merge_authz_tests.py
> --- Merging r31766 into 'subversion/tests/cmdline/merge_authz_tests.py':
> U subversion/tests/cmdline/merge_authz_tests.py
> --- Merging r32334 into 'subversion/tests/cmdline/merge_authz_tests.py':
> U subversion/tests/cmdline/merge_authz_tests.py
>
> $ svn revert subversion/tests/cmdline/merge_authz_tests.py
> Reverted 'subversion/tests/cmdline/merge_authz_tests.py'
>
> $ svn merge -r31765:32334 \
> $SVN_REPOS/trunk/subversion/tests/cmdline/merge_authz_tests.py \
> subversion/tests/cmdline/merge_authz_tests.py
> svn: File 'subversion/tests/cmdline/merge_authz_tests.py' has inconsistent newlines
> svn: Inconsistent line ending style
>
> $ svn --version -q
> 1.5.2
]]]

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-09-03 13:01:59 CEST

This is an archived mail posted to the Subversion Dev mailing list.