通过脚本生成关联SVN的C/C++源文件
概述
将svn的信息通过脚本生成到C/C++文件中,然后通过使用该文件。
好处:可以将程序的信息与svn关联起来,当出错的时候能很好的定位问题处于当前svn代码提交位置 。
废话不多说,后期有新的理解会继续完善。
注: 本文很多地方估计不入大佬法眼,勿喷. 欢迎留言指正。
版本命名参考
v1.1.1(11999-201911121445)
v1.1.1 // 代码自己管理
11999 // svn当前提交代码的最高版本
剩余部分 // 日期时间(到分钟)
步骤
1. 检索代码到本地(必须,否则后面没必要继续了)。
2. 编写脚本(目前采用的是 .bat, LINUX、MAC下应该类似,只是脚本或脚本文件后缀不一样)。
3. 编写模板(里面的内容可以随便写,乱七八糟都可以,你开心就好)
4. 使用脚本生成的。
实际操作以及参考
检索代码(略)
编写脚本
subwcrev.exe . version_template.c version.c
模板编写
version_template.c
// 可以在这里添加一些 自定义的宏、头文件、或是提供一些接口(当然, 你可以把这些接口写到 version.h 中去)
//@brief: 获取构建版本信息,组装
const char *GetBuildVersion()
{
return "v1.1.1(11999-201911121445)";
}
/************************************************************************/
/* SVN auto version */
/************************************************************************/
//@brief: 当前svn上的能访问的最高提交版本
const char *SvnGetRevision(void)
{
return "$WCREV$";
}
//@brief: 当前svn能访问的最高版本号的时间
const char *SvnGetDate(void)
{
return "$WCDATE$";
}
//@brief: 返回当前你的svn能访问的范围(这不一定对)
const char *SvnGetRange(void)
{
return "$WCRANGE$";
}
//@brief: 检索代码的svn地址
const char *SvnGetURL(void)
{
return "$WCURL$";
}
//@brief: 若本地有文件修改了没有提交,则 返回true, 否则返回 false
bool SvnModified(void)
{
return $WCMODS?true:false$;
}
执行脚本(略)
执行脚本后会有生成 version.c 文件, 内容如下
// 可以在这里添加一些 自定义的宏、头文件、或是提供一些接口(当然, 你可以把这些接口写到 version.h 中去)
//@brief: 获取构建版本信息,组装
const char *GetBuildVersion()
{
return "v1.1.1(11999-201911121445)";
}
/************************************************************************/
/* SVN auto version */
/************************************************************************/
//@brief: 当前svn上的能访问的最高提交版本
const char *SvnGetRevision(void)
{
return "11999";
}
//@brief: 当前svn能访问的最高版本号的时间
const char *SvnGetDate(void)
{
return "2019/11/12 14:45:33";
}
//@brief: 返回当前你的svn能访问的范围(这不一定对)
const char *SvnGetRange(void)
{
return "11000:11999";
}
//@brief: 检索代码的svn地址
const char *SvnGetURL(void)
{
return "检索代码的SVN地址";
}
//@brief: 若本地有文件修改了没有提交,则 返回true, 否则返回 false
bool SvnModified(void)
{
return false;
}