You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Brandon Humphrey <bh...@divxcorp.com> on 2009/09/10 18:01:07 UTC

svn:externals problem

Hi all,

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.

Any ideas?

System details are:
Server: version 1.4.3 (r23084)
Client: 1.4.4 and 1.6.5

Thanks,
Brandon

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2393383

To unsubscribe from this discussion, e-mail: [users-unsubscribe@subversion.tigris.org].

RE: svn:externals problem

Posted by Brandon Humphrey <bh...@divxcorp.com>.
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@ryandesign.com]
>Sent: Thursday, September 10, 2009 2:12 PM
>To: Blair Zajac
>Cc: Brandon Humphrey; users@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@subversion.tigris.org].

Re: svn:externals problem

Posted by Ryan Schmidt <su...@ryandesign.com>.
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=2393448

To unsubscribe from this discussion, e-mail: [users-unsubscribe@subversion.tigris.org].

Re: svn:externals problem

Posted by Blair Zajac <bl...@orcaware.com>.
Brandon Humphrey wrote:
> Hi all,
> 
> 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?

Regards,
Blair

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2393425

To unsubscribe from this discussion, e-mail: [users-unsubscribe@subversion.tigris.org].