CN109558318B - 一种代码管理方法和代码仓库分布式*** - Google Patents
一种代码管理方法和代码仓库分布式*** Download PDFInfo
- Publication number
- CN109558318B CN109558318B CN201811406091.3A CN201811406091A CN109558318B CN 109558318 B CN109558318 B CN 109558318B CN 201811406091 A CN201811406091 A CN 201811406091A CN 109558318 B CN109558318 B CN 109558318B
- Authority
- CN
- China
- Prior art keywords
- code
- program code
- audited
- auditing server
- server
- 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.)
- Active
Links
- 238000007726 management method Methods 0.000 title claims abstract description 20
- 230000010354 integration Effects 0.000 claims abstract description 72
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000001514 detection method Methods 0.000 claims abstract description 22
- 230000002085 persistent effect Effects 0.000 claims description 29
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000012550 audit Methods 0.000 claims description 6
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种代码管理方法和代码仓库分布式***,其中,方法包括:主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,所述指示消息包括所述待审核程序代码;所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。本发明实施例可以提升代码仓库的性能。
Description
技术领域
本发明涉及代码仓库技术领域,尤其涉及一种代码管理方法和代码仓库分布式***。
背景技术
代码仓库(例如:Gerrit)是一种免费、开放源代码的代码审查软件,使用网页界面。用于供同一个团队中的软件开发人员相互审阅彼此修改后的程序代码,从而检查修改后的程序代码能否兼容、被正确执行等。从而决定是否能够提交,退回或者继续修改程序代码。
在相关技术中,代码仓库只有一台代码审核服务器,随着代码仓库中用户量的大量增长等,单台代码审核服务器将造成代码仓库的性能差。例如:当大量开发人员和自动化集成设备在同时使用代码仓库下载程序代码时,代码审核服务器的线程池将被占满,代码审核服务器依次完成队列中的各个任务需要消耗大量的时间,甚至造成代码审核服务器反应慢或者死机。
由此可知,相关技术中的代码仓库存在性能差的缺陷。
发明内容
本发明实施例提供一种代码管理方法和代码仓库分布式***,以解决相关技术中代码仓库存在性能差的问题。
为解决以上技术问题,本发明采用如下技术方案:
第一方面,本发明实施例提供了一种代码管理方法,包括:
主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,其中,所述指示消息包括所述待审核程序代码;
所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;
所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。
第二方面,本发明实施例提供了一种代码仓库分布式***,包括主代码审核服务器、持续集成设备和第一从代码审核服务器:
所述主代码审核服务器,用于在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向所述持续集成设备发送指示消息,其中,所述指示消息包括所述待审核程序代码;
所述持续集成设备,用于从所述第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;
所述持续集成设备,还用于根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。
在本发明实施例中,主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,所述指示消息包括所述待审核程序代码;所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。这样,利用主代码审核服务器和第一从代码审核服务器分别执行获取待审核代码和下载第一程序代码的功能,以避免由单个代码审核服务器执行获取和下载程序代码而造成单个代码审核服务器的线程池被沾满,从而提升了具有至少两个代码审核服务器的代码仓库的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种代码管理方法的流程图;
图2是本发明实施例提供的另一种代码管理方法的流程图;
图3是本发明实施例中主代码审核服务器将待审核代码同步至第一从代码审核服务器的流程图;
图4是本发明实施例提供的一种代码仓库分布式***的结构图;
图5是本发明实施例提供的另一种代码仓库分布式***的结构图;
图6是本发明实施例提供的一种Gerrit代码仓库分布式***的工作流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在具体应用过程中,一个代码仓库中可以存储多个编程项目的程序代码,且每一个编程项目分别由不同的开发团队负责编写程序代码。在编写程序代码的过程中,各个开发人员往往需要对其负责编写的程序代码进行多次修改、调试等。最后,在全部功能模块的程序代码审核通过以后,再将全部程序代码进行整合,形成一个完整的编程项目,以实现该编程项目的功能。
为了避免在整合全部开发人员编写的程序代码之后,才能发现各段程序代码之间不兼容或者执行错误的问题。每一个开发人员在编写完或者修改完程序代码之后,需要将其上传至代码仓库,以供其他开发人员或者审核人员下载以查看和审核该段程序代码,从而及时发现兼容性错误和编写错误。
请参阅图1,是本发明实施例提供的一种代码管理方法的流程图。如图1所示,本发明实施例提供的一种代码管理方法,包括以下步骤:
步骤101、主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,其中,所述指示消息包括所述待审核程序代码。
其中,所述待审核程序代码可以是所述主代码审核服务器接收到的用户终端上传的程序代码。
另外,所述主代码审核服务器可以是Grrite主服务器(也可以称之为GrriteMaster)。
另外,可以在所述主代码审核服务器中设置触发器(也可以称之为:trigger),在所述主代码审核服务器获取到待审核程序代码的情况下,所述触发器可以触发所述主代码审核服务器向所述持续集成设备发送所述指示消息。从而确保开发人员每次修改完程序代码之后,都会触发持续集成设备检查该程序代码是够正确。
当然,触发所述主代码审核服务器向所述持续集成设备发送所述指示消息的方式不仅仅局限于触发器,例如:其还可以是在所述主代码审核服务器中配置一段触发代码,时刻检测所述主代码审核服务器是否获取到待审核程序代码,并在所述主代码审核服务器获取到待审核程序代码的情况下,使其向所述持续集成设备发送所述指示消息。
本步骤中,在所述主代码审核服务器获取到所述待审核程序代码的情况下,子昂所述持续集成设备发送指示消息,以使所述持续集成设备能够及时检测所述待审核程序代码,从而及时发现所述待审核程序代码中的错误,提升了所述代码管理方法的可靠性。
步骤102、所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码。
需要说明的是,所述第一从代码审核服务器可以是第一Gerrit从服务器(也可以称之为Gerrit Slave 01),且同一个代码仓库中可以根据编程项目的大小、数量等,将第一从代码审核服务器或者持续集成设备的数量设置为多个。
其中,在代码仓库包括多个第一从代码审核服务器和多个持续集成设备的情况下,可以在代码仓库中设置负载均衡器,以将检查待审核程序代码的任务分配至空闲的持续集成设备,且使持续集成设备从空闲的第一从代码审核服务器下载所述第一程序代码,避免一个持续集成设备或者第一从代码审核服务器执行过多的任务而造成其工作效率低。
另外,所述指示消息还可以包括所述待审核程序代码所属的编程项目的标识信息。
这样,所述持续集成设备便可以根据所述编程项目的标识信息,从所述第一从代码审核服务器中下载所述第一程序代码,便于将所述待审核程序代码与所述第一程序代码编译成可执行文件,通过执行该可执行文件便能够及时发现所述待审核程序代码是否与所述第一程序代码兼容和是否编写错误。
其中,所述第一程序代码可以是所述待审核程序代码所属的编程项目中的除了所述待审核程序代码之外的其他程序代码,该第一程序代码可在所述主代码审核服务器获取到所述待审核程序代码之前,存储于所述第一从代码审核服务器中。
其中,将所述第一程序代码与所述待审核代码编译成可执行文件后,可以通过执行该可执行文件而得出执行结果,进而将所述执行结果与所述编程项目的期望输出结果进行匹配,若所述执行结果与所述编程项目的期望输出结果匹配,便可以确定所述待审核代码通过所述持续集成设备的编译检测。
当然,还可以将各个编程项目分别存储于不同的存储目录下,且在指示消息中记录负责上传各段代码的用户终端的IP地址等,在持续集成设备接收到该指示消息后,可以按照预设对应关系查找与上传所述待审核程序代码的用户终端的IP地址对应的编程项目,以及其在存储目录中的具***置,从而下载该编程项目中除了所述待审核程序代码以外的其他程序代码。
需要说明的是,所述第一从代码审核服务器和所述主代码审核服务器之间可以数据同步连接,即在所述主代码审核服务器在获取到待审核程序代码之前,所述主代码审核服务器可以将其获取到的程序代码同步至所述第一从代码审核服务器中,从而使所述第一从代码审核服务器中存储有所述第一程序代码。
当然,所述第一从代码审核服务器中存储的所述第一程序代码还可以通过其他方式获取,例如:通过用户终端直接上传。
本步骤中,所述持续集成设备从所述第一从代码审核服务器下载程序代码,以使所述第一从代码审核服务器与所述主代码审核服务器分别执行不同的功能,达到避免单一代码审核服务器执行的功能过于集中而造成其线程池被沾满的问题,从而提升了代码管理方法的效率。
步骤103、所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。
其中,检测所述待审核程序代码的过程,可以包括:
所述持续集成设备将所述第一程序代码和所述待审核程序代码编译成可执行文件,并执行所述执行文件,以得到执行结果;
所述持续集成设备将所述执行结果与预设的期限结果进行比较,以得到所述检测结果,并向所述主代码审核服务器返回检测结果。
当然,所述持续集成设备还可以对所述待审核程序代码进行静态检查,以检查出所述待审核程序代码中的语法错误、编写错误等。并且,同样可以将静态检查结果返回至所述主代码审核服务器。
这样,所述主审核服务器可以在检测结果指示待审核程序代码有错误的情况下,发出提示信息,以提醒开发人员及时修改错误,或者在检测到所述待审核程序代码有错误的情况下,可以删除所述待审核程序代码,并提醒开发人员重新上传。
本步骤中,利用持续集成设备对所述待审核程序代码进行检查,以及时发现其中的错误,替身所述代码管理方法的准确性。
在本发明实施例中,主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,所述指示消息包括所述待审核程序代码;所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。这样,利用主代码审核服务器和第一从代码审核服务器分别执行获取待审核代码和下载第一程序代码的功能,以避免由单个代码审核服务器执行获取和下载程序代码而造成单个代码审核服务器的线程池被沾满,从而提升了具有至少两个代码审核服务器的代码仓库的性能。
请参阅图2,是本发明实施例提供的另一种代码管理方法的流程图。如图2所示,另一种代码管理方法包括以下步骤:
步骤201、主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,其中,所述指示消息包括所述待审核程序代码。
其中,所述持续集成设备可以Jenkins服务器、Team City服务器、Travis CI服务器等任意一种持续集成工具。
步骤202、所述主代码审核服务器将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器。
其中,所述待审核程序代码为对第二程序代码进行修改的程序代码。
另外,在将第二程序代码修改为所述待审核程序代码之后,所述主代码审核服务器将其存储的第二程序代码删除,并存储所述待审核程序代码。
而且,所述将所述待审核程序代码同步至所述第一从代码审核服务器的过程,可以是将所述第一从代码审核服务器中存储的所述第二程序代码替换为所述待审核程序代码。
作为一种可选的实施方式,所述主代码审核服务器中还存储有所述待审核程序代码所属编程项目的标识信息,所述主代码审核服务器将所述待审核程序代码同步至所述第一从代码审核服务器的步骤,包括:
所述主代码审核服务器获取其同步任务队列中每一个子进程对应的待审核程序代码的标识信息,并将标识信息相同的待审核程序代码对应的子进程合并为一个进程,其中,所述同步任务队列中排列有至少两个子进程;
所述主代码审核服务器执行合并后的进程,以将所述待审核程序代码同步至所述第一从代码审核服务器。
其中,属于同一个编程项目的待审核程序代码的标识信息相同。
在具体应用过程中,所述主代码审核服务器在一个同步周期内可以获取多段待审核程序代码,因此,所述主代码审核服务器需要将所述多段待审核程序代码同步至所述第一从代码审核服务器,因此,需要进行多个同步的子进程。
其中,多个子进程可以按照预设的顺序进行排列,以形成所述同步任务队列。
另外,预设顺序可以是按照各个子进程预先设置的优先级排列,或者按照子进程产生的时间点的先后顺序排列。
另外,所述一个同步周期可以是预设的时间长度,也可以是指所述主代码审核服务器获取到预设数量的待审核程序代码之后,所述主代码审核服务器执行同步操作,避免主代码审核服务器时刻进行同步操作而增加主代码审核服务器的损耗。
而且,所述标识信息可以是所述编程项目的项目名称、项目编号等可以区分不同编程项目的标识信息。
例如,如图3所示,是本发明实施例中主代码审核服务器将待审核代码同步至第一从代码审核服务器的流程图。在本实施方式中,所述主代码审核服务器采用Gerrit Master301,其中配置有同步插件(也可以称之为replication插件),所述第一从代码审核服务器采用Gerrit Slave 302,在Gerrit Master 301将多个待审核程序代码同步至所述GerritSlave 302的过程中,先读取replication插件的同步任务队列303,(也可以称之为replication job queue,数据同步消息队列),以及同步任务队列303中的各个子进程所在的编程项目的项目名称3031(也可以称之为project name),然后将项目名称相同的子进程3031合并为一个进程304。
具体的,如图3所示,假设同步任务队列中包括4个子进程,分别为:第一子进程、第二子进程、第三子进程、第四子进程,且4个子进程的项目名称3031相同,则合并这4个子进程之后,形成1个进程。此时,Gerrit Master只需要执行这1个进程便可以完成同步任务。
需要说明的是,图3中仅标注第一子进程的项目名称3031,其余子进程的项目名称与第一子进程的项目名称3031的项目名称相同,因此未标号。
本实施方式中,将与同一个编程项目对应的多个子进程合并为一个进程,并使主代码审核服务器执行合并后的进程,可以减少进程的数量,以提升所述同步过程的效率。
作为一种可选的实施方式,所述方法还包括:
用户终端从第二从代码审核服务器下载程序代码。
在本实施方式中,步骤202,包括:
所述主代码审核服务器将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器和所述第二从代码审核服务器。
在具体应用过程中,审核人员或者开发人员可能会下载其他开发人员上传的程序代码,已进行审查或者检查程序代码之间的兼容性。
此时,审核人员或者其他开发人员便可以通过第二从代码审核服务器下载程序代码,所述第二从代码审核服务器可以是第二Gerrit从服务器(也可以称之为Gerrit Slave02)。
其中,可以根据开发人员的数量或者编程任务的数量,将所述第二从代码审核服务器的数量设置为多个。
在多个开发人员同时下载程序代码的情况下,可以通过负载均衡等方式将多个下载程序代码的任务分配至空闲的第二从代码审核服务器执行,避免一个第二从代码审核服务器执行的任务过多而降低其效率。
需要说明的是,用户终端从第二从代码审核服务器下载的程序代码,是所述主代码审核服务器预先将其存储的程序代码同步至所述第二从代码审核服务器中的程序代码。
本实施方式中,将用户终端下载程序代码的任务由第二从代码审核服务器执行,与持续集成设备执行的下载任务分别由不同的从代码审核服务器执行。避免了持续集成设备和用户终端同时从单个代码审核服务器下载程序代码而造成单个代码审核服务器需要依次执行过多的下载任务,因此本实施方式可以提升所述代码管理方法的工作效率。
作为一种可选的实施方式,为了使用户终端上传待审核程序代码至所述主代码审核服务器,并从第二从代码审核服务器下载程序代码,可以在用户终端中设置配置信息(也可以称之为gitconfig),所述配置信息将用户终端上传程序代码的操作分配至所述主代码审核服务器,并将用户终端下载程序代码的操作分配至所述第二从代码审核服务器。
本实施方式中,通过设置配置信息,便可以实现将用户终端执行的上传程序代码和下载程序代码的操作分配至相应的代码审核服务器执行,从而避免了人工将上传程序代码和下载程序代码的操作分别针对相应的代码审核服务器进行操作的步骤,从而提升了所述代码管理方法的便捷程度。
步骤203、所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码。
步骤204、所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。
需要说明的是,步骤202还可以在步骤203和步骤204之后执行。
例如:所述主代码审核服务器在一个同步周期内获取了3段待审核程序代码,则可以采用所述持续集成设备分别检测3段待审核程序代码是否有错误。
情况一:在检测出3段待审核程序代码没有出现错误的情况下,所述主代码审核服务器将这3段待审核程序代码同步至所述第一从代码审核服务器。
情况二:在检测出2段待审核程序代码没有出现错误,1段待审核程序代码出现了错误的情况下,所述主代码审核服务器将未出现错误的2段待审核程序代码同步至所述第一从代码审核服务器,并提醒负责编写出现错误的1段待审核程序代码的开发人员,需要修改这段待审核程序代码,并重新上传修改后的待审核程序代码。
当然,在开发人员修改完出现错误的1段待审核程序代码之后,任然需要利用所述持续集成设备对修改后的程序代码进行检测,并依上述情况一和情况而进行循环。
本实施方式中,根据持续集成设备的检测结果,使主代码审核服务器仅将检测无误后的待审核程序代码同步至所述第一从代码审核服务器,可以节省不必要的同步操作,提升了所述主代码审核服务器的工作效率。
当然,在用户终端从第二从代码审核服务器下载程序代码的情况下,所述主代码审核服务器可以按照本实施方式将检测无误后的待审核程序代码同步至所述第一从代码审核服务器和所述第二从代码审核服务器。
本发明实施例中,获取到待审核程序代码的操作由主代码审核服务器执行,持续集成设备下载程序代码的操作由第一从代码审核服务器执行,将用户终端下载程序代码的操作由第二从代码审核服务器执行,从而将代码仓库中服务器执行的下载程序代码和上传程序代码的操作分配至多个代码审核服务器执行,能够更加有效的减少各个代码审核服务器执行的进程,从而更加有效的提升所述代码管理方法的效率。
请参阅图4,是本发明实施例提供的一种代码仓库分布式***的结构图。如图4所示,代码仓库分布式***400包括主代码审核服务器401、持续集成设备402和第一从代码审核服务器403:
主代码审核服务器401,用于在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备402发送指示消息,其中,所述指示消息包括所述待审核程序代码;
持续集成设备402,用于从第一从代码审核服务器403下载检测所述待审核程序代码所需的第一程序代码;
持续集成设备402,还用于根据所述第一程序代码,检测所述待审核程序代码,并向主代码审核服务器401返回检测结果。
可选的,所述第一程序代码为所述待审核程序代码所属的编程项目的程序代码,持续集成设备402具体用于:
将所述第一程序代码和所述待审核程序代码编译成可执行文件,并执行所述执行文件,以得到执行结果;
将所述执行结果与预设的期限结果进行比较,以得到所述检测结果,并向主代码审核服务器401返回检测结果。
可选的,所述待审核程序代码为对第二程序代码进行修改的程序代码,主代码审核服务器401还用于:
在获取到待审核程序代码的情况下,存储所述待审核程序代码之后,将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至第一从代码审核服务器403。
可选的,如5所示,代码仓库分布式***400,还包括用户终端404和第二从代码审核服务器405:
用户终端404,用于从第二从代码审核服务器405下载程序代码;
主代码审核服务器401,用于将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至第一从代码审核服务器403和第二从代码审核服务器405。
可选的,主代码审核服务器401中还存储有所述待审核程序代码所属编程项目的标识信息,主代码审核服务器401,具体用于:
获取其同步任务队列中每一个子进程对应的待审核程序代码的标识信息,并将标识信息相同的待审核程序代码对应的子进程合并为一个进程,其中,所述同步任务队列中排列有至少两个子进程、;
执行合并后的进程,以将所述待审核程序代码同步至第一从代码审核服务器403。
本发明实施例提供的代码仓库分布式***,能够实现如图1或图2所示方法实施例中的各个步骤,且能够取得相同的有益效果,为避免重复,在此不做具体赘述。
请参阅图6,是本发明实施例提供的一种Gerrit代码仓库分布式***的工作流程图。如图6所示,Gerrit代码仓库分布式***包括:Gerrit主服务器601、第一Gerrit从服务器602、第二Gerrit从服务器603、持续集成设备604以及用户终端605。
本实施方式中,持续集成设备604为Jenkins服务器,当然,其还可以是Team City服务器、Travis CI服务器等任意一种持续集成工具。
在具体的工作过程中,开发人员通过用户终端605向Gerrit主服务器601提交修改后的待审核程序代码;
Gerrit主服务器601接收并存储所述待审核程序代码,并向持续集成设备604发送指示消息,以触发持续集成设备604对所述待审核程序代码进行静态检查和编译执行检查;
持续集成设备604,将检查结果返回至Gerrit主服务器601,Gerrit主服务器601可以根据检查结果提醒开发人员修改待审核的程序代码和/或将待审核的程序代码同步至第一Gerrit从服务器602和第二Gerrit从服务器603。
其他开发人员或者审核人员通过用户终端605从第二Gerrit从服务器603下载程序代码。
其中,持续集成设备604检查待审核的程序代码的方法与图1或图2所示方法实施例中相同,Gerrit主服务器601将待审核的程序代码同步至第一Gerrit从服务器602和第二Gerrit从服务器603的方法与图2中主代码审核服务器将待审核程序代码同步至第一从代码审核服务器和第二从代码审核服务器中的方式也相同,为避免重复,在此不再赘述。
另外,为了确保用户终端605从第二Gerrit从服务器603下载程序代码,从Gerrit主服务器601上传程序代码,避免上传的程序代码的任务分配至第二Gerrit从服务器603和避免下载程序代码的任务分配至Gerrit主服务器601。同样可以在用户终端605中设置配置文件(也可以称之为:gitconfig),其与如图2中所示方法实施例中的配置文件相同,且能够取得相同的有益效果,在此不再赘述。
本实施方式提供的Gerrit代码仓库分布式***,能够实现如图2所示方法实施例中的各个步骤,且能够达到相同的有益效果,为避免重复,在此不再赘述。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种代码管理方法,其特征在于,所述方法包括:
主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向持续集成设备发送指示消息,其中,所述指示消息包括所述待审核程序代码;
所述主代码审核服务器将所述待审核程序代码同步至第一从代码审核服务器;
其中,所述主代码审核服务器中还存储有所述待审核程序代码所属编程项目的标识信息,所述主代码审核服务器将所述待审核程序代码同步至所述第一从代码审核服务器的步骤,包括:
所述主代码审核服务器获取其同步任务队列中每一个子进程对应的待审核程序代码的标识信息,并将标识信息相同的待审核程序代码对应的子进程合并为一个进程,其中,所述同步任务队列中排列有至少两个子进程;
所述主代码审核服务器执行合并后的进程,以将所述待审核程序代码同步至所述第一从代码审核服务器;
所述持续集成设备从第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;
所述持续集成设备根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。
2.根据权利要求1所述的方法,其特征在于,所述第一程序代码为所述待审核程序代码所属的编程项目的程序代码,所述持续集成设备根据第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果的步骤,包括:
所述持续集成设备将所述第一程序代码和所述待审核程序代码编译成可执行文件,并执行所述执行文件,以得到执行结果;
所述持续集成设备将所述执行结果与预设的期限结果进行比较,以得到所述检测结果,并向所述主代码审核服务器返回检测结果。
3.根据权利要求1所述的方法,其特征在于,所述待审核程序代码为对第二程序代码进行修改的程序代码,所述主代码审核服务器在获取到待审核程序代码的情况下,存储所述待审核程序代码之后,所述方法还包括:
所述主代码审核服务器将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器。
4.根据权利要求3所述的代码管理方法,其特征在于,所述方法还包括:
用户终端从第二从代码审核服务器下载目标程序代码,其中,所述目标程序代码为其他用户上传的待审核的程序代码;
所述主代码审核服务器将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器的步骤,包括:
所述主代码审核服务器将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器和所述第二从代码审核服务器。
5.一种代码仓库分布式***,其特征在于,包括主代码审核服务器、持续集成设备和第一从代码审核服务器:
所述主代码审核服务器,用于在获取到待审核程序代码的情况下,存储所述待审核程序代码,并向所述持续集成设备发送指示消息,其中,所述指示消息包括所述待审核程序代码;
所述主代码审核服务器,还用于将所述待审核程序代码同步至所述第一从代码审核服务器;
其中,所述主代码审核服务器中还存储有所述待审核程序代码所属编程项目的标识信息,所述主代码审核服务器执行的将所述待审核程序代码同步至所述第一从代码审核服务器,包括:
获取其同步任务队列中每一个子进程对应的待审核程序代码的标识信息,并将标识信息相同的待审核程序代码对应的子进程合并为一个进程,其中,所述同步任务队列中排列有至少两个子进程;
执行合并后的进程,以将所述待审核程序代码同步至所述第一从代码审核服务器;
所述持续集成设备,用于从所述第一从代码审核服务器下载检测所述待审核程序代码所需的第一程序代码;
所述持续集成设备,还用于根据所述第一程序代码,检测所述待审核程序代码,并向所述主代码审核服务器返回检测结果。
6.根据权利要求5所述的代码仓库分布式***,其特征在于,所述第一程序代码为所述待审核程序代码所属的编程项目的程序代码,所述持续集成设备具体用于:
将所述第一程序代码和所述待审核程序代码编译成可执行文件,并执行所述执行文件,以得到执行结果;
将所述执行结果与预设的期限结果进行比较,以得到所述检测结果,并向所述主代码审核服务器返回检测结果。
7.根据权利要求5所述的代码仓库分布式***,其特征在于,所述待审核程序代码为对第二程序代码进行修改的程序代码,所述主代码审核服务器还用于:
在获取到待审核程序代码的情况下,存储所述待审核程序代码之后,将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器。
8.根据权利要求7所述的代码仓库分布式***,其特征在于,还包括用户终端和第二从代码审核服务器:
所述用户终端,用于从所述第二从代码审核服务器下载目标程序代码,其中,所述目标程序代码为其他用户上传的待审核的程序代码;
所述主代码审核服务器,用于将所述待审核程序代码覆盖所述第二程序代码,并将所述待审核程序代码同步至所述第一从代码审核服务器和所述第二从代码审核服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811406091.3A CN109558318B (zh) | 2018-11-23 | 2018-11-23 | 一种代码管理方法和代码仓库分布式*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811406091.3A CN109558318B (zh) | 2018-11-23 | 2018-11-23 | 一种代码管理方法和代码仓库分布式*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109558318A CN109558318A (zh) | 2019-04-02 |
CN109558318B true CN109558318B (zh) | 2022-03-29 |
Family
ID=65867091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811406091.3A Active CN109558318B (zh) | 2018-11-23 | 2018-11-23 | 一种代码管理方法和代码仓库分布式*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558318B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688672A (zh) * | 2019-09-17 | 2020-01-14 | 上海易点时空网络有限公司 | 保证数据仓库文件下载安全性的方法及*** |
CN110865934B (zh) * | 2019-10-08 | 2023-10-27 | 北京百度网讯科技有限公司 | 代码验证方法、装置、电子设备及可读存储介质 |
CN111459538B (zh) * | 2020-04-07 | 2024-02-13 | 中国建设银行股份有限公司 | 代码同步方法及装置 |
CN113672507A (zh) * | 2021-08-16 | 2021-11-19 | 深圳供电局有限公司 | 软件源代码检测方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302716A (zh) * | 2014-07-30 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 合流开发模式下的测试方法、装置 |
CN105739968A (zh) * | 2016-01-20 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 基于分布式版本控制***Git的更新内容的评审方法和装置 |
CN107168758A (zh) * | 2017-04-12 | 2017-09-15 | 北京小米移动软件有限公司 | 多代码库的代码编译检查方法及装置 |
CN108073394A (zh) * | 2018-02-27 | 2018-05-25 | 西安闻泰电子科技有限公司 | 代码管理方法、装置、代码管理服务器及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9952856B2 (en) * | 2014-08-01 | 2018-04-24 | Sap Se | Deploying mobile applications in a collaborative cloud environment |
-
2018
- 2018-11-23 CN CN201811406091.3A patent/CN109558318B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105302716A (zh) * | 2014-07-30 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 合流开发模式下的测试方法、装置 |
CN105739968A (zh) * | 2016-01-20 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 基于分布式版本控制***Git的更新内容的评审方法和装置 |
CN107168758A (zh) * | 2017-04-12 | 2017-09-15 | 北京小米移动软件有限公司 | 多代码库的代码编译检查方法及装置 |
CN108073394A (zh) * | 2018-02-27 | 2018-05-25 | 西安闻泰电子科技有限公司 | 代码管理方法、装置、代码管理服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109558318A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558318B (zh) | 一种代码管理方法和代码仓库分布式*** | |
US9940225B2 (en) | Automated error checking system for a software application and method therefor | |
US10841185B2 (en) | Platform-integrated IDE | |
KR100868762B1 (ko) | 임베디드용 소프트웨어의 오류 검출 방법 | |
CN105843741B (zh) | 应用程序的信息处理方法和装置 | |
CN110187914B (zh) | 应用开发方法、***及装置 | |
CN106371940B (zh) | 一种程序崩溃解决方法及装置 | |
US10083027B2 (en) | Systems and methods for managing software development environments | |
CN107832230B (zh) | 基于数据调优的测试方法、设备以及*** | |
US20160378647A1 (en) | Development supporting system | |
US20080222606A1 (en) | Guided development and testing for computer code | |
US9971595B1 (en) | Techniques for automated database deployment | |
CN109766124A (zh) | 业务开发方法、装置、计算机设备和存储介质 | |
CN109840194B (zh) | 一种配置文件的检测方法及*** | |
US20150006961A1 (en) | Capturing trace information using annotated trace output | |
CN103019722B (zh) | 一种抽取Java网络应用升级包的方法及装置 | |
US20190073292A1 (en) | State machine software tester | |
CN109857649B (zh) | 一种资源测试方法及*** | |
CN111651352B (zh) | 一种仓库代码的合并方法及装置 | |
CN112069073A (zh) | 测试用例的管理方法、终端和存储介质 | |
EP3131041A1 (en) | Testing of enterprise resource planning systems | |
CN112099880A (zh) | 场景驱动的应用程序约减方法和*** | |
US10698666B2 (en) | Automatically building software projects | |
CN109710596B (zh) | 数据清理方法、装置、设备及计算机可读存储介质 | |
CN110471828B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |