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

File external into directory external's directory broken in 1.7

From: <btfritz_at_rockwellcollins.com>
Date: Fri, 17 Aug 2012 12:39:08 -0500

I have one repository with two projects. Project A externals in a couple
directories from Project B (a library). But the tag I need to pull in from
Project B did not have a Windows build, only a target (Linux derivative)
build, so I have a third external defined to pull in a Windows build of
the Project B library to the place it would go if it were there in the
first place. This worked in version 1.6, but now gives an error in 1.7 and
does not pull in the file.

Specifically, I did the following from the directory in Project A which
contains most of our svn:externals definitions (here CommonElements is
Project B):

******************* BEGIN *********************
scarecrow_SunOS_btfritz> svn --version
svn, version 1.7.5 (r1336830)
   compiled Jun 14 2012, 11:00:46

Copyright (C) 2012 The Apache Software Foundation.
This software consists of contributions made by many people; see the
NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using
Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network
protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using
serf.
  - handles 'http' scheme
  - handles 'https' scheme

scarecrow_SunOS_btfritz> svn propget svn:externals . | grep CommonElements
# CommonElements
^/Fusion/Shared/CommonElements/tags/815-6133-102A_11-11_Build_Updates/src
CommonElements/src
^/Fusion/Shared/CommonElements/tags/815-6133-102A_11-11_Build_Updates/lib
CommonElements/lib
^/Fusion/Shared/CommonElements/branches/815-6133-101_WindowsBuild/lib/libce.lib_at_126
CommonElements/lib/libce.lib
scarecrow_SunOS_btfritz> rm -Rf CommonElements/lib
scarecrow_SunOS_btfritz> svn update

[unrelated paths snipped]

Fetching external item into 'CommonElements/src':
External at revision 1042.

Fetching external item into 'CommonElements/lib':
A CommonElements/lib/libce.a
 U CommonElements/lib
Updated external to revision 1042.

Fetching external item into 'CommonElements/lib/libce.lib':
svn: warning: W155022: Cannot insert a file external defined on
'/accts/btfritz/temp/extern_test' into the working copy
'/accts/btfritz/temp/extern_test/CommonElements/lib'.

[unrelated paths snipped]

At revision 1042.
svn: E205011: Failure occurred processing one or more externals
definitions
******************* END *********************

Repeat the experiment with version 1.6:

******************* BEGIN *********************
scarecrow_SunOS_btfritz> svn --version
svn, version 1.6.17 (r1128011)
   compiled Oct 12 2011, 12:29:56

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.apache.org/
This product includes software developed by CollabNet
(http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using
Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network
protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using
serf.
  - handles 'http' scheme
  - handles 'https' scheme

scarecrow_SunOS_btfritz> svn propget svn:externals . | grep CommonElements
# CommonElements
^/Fusion/Shared/CommonElements/tags/815-6133-102A_11-11_Build_Updates/src
CommonElements/src
^/Fusion/Shared/CommonElements/tags/815-6133-102A_11-11_Build_Updates/lib
CommonElements/lib
^/Fusion/Shared/CommonElements/branches/815-6133-101_WindowsBuild/lib/libce.lib_at_126
CommonElements/lib/libce.lib
scarecrow_SunOS_btfritz> rm -Rf CommonElements/lib
scarecrow_SunOS_btfritz> svn update

[unrelated paths snipped]

Fetching external item into 'CommonElements/src'
External at revision 1042.

Fetching external item into 'CommonElements/lib'
A CommonElements/lib/libce.a
 U CommonElements/lib
Updated external to revision 1042.

Fetching external item into 'CommonElements/lib/libce.lib'
E CommonElements/lib/libce.lib
Updated external to revision 126.

[unrelated paths snipped]

Updated to revision 1042.
******************* END *********************

I know from an earlier post to the list (
http://svn.haxx.se/users/archive-2012-07/0159.shtml ) that the 'E' status
when pulling in the libce.lib file indicates that the file already exists,
but this is not the case. As you can note above, I started my test by
removing the entire CommonElements/lib directory and all contents, and
it's not in the repository:

scarecrow_SunOS_btfritz> svn ls
http://asvn/ifis-dev/Fusion/Shared/CommonElements/tags/815-6133-102A_11-11_Build_Updates/lib
libce.a

Also, even though 'E' should indicate that the external failed, it does
actually pull the file in with version 1.6 (but not in 1.7):

scarecrow_SunOS_btfritz> ls CommonElements/lib
libce.a libce.lib
scarecrow_SunOS_btfritz> svn info CommonElements/lib/libce.lib
Path: CommonElements/lib/libce.lib
Name: libce.lib
URL:
http://asvn/ifis-dev/Fusion/Shared/CommonElements/branches/815-6133-101_WindowsBuild/lib/libce.lib
Repository Root: http://asvn/ifis-dev
Repository UUID: 3ba77836-1d5b-e042-a62f-cca4ba7af163
Revision: 126
Node Kind: file
Schedule: normal
Last Changed Author: ccanet\btfritz
Last Changed Rev: 126
Last Changed Date: 2012-01-20 12:21:33 -0600 (Fri, 20 Jan 2012)
Text Last Updated: 2012-08-17 12:13:26 -0500 (Fri, 17 Aug 2012)
Checksum: 59b2b54d3d1f8f8736e390b124967e1f

I'm not certain whether it's relevant, but the Repository UUID given above
for the problematic file external matches the UUID for the directory
external as well as the project's directory.

I think the problem happens because I'm trying to insert a file external
into what is for all intents and purposes a separate working copy. But I
see nothing in
http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html which
mentions a requirement that the destination for a file external must be a
"plain" directory. All it says is "While directory externals can place the
external directory at any depth, and any missing intermediate directories
will be created, file externals must be placed into a working copy that is
already checked out," and this condition is met. I know I cannot use file
externals from other repositories, and I would even expect a failure in
placing a file external from a project's repository into a directory
external from another repository, but in this case the file external and
the directory external are both from the same repository as the project.

Please CC me on any response; I'm not subscribed to get emails from the
list.

-- 
Ben Fritz
Received on 2012-08-17 19:43:10 CEST

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