CN113672277B - 代码同步方法、系统、计算机设备和存储介质 - Google Patents

代码同步方法、系统、计算机设备和存储介质 Download PDF

Info

Publication number
CN113672277B
CN113672277B CN202110851859.3A CN202110851859A CN113672277B CN 113672277 B CN113672277 B CN 113672277B CN 202110851859 A CN202110851859 A CN 202110851859A CN 113672277 B CN113672277 B CN 113672277B
Authority
CN
China
Prior art keywords
delivery
code
branch
developer
warehouse
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
Application number
CN202110851859.3A
Other languages
English (en)
Other versions
CN113672277A (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.)
Shanghai Pudong Development Bank Co Ltd
Original Assignee
Shanghai Pudong Development Bank 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 Shanghai Pudong Development Bank Co Ltd filed Critical Shanghai Pudong Development Bank Co Ltd
Priority to CN202110851859.3A priority Critical patent/CN113672277B/zh
Publication of CN113672277A publication Critical patent/CN113672277A/zh
Application granted granted Critical
Publication of CN113672277B publication Critical patent/CN113672277B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/458Synchronisation, e.g. post-wait, barriers, locks

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种代码同步方法、系统、计算机设备和存储介质。该方法应用于未建立网络通信连接的第一开发机和第二开发机,第一开发机包括第一交付仓库,第二开发机包括第二交付仓库和第二本地仓库;该方法包括:第一开发机将第一交付分支的交付代码推送至第一交付仓库,其中,第一交付仓库是通过文件夹的形式构建得到的;第二开发机拷贝第一交付仓库中的第一交付分支的交付代码;第二开发机将交付代码存入第二交付仓库中的第二交付分支;第二开发机将第二交付分支的交付代码拉取到第二本地仓库。采用本方法能够实现在不同开发团队互相之间无网络通信时的代码同步。

Description

代码同步方法、系统、计算机设备和存储介质
技术领域
本申请涉及软件版本控制技术领域,特别是涉及一种代码同步方法、系统、计算机设备和存储介质。
背景技术
在代码开发中,两个或两个以上的开发团队同时进行同一项目的代码开发,需要互相访问彼此的代码仓库以实现代码同步。开发团队一般使用版本控制工具来开发管理程序代码。版本控制工具例如可以是Git、SVN等。
传统的代码同步方法通常基于搭建在同一局域网内的版本控制工具来实现同一公司中不同开发团队开发时的代码同步。但是,在金融、银行等保密性要求较高的公司,通常只会借助于搭建在各自不同的局域网内的版本控制工具进行代码开发。当某一公司的开发团队需要和其他公司的开发团队联合针对同一项目进行代码开发时,由于不同公司的不同开发团队互相之间无网络通信,采用传统技术无法实现代码的同步。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在不同开发团队之间无网络通信时,实现代码同步的代码同步方法、系统、计算机设备和存储介质。
一种代码同步方法,应用于未建立网络通信连接的第一开发机和第二开发机,所述第一开发机包括第一交付仓库,所述第二开发机包括第二交付仓库和第二本地仓库;所述方法包括:
所述第一开发机将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库。
在其中一个实施例中,在所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库之后,还包括:
所述第二开发机响应于代码修改启动命令,创建功能分支,其中,所述功能分支用于执行对于所述交付代码的修改得到修改代码;
所述第二开发机响应于代码修改结束命令,将所述功能分支的修改代码合并到所述第二本地仓库中的开发主分支中;
所述第二开发机将所述开发主分支推送至第二代码托管平台中的第二远程仓库。
在其中一个实施例中,所述第一开发机还包括第一本地仓库;所述方法还包括:
所述第二开发机将所述开发主分支的修改代码推送到所述第二交付仓库中的第二交付修改分支,其中,所述第二交付仓库是通过文件夹的形式构建得到的;
所述第一开发机拷贝所述第二交付仓库中的第二交付修改分支的修改代码;
所述第一开发机将所述修改代码存入所述第一交付仓库中的第一交付修改分支;
所述第一开发机将所述第一交付修改分支的修改代码拉取到所述第一本地仓库;
所述第一开发机根据所述第一本地仓库中的所述修改代码和所述交付代码,确定最终代码。
在其中一个实施例中,所述第一开发机根据所述第一本地仓库中的所述修改代码和所述交付代码,确定最终代码,包括:
所述第一开发机比对所述第一本地仓库中的所述修改代码和所述交付代码,得到比对结果;
所述第一开发机判定所述比对结果满足预设的代码合并条件,则将所述修改代码合并到所述第一开发机中的第一交付分支、所述第一开发机中的开发分支和/或所述第一开发机中的主分支中,得到最终代码。
在其中一个实施例中,在所述第一开发机将第一交付分支的交付代码推送至所述第一交付仓库之后,还包括:
所述第一开发机在所述第一交付仓库中切换至所述第一交付分支。
在其中一个实施例中,在所述第二开发机拷贝所述第一交付仓库中的第一交付分支的交付代码之后,还包括:
所述第二开发机在所述第二交付仓库中创建第二交付分支。
在其中一个实施例中,所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库,包括:
所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库中的开发主分支。
一种代码同步系统,所述系统包括未建立网络通信连接的第一开发机和第二开发机,所述第一开发机包括第一交付仓库,所述第二开发机包括第二交付仓库和第二本地仓库;其中,
所述第一开发机,用于将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机,用于拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机,还用于将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机,还用于将所述第二交付分支的交付代码拉取到所述第二本地仓库。
一种代码同步系统,所述系统包括未建立网络通信连接的第一开发机和第二开发机,所述第一开发机包括第一交付仓库,所述第二开发机包括第二交付仓库和第二本地仓库;其中,
所述第一开发机,用于将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机,用于拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机,还用于将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机,还用于将所述第二交付分支的交付代码拉取到所述第二本地仓库。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
所述第一开发机将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
所述第一开发机将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库。
上述代码同步方法、系统、计算机设备和存储介质,第一开发机将携带有交付代码的第一交付分支推送至第一交付仓库,该第一交付仓库是通过文件夹的形式构建得到的,然后,第二开发机拷贝第一交付仓库中的第一交付分支的交付代码,将交付代码存入第二交付仓库中的第二交付分支,并将第二交付分支的交付代码拉取到第二本地仓库,至此第二开发机完成交付代码的接收。可以理解,本申请通过文件夹的形式创建第一交付仓库,通过物理拷贝文件夹中交付代码的方式,可将交付代码提交至第二开发机的第二本地仓库中,由此实现了在不同开发团队互相之间无网络通信时的代码同步。
附图说明
图1为一个实施例中代码同步方法的应用环境图;
图2为一个实施例中代码同步方法的流程示意图;
图3为一个实施例中代码修改的流程示意图;
图4为一个实施例中代码合并的流程示意图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的代码同步方法,可以应用于如图1所示的应用环境中。其中,第一开发机102与第二开发机104未建立网络通信连接,第一开发机102包括第一交付仓库,第二开发机104包括第二交付仓库和第二本地仓库。具体地,第一开发机102将第一交付分支的交付代码推送至第一交付仓库,该第一交付仓库是通过文件夹的形式构建得到的。第二开发机104拷贝第一交付仓库中的第一交付分支的交付代码,然后将交付代码存入第二交付仓库中的第二交付分支,之后将第二交付分支的交付代码拉取到第二本地仓库。
在一个实施例中,如图2所示,提供了一种代码同步方法,以该方法应用于图1中的第一开发机和第二开发机为例进行说明,包括以下步骤:
步骤S202,第一开发机将第一交付分支的交付代码推送至第一交付仓库。
其中,第一交付仓库是通过文件夹的形式构建得到的,用于向第二开发机交付代码。
具体地,以公司A的开发团队使用第一开发机基于git开发代码,公司B的开发团队使用第二开发机基于git开发代码为例。在每个代码交付时间,公司A的开发团队通过第一开发机将第一交付分支的交付代码推送至第一交付仓库(deliver_companyA)。该第一交付分支没有历史交付记录。
更具体地,实施步骤S202的命令如下:
git checkout 20210408
git push deliver 20210408
其中,20210408为代码交付日期,使用该日期来命名第一交付分支。
步骤S204,第二开发机拷贝第一交付仓库中的第一交付分支的交付代码。
具体地,公司B的开发团队通过第二开发机,使用物理拷贝方式,获得第一交付仓库中的第一交付分支的交付代码。该交付代码可以是某交付版本的源代码。
步骤S206,第二开发机将交付代码存入第二交付仓库中的第二交付分支。
具体地,在公司B侧,第二开发机首先在第二交付仓库(deliver_companyB)中创建第二交付分支,将交付代码存入第二交付仓库中的第二交付分支。该第二交付分支可用于存储源代码,并且作为远程仓库(虽然是本地磁盘,但是从代码管理的角度来看,是公司B的一个远程仓库)中的代码源,供第二开发机拉取到第二开发机的第二本地仓库。
步骤S208,第二开发机将第二交付分支的交付代码拉取到第二本地仓库。
具体地,在公司B侧,第二开发机将第二交付分支的交付代码拉取到第二本地仓库。可选地,第二开发机将第二交付分支的交付代码拉取到第二本地仓库中的开发主分支。该开发主分支可以是infoflow分支。第二开发机将所有交付代码拉取到本地,表示第二开发机接收代码的过程完成。
更具体地,实施步骤S204-步骤S208的命令如下:
cd deliver_companyB
git checkout--orphan 20210408
cp../../companyA/deliver_companyA/demo.txt./#物理拷贝所有源代码,不包含.git文件夹
git add.
git commit-m"20210408"#创建公司B交付分支
上述代码同步方法中,第一开发机将携带有交付代码的第一交付分支推送至第一交付仓库,该第一交付仓库是通过文件夹的形式构建得到的,然后,第二开发机拷贝第一交付仓库中的第一交付分支的交付代码,将交付代码存入第二交付仓库中的第二交付分支,并将第二交付分支的交付代码拉取到第二本地仓库,至此第二开发机完成交付代码的接收。可以理解,本方法通过文件夹的形式创建第一交付仓库,通过物理拷贝文件夹中交付代码的方式,可将交付代码提交至第二开发机的第二本地仓库中,由此实现了在不同开发团队互相之间无网络通信时的代码同步。
在一个实施例中,在步骤S208之后,该方法还包括以下步骤:
步骤S212,第二开发机响应于代码修改启动命令,创建功能分支;
步骤S214,第二开发机响应于代码修改结束命令,将功能分支的修改代码合并到第二本地仓库中的开发主分支中;
步骤S216,第二开发机将开发主分支推送至第二代码托管平台中的第二远程仓库。
其中,功能分支(feature branch)用于执行对于交付代码的修改得到修改代码。
具体地,公司B侧的开发团队需要对代码开发时,通过第二开发机生成代码修改启动命令。第二开发机响应于该代码修改启动命令,创建功能分支,同时,借助于与第二代码托管平台中的第二远程仓库的交互,进行交付代码的开发修改。在修改完成后,公司B侧的开发团队通过第二开发机生成代码修改结束命令。第二开发机响应于代码修改结束命令,将功能分支的修改代码合并到第二本地仓库中的开发主分支中。最后,第二开发机将开发主分支推送至第二代码托管平台中的第二远程仓库。
更具体地,实施步骤S212-步骤S216的命令如下:
cd local_companyB
git pull deliver 20210408:infoflow
#如不能拉取,请检查本地和交付仓库是否建立关系
git checkout-b feature#检出feature分支
vim demo.txt#将111改成222
git add.
git commit-m"公司B第1次修改"
git push origin feature#推送至远程仓库
git checkout infoflow#切换至公司B开发主分支
git pull origin feature:infoflow#专人合并分支,该步骤要慎重,先仔细比对文件,并在确认测试无误时进行合并。专人对该合并负责。
git push origin infoflow#向远程推送infoflow分支
本实施例中,通过创建功能分支,公司B的开发团队可实现迭代开发。
在一个实施例中,该方法还包括以下步骤:
步骤S222,第二开发机将开发主分支的修改代码推送到第二交付仓库中的第二交付修改分支;
步骤S224,第一开发机拷贝第二交付仓库中的第二交付修改分支的修改代码;
步骤S226,第一开发机将修改代码存入第一交付仓库中的第一交付修改分支;
步骤S228,第一开发机将第一交付修改分支的修改代码拉取到第一本地仓库;
步骤S230,第一开发机根据第一本地仓库中的修改代码和交付代码,确定最终代码。
其中,第二交付仓库是通过文件夹的形式构建得到的。
具体地,当公司B的开发团队修改的代码需要交由公司A的开发团队合并时,公司B的开发团队需要通过第二开发机将修改代码推送到第二交付仓库中的第二交付修改分支。此处将第二交付分支和第二交付修改分支分开的原因在于保护原有第二交付分支,避免合并后再回退带来的其他风险。第二交付修改分支名称,可以用交付日期+“m”+加上数字,数字表示该交付版本的第几次修改版本(例:20210408_m1)。
然后,公司A的开发团队通过第一开发机在第一交付仓库中新建第一交付修改分支,然后通过物理拷贝方式获得公司B的开发团队修改的源代码,然后拉取代码到第一本地仓库(local_companyA)。之后公司A的开发团队通过第一开发机根据交付版本的代码和公司B的开发团队修改版本的代码,确定最终代码。
更具体地,实施步骤S222-步骤S230的命令如下:
cd local_companyB
git checkout infoflow#切换至公司B开发主分支
git push deliver infoflow:20210408_m1#将修改后的infoflow分支推送到交付仓库
cd../deliver_companyB
git checkout 20210408_m1#保证公司B交付时当前分支处在修改分支
git checkout 20210408
git checkout--orphan 20210408_m1#新建一个无记录分支
cp../../companyB/deliver_companyB/demo.txt./#拷贝公司B修改后的所有代码
git add.
git commit-m"公司B第1次修改"
cd../local_companyA/#进入本地开发仓库
git fetch deliver 20210408_m1:20210408_m1#拉取修改分支到本地仓库
git checkout 20210408#切换至交付分支
git diff 20210408_m1#比对代码
git merge 20210408_m1--allow-unrelated-history#合并代码,此时如有冲突,应解决冲突
本实施例中,可实现跨不同公司的不同开发团队时,代码的持续交付及持续对每一版代码的修改补充并迭代开发。
在一个实施例中,涉及上述步骤S230“第一开发机根据第一本地仓库中的修改代码和交付代码,确定最终代码”的一种可能的实现方式。在上述实施例的基础上,步骤S230具体可以通过以下步骤实现:
步骤S2302,第一开发机比对第一本地仓库中的修改代码和交付代码,得到比对结果;
步骤S2304,第一开发机判定比对结果满足预设的代码合并条件,则将修改代码合并到第一开发机中的第一交付分支、第一开发机中的开发分支和/或第一开发机中的主分支中,得到最终代码。
具体地,在公司A侧,第一开发机比对第一本地仓库中的修改代码和交付代码,得到比对结果,然后判断比对结果是否满足预设的代码合并条件,若比对结果满足预设的代码合并条件,则将修改代码合并到第一开发机中的第一交付分支、第一开发机中的开发分支和/或第一开发机中的主分支中,得到最终代码。在合并过程中,要处理出现的冲突。若比对结果不满足预设的代码合并条件,则将交付代码确定为最终代码。可选地,预设的代码合并条件可以是代码版本是否相同,代码是否相关联等等。公司A开发新版功能,并合并公司B的开发团队在上一个版本中修改的代码,在下一个交付日期交付。转至步骤S202,依次循环。
在一个实施例中,在步骤S202之后,该方法还包括以下步骤:
步骤S203,第一开发机在第一交付仓库中切换至第一交付分支。
具体地,由于第一开发机将第一交付分支的交付代码推送到第一交付仓库(本地文件夹形式)后,不会自动切换分支,导致会出现文件夹看上去为空的情况。因此,需要进入文件夹切换至第一交付分支。
更具体地,实施步骤S203的命令如下:
cd../deliver_companyA
git branch-a#发现当前分支并没有切换到该分支
git checkout 20210408#切换分支
在一个实施例中,在步骤S202之前,需进行仓库分支准备工作。具体地,
公司A和公司B侧分别准备3个仓库:第一本地仓库(local)、第一远程仓库(remote)以及第一交付仓库(deliver)。第一本地仓库是本地开发仓库(此处以1个为例),在每台第一开发机上。第一远程仓库负责管理开发团队的代码;第一交付仓库用于向第二开发机交付代码。
分支建立规则根据各自开发团队而定,但是要保证有3个基本分支:主分支、开发分支以及交付分支。
以下用在本地模拟的方式,即远程仓库并没有放在git服务器上,简单介绍仓库和分支准备步骤。以公司A侧为例,公司B侧类似。
建立第一本地仓库
git init local_companyA
建立第一远程仓库
git init remote_companyA
建立第一交付仓库并提交交付代码
git init deliver_companyA
vim demo.txt
git add.
git commit-m"init"
本地建立开发分支
git checkout master
git checkout-b dev
本地建立无历史提交记录的交付分支(分支以日期命名)
git checkout dev
git checkout--orphan 20210408
git add.
git commit-m"20210408交付版本"
建立第一本地仓库(local_companyA)和第一远程仓库(remote_companyA)的关系
cd local_companyA
git remote add origin../remote_companyA/
git remote-v#查看远程分支
建立第一本地仓库(local_companyA)和第一交付仓库(deliver_companyA)的关系
cd local_companyA
git remote add deliver../deliver_companyA/
git remote-v#查看远程分支
需要注意的是,不同开发团队可能有不同的仓库分支管理策略,但是应该至少有以上所说的3个仓库,3个分支。在实际开发中,远程仓库是放在gitlab或者其他远程代码托管平台。但是由于两地网络互不联通,交付仓库暂时需要设置为本地文件夹。
需要说明,本申请实施例中涉及到的:
交付仓库:
因为两个开发团队的代码远程仓库在各自的局域网段下,所以需要借助文件物理拷贝的方式来进行代码交付。双向同步的关键在于,除了本地和远程仓库外,在本地磁盘新建了一个交付仓库。该交付仓库存放所有代码交付分支和代码交付修改分支。通过代码在两个交付仓库中传递,串联两个开发团队。
git flow开发模型:
传统的git flow开发模型存在两个长期分支:主分支(master),开发分支(develop),还有三种短期分支:功能分支(feature branch),补丁分支(hotfix branch),预发分支(release branch)。本申请将公司B侧的分支作为辅助分支。整体上,依然只有公司A侧一个主分支,保证了整个项目的持续迭代开发。
应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种代码同步系统,该系统包括未建立网络通信连接的第一开发机和第二开发机,第一开发机包括第一交付仓库,第二开发机包括第二交付仓库和第二本地仓库;其中,
第一开发机,用于将第一交付分支的交付代码推送至第一交付仓库,其中,第一交付仓库是通过文件夹的形式构建得到的;
第二开发机,用于拷贝第一交付仓库中的第一交付分支的交付代码;
第二开发机,还用于将交付代码存入第二交付仓库中的第二交付分支;
第二开发机,还用于将第二交付分支的交付代码拉取到第二本地仓库。
上述代码同步系统中,第一开发机将携带有交付代码的第一交付分支推送至第一交付仓库,该第一交付仓库是通过文件夹的形式构建得到的,然后,第二开发机拷贝第一交付仓库中的第一交付分支的交付代码,将交付代码存入第二交付仓库中的第二交付分支,并将第二交付分支的交付代码拉取到第二本地仓库,至此第二开发机完成交付代码的接收。可以理解,本系统通过文件夹的形式创建第一交付仓库,通过物理拷贝文件夹中交付代码的方式,可将交付代码提交至第二开发机的第二本地仓库中,由此实现了在不同开发团队互相之间无网络通信时的代码同步。
在一个实施例中,第二开发机,还用于响应于代码修改启动命令,创建功能分支,其中,功能分支用于执行对于交付代码的修改得到修改代码;
第二开发机,还用于响应于代码修改结束命令,将功能分支的修改代码合并到第二本地仓库中的开发主分支中;
第二开发机,还用于将开发主分支推送至第二代码托管平台中的第二远程仓库。
在一个实施例中,第二开发机,还用于将开发主分支的修改代码推送到第二交付仓库中的第二交付修改分支,其中,第二交付仓库是通过文件夹的形式构建得到的;
第一开发机,还用于拷贝第二交付仓库中的第二交付修改分支的修改代码;
第一开发机,还用于将修改代码存入第一交付仓库中的第一交付修改分支;
第一开发机,还用于将第一交付修改分支的修改代码拉取到第一本地仓库;
第一开发机,还用于根据第一本地仓库中的修改代码和交付代码,确定最终代码。
在一个实施例中,第一开发机具体用于比对第一本地仓库中的修改代码和交付代码,得到比对结果;
第一开发机具体用于判定比对结果满足预设的代码合并条件,则将修改代码合并到第一开发机中的第一交付分支、第一开发机中的开发分支和/或第一开发机中的主分支中,得到最终代码。
在一个实施例中,第一开发机,还用于在第一交付仓库中切换至第一交付分支。
在一个实施例中,第二开发机,还用于在第二交付仓库中创建第二交付分支。
在一个实施例中,第二开发机,还用于将第二交付分支的交付代码拉取到第二本地仓库中的开发主分支。
关于代码同步系统的具体限定可以参见上文中对于代码同步方法的限定,在此不再赘述。上述代码同步系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种代码同步方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
第一开发机将第一交付分支的交付代码推送至第一交付仓库,其中,第一交付仓库是通过文件夹的形式构建得到的;
第二开发机拷贝第一交付仓库中的第一交付分支的交付代码;
第二开发机将交付代码存入第二交付仓库中的第二交付分支;
第二开发机将第二交付分支的交付代码拉取到第二本地仓库。
上述计算机设备中,第一开发机将携带有交付代码的第一交付分支推送至第一交付仓库,该第一交付仓库是通过文件夹的形式构建得到的,然后,第二开发机拷贝第一交付仓库中的第一交付分支的交付代码,将交付代码存入第二交付仓库中的第二交付分支,并将第二交付分支的交付代码拉取到第二本地仓库,至此第二开发机完成交付代码的接收。可以理解,本计算机设备通过文件夹的形式创建第一交付仓库,通过物理拷贝文件夹中交付代码的方式,可将交付代码提交至第二开发机的第二本地仓库中,由此实现了在不同开发团队互相之间无网络通信时的代码同步。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
第二开发机响应于代码修改启动命令,创建功能分支,其中,功能分支用于执行对于交付代码的修改得到修改代码;第二开发机响应于代码修改结束命令,将功能分支的修改代码合并到第二本地仓库中的开发主分支中;第二开发机将开发主分支推送至第二代码托管平台中的第二远程仓库。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
第二开发机将开发主分支的修改代码推送到第二交付仓库中的第二交付修改分支,其中,第二交付仓库是通过文件夹的形式构建得到的;第一开发机拷贝第二交付仓库中的第二交付修改分支的修改代码;第一开发机将修改代码存入第一交付仓库中的第一交付修改分支;第一开发机将第一交付修改分支的修改代码拉取到第一本地仓库;第一开发机根据第一本地仓库中的修改代码和交付代码,确定最终代码。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
第一开发机比对第一本地仓库中的修改代码和交付代码,得到比对结果;第一开发机判定比对结果满足预设的代码合并条件,则将修改代码合并到第一开发机中的第一交付分支、第一开发机中的开发分支和/或第一开发机中的主分支中,得到最终代码。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
第一开发机在第一交付仓库中切换至第一交付分支。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
第二开发机在第二交付仓库中创建第二交付分支。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
第二开发机将第二交付分支的交付代码拉取到第二本地仓库中的开发主分支。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
第一开发机将第一交付分支的交付代码推送至第一交付仓库,其中,第一交付仓库是通过文件夹的形式构建得到的;
第二开发机拷贝第一交付仓库中的第一交付分支的交付代码;
第二开发机将交付代码存入第二交付仓库中的第二交付分支;
第二开发机将第二交付分支的交付代码拉取到第二本地仓库。
上述计算机可读存储介质中,第一开发机将携带有交付代码的第一交付分支推送至第一交付仓库,该第一交付仓库是通过文件夹的形式构建得到的,然后,第二开发机拷贝第一交付仓库中的第一交付分支的交付代码,将交付代码存入第二交付仓库中的第二交付分支,并将第二交付分支的交付代码拉取到第二本地仓库,至此第二开发机完成交付代码的接收。可以理解,本计算机可读存储介质通过文件夹的形式创建第一交付仓库,通过物理拷贝文件夹中交付代码的方式,可将交付代码提交至第二开发机的第二本地仓库中,由此实现了在不同开发团队互相之间无网络通信时的代码同步。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
第二开发机响应于代码修改启动命令,创建功能分支,其中,功能分支用于执行对于交付代码的修改得到修改代码;第二开发机响应于代码修改结束命令,将功能分支的修改代码合并到第二本地仓库中的开发主分支中;第二开发机将开发主分支推送至第二代码托管平台中的第二远程仓库。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
第二开发机将开发主分支的修改代码推送到第二交付仓库中的第二交付修改分支,其中,第二交付仓库是通过文件夹的形式构建得到的;第一开发机拷贝第二交付仓库中的第二交付修改分支的修改代码;第一开发机将修改代码存入第一交付仓库中的第一交付修改分支;第一开发机将第一交付修改分支的修改代码拉取到第一本地仓库;第一开发机根据第一本地仓库中的修改代码和交付代码,确定最终代码。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
第一开发机比对第一本地仓库中的修改代码和交付代码,得到比对结果;第一开发机判定比对结果满足预设的代码合并条件,则将修改代码合并到第一开发机中的第一交付分支、第一开发机中的开发分支和/或第一开发机中的主分支中,得到最终代码。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
第一开发机在第一交付仓库中切换至第一交付分支。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
第二开发机在第二交付仓库中创建第二交付分支。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
第二开发机将第二交付分支的交付代码拉取到第二本地仓库中的开发主分支。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种代码同步方法,其特征在于,应用于未建立网络通信连接的第一开发机和第二开发机,所述第一开发机包括第一交付仓库和第一本地仓库,所述第二开发机包括第二交付仓库和第二本地仓库;所述方法包括:
所述第一开发机将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库中的开发主分支;
所述第二开发机响应于代码修改启动命令,创建功能分支,其中,所述功能分支用于执行对于所述交付代码的修改得到修改代码;
所述第二开发机响应于代码修改结束命令,将所述功能分支的修改代码合并到所述第二本地仓库中的开发主分支中;
所述第二开发机将所述开发主分支的修改代码推送到所述第二交付仓库中的第二交付修改分支,其中,所述第二交付仓库是通过文件夹的形式构建得到的;
所述第一开发机拷贝所述第二交付仓库中的第二交付修改分支的修改代码;
所述第一开发机将所述修改代码存入所述第一交付仓库中的第一交付修改分支;
所述第一开发机将所述第一交付修改分支的修改代码拉取到所述第一本地仓库;
所述第一开发机根据所述第一本地仓库中的所述修改代码和所述交付代码,确定最终代码。
2.根据权利要求1所述的方法,其特征在于,在所述第二开发机将所述第二交付分支的交付代码拉取到所述第二本地仓库之后,还包括:
所述第二开发机将所述开发主分支推送至第二代码托管平台中的第二远程仓库。
3.根据权利要求1所述的方法,其特征在于,所述第一开发机根据所述第一本地仓库中的所述修改代码和所述交付代码,确定最终代码,包括:
所述第一开发机比对所述第一本地仓库中的所述修改代码和所述交付代码,得到比对结果;
所述第一开发机判定所述比对结果满足预设的代码合并条件,则将所述修改代码合并到所述第一开发机中的第一交付分支、所述第一开发机中的开发分支和/或所述第一开发机中的主分支中,得到最终代码。
4.根据权利要求1所述的方法,其特征在于,在所述第一开发机将第一交付分支的交付代码推送至所述第一交付仓库之后,还包括:
所述第一开发机在所述第一交付仓库中切换至所述第一交付分支。
5.根据权利要求1所述的方法,其特征在于,在所述第二开发机拷贝所述第一交付仓库中的第一交付分支的交付代码之后,还包括:
所述第二开发机在所述第二交付仓库中创建第二交付分支。
6.一种代码同步系统,其特征在于,所述系统包括未建立网络通信连接的第一开发机和第二开发机,所述第一开发机包括第一交付仓库和第一本地仓库,所述第二开发机包括第二交付仓库和第二本地仓库;其中,
所述第一开发机,用于将第一交付分支的交付代码推送至所述第一交付仓库,其中,所述第一交付仓库是通过文件夹的形式构建得到的;
所述第二开发机,用于拷贝所述第一交付仓库中的第一交付分支的交付代码;
所述第二开发机,还用于将所述交付代码存入所述第二交付仓库中的第二交付分支;
所述第二开发机,还用于将所述第二交付分支的交付代码拉取到所述第二本地仓库中的开发主分支;
所述第二开发机,还用于响应于代码修改启动命令,创建功能分支,其中,所述功能分支用于执行对于所述交付代码的修改得到修改代码;
所述第二开发机,还用于响应于代码修改结束命令,将所述功能分支的修改代码合并到所述第二本地仓库中的开发主分支中;
所述第二开发机,还用于将所述开发主分支的修改代码推送到所述第二交付仓库中的第二交付修改分支,其中,所述第二交付仓库是通过文件夹的形式构建得到的;
所述第一开发机,还用于拷贝所述第二交付仓库中的第二交付修改分支的修改代码;
所述第一开发机,还用于将所述修改代码存入所述第一交付仓库中的第一交付修改分支;
所述第一开发机,还用于将所述第一交付修改分支的修改代码拉取到所述第一本地仓库;
所述第一开发机,还用于根据所述第一本地仓库中的所述修改代码和所述交付代码,确定最终代码。
7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
CN202110851859.3A 2021-07-27 2021-07-27 代码同步方法、系统、计算机设备和存储介质 Active CN113672277B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110851859.3A CN113672277B (zh) 2021-07-27 2021-07-27 代码同步方法、系统、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110851859.3A CN113672277B (zh) 2021-07-27 2021-07-27 代码同步方法、系统、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN113672277A CN113672277A (zh) 2021-11-19
CN113672277B true CN113672277B (zh) 2024-04-30

