Search code examples
svnversion-controlshared-objectssvn-externalsfile-organization

Subversion svn:externals - What's wrong here?


I first want to say I've read the Subversion manual. I've read this question. I've also read this question. Here's my dilemma.

Let's say I have 3 repositories laid out like this:

  • DataAccessObject/
    • branches/
    • tags/
    • trunk/
      • DataAccessObject/
      • DataAccessObjectTests/
  • PlanObject/
    • branches/
    • tags/
    • trunk/
      • PlanObject/
      • PlanObjectTests/
  • WinFormsPlanViewer/
    • branches/
    • tags/
    • trunk/
      • WinFormsPlanViewer/

The PlanObject and DataAccessObject repositories contain shared projects. They are used by the WinFormsPlanViewer, but also by several other projects in several other repositories.

Bear with me here. I put an svn:externals definition on the WinFormsPlanViewer/trunk folder like this:

https://server/svn/PlanObject/trunk Objects<br/>
https://server/svn/DataAccessObject/trunk Objects<br/>

And here's what I see after I do an svn update.

  • WinFormsPlanViewer/
    • branches/
    • tags/
    • trunk/
      • WinFormsPlanViewer/
      • Objects/
        • DataAccessObject/
        • DataAccessObjectTests/

The PlanObject stuff doesn't even come down in the update! I don't know if this has anything to do with it, but there's an externals definition on the PlanObject/trunk folder also:

https://server/svn/DataAccessObject/trunk Objects<br/>

What's going on here? What am I doing wrong? Are there bad consequences of referencing the PlanObject and the DataAccessObject from the WinFormsPlanViewer using svn:externals when the PlanObject references the DataAccessObject using svn:externals also?


Solution

  • You have configured the svn:externals property to populate the Objects directory with the contents of two different URLs. Try creating the two svn:externals with different directory names:

    https://server/svn/PlanObject/trunk PlanObjects
    https://server/svn/DataAccessObject/trunk DataAccessObjects