[prev in list] [next in list] [prev in thread] [next in thread]
List: subversion-issues
Subject: =?UTF-8?B?W0lzc3VlIDE5NzBdICBIaXN0b3J5LWZvbGxvd2luZyBhbGdvcml0aA==?=
From: kfogel () tigris ! org
Date: 2005-02-28 23:39:41
Message-ID: 20050228233941.16755.qmail () tigris ! org
[Download RAW message or body]
http://subversion.tigris.org/issues/show_bug.cgi?id=1970
------- Additional comments from kfogel@tigris.org Mon Feb 28 15:39:41 -0800 2005 -------
A simpler recipe, resulting from conversations Mike and I have been having about
this:
#!/bin/sh
# This recipe highlights a bug in the client side use of the location
# searching algorithm.
#
# The current history-following algorithm determines the paths that a
# line of history would be *expected to be* found in a given revision,
# but doesn't treat copies as gaps in the historical sequence. If
# some other object fills those gaps at the same expected path, the
# client will find the wrong object.
#
# In the recipe below, we have a thing which gets created in r1. In
# r2, it is deleted and replaced with an unrelated object at the same
# path. In r3, the interloper is deleted. In r4, the original thing
# is resurrected via a copy from r1.
#
# THING
# ,- - - - - - - - -.
# o---| o---| o o----->
#
# | | | |
# r1 r2 r3 r4
#
# In a working copy at r4, running
#
# $ svn cat -r2 thing
#
# should result in an error, but instead cats the r2 interloper!
#
# To reassure yourself that this is wrong, remember that the above
# command is equivalent to
#
# $ svn cat -r2 thing@4
#
# Now do you see the evil that lies within us?
SVN=${HOME}/src/subversion/subversion/clients/cmdline/svn
SVNADMIN=${HOME}/src/subversion/subversion/svnadmin/svnadmin
# URL=http://localhost/SOMETHING/repos
# URL=svn://localhost/SOMETHING/repos
URL=file://`pwd`/repos
rm -rf repos wc
# Comment this in/out as you please.
# QUIET=-q
# r0
${SVNADMIN} create repos
${SVN} co ${URL} wc ${QUIET}
cd wc
# r1
echo `date` >> thing
${SVN} add thing ${QUIET}
${SVN} ci -m "" ${QUIET}
${SVN} up ${QUIET}
# r2
${SVN} del thing ${QUIET}
echo "YOU SHOULDN'T SEE THIS!" >> thing
${SVN} add thing ${QUIET}
${SVN} ci -m "" ${QUIET}
${SVN} up ${QUIET}
# r3
${SVN} del thing ${QUIET}
${SVN} ci -m "" ${QUIET}
${SVN} up ${QUIET}
# r4
${SVN} copy -r1 ${URL}/thing . ${QUIET}
${SVN} ci -m "" ${QUIET}
${SVN} up ${QUIET}
# Show the badness.
${SVN} cat -r2 thing@4
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@subversion.tigris.org
For additional commands, e-mail: issues-help@subversion.tigris.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic