版本信息的最佳做法?

时间:2008-10-22 15:58:45

标签: language-agnostic versioning

我目前正致力于自动化/改进包装我店铺整个产品的发布流程。目前该产品是:

的组合
  • Java服务器端代码库
  • XML配置和应用程序文件
  • 管理员的Shell和批处理脚本
  • 静态提供的HTML页面
  • 和其他一些东西,但大部分都是

其中包含各种或大部分版本信息,用于不同目的。发布打包过程的一部分涉及进行大量查找,grep'ing和sed'ing(在脚本中)以更新信息。这种包装产品的胶水似乎是以有机的,及时的方式拼凑在一起,维护起来非常糟糕。例如,某些Java方法在发布时创建Date对象,其参数由文本替换更新,无需编译器验证... just,urgh。

我正在尝试避免提供使用的实际软件(例如CVS,SVN,ant等)的示例,因为我想避免“使用xyz的功能来执行此操作”并将更多精力放在一般实践上。我想责怪这个问题的劣质设计,但如果我不得不重新开始,仍然使用不同的技术,我不确定如何最好地处理这个问题,除了制定惯例。

我的问题是,是否有关于跨不同技术,文件类型,平台和版本控制系统维护和更新版本信息的最佳实践或提示和技巧?

3 个答案:

答案 0 :(得分:3)

创建一个包含版本号的属性文件,并让所有不同的组件引用属性文件

  • Java文件可以通过
  • 引用属性
  • XML可以使用includes?
  • HTML可以使用JavaScript从HTML
  • 中的属性中编写版本号
  • Shell脚本可以读入文件

答案 1 :(得分:2)

确实,要完成Craig Angus的回答,这里的经验法则应该是 不包括正常传递文件中的任何元信息 ,但要报告这些元数据-data(版本号,发布日期等)到一个特殊文件中 - 包含在发行版中 - 。

当您使用一个VCS(版本控制系统)工具从开发到认证到预生产时,这会有所帮助。
这意味着无论何时加载工作区(用于开发,测试或准备发布到生产中),它都是版本控制工具,它为您提供所有细节。

当您准备交付(一组打包文件)时,您应该询问VCS工具有关您要保留的每个元信息,并将它们写入包含在上述文件集中的特殊文件中。

该传递应该打包在外部目录(任何工作空间之外)和:

  • 复制到共享目录(或maven存储库),如果它是非官方版本(但只是一个快速包装,用于帮助隔壁的团队等待您的交付)。这样你每天可以赚10或20,这没关系:它们很容易丢弃。

  • 导入到VCS中以作为正式交付,并且为了便于部署,因为您只需要向版本控制工具询问正确版本的正确交付,并且您可以开始部署它

注意:我刚刚描述了一个主要用于许多相互依赖项目的发布管理流程。对于一个小型单个项目,您可以跳过VCS工具中的导入并将交付存储在其他位置。

答案 2 :(得分:0)

除了Craig Angus之外,还包括使用的工具版本。