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

Re: Problem with Externals: using specific revision (-rREV) if file/folder is renamed or moved [BUG?]

From: Daniel Becroft <djcbecroft_at_gmail.com>
Date: Tue, 1 Sep 2009 18:08:00 +1000

On Tue, Sep 1, 2009 at 3:18 PM, omega32 <omega32_at_gmail.com> wrote:

> This is the situation:
>
> I have an external folder defined in the trunk of a repository named
> "ProjectX" from a DIFFERENT Repository ("common") as follows:
>
> -r7 "^/../common/trunk/lib" "lib"
>
> As you can see, it's pointing to a specific revision (7). This works
> perfect. I've use this external in several repositories with no problem. As
> needed, I update the projects to use the latest version of this common
> library (external). Because the revision of the external is specified
> explicitly, I can checkout and compile old revisions of the projects that
> use old versions of the library without any issues. So far so good.
>
> Now, I move the folder "lib" as follows:
>
> trunk/lib --> trunk/source/lib
>
> Just to be clear: I move this on the repository that contains the folder to
> import, that's the repository named "common". Not in the repository that
> declares the svn:externals property.
>
> I then commit the changes creating, so a new revision (8). Now the problem!
> If I try to checkout or update any project that uses a revision prior to 8
> (therefore prior to moving the folder) an error is shown saying that the
> folder can't be found:
>
> External failed: D:\Repositories\ProjectX\trunk\lib
> Error: File not found: revision 8, path '/trunk/lib'
>
> It seems that TortoiseSVN is checking to see if the external exists in the
> HEAD revision rather than the one defined in the svn:externals property.
>
> Just as a test a move the folder back to where it was before:
>
> trunk/source/lib --> trunk/lib
>
> Then try again to checkout or update an old revision... It works again!
> TortoiseSVN checks the HEAD revision (9) and founds the folder, then
> proceeds to checkout/update the correct revision (7) (the one specified
> svn:externals property).
>
> NOTES:
> - I tried with external folders and with external files and the same
> happens.
> - Tested with versions 1.6.3.16613 and 1.6.5.16974 (I skipped 1.6.4 because
> a bug).
> - I'm using XP Professional.
> - The repositories are local (using file:/// protocol).
>

Hi,

It isn't a bug - it's by design (but it can be confusing).

Basically, it comes down to the face that SVN has two types of revision
parameters: peg revisions and operative revisions.

These are explain in the book:
http://svnbook.red-bean.com/en/1.5/svn.advanced.pegrevs.html

If a peg revision is not specified, then the default of @HEAD is applied -
SVN looks for the object named trunk/lib in the HEAD revision, then traces
back to find it in r7.

If you change your svn:externals definitions to be @7 rather than -r7, it
should work.

Cheers,
Daniel B.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2389686

To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2009-09-01 10:12:43 CEST

This is an archived mail posted to the TortoiseSVN Users mailing list.