一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

流场模拟软件代码版本管理方法、装置和存储介质与流程

2022-07-23 11:16:16 来源:中国专利 TAG:


1.本技术涉及流体力学计算技术领域,特别是涉及一种流场模拟软件代码版本管理方法、装置和存储介质。


背景技术:

2.计算流体力学(computational fluid dynamics,简称为cfd)软件是用于计算流体动力学的仿真软件,使工程师和分析师能够以智能方式预测液体和气体的表现。随着对仿真精度和效率的要求越来越高,cfd软件的功能以及代码量也越来越庞大,软件版本的迭代频率越来越高,这使得cfd软件的可扩展性与可维护性。为解决上述问题,通常会在大型cfd软件项目的开发过程中,集成具有代码版本管理、代码审核确认、算例并行测试等功能的自动化测试系统,以保证cfd软件的研发效率和灵活性。其中,软件版本控制功能可以记录、管理文件或文件集合的内容及其随着时间推移发生的变化,从而有效地解决版本的同步以及不同开发者之间的开发通信问题,提高多人协同开发的效率。
3.目前,cfd软件中常用的分布式代码版本控制系统为git系统。git系统在每一台本地计算机上保存包含整个版本控制库的所有数据内容,支持离线工作,在很多项目中得到广泛应用。然而, cfd软件基于git进行开发是将每个功能模块分别作为一个git项目来进行代码管理,而git项目是以哈希值来作为cfd软件版本标识,由于哈希值本身是一串很长且无序的数字或字符,存在不易辨识和无法确定版本先后顺序的问题,不利于版本问题的测试和回溯查找。在由多个git项目对cfd软件代码进行管理的情况下,这种问题更为突出。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种流场模拟软件代码版本管理方法、装置、计算机设备和存储介质。
5.一种流场模拟软件代码版本管理方法,包括:获取对cfd软件中至少一个git项目的代码更新操作;根据所述代码更新操作,将所修改git项目确定为子节点,生成所述子节点的代码更新记录;所述代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及所述子节点的父节点的节点标识;将所述代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端周期性根据所述检测申请信号从所述数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据所述节点标识追溯每个开发者在所述当前编号周期内的代码更新轨迹,将所述代码更新轨迹中的每条代码更新记录添加至待编号列表,根据所述更新时间及所述开发者标识对所述待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
6.在其中一个实施例中,所述方法还包括:针对所述cfd软件中的每个功能模块建立git项目; 建立每个所述git项目的开发分支;所述开发分支包括一个主干分支以及负责开
发所述git项目的每个开发者对应的个人分支;所述获取对cfd软件中至少一个git项目的代码更新操作,包括:获取在当前个人分支对所述cfd软件中相应git项目的代码更新操作。
7.在其中一个实施例中,所述根据所述代码更新操作,将所修改git项目确定为子节点,生成所述子节点的代码更新记录,包括:当所述代码更新操作为代码提交操作时,将基于所述当前个人分支提交的最新代码确定为子节点,将上一次基于所述当前个人分支提交的代码确定为父节点;当所述代码更新操作为第一合并操作时,将基于所述当前个人分支中的最新代码确定为第一父节点,将所述当前个人分支对应的主干分支中的最新代码确定为第二父节点,将所述第二父节点合并至当前个人分支,在所述当前个人分支将所述第一父节点和第二父节点合并得到子节点;当所述代码更新操作为第二合并操作时,将所述当前个人分支中的最新代码确定为第一父节点,将所述第一父节点合并至所述当前个人分支对应的主干分支,并将所述当前个人分支对应的主干分支中的最新代码确定为第二父节点,在所述主干分支将所述第一父节点和第二父节点合并得到子节点。
8.在其中一个实施例中,所述方法还包括:当所述代码更新操作为第二合并操作时,检测所述第二合并操作所指向的当前个人分支上的第一父节点是否已完成第一合并操作;若否,提示执行所述第一合并操作;若是,检测执行所述第一合并操作得到的各git项目之间是否存在冲突,当存在冲突时,提示在所述当前个人分支进行冲突解决,直至各git项目无冲突时执行所述第二合并操作。
9.在其中一个实施例中,所述代码更新记录还包括更新日志;所述根据所述代码更新操作,将所修改git项目确定为子节点,生成所述子节点的代码更新记录,还包括:当一次所述代码更新操作涉及多个git项目时,基于相同的更新日志生成所涉及的每个git项目分别对应的代码更新记录;所述根据所述更新时间及所述开发者标识对所述待编号列表中的git项目进行组合,得到每种组合的cfd版本编号,包括:所述服务端检测所述待编号列表中是否存在所述开发者标识及所述更新日志均相同,且所述更新时间的差值在预设范围内的多条代码更新记录;若是,仅保留所述多条代码更新记录中更新时间最早的一条代码更新记录;根据更新时间对所述待编号列表中保留的全部git项目进行排序;根据排序对所述待编号列表中每条代码更新记录涉及的git项目与相应更新时间的其他git项目组合,依次确定每种组合的cfd版本编号。
10.在其中一个实施例中,所述向服务端发起检测申请信号,包括:当开发者基于本轮修改的代码依次执行代码提交操作、所述第一合并操作及所述第二合并操作完毕时,向服务端发起检测申请信号。
11.在其中一个实施例中,所述根据所述节点标识追溯每个开发者在所述当前编号周期内的代码更新轨迹,包括:所述服务端在上一编号周期内生成的最后一个cfd版本编号中查询cfd软件所包含每个git项目的节点标识,作为历史节点标识;自查询到的在所述当前编号周期内的第一条代码更新记录的子节点开始追溯父节点,将追溯到的父节点作为子节点,再次追溯父节点,直至追溯到的父节点的节点标识为所述历史节点标识,基于追溯到的多条代码更新记录生成相应开发者的代码更新轨迹。
12.一种流场模拟软件代码版本管理装置,所述装置包括:代码更新操作模块,用于获取对cfd软件中至少一个git项目的代码更新操作;代码更新记录模块,用于根据所述代码更新操作,将所修改git项目确定为子节
点,生成所述子节点的代码更新记录;所述代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及所述子节点的父节点的节点标识;代码版本编号模块,用于将所述代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端周期性根据所述检测申请信号从所述数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据所述节点标识追溯每个开发者在所述当前编号周期内的代码更新轨迹,将所述代码更新轨迹中的每条代码更新记录添加至待编号列表,根据所述更新时间及所述开发者标识对所述待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取对cfd软件中至少一个git项目的代码更新操作;根据所述代码更新操作,将所修改git项目确定为子节点,生成所述子节点的代码更新记录;所述代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及所述子节点的父节点的节点标识;将所述代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端周期性根据所述检测申请信号从所述数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据所述节点标识追溯每个开发者在所述当前编号周期内的代码更新轨迹,将所述代码更新轨迹中的每条代码更新记录添加至待编号列表,根据所述更新时间及所述开发者标识对所述待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
14.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取对cfd软件中至少一个git项目的代码更新操作;根据所述代码更新操作,将所修改git项目确定为子节点,生成所述子节点的代码更新记录;所述代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及所述子节点的父节点的节点标识;将所述代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端周期性根据所述检测申请信号从所述数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据所述节点标识追溯每个开发者在所述当前编号周期内的代码更新轨迹,将所述代码更新轨迹中的每条代码更新记录添加至待编号列表,根据所述更新时间及所述开发者标识对所述待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
15.上述流场模拟软件代码版本管理方法、装置、计算机设备和存储介质,基于分布式版本控制系统git,通过扫描多git项目的代码更新记录,识别未编号的代码更新记录进入待编号列表,在待编号列表中根据开发者单次代码更新操作进行git项目组合,并按照git项目组合里记录的更新时间进行排序,从而确定git项目的编号顺序,实现了在多个git项目更新的情况下软件版本按照开发者先后顺序编号,有益于辨识版本标签和版本问题的回溯查找。此外,相比传统的在代码更新的同时同步进行版本编号,常因为同一开发者在多个项目的提交时间不一致或者服务端故障导致编号顺序错乱或遗漏更新的问题,本技术采用
异步方式进行编号,即代码更新记录暂时存储在数据库中,只有在编号周期达到时,服务端才从git项目上个版本编号记录的哈希值开始扫描,将数据库中所有未编号的记录录入待编号列表,统一进行筛选组合编号,从而从根本上保证了编号不会错乱,每个更新均不会遗漏,提高了版本编号容错率。
附图说明
16.图1为一个实施例中流场模拟软件代码版本管理方法的应用环境图。
17.图2为一个实施例中流场模拟软件代码版本管理方法的流程示意图。
18.图3为一个实施例中开发者a1进行代码更新的过程示意图。
19.图4为一个实施例中开发者a1在当前编号周期内的代码更新轨迹追踪的过程示意图。
20.图5为一个实施例中基于待编号列表中的代码更新记录进行cfd软件版本编号的过程示意图。
21.图6为一个实施例中流场模拟软件代码版本管理装置的结构示意图。
22.图7为一个实施例中计算机设备的内部结构图。
具体实施方式
23.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
24.针对源代码的开发编译工作,通常由多名开发者分别在本地进行源代码开发,以分工协作共同完成源代码的开发工作;在源代码的开发工作全部完成后,将多名开发者已编写好的源代码进行合并编译,以确定合并后的源代码有无冲突。本技术提供一种适用于流场模拟软件代码开发的代码版本管理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务端104通过网络进行通信。其中,终端102可以是各开发者使用的终端,具体可以是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务端104可以用独立的服务端或者是多个服务端组成的服务端集群来实现。
25.在一个实施例中,如图2所示,提供了一种流场模拟软件代码版本管理方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:步骤202,获取对cfd软件中至少一个git项目的代码更新操作。
26.cfd软件基于git进行开发,与一般项目不同的是,cfd软件具备模块化开发的需求,将每个功能模块作为一个git项目来进行代码管理。
27.在一个实施例中,获取对cfd软件中至少一个git项目的代码更新操作之前,本技术提供的流场模拟软件代码版本管理方法还包括:建立每个git项目的开发分支;开发分支包括一个主干分支以及负责开发git项目的每个开发者对应的个人分支。
28.在进行cfd软件开发之前,开发者首先在终端对cfd软件开发项目进行配置管理。具体地,根据cfd软件功能模块权限管理和编译配置管理的需要,终端将cfd软件根据功能模块分为多个git项目。终端针对每个git项目建立开发分支。开发分支包含两种类型分支:主干分支和个人分支。个人分支与每个开发者一一对应,用于cfd软件功能开发。由于cfd软
件开发者开发cfd软件功能相对稳定,且开发周期一般较长,所以个人分支是贯穿整个cfd软件研发周期的,而主干分支用于集成个人分支中具备一定成熟度且测试通过的功能代码。每个开发者在仅属于自己的个人分支上进行开发。例如,cfd软件包括git项目a、git项目b和git项目c。其中,git项目a由a1、a2和a3三位开发者负责,则git项目的开发分支包括主干分支a、个人分支a1、个人分支a2和个人分支a3。
29.当多名开发人员全部已编写好源代码后进行合并编译,很容易产生源代码冲突问题,这是因为源代码多以开发后期暴露问题居多,导致开发难度较大;而且,当存在源代码冲突问题时,开发人员需重新查看编写的所有源代码进行修改,然后基于修改后的源代码重新进行合并编译,导致问题排查困难,开发周期长。本技术为解决该问题,针对每位开发者建立对应的个人分支。各开发者在完成代码更新后,首先基于相应的个人分支进行代码更新操作,直至无代码冲突后,才将更新后代码上传至主干分支。
30.步骤204,根据代码更新操作,将所修改git项目确定为子节点,生成子节点的代码更新记录;代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及子节点的父节点的节点标识。
31.在一个实施例中,根据代码更新操作,将所修改git项目确定为子节点,生成子节点的代码更新记录,包括:当代码更新操作为代码提交操作时,将基于当前个人分支提交的最新代码确定为子节点,将上一次基于当前个人分支提交的代码确定为父节点;当代码更新操作为第一合并操作时,将基于当前个人分支中的最新代码确定为第一父节点,将当前个人分支对应的主干分支中的最新代码确定为第二父节点,将第二父节点合并至当前个人分支,在当前个人分支将第一父节点和第二父节点合并得到子节点;当代码更新操作为第二合并操作时,将当前个人分支中的最新代码确定为第一父节点,将第一父节点合并至当前个人分支对应的主干分支,并将当前个人分支对应的主干分支中的最新代码确定为第二父节点,在主干分支将第一父节点和第二父节点合并得到子节点。
32.cfd软件开发过程中,开发者在其个人分支的代码更新操作包含三种操作类型:代码提交操作、第一合并操作和第二合并操作。其中,代码提交操作是指开发者将修改更新后的代码提交至个人分支的操作。代码提交是cfd软件日常开发的重要部分,每个开发者在完成一个小功能模块或者一个函数的基础上,每天至少进行一到两次的提交,这样有助于问题的版本定位查找。第一合并操作是指将主干分支中的git项目代码合并到个人分支。通常主干分支有更新的情况下,开发者需要尽快进行该第一合并操作,以尽早发现自己负责开发的代码段是否与当前最新的其他代码段存在冲突问题。第二合并操作是指将个人分支的git项目代码合并到主干分支。个人分支某个功能达到一定成熟度的情况下,经过系统测试通过后,可执行该第二合并操作。
33.图3示出了开发者a1进行代码更新的过程示意图。如图2所示,当开发者a1在其个人分支提交更新的git项目a的代码(即执行代码提交操作)时,终端将基于当前个人分支a1提交的最新代码h2确定为子节点,将上一次基于当前个人分支a1提交的代码h1确定为父节点。当开发者a1将主干分支a中的git项目a的代码合并至个人分支a1(即执行第一合并操作)时,终端将当前个人分支a1中的最新代码h2确定为第一父节点,将当前个人分支a1对应的主干分支a中的最新代码h6确定为第二父节点,将第二父节点h6合并至当前个人分支a1,在当前个人分支a1将第一父节点h2和第二父节点h6合并得到子节点h3。容易理解,h3是当
h2与h6合并后存在冲突时对h2进行更新后的代码段。当开发者a1将当前个人分支a1的最新代码h3合并至主干分支a(即执行第二合并操作)时,终端将当前个人分支a1中的最新代码h3确定为第一父节点,并将主干分支a中的最新代码h6确定为第二父节点,在主干分支a将第一父节点h3和第二父节点h6合并得到子节点h7。
34.在一个实施例中,不同git项目的主干分支仅用于存储对应git项目的代码段,则第一合并操作是指将cfd软件对应全部git项目的主干分支上的代码段合并至某一个人分支。在另一个实施例中,不同git项目的主干分支均用于存储cfd软件全部的代码段,或各个git项目共享一个主干分支,则第一合并操作是指将当前git项目的主干分支上的代码段合并至某一个人分支。
35.在一个优选实施例中,本技术提供的流场模拟软件代码版本管理方法还包括:当代码更新操作为第二合并操作时,检测第二合并操作所指向的当前个人分支上的父节点是否已完成第一合并操作;若否,提示执行第一合并操作;若是,检测执行第一合并操作得到的各git项目之间是否存在冲突,当存在冲突时,提示在当前个人分支进行冲突解决,直至各git项目无冲突时执行第二合并操作。
36.在本实施例中,执行第二合并操作之前需要首先完成第一合并操作,即合并个人分支到主干分支之前,需要先进行合并主干分支到个人分支操作。换言之,完成一轮完整的代码更新,需要依次针对新更新的代码段执行代码提交操作、第一合并操作和第二合并操作,且只有在第一合并操作得到的代码段之间没有冲突时,才允许针对新更新的代码段执行第二合并操作。容易理解,这里的第一合并操作、第二合并操作均是指增量合并。本实施例中,将冲突限制在个人分支解决,有利于减少后续将全部代码段后出现冲突的概率,也有助于代码缺陷排查。
37.当开发者完成上述每种代码更新操作时,终端生成一条对应的代码更新记录。代码更新记录包括开发者标识、项目标识、更新时间、子节点的节点标识,以及子节点的父节点的节点标识。节点标识是唯一能够标识该节点的字符串,具体可以是哈希值等。例如,如图4所示,当开发者a1完成将代码段h2提交至个人分支a1的代码提交操作时,生成对应的代码更新记录1;当开发者a1完成将代码段h6从主干分支a合并至个人分支a1的第一合并操作时,生成对应的代码更新记录2;当开发者a1完成将代码段h3从个人分支合并至主干分支a时,生成对应的代码更新记录3。在代码提交操作对应的代码更新记录中包含一个父节点标识;在第一合并操作和第二合并操作对应的代码更新记录中均包含第一父节点标识和第二父节点标识。在实施例中,在进行第一合并操作时,合并方式为非直接迁移方式,即也生产对应的代码更新记录,使得代码更新过程中的父子节点继承关系更容易追溯,有助于后续版本管理。
38.在一个实施例中,代码更新记录还包括更新日志;根据代码更新操作,将所修改git项目确定为子节点,生成子节点的代码更新记录,还包括:当一次代码更新操作涉及多个git项目时,基于相同的更新日志生成所涉及的每个git项目分别对应的代码更新记录。在本实施例中,当开发者一次代码更新操作涉及多个git项目时,终端将基于相同的更新日志生成所涉及的每个git项目分别对应的代码更新记录,以便于后续进行版本编号时能够识别出是同一次操作。
39.步骤206,将代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端
周期性根据检测申请信号从数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据节点标识追溯每个开发者在当前编号周期内的代码更新轨迹,将代码更新轨迹中的每条代码更新记录添加至待编号列表,根据更新时间及开发者标识对待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
40.终端生成代码更新记录后及时同步至数据库,并向服务端发起检测申请信号。服务端每隔一编号周期,从数据库查询在当前编号周期内曾发起过检测申请信号的开发者的代码更新记录,进而根据代码更新记录确定cfd软件的版本编号。编号周期是指服务端进行版本编号的预设周期,例如1天等。
41.在一个实施例中,向服务端发起检测申请信号,包括:当开发者基于本轮修改的代码依次执行代码提交操作、第一合并操作及第二合并操作完毕时,向服务端发起检测申请信号。在编号周期内,有些开发者可能进行了多轮代码更新,有些开发者则可能未进行任何更新。本实施例中,只有在开发者完成一轮代码更新时,终端才向服务端发起一次检测申请信号,以减少服务端数据处理负担。
42.在一个实施例中,根据节点标识追溯每个开发者在当前编号周期内的代码更新轨迹,包括:服务端在上一编号周期内生成的最后一个cfd版本编号中查询cfd软件所包含每个git项目的节点标识,作为历史节点标识;自查询到的第一条代码更新记录的子节点开始追溯父节点,将追溯到的父节点作为子节点,再次追溯父节点,直至追溯到的父节点的节点标识为历史节点标识,基于追溯到的多条代码更新记录生成相应开发者的代码更新轨迹。
43.服务端首先查询在上一编号周期内生成的最后一个cfd版本编号。cfd软件的每个版本编号具有对应的版本标识。版本标识具体可以是cfd软件包含的各git项目的节点标识。例如,上一编号周期最后一cfd版本编号为9413,对应的版本标识为“gita:1340371b32acb981fede7f git b:1f56fecedb869b2b67b1 git c:7049e53d1914b2bc264”。为方便描述,将上一编号周期确定的最新cfd版本编号中的节点标识记作历史节点标识gitpro。
44.进一步地,服务端确定在当前编号周期内发起过检测申请信号的开发者标识,并追踪这些开发者在当前编号周期的代码更新轨迹。具体地,服务端在数据库中查询在当前编号周期内发起过检测申请信号的开发者标识,以及这些开发者标识对应的当前编号周期内生成的代码更新记录,对这些代码更新记录进行筛选,将筛选得到的有效的代码更新记录添加至待编号列表。
45.在一个实施例中,对代码更新记录筛选的过程即为代码更新轨迹更新过程,具体实现可以是基于代码更新记录中的更新时间对代码更新记录进行排序,自第一条记录的子节点开始追溯父节点,将追溯到的父节点作为子节点,再次追溯父节点,直至追溯到的父节点的节点标识为历史节点标识,基于追溯到的多条代码更新记录生成相应开发者的代码更新轨迹。例如,如图4所示,开发者a1在当前编号周期进行了代码更新,对应的代码更新记录包括记录1-6,服务端首先按照更新时间对该6条记录进行排序,基于第一顺序的记录1中的父节点为h2,则将以h2作为子节点的记录2为第二顺序的记录,以此类推,直至查询到记录6的第一父节点的哈希值为gita的历史节点标识1340371b32acb981fede7f,最终确定开发者a1在当前编号周期的代码更新轨迹为:记录1

