You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by sebb <se...@gmail.com> on 2014/03/22 02:28:33 UTC

Sequence of SVN commits cannot be replayed

I think I have found a sequence of commits to SVN that cannot be
replayed in a workspace.

I was trying to change a file into a link, and made some mistakes in
the process.
These mistakes caused svnpubsub to leave the workspace incorrectly updated.

[Svnpubsub uses svn switch to change the workspace.]

I have since found that the same sequence of events cannot be replayed
using svn update either, though the errors occur in a different way.

To reproduce the problem, start as follows:

svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582

Then apply the following revisions in order:

4583
4586
4588
4592
4593
4599

This can be done with svn switch (as done by svnpubsub) or using svn update -r

The resulting workspace should be the same as if one had invoked the following:

svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4599

But the process results in conflicts in the workspace.
I assume this is due to the use of svn:special and the link feature.

I would expect to be able to replay any sequence of updates so long as
they are done in the correct order. But in this case some of the
intermediate steps cause conflicts in the workspace.

This was tested (on minotaur) with

svn, version 1.7.9 (r1462340)

See also INFRA-7429

Re: Sequence of SVN commits cannot be replayed

Posted by Andreas Stieger <an...@gmx.de>.
Hello,

On 22/03/14 01:28, sebb wrote:
> svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582
> 
> Then apply the following revisions in order:
> 
> 4583

This alone (with https) results in obstructed items on GNU/Linux:

$ svn up -r4583
Updating '.':
UU   binaries/HEADER.html
UU   binaries/README.html
UU   source/HEADER.html
UU   source/README.html
Updated to revision 4583.

$ svn status
~       binaries/HEADER.html
~       binaries/README.html
~       source/HEADER.html
~       source/README.html

svn, version 1.8.8 (r1568071)
  - openSUSE 13.1 (Bottle) (i586) (Bottle) [Linux 3.11.10-7-desktop]
  - APR 1.4.8 (compiled with 1.4.8)
  - APR-Util 1.5.2 (compiled with 1.5.2)
  - SQLite 3.8.4.1 (compiled with 3.7.17)

Andreas

Re: Sequence of SVN commits cannot be replayed

Posted by Philip Martin <ph...@wandisco.com>.
sebb <se...@gmail.com> writes:

> So what is the next stage in getting this inconsistency fixed ?
> Do I have to create a Bugzilla entry or will someone else take care of that?

I've done it: http://subversion.tigris.org/issues/show_bug.cgi?id=4482

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Re: Sequence of SVN commits cannot be replayed

Posted by sebb <se...@gmail.com>.
On 23 March 2014 11:18, Philip Martin <ph...@wandisco.com> wrote:
> Daniel Shahaf <d....@daniel.shahaf.name> writes:
>
>> sebb wrote on Sat, Mar 22, 2014 at 01:28:33 +0000:
>>> To reproduce the problem, start as follows:
>>>
>>> svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582
>>>
>>> Then apply the following revisions in order:
>>>
>>> 4583
>>> 4586
>>> 4588
>>> 4592
>>> 4593
>>> 4599
>>
>> I can't reproduce an error with latest svn-1.8.8 from ports on FreeBSD 9.1.
>
> I believe the problem is an svn:special file that contains a '\n'
> character:
>
>   svn cat https://dist.apache.org/repos/dist/release/commons/dbcp/binaries/HEADER.html@4588 | od -c
>   0000000   l   i   n   k       .   .   /   H   E   A   D   E   R   .   h
>   0000020   t   m   l      \r  \n
>   0000026
>
> I can reproduce on Linux:
>
>   svnadmin create repo
>   printf "link foo\n" > x.x
>   svnmucc -mm -U file://`pwd`/repo put x.x f propset svn:special '*' f
>
> Now
>
>   svn co file://`pwd`/repo wc
>   svn st wc
>   M       wc/f
>
> The reason is that create_special_file_from_stream() reads just the
> first line of the file to define the symlink while
> svn_wc__internal_file_modified_p() compares against the whole file.

So what is the next stage in getting this inconsistency fixed ?
Do I have to create a Bugzilla entry or will someone else take care of that?

> --
> Philip Martin | Subversion Committer
> WANdisco // *Non-Stop Data*

Re: Sequence of SVN commits cannot be replayed

Posted by Philip Martin <ph...@wandisco.com>.
Daniel Shahaf <d....@daniel.shahaf.name> writes:

> sebb wrote on Sat, Mar 22, 2014 at 01:28:33 +0000:
>> To reproduce the problem, start as follows:
>> 
>> svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582
>> 
>> Then apply the following revisions in order:
>> 
>> 4583
>> 4586
>> 4588
>> 4592
>> 4593
>> 4599
>
> I can't reproduce an error with latest svn-1.8.8 from ports on FreeBSD 9.1.

I believe the problem is an svn:special file that contains a '\n'
character:

  svn cat https://dist.apache.org/repos/dist/release/commons/dbcp/binaries/HEADER.html@4588 | od -c
  0000000   l   i   n   k       .   .   /   H   E   A   D   E   R   .   h
  0000020   t   m   l      \r  \n
  0000026

