CN114528008A - 基于分布式版本控制***的代码管控方法、设备及介质 - Google Patents

基于分布式版本控制***的代码管控方法、设备及介质 Download PDF

Info

Publication number
CN114528008A
CN114528008A CN202210104331.4A CN202210104331A CN114528008A CN 114528008 A CN114528008 A CN 114528008A CN 202210104331 A CN202210104331 A CN 202210104331A CN 114528008 A CN114528008 A CN 114528008A
Authority
CN
China
Prior art keywords
branch
code
development
control system
feature
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.)
Pending
Application number
CN202210104331.4A
Other languages
English (en)
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.)
Boc Financial Technology Co ltd
Original Assignee
Boc Financial Technology 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 Boc Financial Technology Co ltd filed Critical Boc Financial Technology Co ltd
Priority to CN202210104331.4A priority Critical patent/CN114528008A/zh
Publication of CN114528008A publication Critical patent/CN114528008A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种基于分布式版本控制***的代码管控方法、设备及介质,所述方法包括:基于分布式版本控制***Git进行代码提交:将项目源码克隆至本地,创建本地user分支,开发完成后,提交开发文件并推送至远端user分支,在Gitlab提交分支合并请求MR且指定审查终端;代码审查:审查终端对提交的代码进行评审并提出评审意见,若代码审核通过,则将该代码合并进feature分支,未通过,则关闭分支合并请求MR;开发者针对评审意见对代码进行优化或修改,并再次提交开发文件,直至审核通过;版本跟踪:迭代开发结束后,在feature分支上打标,标记版本号,并将标签推送至远端;将所述feature分支合并到develop分支。与现有技术相比,本发明具有可离线工作、代码审核效率高的优点。

Description

