一种基于Git随时发布代码的实现方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体地说是一种实用性强、基于Git随时发布代码的实现方法。
【背景技术】
[0002]Git作为分布式版本控制系统,因其便捷、高效性,被越来越多的开源项目所使用,并且一些传统的非开源项目,也开始逐步考虑使用Git来管理项目文件的版本。但是目前没有一种有效的方式基于Git进行随时、快速的发布,对于客户提出的比较紧急的问题,无法及时构建出发布包,不能做到及时响应。
[0003]基于此,本发明提供一种基于Git随时发布代码的实现方法,该方法通过定义Git中央库,通过Git钩子脚本监控中央库中的固定分支的提交,将提交版本转换成可以计算的自增编号,并且使用任务包与开发人员提交的源文件关联,可以灵活构建出针对客户需求或者bug的升级包,有效解决以上问题。
【发明内容】
[0004]本发明的技术任务是针对以上不足之处,提供一种实用性强、基于Git随时发布代码的实现方法。
[0005]一种基于Git随时发布代码的实现方法,其具体实现过程为:
一、首先管理员定义Git中央库固定分支,即管理员定义某个Git资源库为中央库,并且指定项目的主干分支作为固定分支;
二、通过钩子脚本获取Git中央库固定分支上代码提交的最新版本;
三、将Git中的版本转换成自增编号存储;
四、将开发的源代码与任务包关联;
五、随时构建并能获取正确的文件版本。
[0006]所述步骤一中,管理员定义Git中央库固定分支,开发人员创建任务包,开发人员在本地Git开发库中开发代码,开发完成后,与中央库固定分支的代码同步,解决冲突后将代码提交到中央库中。
[0007]所述步骤二的具体过程为:在中央库中添加钩子脚本,监控开发人员的每次提交,通过在钩子脚本中比较开发人员的本次提交和固定分支上上次提交的版本之间的差别,获取到包括提交的文件路径、文件操作的信息,再结合本次提交的版本号,添加提交人、时间等信息存储在数据库中,即认为本次提交的内容获取完成。
[0008]所述步骤三的具体过程为:Git库使用哈希码作为版本号,在存储数据库时,会自动为每个哈希码定义编号,编号是自增的,构建时以此编号作为比较依据。
[0009]存储数据库时,对每个提交到中央库固定分支的哈希码重新编号的具体过程为:编号采用自然数自增的方式,每提交一次编号加1,编号和提交的哈希码、文件路径、文件操作信息对应,即一次提交中包括多个文件,存储在数据库中。
[0010]所述步骤四的详细过程为:开发人员提交源代码时,由开发人员定义任务包,任务包的基本信息中描述该包的作用,在开发人员开发完成后,中央库接收到开发人员从本地库提交的代码时,将提交的代码版本、版本编号、文件路径、文件操作类型、提交人、提交时间信息与任务包关联,在构建时,单独构建该任务包,精确取出完成需求或者解决bug需要的具体文件并构建成升级包。
[0011]所述步骤五的详细过程为:采用任务包将针对解决客户问题的文件关联起来,随时构建任务包;在协作开发的情况下,一个文件具有多个版本即版本编号存在多个任务包中,在构建时,首先比较出本任务包中同一文件最大的版本编号,然后使用该文件的最大版本编号与该文件已经构建的版本编号比较,如果已经构建的版本编号比较大,则发布包中使用已经构建的最大的版本编号,否则使用任务包中的文件的最大版本编号,这样保证了发布包中的文件版本不会覆盖生产环境中的文件版本。
[0012]本发明的一种基于Git随时发布代码的实现方法,具有以下优点:
该发明的一种基于Git随时发布代码的实现方法,可以随时构建,及时响应客户;通过工具化的版本处理,相比人工挑选文件效率更高,出错率更低;任务包和源码文件关联,逻辑上划分需求或者bug对应的源码文件;支持多开发人员的协作开发,可以缩短项目开发周期;记录了 Git中央库提交记录,并将版本转换成自增量的编号,易于版本比较,并可以提供易读的历史记录信息;能够在多人协作开发同一项目的情况下,不需要人工挑拣文件构建,随时构建客户需要的发布包,提高工作效率和发布包质量,实用性强,适用范围广泛,易于推广。
【具体实施方式】
[0013]下面结合具体实施例对本发明作进一步说明。
[0014]本发明提供一种基于Git随时发布代码的实现方法,解决在使用Git管理文件版本的情况下,可以正确构建文件版本,并能随时构建发布包,能构建精确解决客户问题,提高客户响应速度和满意度。
[0015]基于此,该方法的实现过程为:
管理员定义Git中央库固定分支,开发人员创建任务包,开发人员在本地Git开发库中开发代码,开发完成后,与中央库固定分支的代码同步,解决冲突后将代码提交到中央库中。
[0016]在中央库中添加钩子脚本,监控开发人员的每次提交,通过在钩子脚本中比较开发人员的本次提交和固定分支上上次提交的版本之间的差别,获取到提交的文件路径、文件操作等信息,再结合本次提交的版本号,添加提交人、时间等信息存储在数据库中,即认为本次提交的内容获取完成。
[0017]Git的版本号为哈希码,为了方便构建时的文件版本比较,在存储数据库时,会自动为每个哈希码定义编号,编号是自增的,构建时以此编号作为比较依据。
[0018]提交的内容与开发人员创建的任务包关联,功能可以进行多次提交,提交信息都记录到任务包中。
[0019]因为是多个开发人员协作开发,所以可能出现同一文件的不同版本,在不同的任务包中,这时构建过程需要对文件版本比较,获取已经构建的文件版本对应的编号和待构建的任务包中文件的最新版本对应的编号,避免升级时版本覆盖,将计算好的文件版本内容构建在发布包中,提供给客户使用。
[0020]更为具体的,本发明的技术实现方案如下:
一、管理员定义Git中央库的固定分支,
Git为分布式的版本控制系统,每个资源库都是完整的克隆,所以理论上,同一项目的Git资源库是同等级别。本发明中,管理员需要定义某个Git资源库为中央库,并且指定项目的主干分支作为固定分支,开发人员在本地Git开发库中开发代码,开发完成后,与中央库固定分支的代码同步,解决冲突后将代码提交到中央库中。
[0021]二、通过钩子脚本获取Git中央库固定分支上代码提交的最新版本。
[0022]修改中央库中钩子脚本pre-receive,当用户在本地库执行“git-push”即往中央库提交代码命令时,中央库就会调用pr