views:

79

answers:

1

We just got TFS installed and ready go. I'm trying to decide on the disk structure. Let's suppose I have two BizTalk projects called Common and BookTransfer (in actuality I have 7). [At this client, we adopted the style of having schemas, orchs, maps in one project called BizTalk.Artifacts]. A folder with the name "components" is C# code. We are using a CodePlex tool called BizTalk deployment framework which somewhat dictates part of the structure.

I'm trying to decide how much nesting we should do on the disk directories (EC is the application name, and Common/BookTransfer or BizTalk Applications separated out for easier deploy/undeploy).

Proposal #1:

-EC
  - Main
     - Source
        - Common
           - Company.EC.Common.Biztalk.Artifacts [folder]
           - Company.EC.Common.BizTalk.Components [folder]
           - Company.EC.Common.Biztalk.Deployment  [folder]
           - Company.EC.BookTransfer.BizTalk.sln
        - BookTransfer
           - Company.EC.BookTransfer.BizTalk.Artifacts [folder]
           - Company.EC.BookTransfer.BizTalk.Components [folder]
           - Company.EC.BookTransfer.BizTalk.Components.UnitTest [folder]
           - Company.EC.BookTransfer.BizTalk.Deployment [folder]
           - Company.EC.BookTransfer.BizTalk.sln

Proposal #2 - a flatter approach

-EC
  - Main
     - Source
         - Company.EC.Common.BizTalk.sln
         - Company.EC.BookTransfer.BizTalk.sln
         - Company.EC.Common.Biztalk.Artifacts [folder]
         - Company.EC.Common.BizTalk.Components [folder]
         - Company.EC.Common.Biztalk.Deployment [folder]
         - Company.EC.BookTransfer.BizTalk.Artifacts [folder]
         - Company.EC.BookTransfer.BizTalk.Components [folder]
         - Company.EC.BookTransfer.BizTalk.Components.UnitTest  [folder]
         - Company.EC.BookTransfer.BizTalk.Deployment [folder]

Current Structure (perhaps too many nested folders)

- Main
   - Source
     - Company
        - EC
          - Common
            - BizTalk
                -Company.EC.Common.Biztalk.Artifacts [folder]
                -Company.EC.Common.BizTalk.Components [folder]
                -Company.EC.Common.Biztalk.Deployment  [folder]
                -Company.EC.BookTransfer.BizTalk.sln
         - BookTransfer
           - BizTalk
              - Company.EC.BookTransfer.BizTalk.Artifacts [folder]
              - Company.EC.BookTransfer.BizTalk.Components [folder]
              - Company.EC.BookTransfer.BizTalk.Components.UnitTest [folder]
              - Company.EC.BookTransfer.BizTalk.Deployment [folder]
              - Company.EC.BookTransfer.BizTalk.sln

The "Main" is in case we branch, we would then have other branches with identical structure.

Thanks, Neal Walters

+2  A: 

Moderately flat is best. Looking at your examples, I have to caution you to be careful about the combined path/filename length. You can very quickly hit the maximum path length of 260 characters, particularly if you are building on a separate build server, as you'll need to take the length of that path into account as well.

Our approach was:

Team Project
   - Main
     - LocalBin
     - Src
        - Subject Area
          - SubjectArea.sln
          - src
             - subjectarea.csproj

We used the LocalBin as our target for builds, as it made it much easier to create our WIX packaging projects, as we're in a corporate environment, and we create large-scale MSIs for our deployments (e.g. one of our packages has 400+ DLLs).

In some cases, we did go one or two levels deeper, but that was primarily because of the structure we brought forward from our previous SCM system (StarTeam). If we had to do it over from scratch nesting depth would be a primary concern.

Robaticus