版本控制中的项目结构-特定于.NET

时间:2020-03-06 14:44:45  来源:igfitidea点击:

这篇文章类似于这个以前问过的问题。我确实想以TTB格式设置SVN存储库,但是在Visual Studio 2008(ASP.NET/VB.NET)中创建项目时,考虑到解决方案文件,项目文件,项目,解决方案中的多个项目等。是否有人拥有脚本或者过程来采用新创建的ASP.NET项目并将其尽可能轻松地转换为TTB格式?

让我更具体一点。假设我正在创建一个名为StackOverflowIsAwesome的项目。我可以将其放入本地文件夹结构中(假设它是c:\ working)。当我创建它时,VS会创建c:\ working \ StackOverflowIsAwesome和一堆子文件夹(bin,app_data等)。但是我希望我的存储库结构看起来像...

StackOverflowIsAwesome
    /trunk
        /bin
        /app_data
    /tags
    /branches

因此,是否有一种保持一致的干净方法,还是我需要不断移动/修改文件和文件夹才能完成此工作?

解决方案

如果TTB是通用的而不是每个项目,那么就没有问题了。还是我错过了什么?

我们采用了一种非常简单的方法:

档案结构:

  • 项目文件夹2
  • 引用(包含解决方案的共享程序集)。

然后,我们只需将整个解决方案文件夹的内容检查到我们的存储库中即可。我们为每个解决方案使用一个存储库。我不确定这是否是组织解决方案的最佳方法,但这对我们有用。

另外,我们在最高级别分支,而不是每个项目。

我们可以查看此先前的帖子或者该项目。该项目创建一个.NET开发树结构(需要.NET 3.5)。

当处理组成一个Visual Studio解决方案的多个项目时,很难决定如何正确构造事物。

我们需要对结构进行处理的一个关键方面是,可以轻松地检索特定版本的所有文件。重要的是要使其尽可能容易。在Subversion中,将根文件夹复制到标签分支更容易,然后记住对X项目重复相同的操作。

能够在主干之外长时间工作也很重要。我们也必须考虑这一点。

我们可能会发现软件具有许多自然地组合在一起的组件。你可以做这样的事情

/tag

/core_library
   /branch
   /main

/business_logic
  /branch
  /main

/report_library
  /branch
  /main

/my_ui
  /branch
  /main

没有简单的答案。工作确实取决于特定项目。如果一切仍然混乱不堪,那么我们可能需要查看项目的设计方式,看看是否可以更改以提高理解度。

我这样做:

  • 在VS中创建项目
  • 将项目文件夹中的所有内容导入到repos / projectname / trunk
  • 添加回购/分支和回购/标签文件夹

这给了我一个类似的存储库结构:

projectname
    / trunk
        /bin
        /obj
        /Properties
        projectname.sln
    /tags
    /branches

而且我可以将所有文件保留在文件系统的默认位置。

其他方式:

StackOverflowIsAwesome
  /trunk
    /database
    /datafiles
    /documents
    /build
    /installer
    /lib 
        /External_DAL (external that points to shared library)
    /utilities
    /vendor
    /src
      /StackOverFlowIsAwesome
        /StackOverFlowIsAwesome.csprj
        /bin
        /...
      /StackOverFlowIsAwesomeTests
        /StackOverFlowIsAwesomeTests.csprj
        /bin
        /...
  /branches
  /tags

这将适用于每个项目。由于我们使用的是构建脚本,因此我们不需要将解决方案文件存储在SVN中。

对于较大的项目,我们通常在此使用以下格式:

/Project
    /trunk
       /lib/              # Binary imports here (not in svn)

       /src               # Solution file here
          /Libraries      # Library assemblies here
             /StackOverflowIsAwesome.Common

          /Products       # Delivered products here
             /StackOverflowIsAwesome.Site

          /Projects       # internal assemblies here
             /StackOverflowIsAwesome.Tests
    /branches
        /1.x
    /tags
        /StackOverflowIsAwesome-1.0

根据实际项目,非源文件(文档等)具有
主干根目录下的目录和其他开发资源在src下。

下的独立项目位于其自己的/ Project根目录下,但位于同一存储库中。