在visualc+中使用Git进行自动版本控制+; 我在VS2013中有一个C++项目。在过去的类似项目中,我使用SubWCRev和Subversion自动生成版本号。我有这样一个模板文件: #define MAJOR_VERSION 2 #define MINOR_VERSION 2 #define MICRO_VERSION 0 #define BUILD_VERSION $WCMODS?$WCREV$+1:$WCREV$$ #define QUOTE_(x) #x #define QUOTE(x) QUOTE_(x) #define BUILD_VERSION_STRING QUOTE(MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION.BUILD_VERSION)

在visualc+中使用Git进行自动版本控制+; 我在VS2013中有一个C++项目。在过去的类似项目中,我使用SubWCRev和Subversion自动生成版本号。我有这样一个模板文件: #define MAJOR_VERSION 2 #define MINOR_VERSION 2 #define MICRO_VERSION 0 #define BUILD_VERSION $WCMODS?$WCREV$+1:$WCREV$$ #define QUOTE_(x) #x #define QUOTE(x) QUOTE_(x) #define BUILD_VERSION_STRING QUOTE(MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION.BUILD_VERSION),c++,git,visual-c++,C++,Git,Visual C++,然后,我运行SubWCRev作为预构建步骤,以生成包含在项目中的头文件,以定义版本号 我现在正在使用Git,想做一些类似的事情。我知道Git没有一个与修订号相同的版本号,但是头部SHA就可以了 似乎没有一种与Git相同的方法来实现这一点,我需要编写一些脚本,这不是我的强项。Git专家能为我指出实现这一目标的正确方向吗?我正在使用Git Descripte的输出作为构建字符串。我不用窗户 这个例子在Linux下运行良好 版本.h #ifndef GIT_VERSION_H #define GIT_

然后,我运行SubWCRev作为预构建步骤,以生成包含在项目中的头文件,以定义版本号

我现在正在使用Git,想做一些类似的事情。我知道Git没有一个与修订号相同的版本号,但是头部SHA就可以了


似乎没有一种与Git相同的方法来实现这一点,我需要编写一些脚本,这不是我的强项。Git专家能为我指出实现这一目标的正确方向吗?

我正在使用Git Descripte的输出作为构建字符串。我不用窗户

这个例子在Linux下运行良好

版本.h

#ifndef GIT_VERSION_H
#define GIT_VERSION_H
extern const char* git_version;
#endif
c版由awk生成

git describe | awk 'BEGIN { print "#include \"version.h\"" } { print "const char* git_version = \"" $$0 "\";"} END {}' > version.c

Dirk

我终于找到了一个非常有用的批处理文件,它实际上比我需要的要多:

它的工作基本上与SubWCRev非常相似,并生成一个头文件,我可以将其包含在我的VS项目中,以设置所有版本字符串。在对脚本进行了一点修改之后,我已经让它完全按照我的意思来做了

这里也有一个C版本:


在简单的情况下,以下命令行可能就足够了:

git rev-list HEAD --count

--打印修订的数量,如“123”。

使用最新的Ortoisegit 2.7.0,您只需将SubWCRev替换为GitWCRev即可获得相同的结果。修订版将使用git的SHA1。

您是否找到过为主/次/微/构建设置定义值的解决方案?由于windows操作系统没有与unix系统相同的功能,GIT也没有提供与subwcrev相同的功能,因此我正在寻找完全相同的答案。BUILD_版本实际上是SHA-1散列。