2009-04-14 75 views
7

我以为我能参考其他开发者的东西就像一个列表:什么是源代码管理和配置管理最佳实践?

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

任何人都有这样的列表?优先顺序?


UPDATE - 增加了一些细节FYI

系统在问题包括C++和生成文件,爪哇与蚂蚁导致战争,以及PowerBuilder和C#GUI组件。所有代码都在执行。

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

回答

7

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

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

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

+0

恩,如果我可以问,什么是BVT? – bluezald 2012-07-24 03:37:33

1

这很大程度上取决于您建筑的环境是什么?

  • 它是C/MakeFile?
  • 它是Java/JUnit/Ant吗?
  • 它是.NET/NUnit/NAnt吗?
  • 它是.NET/MSUnit/MSBuild?
  • 它是红宝石......
  • 它是Python的...
  • 它是PHP

每一种方法中和设置不同。所以我们需要知道你的设置,然后才能得到帮助。

+0

增加了详细信息:有问题的系统由C++和makefiles组成,Java中带有导致WAR的ant,以及powerbuilder和C#gui组件。所有代码都在执行。 所以我正在寻找通用以及语言特定的最佳实践。 – 2009-04-14 23:23:16

1

我的头号项目:

  • 更新的时候,经常犯,

,或者杰夫所说的:Check In Early, Check In Often

+1

通过阅读该博客条目的评论,你会发现我强烈反对这种观点。版本控制系统旨在控制软件版本,而不是备份中间编辑。一个好的编辑应该为你做。 (Emacs中的版本控制) – 2009-04-14 22:09:17

0

如果您通过从“乔尔测试”这些问题,你应该在正确的道路上:

你使用源代码控制?
您是否每日制作?
你有错误数据库吗?
在编写新代码之前是否修复了错误?

我的第一个问题是:您可以一步完成构建吗?

The Joel Test

0

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

您可能想要考虑的一件事对您放在一起的任何列表来说都很重要(或#1),即您的工具的主干或主分支受到极大的控制,只有少数人可以访问导入或对其进行更改。这将在发布时节省大量头痛。

的项目,可以是任何名单上,你放在一起是:

  • 何时入住(每日,每周,更多的时候,不常)
  • 当建造完成后(每日,每周,等)
  • 使用双存储库(工程与生产)
  • 允许二进制文件库
  • 允许在库的第三方软件
  • 个在库中的所有必需的构建项目
  • 当进口或提交到主干完成
  • 使用一个文件导出并建立
  • 允许签入有/无缺陷报告信息
  • 强制签入注释标准

该列表可以继续和开放取决于您的具体要求,但我认为你得到的是这里的一般想法。

1

系统必须自行构建,自行测试,并自行下载+构建依赖关系。 我有一个生成文件下载,建立和部署一个运行时环境,这是我的中继版“认证”。这个makefile也被提交到版本库中。

记住犯下另一个非常重要的,而且大多被忽视的东西(有三种一捆):(!把一个版本就可以了)

  • 创建数据库布局的SQL代码。
  • ,带来了你的数据库布局版本的SQL代码(升级)
  • 带来了你的数据库布局版本的SQL代码(降级)
0

的“获取最新”的全过程, “建筑”应该平稳,轻松,快速和可靠。

如果不是,开发人员往往会忽略获取最新版本并继续研究其陈旧的副本,这是您想要避免的。

这是多了还是少了什么迈克尔所述 - 但我想强调的是超越分支是神圣和稳定 - 整个过程应该是快速和容易

有点像谷歌的理念是下载\安装应迅速和容易