基于分布式版本控制***的代码管控方法、设备及介质
技术领域
本发明涉及代码管控技术领域,尤其是涉及一种基于分布式版本控制***的代码管控方法、设备及介质。
背景技术
版本管理在空间上可以保证完成集中统一管理,解决一致性和冗余问题。在时间上全程跟踪记录工具将会自动记录开发过程中的每个更改细节,和不同时期的不同版本,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。
代码复查评审是开发团队非常有必要的一个环节,它可以有效的提高产品交付质量和开发过程效率。开发者提交了MR后,项目作者肯定会先Review一遍代码,然后再决定是否将代码合并到仓库中,没有经过Review的代码是无法合并到仓库里的。但如今还有许多开发团队不是这么开发项目的,或者依旧采用线下组会,再集中复查的代码审查方式。这种方式不仅效率很低,还无法及时地发现问题,并及时对代码问题进行修正。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供了一种可离线工作、代码审核效率高的基于分布式版本控制***的代码管控方法、设备及介质。
本发明的目的可以通过以下技术方案来实现:
根据本发明的第一方面,提供了一种基于分布式版本控制***的代码管控方法,其特征在于,该方法包括以下步骤:
S1、新任务迭代时,基于分布式版本控制***Git,从develop分支新建一个feature分支,并从所述feature分支创建user分支;
S2、代码提交:将项目源码克隆至本地,创建本地user分支;开发完成后,提交开发文件并推送至远端user分支,在Gitlab提交分支合并请求MR且指定审查终端;
S3、代码审查:审查终端对提交的代码进行评审并提出评审意见,若代码审核通过,则将该代码合并进feature分支,未通过,则关闭分支合并请求MR;开发者针对评审意见对代码进行优化或修改,并再次提交开发文件,直至审核通过;
S4、版本跟踪:迭代开发结束后,在feature分支上打标,标记版本号,并将标签推送至远端;
S5、将所述feature分支合并到develop分支。
优选地,所述步骤S1中新建一个feature分支,具体为:
在本地通过git命令新建feature分支再推送至远端或在Gitlab的分支管理界面直接新建feature分支,本地再从远端获取。
优选地,所述步骤S2中在Gitlab提交分支合并请求MR且指定审查终端,具体过程为:
打开远端仓库,创建一个分支合并请求MR,选择需要创建分支合并请求MR的分支以及需要合并的分支,并指定审查终端。
优选地,每次所述提交开发文件,都会生成唯一的版本号commit id。
优选地,所述版本号commit id采用SHA-1算法生成。
优选地,所述分布式版本控制***Git采用键值对数据库,向数据库中***任意内容时将返回一个用于取回该值的hash键;每个代码版本中内容都保存在所述数据库中。
优选地,每个开发分支关联一个树对象,所述树对象存储当前开发分支下所有文件名以及对应的Key值和其他树对象的引用,开发完成后,开发文件将被添加到缓存区。
优选地,每次提交文件为当前版本的一个快照,所述快照包括顶级树对象、上一次提交的对像啥希、提交者用户名及邮箱。
根据本发明的第二方面,提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现任一项所述的方法。
根据本发明的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现任一项所述的方法。
与现有技术相比,本发明具有以下优点:
1)本发明的代码管控方法在feature分支上每个开发者创建自己的user分支,在上面进行提交,通过引进Gitlab的分支合并请求MR功能对代码进行审查,审查通过后才可将代码合并至远端feature分支这样的工作流程;线上审核代码,方便了对代码的审核和复查,评审者对代码进行审查应该随时发表评论,表示某些代码可以变得更好,确保代码库的整体健康状况会随着时间不断改善;
2)代码开发可以离线工作,绝大部分操作在本地完成,只有user分支向feature分支提交的版本才需要向一个中心的集中的代码管理服务器提交,而不用和集中的代码管理服务器交互,减轻了公共服务器的压力;
3)每次提交都会根据SHA-1算法生成唯一的版本号commit id,方便跟踪提交记录,便利对版本的管理;
4)本发明的方法可以建立多个本地分支,只需要命令操作就能完成,不需要建立多余的目录和活动,更方便对分支的管理和操作。
附图说明
图1为本发明的方法流程图;
图2为本发明开发主分支上创建出个人开发分支的工作流程图;
图3为分布式版本控制***的工作流图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
实施例1
如图3所示,分布式工作流具体为:以主分支develop分支为核心进行开发,再在develop分支上创建开发分支,开发人员把代码都提交到开发分支上,提交之前获取所有的代码,并保证代码编译成功后提交的merge request能通过,最终将完成的代码合进开发分支,再把开发分支合进develop分支上。当开发到一个里程碑时,通过创建Tag来保存里程碑状态。由于可以频繁的创建和切换分支,使得与主干代码隔离,以至于在开发过程中不会因为不够完善而导致主干代码被污染
Gitlab是基于web的一个git仓库,Gitlab上的项目与本地的git版本库之间可以通过HTTPS或者SSH连接,并且可以在Gitlab上设置该仓库的url,可以通过这个url将远程的项目添加为本地版本库的远程仓库,从而可以通过本地git服务器将本地代码推送至远端。
如图1和图2所示,本实施例给出了一种基于分布式版本控制***的代码管控方法,该方法包括以下步骤:
S1、新任务迭代时,基于分布式版本控制***Git,从develop分支新建一个feature分支,并从所述feature分支创建user分支;
其中,新建一个feature分支,具体为:在本地通过git命令新建feature分支再推送至远端或在Gitlab的分支管理界面直接新建feature分支,本地再从远端获取;
S2、代码提交:将项目源码克隆至本地,创建本地user分支;开发完成后,提交开发文件并推送至远端user分支,在Gitlab提交分支合并请求MR且指定审查终端;
其中,Gitlab提交分支合并请求MR且指定审查终端的过程具体为:打开远端仓库,创建一个分支合并请求MR,选择需要创建分支合并请求MR的分支以及需要合并的分支,并指定审查终端;
S3、代码审查:审查终端对提交的代码进行评审并提出评审意见,若代码审核通过,则将该代码合并进feature分支,未通过,则关闭分支合并请求MR;开发者针对评审意见对代码进行优化或修改,并再次提交开发文件,直至审核通过;
S4、版本跟踪:迭代开发结束后,在feature分支上打标,标记版本号,并将标签推送至远端;
S5、将所述feature分支合并到develop分支。
每次所述提交开发文件,都会采用SHA-1算法生成唯一的版本号commit id。所述SHA-1算法是一种数字签名加密算法,也是Hash算法中的一种。该算法的运算过程具体为:首先根据文件(二进制)的大小进行信息填充,然后将填充好的数据用特定的规则进行说明,再将信息进行分组,每64个字节为一组,分成n组,并循环n次做核心运算,最后一组计算结束后得到的结果就是SHA1值。
所述分布式版本控制***Git采用键值对数据库,对数据库中***任意内容,将返回一个用于取回该值的hash键,然后把每个代码版本中内容都保存在数据库中。每个开发分支关联一个树对象,所述树对象存储当前开发分支下所有文件名以及对应的Key值和其他树对象的引用,功能开发完成后,开发文件将被添加到缓存区。每次提交文件为当前版本的一个快照,所述快照包括顶级树对象、上一次提交的对像啥希、提交者用户名及邮箱。
本发明电子设备包括中央处理单元(CPU),其可以根据存储在只读存储器(ROM)中的计算机程序指令或者从存储单元加载到随机访问存储器(RAM)中的计算机程序指令,来执行各种适当的动作和处理。在RAM中,还可以存储设备操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
设备中的多个部件连接至I/O接口,包括:输入单元,例如键盘、鼠标等;输出单元,例如各种类型的显示器、扬声器等;存储单元,例如磁盘、光盘等;以及通信单元,例如网卡、调制解调器、无线通信收发机等。通信单元允许设备通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元执行上文所描述的各个方法和处理,例如方法S1~S5。例如,在一些实施例中,方法S1~S5可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到设备上。当计算机程序加载到RAM并由CPU执行时,可以执行上文描述的方法S1~S5的一个或多个步骤。备选地,在其他实施例中,CPU可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法S1~S5。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
实施例2
本实施例给出了一种基于分布式版本控制***的代码管控方法,该方法包括以下步骤:
(1)克隆项目到本地。
git clone项目地址
(2)获取远端最新代码。
git pull--rebase
(3)切换主分支。
git co feature/P2104
(4)获取远端分支最新代码。
git pull--rebase
(5)创建本地开发分支。
git co-b user/P2104
(6)提交文件。
git commit-am"content"
(7)推送至远端开发分支(每次推送都需要保证本地仓库是最新的,避免冲突)。
git fetch
git rebase origin/feature/P2104
git push origin user/P2104
(8)在Gitlab提交merge request,打开仓库,点击左边的merge request然后点击new merge request创建一个MR然后选择你要创建MR的分支,和需要合并的分支确定分支并指定审查终端。
(9)审查终端评审代码,提出意见,代码审核通过则将其代码merge进feature分支,未通过则将其merge request关闭。
(10)开发者针对评审意见对代码进行优化或修改bug。
(11)再次提交文件,直至审核通过。
(12)迭代开发结束后在该主分支打标,追踪版本号,并将标签推送至远端。
(13)将该feature分支合并到develop分支。
(14)在对新的任务进行迭代时再从develop分支创建一个新的开发主分支,再从该主分支创建开发者自己的开发分支,重复以上流程。
其他设置与实施例1相同。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种基于分布式版本控制***的代码管控方法,其特征在于,该方法包括以下步骤:
S1、新任务迭代时,基于分布式版本控制***Git,从develop分支新建一个feature分支,并从所述feature分支创建user分支;
S2、代码提交:将项目源码克隆至本地,创建本地user分支;开发完成后,提交开发文件并推送至远端user分支,在Gitlab提交分支合并请求MR且指定审查终端;
S3、代码审查:审查终端对提交的代码进行评审并提出评审意见,若代码审核通过,则将该代码合并进feature分支,未通过,则关闭分支合并请求MR;开发者针对评审意见对代码进行优化或修改,并再次提交开发文件,直至审核通过;
S4、版本跟踪:迭代开发结束后,在feature分支上打标,标记版本号,并将标签推送至远端;
S5、将所述feature分支合并到develop分支。
2.根据权利要求1所述的一种基于分布式版本控制***的代码管控方法,其特征在于,所述步骤S1中新建一个feature分支,具体为:
在本地通过git命令新建feature分支再推送至远端或在Gitlab的分支管理界面直接新建feature分支,本地再从远端获取。
3.根据权利要求1所述的一种基于分布式版本控制***的代码管控方法,其特征在于,所述步骤S2中在Gitlab提交分支合并请求MR且指定审查终端,具体过程为:
打开远端仓库,创建一个分支合并请求MR,选择需要创建分支合并请求MR的分支以及需要合并的分支,并指定审查终端。
4.根据权利要求1所述的一种基于分布式版本控制***的代码管控方法,其特征在于,每次所述提交开发文件,都会生成唯一的版本号commit id。
5.根据权利要求4所述的一种基于分布式版本控制***的代码管控方法,其特征在于,所述版本号commit id采用SHA-1算法生成。
6.根据权利要求1所述的一种基于分布式版本控制***的代码管控方法,其特征在于,所述分布式版本控制***Git采用键值对数据库,向所述数据库中***任意内容时将返回一个用于取回该值的hash键;每个代码版本中内容都保存在所述数据库中。
7.根据权利要求6所述的一种基于分布式版本控制***的代码管控方法,其特征在于,每个开发分支关联一个树对象,所述树对象存储当前开发分支下所有文件名以及对应的Key值和其他树对象的引用,开发完成后,开发文件将被添加到缓存区。
8.根据权利要求1所述的一种基于分布式版本控制***的代码管控方法,其特征在于,每次提交文件为当前版本的一个快照,所述快照包括顶级树对象、上一次提交的对像啥希、提交者用户名及邮箱。
9.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~8任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~8中任一项所述的方法。
CN202210104331.4A 2022-01-28 2022-01-28 基于分布式版本控制***的代码管控方法、设备及介质 Pending CN114528008A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210104331.4A CN114528008A (zh) 2022-01-28 2022-01-28 基于分布式版本控制***的代码管控方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210104331.4A CN114528008A (zh) 2022-01-28 2022-01-28 基于分布式版本控制***的代码管控方法、设备及介质

