Thanks for the quick response. The path in fact does exist at the HEAD
revision, and I've found the problem to be that the parent directory
contains a Last Changed Rev (per svn info) younger than the child
directory.
I've included detailed notes below. Thanks for your help.
Cheers,
Brandon
--------------
C:\tmp>mkdir tmp\parentDir\childDir
C:\tmp>echo foo > tmp\parentDir\childDir\foo
C:\tmp>svn import tmp https://svn/svn/TestRepository -m "testing"
Adding tmp\parentDir
Adding tmp\parentDir\childDir
Adding tmp\parentDir\childDir\foo
Committed revision 49.
C:\tmp>svn copy https://svn/svn/TestRepository/parentDir
https://svn/svn/TestRepository/parentDir_copy -m "testing"
Committed revision 50.
C:\tmp>svn info https://svn/svn/TestRepository/parentDir_copy
Path: parentDir_copy
URL: https://svn/svn/TestRepository/parentDir_copy
Repository Root: https://svn/svn/TestRepository
Repository UUID: 9c33ba83-b1f9-0310-863a-aacaf6d97772
Revision: 50
Node Kind: directory
Last Changed Author: bhumphrey
Last Changed Rev: 50
Last Changed Date: 2009-09-10 15:25:04 -0700 (Thu, 10 Sep 2009)
C:\tmp>svn info https://svn/svn/TestRepository/parentDir_copy/childDir
Path: childDir
URL: https://svn/svn/TestRepository/parentDir_copy/childDir
Repository Root: https://svn/svn/TestRepository
Repository UUID: 9c33ba83-b1f9-0310-863a-aacaf6d97772
Revision: 50
Node Kind: directory
Last Changed Author: bhumphrey
Last Changed Rev: 49
Last Changed Date: 2009-09-10 15:23:58 -0700 (Thu, 10 Sep 2009)
#######################################################
The key point so far is that the child directory has a Last Changed Rev
value of 49 and the parent directory has a younger Last Changed Rev of
50. We have a post build process that pins down svn:externals to a
specific revision prior to creating a tag. Assume another directory has
an svn:externals entry as follows:
someDir https://svn/svn/TestRepository/parentDir_copy/childDir
Our pin tool looks up the Last Changed Rev of the path and drops in a -r
and value, in this case 49. But of course this isn't correct because
its parent directory did not exist until revision 50. Our fix will be
to modify the pin tool to use the value of Revision instead of Last
Changed Rev.
The thing that confused me earlier was that both 'svn ls' and 'svn
checkout' worked using the older revision on the newer path. But
svn:externals failed when it encountered the problem.
I.e. despite the fact that https://svn/svn/TestRepository/parentDir_copy
does not exist at revision 49, these commands still work.
C:\tmp>svn ls -r49
https://svn/svn/TestRepository/parentDir_copy/childDir
foo
C:\tmp>svn co -r49
https://svn/svn/TestRepository/parentDir_copy/childDir
A childDir\foo
Checked out revision 49.
But the following entry in svn:externals produces an error.
some_dir -r49 https://svn/svn/TestRepository/parentDir_copy/childDir
C:\tmp>svn propget svn:externals ProjectD
some_dir -r49 https://svn/svn/TestRepository/parentDir_copy/childDir
C:\tmp>svn up ProjectD
Fetching external item into 'ProjectD\some_dir'
svn: URL 'https://svn/svn/TestRepository/parentDir_copy/childDir'
doesn't exist
However, if I remove the -r49 from the externals entry or change it to
50, the checkout via svn:externals succeeds.
C:\tmp>svn propget svn:externals ProjectD
some_dir https://svn/svn/TestRepository/parentDir_copy/childDir
C:\tmp>svn up ProjectD
Fetching external item into 'ProjectD\build\cmvc\buildTools'
External at revision 26357.
Fetching external item into 'ProjectD\some_dir'
A ProjectD\some_dir\foo
Updated external to revision 50.
>-----Original Message-----
>From: Ryan Schmidt [mailto:subversion-2009b_at_ryandesign.com]
>Sent: Thursday, September 10, 2009 2:12 PM
>To: Blair Zajac
>Cc: Brandon Humphrey; users_at_subversion.tigris.org
>Subject: Re: svn:externals problem
>
>
>On Sep 10, 2009, at 15:13, Blair Zajac wrote:
>
>> Brandon Humphrey wrote:
>>>
>>
>>> I have an issue where svn:externals is not behaving as expected.
>>> There
>>> is an svn:externals entry that is pinned to a revision (r8353). The
>>> Subversion path does exist at the revision being requested, but
>>> checkout
>>> fails with the following error.
>>>
>>> svn: URL 'https://svn.divxnetworks.com/path/to/folder' doesn't exist
>>>
>>> However, I'm able to perform both a 'svn ls' and 'svn checkout'
using
>>> the same path and revision. It just isn't working with
>>> svn:externals.
>>
>> Does the external not exist at the HEAD revision at that path?
>
>I assume that's the case as well. Is that right, Brandon?
>
>If so, you need to use peg revisions instead of operative revisions in
>your externals definition -- and to do so, you need to upgrade your
>client to version 1.5.0 or newer.
>
>http://subversion.tigris.org/svn_1.5_releasenotes.html#externals
>
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2393469
To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subversion.tigris.org].
Received on 2009-09-11 01:11:18 CEST