CN102915233A - 软件程序的基线版本管理方法及系统 - Google Patents

软件程序的基线版本管理方法及系统 Download PDF

Info

Publication number
CN102915233A
CN102915233A CN2011102213507A CN201110221350A CN102915233A CN 102915233 A CN102915233 A CN 102915233A CN 2011102213507 A CN2011102213507 A CN 2011102213507A CN 201110221350 A CN201110221350 A CN 201110221350A CN 102915233 A CN102915233 A CN 102915233A
Authority
CN
China
Prior art keywords
file
sound code
code file
binary program
baseline version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011102213507A
Other languages
English (en)
Other versions
CN102915233B (zh
Inventor
母天石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201110221350.7A priority Critical patent/CN102915233B/zh
Priority claimed from CN201110221350.7A external-priority patent/CN102915233B/zh
Publication of CN102915233A publication Critical patent/CN102915233A/zh
Application granted granted Critical
Publication of CN102915233B publication Critical patent/CN102915233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供了一种软件程序的基线版本管理方法,包括以下步骤:对二进制程序进行源码解析,记录所述二进制程序对应的源码文件;监控二进制程序的上线单的状态;根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新。采用上述方法能够在软件开发的并行开发模式下获取到准确的代码版本。此外,还提供了一种软件程序的基线版本管理系统。

Description

软件程序的基线版本管理方法及系统
【技术领域】
本发明涉及软件技术,尤其涉及一种软件程序的基线版本管理方法及系统。
【背景技术】
在软件开发中,很多情况下都需要多人团队并行开发,在并行开发的模式下,多人会同时修改同一份代码文件,并且修改后的代码文件的上线时间也不同。当代码文件上线时若需要修改代码文件,传统的做法是获取最新成功上线的版本,然而,最新成功上线的版本很可能是错误的甚至是上线失败的,因此,传统的软件的并行开发模式下,很难获取到准确的代码版本。此外,传统的处于一个大项目的子项目拆分,不能布置一个子项目的基线版本环境,也很难各自获取到子项目的代码。
【发明内容】
基于此,有必要提供一种能得到准确的代码版本的软件程序的基线版本管理方法。
一种软件程序的基线版本管理方法,包括以下步骤:
对二进制程序进行源码解析,记录所述二进制程序对应的源码文件;
监控二进制程序的上线单的状态;
根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新。
在优选的实施例中,所述源码文件包括cpp文件及所述cpp文件引用的hpp文件;所述对二进制程序进行源码解析,记录二进制程序对应的源码文件的步骤包括:
执行指令,得到编译中间结果;
对所述编译中间结果进行扫描,得到cpp文件组成及其引用的hpp文件组成;
将所述得到的cpp文件组成、hpp文件组成与二进制程序的对应关系记录到二进制源码解析对应表中。
在优选的实施例中,所述根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新的步骤包括:
当所述上线单的状态为全面上线成功时,查找二进制程序对应的源码文件,从版本管理服务器获取所述源码文件的当前版本号,将所述源码文件的当前版本号记录为所述源码文件对应的当前基线版本号。
在优选的实施例中,所述对所述源码文件的基线版本号进行更新的步骤包括:
当所述上线单的状态为全面回退时,查找二进制程序对应的源码文件,将所述源码文件的当前基线版本号修改为上一版本号。
在优选的实施例中,所述方法还包括:创建基线版本数据表,所述基线版本数据表用于记录源码文件与源码文件的当前基线版本号、至少一个历史基线版本号的对应关系。
此外,还有必要提供一种能得到准确的代码版本的软件程序的基线版本管理系统。
一种软件程序的基线版本管理系统,包括:
源码解析模块,用于对二进制程序进行源码解析,记录所述二进制程序对应的源码文件;
监控模块,用于监控二进制程序的上线单的状态;
基线版本管理模块,用于根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新。
在优选的实施例中,所述源码文件包括cpp文件及所述cpp文件引用的hpp文件;所述源码解析模块包括:
指令执行模块,用于执行指令,得到编译中间结果;
扫描模块,用于对所述编译中间结果进行扫描,得到cpp文件组成及其引用的hpp文件组成;
记录模块,用于将所述得到的cpp文件组成、hpp文件组成与二进制程序的对应关系记录到二进制源码解析对应表中。
在优选的实施例中,所述基线版本管理模块用于当所述上线单的状态为全面上线成功时,查找二进制程序对应的源码文件,从版本管理服务器获取所述源码文件的当前版本号,将所述源码文件的当前版本号记录为所述源码文件对应的当前基线版本号。
在优选的实施例中,所述基线版本管理模块还用于当所述上线单的状态为全面回退时,查找二进制程序对应的源码文件,将所述源码文件的当前基线版本号修改为上一版本号。
在优选的实施例中,基线版本数据表创建模块,用于创建基线版本数据表,所述基线版本数据表用于记录源码文件与源码文件的当前基线版本号、至少一个历史基线版本号的对应关系。
上述软件程序的基线版本管理方法及系统,通过监控二进制程序的上线单的状态,根据上线单的状态对上线的二进制程序对应的源码文件的基线版本号进行更新,由于对二进制程序的源码文件的基线版本号进行了有效的管理,因此能够得到准确的代码版本。
【附图说明】
图1为一个实施例中软件程序的基线版本管理方法的流程示意图;
图2为图1中步骤S102的流程示意图;
图3为一个实施例中软件程序的基线版本管理系统的结构示意图;
图4为图3中源码解析模块的结构示意图。
【具体实施方式】
本发明通过对二进制程序进行源码解析,记录二进制程序对应的源码文件,由于在二进制程序的上线过程中,二进制程序的上线单的状态可以进行修改,通过监控二进制程序的上线单的状态,根据上线单的状态查找到二进制程序对应的源码文件,对查找到的这些源码文件的基线版本号进行更新。由于根据二进制程序的上线单的状态的不同,会对二进制程序对应的源码文件的基线版本号进行更新,从而对二进制程序的源码文件的基线版本号进行了有效管理,通过更新的基线版本号能够得到准确的代码版本。
在一个实施例中,如图1所示,一种软件程序的基线版本管理方法,包括以下步骤:
步骤S10,对二进制程序进行源码解析,记录二进制程序对应的源码文件。
在一个实施例中,上线的二进制程序为由一系列c/c++源代码编译生成的,例如.so文件、.cgi文件等。这里的c/c++源代码包括cpp文件和hpp文件,其中cpp文件为由c++语言编写的源代码文件(即源码文件),而hpp文件为cpp文件的头文件。本实施例中,对二进制程序进行源码解析包括对cpp文件的解析和对hpp文件的解析。
在一个实施例中,如图2所示,步骤S10的具体过程为:
步骤S102,执行指令,得到编译中间结果。
步骤S104,对编译中间结果进行扫描,得到cpp文件组成及其引用的hpp文件组成。
解析cpp文件时,可通过Linux GNU的make工具加上指定参数生成二进制编译的详情(即编译中间结果),该指令为:make-n-B-i-k目标文件程序名。其中,目标程序文件名是指需要进行源码解析的二进制程序的文件名,例如libA.so、Axx.cgi等;-n表示打印模拟编译过程,但不真正执行编译;-B表示所有的目标都需要更新编译;-i表示在执行时忽略所有的错误;-k表示出错也不停止运行。运行上述指令后,得到编译中间结果,例如形如“g++-g-I/path1-I/path2-I.../pathN-o xxxxx.o的文本。
对上述得到的文本进行扫描,得到完整的cpp文件组成。下面以一个.so的二进制程序为例说明上述扫描过程。通过执行指令make-n-B libtest.so,得到输出文本。通过固定特征的分隔符例如“\r\n”将得到的文本分隔为若干行,每一行则是一个.o文件(对象文件)的生成过程;依次循环上述得到的所有文本行,通过正则匹配判断是否存在.cpp/.c文件,如果存在,则正则匹配该行,并判断是否有生成.o文件,如果有生成.o文件,则记录.cpp/.c与.o的映射关系,否则循环到下一行;如果正则匹配判断到不存在.cpp/.c文件,则进一步判断是否存在.so文件,如果存在.so文件,则正则匹配出当前行.so文件包含的所有.o文件,并记录.so与.o的映射关系;通过上述两个映射关系,即可得到.so与.cpp/.c的映射关系,从而得到.so文件的完整的cpp文件组成。
解析hpp文件时,可通过Linux g++编译器加上指定参数得到cpp/c源码引用的所有.h头文件,具体指令如下:g++-MM xxxx.cpp|xxxx.c-I1-I2-I3。其中,-MM表示指定cpp/c源码引用到的非系统定义的h定义文件;-I指定了编译此源程序引用到的h文件路径。运行上述指令后,得到编译中间结果,例如形如“xxxx.0:xxxx.cpp
hpp1\
hpp2\
hpp3\
hpp4”的文本。
对上述得到的文本进行扫描,即可得到完整cpp文件所引用到的hpp文件组成。该扫描过程为:通过固定特征的分隔符例如“\r\n”将得到的文本分隔为若干行;依次扫描每一行,去掉空行和末尾\n和一些无用的中间过程信息;对每一行,执行:如果本行包含有多个.h/.hpp文件,则将多个.h/.hpp文件拆分,分为多行;如果本行包含../相对路径,则恢复该文件的绝对路径;如果本行包含./的相对路径,则恢复该文件的绝对路径;如果本行包含/当前路径,则恢复该文件的绝对路径。扫描所有的文本行后,将所有的.h/.hpp文件排重,则得到cpp文件所引用到的.h/.hpp文件集合。
在一个实施例中,每天按照固定频率(例如每隔3小时)去扫描二进制程序的文件组成,每次扫描后得到的cpp文件和hpp文件通过插入指令和删除指令更新到数据库中。例如前一次对二进制程序liba.so进行扫描得到文件组成为a.cpp、b.cpp和c.cpp,当前扫描得到的文件组成为a.cpp、b.cpp和d.cpp,由于a.cpp和b.cpp在前一次扫描得到的文件组成中已存在,因此不需要对a.cpp和b.cpp进行处理。而d.cpp在前一次扫描得到的文件组成中不存在,因此对d.cpp需执行插入指令(即Insert指令),将d.cpp插入。另由于当前扫描得到的文件组成中不存在c.cpp,因此需要对c.cpp执行删除指令(即Delete指令),将c.cpp删除,并更新数据库。
步骤S106,将得到的cpp文件组成、hpp文件组成与二进制程度的对应关系记录到二进制源码解析对应表中。
在一个实施例中,二进制源码解析对应表如表1所示:
表1
Figure BDA0000080923870000061
表1中,记录了对二进制程序Libtest.so进行源码解析后所得到的所有cpp文件及其引用的hpp文件。
步骤S20,监控二进制程序的上线单的状态。
二进制程序上线是指将编译产生的二进制程序发布到用户访问的互联网。每个二进制程序的上线过程可采用上线单来记录,例如记录为“张三在12:00提单A需要上线libA.so、Axx.cgi”,其中,libA.so、Axx.cgi为需要上线的二进制程序。在二进制程序的上线过程中,用户根据上线的情况来修改上线单的状态。
二进制程序的上线单的状态包括提单、全面上线中、全面上线成功、全面上线失败和全面回退。其中,提单是指提交上线单;全面上线中是指二进制程序处于正在上线的状态,由于大部分互联网站点都是由若干台对等服务器组成,需要一次将二进制程序从若干台服务器逐个上线,因此上线是有时间过程的;全面上线成功是指二进制程序都上线成功;全面上线失败是指二进制程序上线失败;全面回退是指二进制程序上线失败后,需要将上线的二进制程序撤离用户访问的互联网,并将运行在互联网的二进制程序改为原来的版本。
步骤S30,根据上线单的状态查找二进制程序对应的源码文件,对查找到的源码文件的基线版本号进行更新。
在一个实施例中,上述方法还包括:创建基线版本数据表,基线版本数据表中记录了源码文件与源码文件的当前基线版本号、至少一个历史基线版本号的对应关系。在一个实施例中,基线版本数据表中记录的字段如表2所示,其中记录了两个最近的历史基线版本号:
表2
  源码文件名   当前基线版本号  历史基线版本号1  历史基线版本号2
在一个实施例中,当二进制程序全面上线成功后,用户修改上线单的状态为全面上线成功,当监控到上线单的状态为全面上线成功时,则立即查找二进制程序对应的源码文件,从版本管理服务器获取源码文件的当前版本号,将源码文件的当前版本号记录为源码文件对应的当前基线版本号。
本实施例中,从上述生成二进制源码解析对应表中查找全面上线成功的二进制程序所对应的源码文件。上述实施方式的版本管理服务器为svn(subversion,一种版本管理工具)服务器,源代码可通过svn服务进行管理,svn服务是开源免费的,在svn服务器上记录了源代码的各种版本。例如,A.cpp文件在2011年1月1日被张三上传及创建于svn服务器,svn服务器为其分配了版本号为V1,在2011年2月23日由被李四修改过并上传到svn服务器,svn服务器为其分配了版本号V2。本实施例中,从svn服务器获取到源码文件的当前版本号,将获取到的当前版本号记录为源码文件对应的当前基线版本号。本实施例中,将获取到的当前版本号更新到基线版本数据表中的当前基线版本号字段,并相应更新两个历史基线版本号。
在另一个实施例中,当二进制程序全面上线失败后,需要将当前上线的二进制程序撤离用户访问的互联网,并改为原版本的二进制程序,用户则将上线单的状态修改为全面回退,即回退到上一版本的二进制程序。当监控到上线单的状态为全面回退时,查找二进制程序对应的源码文件,将该源码文件的当前基线版本号修改为上一版本号。
本实施例中,查找上述生成的二进制程序解析对应表中二进制程序对应的源码文件,将基线版本数据表中该源码文件对应的当前基线版本号修改为上一版本号。上一版本号可设置为历史基线版本号1或历史基线版本号2,这样,将当前基线版本号直接修改为历史基线版本号1或历史基线2即可,同时更新基线版本数据表中的历史基线版本号。
如图3所示,一种软件程序的基线版本管理系统,包括源码解析模块10、监控模块20和基线版本管理模块30,其中:
源码解析模块10用于对二进制程序进行源码解析,记录二进制程序对应的源码文件。
在一个实施例中,上线的二进制程序为由一系列c/c++源代码编译生成的,例如.so文件、.cgi文件等。这里的c/c++源代码包括cpp文件和hpp文件,其中cpp文件为由c++语言编写的源代码文件(即源码文件),而hpp文件为cpp文件的头文件。本实施例中,对二进制程序进行源码解析包括对cpp文件的解析和对hpp文件的解析。
在一个实施例中,源码文件包括cpp文件及cpp文件引用的hpp文件。如图4所示,源码解析模块10包括指令执行模块110、扫描模块120和记录模块130,其中:
指令执行模块110用于执行指令,得到编译中间结果。
扫描模块120用于对编译中间结果进行扫描,得到cpp文件组成及其引用的hpp文件组成。
源码解析模块10在解析cpp文件时,可通过Linux GNU的make工具加上指定参数生成二进制编译的详情(即编译中间结果)。指令执行模块110执行的指令为:make-n-B-i-k目标程序名。其中,目标程序文件名是指需要进行源码解析的二进制程序的文件名,例如libA.so、Axx.cgi等;-n表示打印模拟编译过程,但不真正执行编译;-B表示所有的目标都需要更新编译;-i表示在执行时忽略所有的错误;-k表示出错也不停止运行。运行上述指令后,得到编译中间结果,例如形如“g++-g-I/path1-I/path2-I.../pathN-o xxxxx.o”的文本。扫描模块120对该文本进行扫描,得到完整的cpp文件组成。
源码解析模块10解析hpp文件时,可通过Linux g++编译器加上指定参数得到cpp/c源码引用的所有.h头文件。指令执行模块110执行的指令如下:g++-MM xxxx.cpp|xxxx.c-I1-I2-I3。其中,-MM表示指定cpp/c源码引用到的非系统定义的h定义文件;-I指定了编译此源程序引用到的h文件路径。运行上述指令后,得到编译中间结果,例如形如“xxxx.0:xxxx.cpp
hpp1\
hpp2\
hpp3\
hpp4”的文本。扫描模块120对得到的文本进行扫描,即可得到完整cpp文件所引用到的hpp文件组成。关于cpp文件和hpp文件的扫描算法参照上文所述。
在一个实施例中,扫描模块120可每天按照固定频率(例如每隔3小时)去扫描二进制程序的文件组成,每次扫描后得到的cpp文件和hpp文件通过插入指令和删除指令更新到数据库中。例如前一次对二进制程序liba.so进行扫描得到文件组成为a.cpp、b.cpp和c.cpp,当前扫描得到的文件组成为a.cpp、b.cpp和d.cpp,由于a.cpp和b.cpp在前一次扫描得到的文件组成中已存在,因此不需要对a.cpp和b.cpp进行处理。而d.cpp在前一次扫描得到的文件组成中不存在,因此对d.cpp需执行插入指令(即Insert指令),将d.cpp插入。另由于当前扫描得到的文件组成中不存在c.cpp,因此需要对c.cpp执行删除指令(即Delete指令),将c.cpp删除,并更新数据库。
记录模块130用于将得到的cpp文件组成、hpp文件组成与二进制程度的对应关系记录到二进制源码解析对应表中。
在一个实施例中,二进制源码解析对应表如表1所示:
表1中,记录了对二进制程序Libtest.so进行源码解析后所得到的所有cpp文件及其引用的hpp文件。
监控模块20用于监控二进制程序的上线单的状态。
二进制程序上线是指将编译产生的二进制程序发布到用户访问的互联网。每个二进制程序的上线过程可采用上线单来记录,例如记录为“张三在12:00提单A需要上线libA.so、Axx.cgi”,其中,libA.so、Axx.cgi为需要上线的二进制程序。在二进制程序的上线过程中,用户根据上线的情况来修改上线单的状态。
二进制程序的上线单的状态包括提单、全面上线中、全面上线成功、全面上线失败和全面回退。其中,提单是指提交上线单;全面上线中是指二进制程序处于正在上线的状态,由于大部分互联网站点都是由若干台对等服务器组成,需要一次将二进制程序从若干台服务器逐个上线,因此上线是有时间过程的;全面上线成功是指二进制程序都上线成功;全面上线失败是指二进制程序上线失败;全面回退是指二进制程序上线失败后,需要将上线的二进制程序撤离用户访问的互联网,并将运行在互联网的二进制程序改为原来的版本。
基线版本管理模块30用于根据上线单的状态查找二进制程序对应的源码文件,对查找到的源码文件的基线版本号进行更新。
在一个实施例中,上述系统还包括:基线版本数据表创建模块(图中未示出),用于创建基线版本数据表,基线版本数据表中记录了源码文件与源码文件的当前基线版本号、至少一个历史基线版本号的对应关系。在一个实施例中,基线版本数据表中记录的字段如表2所示,其中记录了两个最近的历史基线版本号。
在一个实施例中,当二进制程序全面上线成功后,用户修改上线单的状态为全面上线成功。当监测模块20监控到上线单的状态为全面上线成功时,则通知基线版本管理模块30。基线版本管理模块30用于查找二进制程序对应的源码文件,从版本管理服务器获取源码文件的当前版本号,将源码文件的当前版本号记录为源码文件对应的当前基线版本号。
本实施例中,基线版本管理模块30从上述生成二进制源码解析对应表中查找全面上线成功的二进制程序所对应的源码文件。上述实施方式的版本管理服务器为svn(subversion,一种版本管理工具)服务器,源代码可通过svn服务进行管理,svn服务是开源免费的,在svn服务器上记录了源代码的各种版本。例如,A.cpp文件在2011年1月1日被张三上传及创建于svn服务器,svn服务器为其分配了版本号为V1,在2011年2月23日由被李四修改过并上传到svn服务器,svn服务器为其分配了版本号V2。本实施例中,从svn服务器获取到源码文件的当前版本号,将获取到的当前版本号记录为源码文件对应的当前基线版本号。本实施例中,将获取到的当前版本号更新到基线版本数据表中的当前基线版本号字段,并相应更新两个历史基线版本号。
在另一个实施例中,当二进制程序全面上线失败后,需要将当前上线的二进制程序撤离用户访问的互联网,并改为原版本的二进制程序,用户则将上线单的状态修改为全面回退,即回退到上一版本的二进制程序。当监控模块20监控到上线单的状态为全面回退时,则通知基线版本管理模块30。基线版本管理模块30用于查找二进制程序对应的源码文件,将该源码文件的当前基线版本号修改为上一版本号。
本实施例中,基线版本管理模块30用于查找上述生成的二进制程序解析对应表中二进制程序对应的源码文件,将基线版本数据表中该源码文件对应的当前基线版本号修改为上一版本号。上一版本号可设置为历史基线版本号1或历史基线版本号2,这样,将当前基线版本号直接修改为历史基线版本号1或历史基线2即可,同时更新基线版本数据表中的历史基线版本号。
上述软件程序的基线版本管理方法及系统中,对二进制程序进行源码解析时,通过执行简单的指令能够得到编译中间结果,对该中间结果进行扫描,能够快速获取到二进制程序对应的源码文件。由于可以按照固定的频率进行扫描,因此能够定时更新二进制程序的源码文件组成。在将二进制程序上线的过程中,通过监控二进制程序的上线单的状态,在用户修改上线单的状态时,能够立即根据上线单的状态更新源码文件的基线版本号,通过基线版本数据表对源码文件的基线版本进行了有效的管理,使得在软件的并行开发模式下,能够获取到准确的代码版本。
在处于一个大项目的子项目拆分中,通过上述软件程序的基线版本管理方法及系统,能够方便的各自获取到子项目的代码,因此可以布置一个子项目的基线版本环境。此外,通过指定版本的源码文件(如cpp文件、hpp文件),可以通过编译工具按照一定顺序编译出来整套二进制程序系统,例如编译CGI(Common Gateway Interface,通用网关接口,是实现web端http协议交互的一种程序方法,是由一系列源代码编译出来的二进制程序)程序组时,通过上述软件程序的基线版本管理方法及系统,能够获取到准确的代码版本,因此利用上述软件程序的基线版本管理方法及系统,能够部署一个全新的开发环境和测试环境。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种软件程序的基线版本管理方法,包括以下步骤:
对二进制程序进行源码解析,记录所述二进制程序对应的源码文件;
监控二进制程序的上线单的状态;
根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新。
2.根据权利要求1所述的软件程序的基线版本管理方法,其特征在于,所述源码文件包括cpp文件及所述cpp文件引用的hpp文件;所述对二进制程序进行源码解析,记录二进制程序对应的源码文件的步骤包括:
执行指令,得到编译中间结果;
对所述编译中间结果进行扫描,得到cpp文件组成及其引用的hpp文件组成;
将所述得到的cpp文件组成、hpp文件组成与二进制程序的对应关系记录到二进制源码解析对应表中。
3.根据权利要求1所述的软件程序的基线版本管理方法,其特征在于,所述根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新的步骤包括:
当所述上线单的状态为全面上线成功时,查找二进制程序对应的源码文件,从版本管理服务器获取所述源码文件的当前版本号,将所述源码文件的当前版本号记录为所述源码文件对应的当前基线版本号。
4.根据权利要求1所述的软件程序的基线版本管理方法,其特征在于,所述对所述源码文件的基线版本号进行更新的步骤包括:
当所述上线单的状态为全面回退时,查找二进制程序对应的源码文件,将所述源码文件的当前基线版本号修改为上一版本号。
5.根据权利要求1至4中任意一项所述的软件程序的基线版本管理方法,其特征在于,所述方法还包括:创建基线版本数据表,所述基线版本数据表用于记录源码文件与源码文件的当前基线版本号、至少一个历史基线版本号的对应关系。
6.一种软件程序的基线版本管理系统,其特征在于,包括:
源码解析模块,用于对二进制程序进行源码解析,记录所述二进制程序对应的源码文件;
监控模块,用于监控二进制程序的上线单的状态;
基线版本管理模块,用于根据所述上线单的状态查找二进制程序对应的源码文件,对所述查找到的源码文件的基线版本号进行更新。
7.根据权利要求6所述的软件程序的基线版本管理系统,其特征在于,所述源码文件包括cpp文件及所述cpp文件引用的hpp文件;所述源码解析模块包括:
指令执行模块,用于执行指令,得到编译中间结果;
扫描模块,用于对所述编译中间结果进行扫描,得到cpp文件组成及其引用的hpp文件组成;
记录模块,用于将所述得到的cpp文件组成、hpp文件组成与二进制程序的对应关系记录到二进制源码解析对应表中。
8.根据权利要求6所述的软件程序的基线版本管理系统,其特征在于,所述基线版本管理模块用于当所述上线单的状态为全面上线成功时,查找二进制程序对应的源码文件,从版本管理服务器获取所述源码文件的当前版本号,将所述源码文件的当前版本号记录为所述源码文件对应的当前基线版本号。
9.根据权利要求6所述的软件程序的基线版本管理系统,其特征在于,所述基线版本管理模块还用于当所述上线单的状态为全面回退时,查找二进制程序对应的源码文件,将所述源码文件的当前基线版本号修改为上一版本号。
10.根据权利要求6至9中任意一项所述的软件程序的基线版本管理系统,其特征在于,基线版本数据表创建模块,用于创建基线版本数据表,所述基线版本数据表用于记录源码文件与源码文件的当前基线版本号、至少一个历史基线版本号的对应关系。
CN201110221350.7A 2011-08-03 软件程序的基线版本管理方法及系统 Active CN102915233B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110221350.7A CN102915233B (zh) 2011-08-03 软件程序的基线版本管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110221350.7A CN102915233B (zh) 2011-08-03 软件程序的基线版本管理方法及系统

Publications (2)

Publication Number Publication Date
CN102915233A true CN102915233A (zh) 2013-02-06
CN102915233B CN102915233B (zh) 2016-12-14

Family

ID=

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984578A (zh) * 2014-05-29 2014-08-13 中国银行股份有限公司 一种cobol程序版本的更新方法及装置
CN104077217A (zh) * 2013-03-28 2014-10-01 腾讯科技(深圳)有限公司 代码文件的编译发布方法及系统
WO2015144012A1 (zh) * 2014-03-24 2015-10-01 深圳天珑无线科技有限公司 一种软件开发事务的实现方法及电子设备
CN105867903A (zh) * 2015-12-29 2016-08-17 乐视致新电子科技(天津)有限公司 代码库拆分的方法及装置
CN105975258A (zh) * 2016-04-27 2016-09-28 中国银行股份有限公司 一种数据字典的管理方法及系统
CN110888649A (zh) * 2018-09-10 2020-03-17 阿里巴巴集团控股有限公司 应用部署方法、应用基线的创建方法和装置
CN111782239A (zh) * 2020-06-03 2020-10-16 中移(杭州)信息技术有限公司 软件打包和源码版本信息获取方法、装置及存储介质
WO2021004042A1 (zh) * 2019-12-31 2021-01-14 深圳晶泰科技有限公司 药物研发软件仓库及其软件包管理系统
WO2021103495A1 (zh) * 2020-06-16 2021-06-03 深圳晶泰科技有限公司 一种用于药物设计系统的插件系统及其生成方法和更新方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987777A (zh) * 2005-12-19 2007-06-27 国际商业机器公司 在配置管理系统中基于活动版本选择的计算机方法和装置
US20070220507A1 (en) * 2006-03-20 2007-09-20 Microsoft Corporation Managing version information for software components
CN101075901A (zh) * 2006-05-18 2007-11-21 大唐移动通信设备有限公司 网元软件管理方法及系统
CN101877650A (zh) * 2010-05-20 2010-11-03 中兴通讯股份有限公司 一种自动更新软件版本的方法及系统
CN102043656A (zh) * 2011-01-20 2011-05-04 宇龙计算机通信科技(深圳)有限公司 软件管理方法、软件管理服务器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987777A (zh) * 2005-12-19 2007-06-27 国际商业机器公司 在配置管理系统中基于活动版本选择的计算机方法和装置
US20070220507A1 (en) * 2006-03-20 2007-09-20 Microsoft Corporation Managing version information for software components
CN101075901A (zh) * 2006-05-18 2007-11-21 大唐移动通信设备有限公司 网元软件管理方法及系统
CN101877650A (zh) * 2010-05-20 2010-11-03 中兴通讯股份有限公司 一种自动更新软件版本的方法及系统
CN102043656A (zh) * 2011-01-20 2011-05-04 宇龙计算机通信科技(深圳)有限公司 软件管理方法、软件管理服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JEROMEZZ: "Java二进制字节码文件解析", 《HTTP://WENKU.BAIDU.COM/VIEW/23692B60DDCCDA38376BAF4F.HTML?FROM=SEARCH》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077217B (zh) * 2013-03-28 2017-11-10 腾讯科技(深圳)有限公司 代码文件的编译发布方法及系统
CN104077217A (zh) * 2013-03-28 2014-10-01 腾讯科技(深圳)有限公司 代码文件的编译发布方法及系统
WO2015144012A1 (zh) * 2014-03-24 2015-10-01 深圳天珑无线科技有限公司 一种软件开发事务的实现方法及电子设备
US10120658B2 (en) 2014-03-24 2018-11-06 Shenzhen Tinno Wireless Technology Co., Ltd. Method and system for realizing software development tasks
CN103984578A (zh) * 2014-05-29 2014-08-13 中国银行股份有限公司 一种cobol程序版本的更新方法及装置
CN103984578B (zh) * 2014-05-29 2017-08-25 中国银行股份有限公司 一种cobol程序版本的更新方法及装置
CN105867903A (zh) * 2015-12-29 2016-08-17 乐视致新电子科技(天津)有限公司 代码库拆分的方法及装置
CN105975258A (zh) * 2016-04-27 2016-09-28 中国银行股份有限公司 一种数据字典的管理方法及系统
CN105975258B (zh) * 2016-04-27 2019-05-07 中国银行股份有限公司 一种数据字典的管理方法及系统
CN110888649A (zh) * 2018-09-10 2020-03-17 阿里巴巴集团控股有限公司 应用部署方法、应用基线的创建方法和装置
CN110888649B (zh) * 2018-09-10 2023-07-04 阿里巴巴集团控股有限公司 应用部署方法、应用基线的创建方法和装置
WO2021004042A1 (zh) * 2019-12-31 2021-01-14 深圳晶泰科技有限公司 药物研发软件仓库及其软件包管理系统
US11609758B2 (en) 2019-12-31 2023-03-21 Shenzhen Jingtai Technology Co., Ltd. Drug research and development software repository and software package management system
CN111782239A (zh) * 2020-06-03 2020-10-16 中移(杭州)信息技术有限公司 软件打包和源码版本信息获取方法、装置及存储介质
WO2021103495A1 (zh) * 2020-06-16 2021-06-03 深圳晶泰科技有限公司 一种用于药物设计系统的插件系统及其生成方法和更新方法

Similar Documents

Publication Publication Date Title
CN106033436B (zh) 一种数据库的合并方法
Deprez et al. Comparing assessment methodologies for free/open source software: OpenBRR and QSOS
CN101405696B (zh) 用于生成产品签名的方法和系统
US8489616B2 (en) Identifying software
GB2590327A (en) System and method for distributed ledger-based software supply chain management
CN112764753B (zh) 一种项目的部署方法、装置、电子设备及存储介质
CN111401029B (zh) 一种基于文档分区和协同编辑的文档版本更新系统和方法
CN104134109A (zh) 集成版本管理的工程组态方法及系统
CN104268216A (zh) 一种基于互联网信息的数据清洗系统
Moreno-Campos et al. Towards measuring the impact of the ISO/IEC 29110 standard: a systematic review
CN102483733A (zh) 在跟踪用户计算机上的产品期间同步用户和机器数据
CN104933101A (zh) 一种基于svn的配置审计信息自动统计方法
US8463792B2 (en) Identifying software
US20080201290A1 (en) Computer-implemented methods, systems, and computer program products for enhanced batch mode processing of a relational database
CN109189798B (zh) 一种基于spark同步更新数据的方法
CN104378397A (zh) 一种程序包增量更新发布的方法与系统
Luckie et al. Learning regexes to extract router names from hostnames
FI128995B (en) Grouping of objects in computer-aided modeling
CN108874503A (zh) 一种云平台应用集群的配置代理更新方法
CN102915233A (zh) 软件程序的基线版本管理方法及系统
CN103457968B (zh) 一种部署云服务的方法和系统
CN102915233B (zh) 软件程序的基线版本管理方法及系统
CN104462967A (zh) 文件恢复的方法、装置及系统
Vardigan et al. Creating Rich, Structured metadata: lessons learned in the metadata portal project
German et al. A Dataset of the Activity of the git Super-repository of Linux in 2012

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190807

Address after: 518000 Nanshan District science and technology zone, Guangdong, Zhejiang Province, science and technology in the Tencent Building on the 1st floor of the 35 layer

Co-patentee after: Tencent cloud computing (Beijing) limited liability company

Patentee after: Tencent Technology (Shenzhen) Co., Ltd.

Address before: Shenzhen Futian District City, Guangdong province 518044 Zhenxing Road, SEG Science Park 2 East Room 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.