Publications (1)

Publication Number Publication Date
CN114528008A true CN114528008A (zh) 2022-05-24

Family

ID=81623192

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210104331.4A Pending CN114528008A (zh) 2022-01-28 2022-01-28 基于分布式版本控制***的代码管控方法、设备及介质

Country Status (1)

Country Link
CN (1) CN114528008A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115586919A (zh) * 2022-10-13 2023-01-10 上海雷昶科技有限公司 一种基于git的代码管理方法及其管理装置
CN115629746A (zh) * 2022-12-22 2023-01-20 西安葡萄城软件有限公司 一种低代码平台多人协同开发的方法及***
CN116302082A (zh) * 2023-05-24 2023-06-23 南京砺算科技有限公司 一种版本控制的自动变基方法、装置、设备及介质
CN116955719A (zh) * 2023-09-20 2023-10-27 布谷云软件技术(南京)有限公司 一种链式网络结构数字化存储的代码管理方法及***
CN117130622A (zh) * 2023-10-26 2023-11-28 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种分布式在线代码编译运行方法及***

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115586919A (zh) * 2022-10-13 2023-01-10 上海雷昶科技有限公司 一种基于git的代码管理方法及其管理装置
CN115629746A (zh) * 2022-12-22 2023-01-20 西安葡萄城软件有限公司 一种低代码平台多人协同开发的方法及***
CN115629746B (zh) * 2022-12-22 2023-03-17 西安葡萄城软件有限公司 一种低代码平台多人协同开发的方法及***
CN116302082A (zh) * 2023-05-24 2023-06-23 南京砺算科技有限公司 一种版本控制的自动变基方法、装置、设备及介质
CN116955719A (zh) * 2023-09-20 2023-10-27 布谷云软件技术(南京)有限公司 一种链式网络结构数字化存储的代码管理方法及***
CN116955719B (zh) * 2023-09-20 2023-12-05 布谷云软件技术(南京)有限公司 一种链式网络结构数字化存储的代码管理方法及***
CN117130622A (zh) * 2023-10-26 2023-11-28 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种分布式在线代码编译运行方法及***
CN117130622B (zh) * 2023-10-26 2024-01-12 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种分布式在线代码编译运行方法及***

