本文适用于使用Subversion版本控制的读者.
前一段时间研究了一下TortoiseSVN的源代码 , 发现它使用 Nant+SubWCRev.exe 来自动生成版本号的. SubWCRev.exe 是TortoiseSVN下的一个命令行工具, 安装了TortoiseSVN 就找到它. 这里补充一下TortoiseSVN的版本号命名方式, 它的版本号是: 主版本号(MajorVersion).从版本号(MinorVersion).小版本号(MicroVersion) build svn代码库的修订版本号, 其中主版本号(MajorVersion), 从版本号(MinorVersion), 小版本号(MicroVersion) 是通过配置文件固定的.
在前一个项目中, 我用的就是TortoiseSVN的这种方式来自动生成版本号. 后来我想把它也移植到linux下, 刚开始时遇到了问题, 就改用python + pysvn 来实现这个功能. 以下是代码:
MakeVersion.py 是实现代码
#
--*-- coding:cp936 --*--
"""
@file: MakeVersion.py
自动生成版本号
@author: riag
@contract: riag@163.com, http://blog.csdn.net/riag
@version: 0.12
@attention: 需要安装pysvn模块
"""
import pysvn
import sys
import os
import time
from string import Template
import traceback
import VersionConf
VersionText = """
#define FILEVER ${MajorVersion},${MinorVersion},${MicroVersion},${WCREV}
#define PRODUCTVER ${MajorVersion},${MinorVersion},${MicroVersion},${WCREV}
#define STRFILEVER "${MajorVersion}, ${MinorVersion}, ${MicroVersion}, ${WCREV}/0"
#define STRPRODUCTVER "${MajorVersion}, ${MinorVersion}, ${MicroVersion}, ${WCREV}/0"
#define VERMAJOR ${MajorVersion}
#define VERMINOR ${MinorVersion}
#define VERMICRO ${MicroVersion}
#define VERBUILD ${WCREV}
#define BUILDNUMBER "${MajorVersion}.${MinorVersion}.${MicroVersion}, build ${WCREV}"
#define VERDATE
"""
@file: MakeVersion.py
自动生成版本号
@author: riag
@contract: riag@163.com, http://blog.csdn.net/riag
@version: 0.12
@attention: 需要安装pysvn模块
"""
import pysvn
import sys
import os
import time
from string import Template
import traceback
import VersionConf
VersionText = """
#define FILEVER ${MajorVersion},${MinorVersion},${MicroVersion},${WCREV}
#define PRODUCTVER ${MajorVersion},${MinorVersion},${MicroVersion},${WCREV}
#define STRFILEVER "${MajorVersion}, ${MinorVersion}, ${MicroVersion}, ${WCREV}/0"
#define STRPRODUCTVER "${MajorVersion}, ${MinorVersion}, ${MicroVersion}, ${WCREV}/0"
#define VERMAJOR ${MajorVersion}
#define VERMINOR ${MinorVersion}
#define VERMICRO ${MicroVersion}
#define VERBUILD ${WCREV}
#define BUILDNUMBER "${MajorVersion}.${MinorVersion}.${MicroVersion}, build ${WCREV}"
#define VERDATE