记录2

记录3

记录4

记录6。
46.在一个实施例中,根据更新时间及开发者标识对待编号列表中的git项目进行组
合,得到每种组合的cfd版本编号,包括:服务端检测待编号列表中是否存在开发者标识及更新日志均相同,且更新时间的差值在预设范围内的多条代码更新记录;若是,仅保留多条代码更新记录中更新时间最早的一条代码更新记录;根据更新时间对待编号列表中保留的全部git项目进行排序;根据排序对待编号列表中每条代码更新记录涉及的git项目与相应更新时间的其他git项目组合,依次确定每种组合的cfd版本编号。
47.待编号列表生成后,服务端根据更新时间对待编号列表中的代码更新记录进行编号,若存在开发者标识及更新日志均相同,且更新时间的差值在预设范围内的多条代码更新记录,则仅保留多条代码更新记录中更新时间最早的一条代码更新记录。如图5所示,记录b与记录f只需保留记录b,记录e与记录a只需保留记录e。
48.服务端按照更新时间,对待编号列表中的每条代码更新记录进行遍历,进行新版本编号,直至待编号列表为空。具体地,服务端对保留的每条代码更新记录中的节点标识与相应更新时间其他git项目的节点标识进行组合,得到该条代码更新记录对应的cfd软件版本编号和版本标识。例如,如图5所示,假设记录b的更新时间为t1,则将t1时刻各git项目的哈希值组合,得到记录b对应的cfd软件版本编号及版本标识;假设记录d的更新时间为t3,则将t3时刻各git项目的哈希值组合,得到记录d对应的cfd软件版本编号及版本标识。
49.本技术提供一种适用于cfd软件自动化测试的代码版本管理方法,基于分布式版本控制系统git,通过扫描多git项目的代码更新记录,识别未编号的代码更新记录进入待编号列表,在待编号列表中根据开发者单次代码更新操作进行git项目组合,并按照git项目组合里记录的更新时间进行排序,从而确定git项目的编号顺序,实现了在多个git项目更新的情况下软件版本按照开发者先后顺序编号,有益于辨识版本标签和版本问题的回溯查找。此外,相比传统的在代码更新的同时同步进行版本编号,常因为同一开发者在多个项目的提交时间不一致或者服务端故障导致编号顺序错乱或遗漏更新的问题,本技术采用异步方式进行编号,即代码更新记录暂时存储在数据库中,只有在编号周期达到时,服务端才从git项目上个版本编号记录的哈希值开始扫描,将数据库中所有未编号的记录录入待编号列表,统一进行筛选组合编号,从而从根本上保证了编号不会错乱,每个更新均不会遗漏,提高了版本编号容错率。
50.应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
51.在一个实施例中,如图6所示,提供了一种场模拟软件代码版本管理装置600,包括:代码更新操作模块602、代码更新记录模块604和代码版本编号模块606,其中:代码更新操作模块602,用于获取对cfd软件中至少一个git项目的代码更新操作;代码更新记录模块604,用于根据代码更新操作,将所修改git项目确定为子节点,生成子节点的代码更新记录;代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及子节点的父节点的节点标识;代码版本编号模块606,用于将代码更新记录同步至数据库,向服务端发起检测申
请信号,使服务端周期性根据检测申请信号从数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据节点标识追溯每个开发者在当前编号周期内的代码更新轨迹,将代码更新轨迹中的每条代码更新记录添加至待编号列表,根据更新时间及开发者标识对待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
52.在其中一个实施例中,如图6所示,场模拟软件代码版本管理装置600还包括开发分支建立模块608,用于针对cfd软件中的每个功能模块建立git项目; 建立每个git项目的开发分支;开发分支包括一个主干分支以及负责开发git项目的每个开发者对应的个人分支;获取对cfd软件中至少一个git项目的代码更新操作,包括:获取在当前个人分支对cfd软件中相应git项目的代码更新操作。
53.在其中一个实施例中,代码更新记录模块604还用于当代码更新操作为代码提交操作时,将基于当前个人分支提交的最新代码确定为子节点,将上一次基于当前个人分支提交的代码确定为父节点;当代码更新操作为第一合并操作时,将基于当前个人分支中的最新代码确定为第一父节点,将当前个人分支对应的主干分支中的最新代码确定为第二父节点,将第二父节点合并至当前个人分支,在当前个人分支将第一父节点和第二父节点合并得到子节点;当代码更新操作为第二合并操作时,将当前个人分支中的最新代码确定为第一父节点,将第一父节点合并至当前个人分支对应的主干分支,并将当前个人分支对应的主干分支中的最新代码确定为第二父节点,在主干分支将第一父节点和第二父节点合并得到子节点。
54.在其中一个实施例中,如图6所示,场模拟软件代码版本管理装置600还包括代码冲突控制模块610,用于当代码更新操作为第二合并操作时,检测第二合并操作所指向的当前个人分支上的第一父节点是否已完成第一合并操作;若否,提示执行第一合并操作;若是,检测执行第一合并操作得到的各git项目之间是否存在冲突,当存在冲突时,提示在当前个人分支进行冲突解决,直至各git项目无冲突时执行第二合并操作。
55.在其中一个实施例中,代码更新记录还包括更新日志;代码更新记录模块604还用于当一次代码更新操作涉及多个git项目时,基于相同的更新日志生成所涉及的每个git项目分别对应的代码更新记录;代码版本编号模块606还用于服务端检测待编号列表中是否存在开发者标识及更新日志均相同,且更新时间的差值在预设范围内的多条代码更新记录;若是,仅保留多条代码更新记录中更新时间最早的一条代码更新记录;根据更新时间对待编号列表中保留的全部git项目进行排序;根据排序对待编号列表中每条代码更新记录涉及的git项目与相应更新时间的其他git项目组合,依次确定每种组合的cfd版本编号。
56.在其中一个实施例中,代码版本编号模块606还用于当开发者基于本轮修改的代码依次执行代码提交操作、第一合并操作及第二合并操作完毕时,向服务端发起检测申请信号。
57.在其中一个实施例中,代码版本编号模块606还用于服务端在上一编号周期内生成的最后一个cfd版本编号中查询cfd软件所包含每个git项目的节点标识,作为历史节点标识;自查询到的在当前编号周期内的第一条代码更新记录的子节点开始追溯父节点,将追溯到的父节点作为子节点,再次追溯父节点,直至追溯到的父节点的节点标识为历史节点标识,基于追溯到的多条代码更新记录生成相应开发者的代码更新轨迹。
58.本技术提供一种适用于cfd软件自动化测试的代码版本管理装置,基于分布式版本控制系统git,通过扫描多git项目的代码更新记录,识别未编号的代码更新记录进入待编号列表,在待编号列表中根据开发者单次代码更新操作进行git项目组合,并按照git项目组合里记录的更新时间进行排序,从而确定git项目的编号顺序,实现了在多个git项目更新的情况下软件版本按照开发者先后顺序编号,有益于辨识版本标签和版本问题的回溯查找。此外,相比传统的在代码更新的同时同步进行版本编号,常因为同一开发者在多个项目的提交时间不一致或者服务端故障导致编号顺序错乱或遗漏更新的问题,本技术采用异步方式进行编号,即代码更新记录暂时存储在数据库中,只有在编号周期达到时,服务端才从git项目上个版本编号记录的哈希值开始扫描,将数据库中所有未编号的记录录入待编号列表,统一进行筛选组合编号,从而从根本上保证了编号不会错乱,每个更新均不会遗漏,提高了版本编号容错率。
59.关于流场模拟软件代码版本管理装置的具体限定可以参见上文中对于流场模拟软件代码版本管理方法的限定,在此不再赘述。上述流场模拟软件代码版本管理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
60.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种流场模拟软件代码版本管理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
61.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
62.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取对cfd软件中至少一个git项目的代码更新操作;根据代码更新操作,将所修改git项目确定为子节点,生成子节点的代码更新记录;代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及子节点的父节点的节点标识;将代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端周期性根据检测申请信号从数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据节点标识追溯每个开发者在当前编号周期内的代码更新轨迹,将代码更新轨迹中的每条代码更新记录添加至待编号列表,根据更新时间及开发者标识对
待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
63.在一个实施例中,处理器执行计算机程序时还实现以下步骤:针对cfd软件中的每个功能模块建立git项目; 建立每个git项目的开发分支;开发分支包括一个主干分支以及负责开发git项目的每个开发者对应的个人分支;获取在当前个人分支对cfd软件中相应git项目的代码更新操作。
64.在一个实施例中,处理器执行计算机程序时还实现以下步骤:当代码更新操作为代码提交操作时,将基于当前个人分支提交的最新代码确定为子节点,将上一次基于当前个人分支提交的代码确定为父节点;当代码更新操作为第一合并操作时,将基于当前个人分支中的最新代码确定为第一父节点,将当前个人分支对应的主干分支中的最新代码确定为第二父节点,将第二父节点合并至当前个人分支,在当前个人分支将第一父节点和第二父节点合并得到子节点;当代码更新操作为第二合并操作时,将当前个人分支中的最新代码确定为第一父节点,将第一父节点合并至当前个人分支对应的主干分支,并将当前个人分支对应的主干分支中的最新代码确定为第二父节点,在主干分支将第一父节点和第二父节点合并得到子节点。
65.在一个实施例中,处理器执行计算机程序时还实现以下步骤:当代码更新操作为第二合并操作时,检测第二合并操作所指向的当前个人分支上的第一父节点是否已完成第一合并操作;若否,提示执行第一合并操作;若是,检测执行第一合并操作得到的各git项目之间是否存在冲突,当存在冲突时,提示在当前个人分支进行冲突解决,直至各git项目无冲突时执行第二合并操作。
66.代码更新记录还包括更新日志;在一个实施例中,处理器执行计算机程序时还实现以下步骤:当一次代码更新操作涉及多个git项目时,基于相同的更新日志生成所涉及的每个git项目分别对应的代码更新记录;服务端检测待编号列表中是否存在开发者标识及更新日志均相同,且更新时间的差值在预设范围内的多条代码更新记录;若是,仅保留多条代码更新记录中更新时间最早的一条代码更新记录;根据更新时间对待编号列表中保留的全部git项目进行排序;根据排序对待编号列表中每条代码更新记录涉及的git项目与相应更新时间的其他git项目组合,依次确定每种组合的cfd版本编号。
67.在一个实施例中,处理器执行计算机程序时还实现以下步骤:当开发者基于本轮修改的代码依次执行代码提交操作、第一合并操作及第二合并操作完毕时,向服务端发起检测申请信号。
68.在一个实施例中,处理器执行计算机程序时还实现以下步骤:服务端在上一编号周期内生成的最后一个cfd版本编号中查询cfd软件所包含每个git项目的节点标识,作为历史节点标识;自查询到的在当前编号周期内的第一条代码更新记录的子节点开始追溯父节点,将追溯到的父节点作为子节点,再次追溯父节点,直至追溯到的父节点的节点标识为历史节点标识,基于追溯到的多条代码更新记录生成相应开发者的代码更新轨迹。
69.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取对cfd软件中至少一个git项目的代码更新操作;根据代码更新操作,将所修改git项目确定为子节点,生成子节点的代码更新记录;代码更新记录包括开发者标识、更新时间、子节点的节点标识,以及子节点的父节点的
节点标识;将代码更新记录同步至数据库,向服务端发起检测申请信号,使服务端周期性根据检测申请信号从数据库查询代码更新记录,确定在当前编号周期内进行代码更新的全部开发者的开发者标识,根据节点标识追溯每个开发者在当前编号周期内的代码更新轨迹,将代码更新轨迹中的每条代码更新记录添加至待编号列表,根据更新时间及开发者标识对待编号列表中的git项目进行组合,得到每种组合的cfd版本编号。
70.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:针对cfd软件中的每个功能模块建立git项目; 建立每个git项目的开发分支;开发分支包括一个主干分支以及负责开发git项目的每个开发者对应的个人分支;获取在当前个人分支对cfd软件中相应git项目的代码更新操作。
71.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当代码更新操作为代码提交操作时,将基于当前个人分支提交的最新代码确定为子节点,将上一次基于当前个人分支提交的代码确定为父节点;当代码更新操作为第一合并操作时,将基于当前个人分支中的最新代码确定为第一父节点,将当前个人分支对应的主干分支中的最新代码确定为第二父节点,将第二父节点合并至当前个人分支,在当前个人分支将第一父节点和第二父节点合并得到子节点;当代码更新操作为第二合并操作时,将当前个人分支中的最新代码确定为第一父节点,将第一父节点合并至当前个人分支对应的主干分支,并将当前个人分支对应的主干分支中的最新代码确定为第二父节点,在主干分支将第一父节点和第二父节点合并得到子节点。
72.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当代码更新操作为第二合并操作时,检测第二合并操作所指向的当前个人分支上的第一父节点是否已完成第一合并操作;若否,提示执行第一合并操作;若是,检测执行第一合并操作得到的各git项目之间是否存在冲突,当存在冲突时,提示在当前个人分支进行冲突解决,直至各git项目无冲突时执行第二合并操作。
73.代码更新记录还包括更新日志;在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当一次代码更新操作涉及多个git项目时,基于相同的更新日志生成所涉及的每个git项目分别对应的代码更新记录;服务端检测待编号列表中是否存在开发者标识及更新日志均相同,且更新时间的差值在预设范围内的多条代码更新记录;若是,仅保留多条代码更新记录中更新时间最早的一条代码更新记录;根据更新时间对待编号列表中保留的全部git项目进行排序;根据排序对待编号列表中每条代码更新记录涉及的git项目与相应更新时间的其他git项目组合,依次确定每种组合的cfd版本编号。
74.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当开发者基于本轮修改的代码依次执行代码提交操作、第一合并操作及第二合并操作完毕时,向服务端发起检测申请信号。
75.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:服务端在上一编号周期内生成的最后一个cfd版本编号中查询cfd软件所包含每个git项目的节点标识,作为历史节点标识;自查询到的在当前编号周期内的第一条代码更新记录的子节点开始追溯父节点,将追溯到的父节点作为子节点,再次追溯父节点,直至追溯到的父节点的节点标识为历史节点标识,基于追溯到的多条代码更新记录生成相应开发者的代码更新轨迹。
76.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
77.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
78.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献