Similar Documents

Publication Publication Date Title
CN114528008A (zh) 基于分布式版本控制***的代码管控方法、设备及介质
US10621211B2 (en) Language tag management on international data storage
US20230161746A1 (en) Data pipeline branching
US10705832B2 (en) Efficient storage and analysis of source code modification history data
US11630650B2 (en) Systems and methods for creating enterprise software
CN110865806B (zh) 代码处理方法、装置、服务器及存储介质
US9442719B2 (en) Regression alerts
CN113590172A (zh) 一种代码文件发布方法、装置、设备及存储介质
CN112765102A (zh) 一种文件***管理方法和装置
CN111796855A (zh) 一种增量版本更新方法、装置、存储介质及计算机设备
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
Tan et al. Detecting outdated code element references in software repository documentation
US11392371B2 (en) Identification of a partial code to be refactored within a source code
WO2017072872A1 (ja) 業務プログラム生成支援システムおよび業務プログラム生成支援方法
CN110728584B (zh) 信息处理方法及装置、可读存储介质和电子设备
US11829230B2 (en) Globally unique error codes for knowledge document indexing in software systems
US11651852B2 (en) Methods for surgical guideline indicator mapping to facilitate automated medical bill adjudication and devices thereof
Silva et al. Lm2f: a life-cycle model maintenance framework for co-evolving enterprise architecture meta-models and models
US20230252107A1 (en) Management device, management method, and storage medium
EP4109287A1 (en) A collaborative system and method for multi-user data management
CN114169296A (zh) 文档处理方法、装置、电子设备和可读存储介质
US9747327B2 (en) Managing content item syndication by maintaining referential integrity between remote or isolated systems
CN116226066A (zh) 低代码平台代码同步方法和装置、电子设备、存储介质
CN114064474A (zh) 测试方法、装置、电子设备及计算机可读存储介质
CN112035455A (zh) 元数据处理方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination