1

我已经阅读了太多关于 SO 的帖子,我现在处于分析瘫痪状态!

我使用 Visual Studio 2010,我有许多小项目,其中许多参考库/共享项目。

如果我对共享代码进行更改,我真的不介意必须检查/重新构建依赖项目......我会尽快安排 TeamCity 来协助解决这个问题,但目前,我只是修改代码下次我做一个项目的时候。许多项目是“一次编写后忘记”,因此它们永远不需要更新。

该团队目前非常小(我!),但预计今年年初会有新的开发人员,但它仍然是一个非常小的内部团队,如果这有什么不同的话,项目周期会很快。

目前我在磁盘上有一个非常扁平的文件夹结构,所以我的所有sln文件都在磁盘上的“开发”文件夹中。然后每个 VS 项目都有一个文件夹。这使共享变得非常简单,并且还为我留下了一个packages用于nuget.

我即将将所有内容导入 SVN (VisualSVN),我想开始添加诸如database scriptsdocsUAT tests等之类的内容。

  • 我是否保持我的扁平结构并在根级别有一个主干/分支/标签?
  • 我是否将结构扩展到an SVN folder-per-solution 然后拥有trunk/srctrunk/docs管理诸如nuget packageswith之类的东西svn:eternals
  • 我是否混合了这个并an SVN folder-per-solutiondocsVS 解决方案中使用了?

注意:我正在使用 SVN,因此我可以引入一些 Java 开发,但以单一方式管理源代码。我们还将与希望将 docs/sql sripts 等放入其中的 DB 团队共享。我打算为 DB 和 Java 分别建立一个单独的存储库——但希望它们每个都有一个“相似”的文件夹结构。

NOTE2:我有一些 SVN 用户经验,但没有管理员经验。新开发者完全没有经验(他们来自 AS/400 背景),所以解决方案越简单越好!我已经看过了repo per project and svn:extenals,虽然它是一个很好的解决方案,但它需要我一直管理和维护(以及我自己的工作!哈哈)

非常感谢那些“去过那里,做过那件事-GTTS”的人的任何建议。


好的,我现在有以下本地解决方案结构:

我所有的 sln/suo 文件都在同一个文件夹中。
我所有的项目文件夹/文件都是子文件夹

这使得共享项目很容易......但看起来很乱而且很难找到任何东西:(

我应该使用 svn:externals 来管理“参考”项目,以便我可以分支/标记它们吗?
我应该只引用构建的 DLL - 以及随之而来的所有管理吗?
我应该让 VS2010 管理我的文件夹,而不关心我有很多“nuget”文件夹等吗?

现在非常非常困惑......任何体面的答案?:(


注意:将尽快将 TeamCity(或类似的东西)添加到组合中以提供 CI 功能。对 CI 的任何严肃(和免费)建议也表示赞赏。

4

1 回答 1

1

这是我在工作和个人项目中使用的结构:

SVN结构:

    • 共享代码
    • 产品A
      • 树干
        • branch_of_shared_code
        • 产品A项目
        • 产品解决方案
      • 分支机构
        • 分支1
          • branch_of_shared_code
          • 产品A项目
          • 产品解决方案
      • 标签
        • ...
    • 产品B
      • ...

定期(何时完全取决于您的需要)来自共享代码主分支的所有更改都合并到共享代码的产品分支中。对共享代码的更改要么在产品的分支中进行然后合并回来,要么在主分支中然后合并到产品中。

产品来源内容:

构建完整包所需的一切都被视为源。例如,如果您有数据库脚本 - 它们是源的一部分。测试 - 也是。对于文档,我通常在解决方案中添加一个单独的项目,其中包含用于构建文档的所有源并在输出目录中生成结果。然后,创建安装程序的项目会将其包含到生成的分发包中。

规划:

这可能是有争议的,但我更喜欢将任务列表存储在源旁边并将它们分支/合并在一起。如果任务在分支中完成,则在合并之前不会在主干中完成。更一般的规划可能适合也可能不适合在源旁边存储。

在磁盘上:

首先,我相信以这样一种方式使用存储库,即可以不存储每个产品的工作副本,而是按需检查它们。当然,为每次更改检查/删除工作副本是不切实际的,因此我为我目前经常工作的每个产品都有一个目录,在其中我检查我正在处理的分支(主干和其他一些)。如果您不期望它们很快开发,则无需检查其余产品。

于 2013-02-13T12:12:01.357 回答