0

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?

Community
  • 1
  • 1
Brandon Montgomery
  • 6,924
  • 3
  • 48
  • 71

2 Answers2

3

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
cleek
  • 874
  • 8
  • 15
  • If I do this, then I have a copy of DataAccessObject inside the WinFormsPlanViewer/trunk/WinFormsPlanViewer/PlanObject directory, and then also inside the WinFormsPlanViewer/trunk directory. The PlanObject would reference the DataAccessObject inside the PlanObject directory, and the WinformsPlanViewer would reference the one inside the trunk directory. Right? Not what I'm looking for... – Brandon Montgomery Mar 01 '10 at 22:39
  • You're right, Billie. Can't have multiple externals with the same target folder. (See my answer for how I solved the problem in the comment above) – Brandon Montgomery Mar 02 '10 at 18:03
1

Ah, just thought of this this morning and wanted to kicked myself because I didn't think of it before. I'm going to define my svn:externals like this:

https://server/svn/PlanObject/trunk/PlanObject Objects/PlanObject https://server/svn/DataAccessObject/trunk/DataAccessObject Objects/DataAccessObject

I'm marking Billie's answer as accepted because he did answer my question about why the svn:externals definition wasn't working.

Brandon Montgomery
  • 6,924
  • 3
  • 48
  • 71