Family

ID=78540370

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110851859.3A Active CN113672277B (zh) 2021-07-27 2021-07-27 代码同步方法、系统、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113672277B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491674A (zh) * 2018-11-07 2019-03-19 李斌 一种在Kubernetes集群中自动部署服务的方法与系统
CN111666081A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 基于Git的项目版本发布方法、装置、设备及介质
CN112433828A (zh) * 2020-10-29 2021-03-02 贵州新致普惠信息技术有限公司 基于多类型仓库事件驱动的持续集成和持续部署方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491674A (zh) * 2018-11-07 2019-03-19 李斌 一种在Kubernetes集群中自动部署服务的方法与系统
CN111666081A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 基于Git的项目版本发布方法、装置、设备及介质
CN112433828A (zh) * 2020-10-29 2021-03-02 贵州新致普惠信息技术有限公司 基于多类型仓库事件驱动的持续集成和持续部署方法

Also Published As

Publication number Publication date
CN113672277A (zh) 2021-11-19

Similar Documents

Publication Publication Date Title
US10379968B2 (en) Backup and restore framework for distributed computing systems
CN102934114B (zh) 用于文件系统的检查点
US20180067740A1 (en) Efficient detection of architecture related bugs during the porting process
US10204125B2 (en) Method, apparatus, and application platform for updating application object attribute
US11531594B2 (en) Data recovery method and apparatus, server, and computer-readable storage medium
US10268776B1 (en) Graph store built on a distributed hash table
CN106445529A (zh) 持续集成服务器的配置信息的备份方法及系统
US11044312B2 (en) Storage segment server covered cache
CN111078274A (zh) 一种代码开发方法、装置、电子设备和计算机存储介质
US8738569B1 (en) Systematic verification of database metadata upgrade
US20140258228A1 (en) Performing persistent undo and redo operation within computer software
EP4080827A1 (en) Cloud system migration method and device, and hybrid cloud system
CN111857939A (zh) 镜像删除和推送的方法、系统、电子设备及存储介质
CN113672277B (zh) 代码同步方法、系统、计算机设备和存储介质
US10877868B2 (en) Applying a log to storage segments
CN112231288A (zh) 日志存储方法和装置、介质
CN114116664B (zh) 数据库建表语句处理方法、装置、计算机设备和存储介质
CN104462108A (zh) 数据库结构对象处理方法及装置
US20150046414A1 (en) Computer product, managing apparatus, and managing method
Miles et al. Software resilience using kokkos ecosystem
JP2016115223A (ja) データベース管理システム、データベース管理方法、およびプログラム。
CN112379918B (zh) 代码发布方法、装置、计算机设备和存储介质
US20240126785A1 (en) Failover of database sessions to a logical replica database
CN116414848A (zh) 数据库主备复制一致性验证方法、装置和计算机设备
CN117083604A (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