I can reproduce on Linux:

  svnadmin create repo
  printf "link foo\n" > x.x
  svnmucc -mm -U file://`pwd`/repo put x.x f propset svn:special '*' f

Now

  svn co file://`pwd`/repo wc
  svn st wc
  M       wc/f

The reason is that create_special_file_from_stream() reads just the
first line of the file to define the symlink while
svn_wc__internal_file_modified_p() compares against the whole file.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Re: Sequence of SVN commits cannot be replayed

Posted by sebb <se...@gmail.com>.
On 24 March 2014 01:21, Daniel Shahaf <d....@daniel.shahaf.name> wrote:
> Daniel Shahaf wrote on Sun, Mar 23, 2014 at 02:34:35 +0000:
>> sebb wrote on Sat, Mar 22, 2014 at 01:28:33 +0000:
>> > To reproduce the problem, start as follows:
>> >
>> > svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582
>> >
>> > Then apply the following revisions in order:
>> >
>> > 4583
>> > 4586
>> > 4588
>> > 4592
>> > 4593
>> > 4599
>>
>> I can't reproduce an error with latest svn-1.8.8 from ports on FreeBSD 9.1.
>
> I can reproduce Andreas' and Philip's results.  I missed them on first
> scan because the OP specifically reported a conflict, so I only looked
> for conflicts.  And I know 'svn up' reports conflicts, so I didn't run
> 'svn st'...
>
> I don't want to sound like I'm shifting the blame (and I'll readily
> admit that I was short on time when I did the checkout/update dance),
> but that's exactly why including output transcripts in bug reports is a
> good idea.

Well, I got multiple conflict dialogs on both FreeBSD and WinXP when
using "svn up -r nnnn" for some values of nnn
I thought it would be the same for others.

> Daniel

Re: Sequence of SVN commits cannot be replayed

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Daniel Shahaf wrote on Sun, Mar 23, 2014 at 02:34:35 +0000:
> sebb wrote on Sat, Mar 22, 2014 at 01:28:33 +0000:
> > To reproduce the problem, start as follows:
> > 
> > svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582
> > 
> > Then apply the following revisions in order:
> > 
> > 4583
> > 4586
> > 4588
> > 4592
> > 4593
> > 4599
> 
> I can't reproduce an error with latest svn-1.8.8 from ports on FreeBSD 9.1.

I can reproduce Andreas' and Philip's results.  I missed them on first
scan because the OP specifically reported a conflict, so I only looked
for conflicts.  And I know 'svn up' reports conflicts, so I didn't run
'svn st'...

I don't want to sound like I'm shifting the blame (and I'll readily
admit that I was short on time when I did the checkout/update dance),
but that's exactly why including output transcripts in bug reports is a
good idea.

Daniel

Re: Sequence of SVN commits cannot be replayed

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
sebb wrote on Sat, Mar 22, 2014 at 01:28:33 +0000:
> To reproduce the problem, start as follows:
> 
> svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582
> 
> Then apply the following revisions in order:
> 
> 4583
> 4586
> 4588
> 4592
> 4593
> 4599

I can't reproduce an error with latest svn-1.8.8 from ports on FreeBSD 9.1.

Daniel

P.S. "Replay" has a different meaning in svn, please don't overload that term.
(You weren't supposed to know this, it's an API-level term.)

Re: Sequence of SVN commits cannot be replayed

Posted by sebb <se...@gmail.com>.
On 22 March 2014 01:28, sebb <se...@gmail.com> wrote:
> I think I have found a sequence of commits to SVN that cannot be
> replayed in a workspace.
>
> I was trying to change a file into a link, and made some mistakes in
> the process.
> These mistakes caused svnpubsub to leave the workspace incorrectly updated.
>
> [Svnpubsub uses svn switch to change the workspace.]
>
> I have since found that the same sequence of events cannot be replayed
> using svn update either, though the errors occur in a different way.
>
> To reproduce the problem, start as follows:
>
> svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4582

Sorry, that has to be https, i.e.

svn co https://dist.apache.org/repos/dist/release/commons/dbcp/@4582

Note that the original commits were made from a Windows OS.

I have been unable to replay the sequence on either Windows or Unix
without generating workspace conflicts.

> Then apply the following revisions in order:
>
> 4583
> 4586
> 4588
> 4592
> 4593
> 4599
>
> This can be done with svn switch (as done by svnpubsub) or using svn update -r
>
> The resulting workspace should be the same as if one had invoked the following:
>
> svn co http://dist.apache.org/repos/dist/release/commons/dbcp/@4599
>
> But the process results in conflicts in the workspace.
> I assume this is due to the use of svn:special and the link feature.
>
> I would expect to be able to replay any sequence of updates so long as
> they are done in the correct order. But in this case some of the
> intermediate steps cause conflicts in the workspace.
>
> This was tested (on minotaur) with
>
> svn, version 1.7.9 (r1462340)
>
> See also INFRA-7429