使用 Visual Studio 2008 和 SVN 在 C++ 中进行自动版本控制

Posted

技术标签:

【中文标题】使用 Visual Studio 2008 和 SVN 在 C++ 中进行自动版本控制【英文标题】:Autoversioning in C++ with Visual Studio 2008 and SVN 【发布时间】:2014-01-20 01:55:11 【问题描述】:

我正在使用 MS Visual Studio 2008 在 C++ 中进行一些开发工作,目前我们有一个版本函数,它返回一个表示版本号的硬编码字符串。我想找到一种方法,而不是硬编码的数字,它可以从 1 开始,每次我进行调试或发布构建时递增 1(或者更好的是,跟踪调试版本和发布版本号)。或者,如果这不可能,请使用当前日期/时间作为版本号。

请注意,由于将有几个人在项目上工作并使用 SVN,因此代码必须独立于计算机(这意味着如果我当前使用版本 100,我同事的最后一个版本是版本 90,那么下一个时间(在我签入代码,同事拉出代码后),他下一次编译的版本号应该是101而不是91。)

你能帮忙吗?

【问题讨论】:

有些人使用 SVN 版本号来做到这一点。 如果你有一些服务器每天构建,你可以让它在每个构建新的构建号上提交。它可以是一个脚本,它将在 ie 中增加一些值。 version.cpp 文件。 @Bathsheba 有关如何实施的详细信息? 相关:***.com/questions/2328724/… 发布应用时Visual Studio没有设置版本号(包括自动增量)吗? 【参考方案1】:

如果您使用 TortoiseSVN,您可以在预构建事件中使用 subwcrev.exe 将当前修订号写入源文件。

因此,检查文件 version.template.hpp 并添加类似

  const string version = "13.12.0.$WCREV$";

添加项目预构建事件

subwcrev.exe "$(SolutionDir)." "$(ProjectDir)version.template.hpp" 
             "$(ProjectDir)version.hpp"

并包含生成的文件#include "version.hpp"

【讨论】:

这是我们实际使用的,但它究竟是如何工作的?我是否需要进行更改,签入代码,获取版本号,签出代码然后编译程序? @Bathsheba 我们在14.01.01.10345 等版本中将此用作附加编号,其中 14.01.01 是 2014 年 1 月 1 日发布的版本,在部署前手动编辑。用户不关心 10345... @AZhu subwcrev.exe 使用工作副本的版本。该数字不会在每次构建时更改,而是在每次提交时更改。见编辑... 我不想在源代码中保留版本,而是想在 .exe 属性中查看版本(一种更快的方式)。因此,我没有生成“version.hpp”文件,而是生成了“Project.rc”文件(任何名称都有项目的 RC 文件),在其中我将 SVN 修订版放在版本字段中,一切正常。 【参考方案2】:

如果您想在构建解决方案(调试、发布或两者兼有)时自动执行操作,Visual Studio 具有自定义构建事件/步骤,您可以使用这些事件/步骤来触发程序或脚本以执行您想要的任何操作。 hansmaad 的答案可能不是您想要的,因为没有“每个构建的自动增量”,而是我认为这个想法是将 SVN 的某个文件的版本号放入编译的源文件中。这使得对我来说很有意义,因为它允许您将构建绑定到 SVN 中的某个源快照。

我认为合并这两个想法(自动构建增量和源代码控制版本文件)有点问题......当两个开发人员从版本 X 开始并构建和更新版本到 X+1 时会发生什么?提交时应优先考虑哪一个。我想它会最后提交他们的更改,但在我看来,这没有任何意义。换句话说,我机器上的 Y 版本与我同事机器上的 Y 版本不同。

对我来说,拥有一个使用自动递增版本标记构建的发布过程更有意义,而不是让每个开发人员的构建都自动递增。

【讨论】:

以上是关于使用 Visual Studio 2008 和 SVN 在 C++ 中进行自动版本控制的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2012 中编辑 s-s-rS 2008R2 报告?

图表构建不正确(MS Visual Studio Reports 2008)

Visual Studio 2008中MFC程序cstring转成char??急!!!大家帮下啊

使用部分类和设计器文件将 Visual Studio 2003 表单转换为 Visual Studio 2005/2008 表单

Microsoft Visual Studio 2008安装教程

从 Visual Studio 2008 升级到 Visual Studio 2010 速成版