【问题标题】:What are source control and configuration management best practices?什么是源代码控制和配置管理最佳实践?
【发布时间】:2013-01-09 18:56:44
【问题描述】:

我正在考虑一个可以参考其他开发人员的列表,例如:

  1. 一个构建脚本,例如makefile, 将构建和测试整个项目
  2. 构建所需的所有组件 系统需要源代码控制

有人有这样的清单吗?按优先顺序?


更新 - 添加了一些仅供参考的细节

有问题的系统由 C++ 和 makefile、Java 和导致 WAR 的 ant 以及 powerbuilder 和 C# gui 组件组成。所有代码都是强制的。

所以我正在寻找通用以及特定语言的最佳实践。

【问题讨论】:

    标签: version-control configuration-management


    【解决方案1】:

    对我来说,#1 规则是这样的:

    主分支是神圣的 - 它必须始终是可构建的,能够通过 BVT,并且基本可用。

    任何允许进入主分支并导致构建或 BVT 中断的代码都会暴露过程中的错误。该过程应允许伙伴构建/测试单个分支系统,或要求子分支在合并到主分支之前构建并通过 BVT,或其他此类保护措施。

    【讨论】:

    • 嗯,如果我可以问一下,什么是 BVT?
    【解决方案2】:
    【解决方案3】:

    这在很大程度上取决于您在什么环境中构建?

    • 是 C/MakeFile 吗?
    • 是 Java/JUnit/Ant 吗?
    • 是 .NET/NUnit/NAnt 吗?
    • 是 .NET/MSUnit/MSBuild 吗?
    • 是鲁比吗……
    • 是 Python 吗...
    • 是 PHP 吗

    每一个都在方法和设置上有所不同。因此,我们需要先了解您的设置,然后才能为您提供帮助。

    【讨论】:

    • 添加了详细信息:相关系统由 C++ 和 makefile、Java 和导致 WAR 的 ant 以及 powerbuilder 和 C# gui 组件组成。所有代码都是强制的。因此,我正在寻找通用以及特定语言的最佳实践。
    【解决方案4】:

    我的第一件:

    • 经常更新,经常提交,

    或者,正如 Jeff 所说:Check In Early, Check In Often

    【讨论】:

    • 阅读该博客条目的 cmets,您会发现我非常不同意这种观点。修订控制系统旨在控制软件的修订,而不是备份中间编辑。一个好的编辑应该为你做到这一点。 (Emacs 中的版本控制)
    • 嗯,这是一个冗长的讨论,老实说,我没有阅读它,因为在几次 cmet 之后我找不到任何相关的新点。
    【解决方案5】:

    系统必须自己构建,自己测试,自己下载+构建依赖。 我有一个 makefile 下载、构建和部署运行时环境,该环境已针对我的主干版本进行了“认证”。这个 makefile 也被提交到存储库中。

    记得提交另一件非常重要但最容易被忽视的事情(一共三件):

    • 创建数据库布局的 SQL 代码(在上面放一个版本!)。
    • 调出数据库布局版本(升级)的 SQL 代码
    • 降低数据库布局版本(降级)的 SQL 代码

    【讨论】:

      【解决方案6】:

      如果您通过了“乔尔测试”中的这些问题,那么您应该走在正确的道路上:

      您使用源代码管理吗?
      您每天都进行构建吗?
      您有错误数据库吗?
      在编写新代码之前,您会修复错误吗?

      我的 #1 是:您可以一步构建吗?

      The Joel Test

      【讨论】:

        【解决方案7】:

        “获取最新”和“构建”的整个过程应该是顺畅、轻松、快速和可靠的。

        如果不是,开发人员往往会跳过获取最新版本并继续处理过时的副本,这是您要避免的事情。

        这或多或少是迈克尔所说的-但我想强调的是,除了分支是神圣和稳定的之外-整个过程应该快速而简单

        有点像 Google 的理念,即下载\安装应该快速简单

        【讨论】:

          【解决方案8】:

          作为 SCM 经理,我可以在这个问题上给您的最佳答案是“视情况而定”。您的列表和列表中项目的重要性顺序将取决于您的项目要求、您使用的语言和开发人员级别。

          在您汇总的任何列表中,您可能要考虑对我很重要(或 #1)的一件事是,您的工具的主干或主要分支受到非常严格的控制,只有极少数人可以访问导入或提交更改。这将在发布时省去很多麻烦。

          可以在您放在一起的任何列表中的项目是:

          • 签到时间(每天、每周、更频繁、更不频繁)
          • 构建完成时(每天、每周等)
          • 使用双存储库(工程与生产)
          • 允许存储库中的二进制文件
          • 允许存储库中的第三方软件
          • 构建存储库所需的所有项目
          • 当导入或提交到主干时
          • 使用一个文件导出和构建
          • 允许签入有/没有错误报告信息
          • 执行签到评论标准

          该列表可以根据您的具体要求继续进行,但我认为您对这里的内容有所了解。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-03-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-03
            • 1970-01-01
            • 1970-01-01
            • 2016-02-05
            相关资源
            最近更新 更多