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

RE: svn:externals problem

From: Brandon Humphrey <bhumphrey_at_divxcorp.com>
Date: Thu, 10 Sep 2009 16:10:27 -0700

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

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.