CN116226066B - 低代码平台代码同步方法和装置、电子设备、存储介质 - Google Patents

低代码平台代码同步方法和装置、电子设备、存储介质 Download PDF

Info

Publication number
CN116226066B
CN116226066B CN202310485162.8A CN202310485162A CN116226066B CN 116226066 B CN116226066 B CN 116226066B CN 202310485162 A CN202310485162 A CN 202310485162A CN 116226066 B CN116226066 B CN 116226066B
Authority
CN
China
Prior art keywords
source code
code
file
branch
conflict
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
CN202310485162.8A
Other languages
English (en)
Other versions
CN116226066A (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.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding 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 Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202310485162.8A priority Critical patent/CN116226066B/zh
Publication of CN116226066A publication Critical patent/CN116226066A/zh
Application granted granted Critical
Publication of CN116226066B publication Critical patent/CN116226066B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供一种低代码平台代码同步方法和装置、电子设备、存储介质;涉及计算机技术领域。该方法包括:响应于同步触发事件,获取远程分支的目标代码,并构建临时分支;获取目标分支的第一源码文件,并利用第一源码文件替换临时分支的相应源代码;将替换后的临时分支与目标代码进行合并,响应于合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中;采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。本公开可以解决相关技术中覆盖式同步带来的一方代码丢失的问题及冲突中断过程影响开发效率的问题。

Description

低代码平台代码同步方法和装置、电子设备、存储介质
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种低代码平台代码同步方法和装置、电子设备、存储介质。
背景技术
低代码开发平台(LCDP)是无需编码或通过少量代码来快速生成应用程序的开发平台。由于直接在低代码开发平台上编辑代码可能会由于网络稳定性差等问题造成代码丢失,为此,一般都会在本地IDE(Integrated Development Environment,辅助开发计算机程序的应用软件)和开发平台上同时进行代码开发,之后将双方开发的代码进行同步。
相关技术中,通常是按代码双方提交代码的时间先后顺序进行覆盖式同步的,该方式一方面会造成其中一方开发的代码被覆盖,仍然存在代码丢失问题,降低该方开发人员开发体验;另一方面,当双方代码出现冲突时会造成同步过程中断的现象,影响开发效率。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种低代码平台代码同步方法和装置、电子设备、存储介质,进而在一定程度上解决了相关技术中直接覆盖式同步带来的一方代码丢失的问题及冲突中断过程影响开发效率的问题。
根据本公开的第一方面,提供了一种低代码平台代码同步方法,包括:响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支,所述临时分支为根据最近同步至远程数据库的与所述目标代码关联的源代码构建的;获取目标分支的第一源码文件,并利用所述第一源码文件替换所述临时分支的相应源代码;所述目标分支为对代码进行编辑的本地分支;将替换后的临时分支的源代码与所述目标代码进行合并,响应于所述合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中;采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
可选地,所述第一源码文件包括第二源码文件和第三源码文件,所述获取目标分支的第一源码文件,包括以下至少一项:通过结构化查询语句读取所述平台数据库中与所述第一类源代码对应的目标元素数据,并将所述目标元素数据存储为内存对象;将所述内存对象转换成所述第二源码文件;所述第一类源代码为配置文件类源代码;将目标分支编辑得到的第二类源代码存储于平台数据库的数据库表中,并转换为所述第三源码文件,所述第二类源代码为可执行文件类源代码。
可选地,所述将所述目标元素数据存储为内存对象,包括:确定所述内存对象的节点信息和节点排序;按照所述节点信息、所述节点排序和预置的节点模板,将所述目标元素数据存储为内存对象。
所述将所述内存对象转换成所述第二源码文件,包括:将各节点信息对应的数据填充于相应的节点模板中,形成标准文件,按照所述节点排序对各所述标准文件进行排序,获得所述第二源码文件。
可选地,所述利用所述第一源码文件替换所述临时分支的相应源代码,包括:根据所述第一源码文件的文件名称,确定所述临时分支中的待替换文件的目标位置;利用所述第一源码文件替换所述临时分支中所述目标位置的源代码。
可选地,在利用所述第一源码文件替换所述临时分支的相应源代码之后,所述方法还包括:将替换后的所述临时分支的源代码存储于所述本地存储资源内。
可选地,所述采用预置处理方式处理所述合并过程中的冲突之前,所述方法还包括:将所述经合并之后的源代码文件同步至所述远程数据库。
可选地,所述经合并之后的源代码文件包括冲突标识信息,所述方法还包括:遍历所述经合并之后的源代码文件,根据所述冲突标识信息,获取冲突文件,以获得冲突文件列表;将所述冲突文件列表返回给所述低代码开发平台的前端界面。
所述采用预置处理方式处理所述合并过程中的冲突,包括:采用预置处理方式,对所述冲突文件列表中的冲突文件进行处理。
可选地,所述方法还包括:利用冲突处理后的源代码文件与所述目标代码进行合并,以对冲突处理后的源代码文件进行冲突检查。
可选地,所述方法还包括:将所述远程数据库的第四源代码文件同步至目标分支,所述第四源代码文件为远程分支编辑的源代码文件。
可选地,所述将所述远程数据库的第四源代码文件同步至目标分支,包括:从所述远程数据库获取第四源代码文件,所述第四源代码文件包括第一类源代码和第二类源代码;对与所述第一类源代码对应的第四源代码文件,按照预置的节点模板,提取节点信息和节点排序;对与所述第二类源代码对应的第四源代码文件,提取文件信息和路径信息;将所述节点信息、所述节点排序、所述文件信息和所述路径信息同步至平台数据库的对应数据库表中。
根据本公开的第二方面,提供一种低代码平台代码同步装置,装置包括:获取模块、代码替换模块、代码合并模块和第一同步模块,其中:获取模块,用于响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支,所述临时分支为根据最近同步至远程数据库的与所述目标代码关联的源代码构建的;代码替换模块,用于获取目标分支的第一源码文件,并利用所述第一源码文件替换所述临时分支的相应源代码;所述目标分支为对代码进行编辑的本地分支;代码合并模块,用于将替换后的临时分支的源代码与所述目标代码进行合并,响应于所述合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中;第一同步模块,用于采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
根据本公开的第四方面,提供一种电子设备,包括:一个或多个处理器;以及存储装置,用于一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行上述任一实施例所述的方法。
根据本公开的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在本公开示例实施方式所提供的低代码平台代码同步方法中,一方面,根据目标分支最新同步至远程数据库的源代码构建临时分支,并利用目标分支(本地分支)编辑的第一源码文件,替换临时分支的相应源代码的方式,实现本地分支代码开发过程的代码迭代,实现本地开发代码与最近开发版本的代码叠加,提高开发效率。另一方面,通过将替换后的临时分支的源代码与目标代码进行合并,避免了直接覆盖式同步引起的一方代码丢失的问题,提高开发体验;此外,当存在冲突时,将带有冲突的源代码文件存储于本地存储资源中,之后再进行冲突处理和同步,避免了同步失败引起的代码丢失和先解决冲突再同步的方式带来的同步效率低,进而影响整个开发效率的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了根据本公开的一个实施例的低代码平台代码同步方法和装置的示例性应用场景架构图。
图2示意性示出了根据本公开的一个实施例中低代码平台代码同步方法的流程图。
图3示意性示出了根据本公开的一个实施例中获取目标分支的第一源码文件过程的流程图。
图4示意性示出了根据本公开的一个实施例的低代码平台代码同步方法的处理过程流程图。
图5示意性示出了根据本公开的一个实施例中低代码平台代码同步装置的结构框图。
图6示出了适于用来实现本公开实施例的电子设备框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
如图1所示,提供了一种低代码平台代码同步方法和装置的应用场景示例性系统图,该系统100包括本地服务器110和远程服务器120。本实施例的方法可以应用于本地服务器110,可以理解的是,该方法也可以应用于远程服务器120,还可以应用于包括本地服务器110和远程服务器120的系统。
其中,本地服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,IDE可以部署于该本地服务器上进行本地端的代码开发。远程服务器120可以用于管理编译文件,例如远程服务器120上可以部署各种版本控制系统如分布式版本控制系统GIT,用于管理同一项目的不同开发版本编译文件,编译文件可以为java源文件、XML配置源文件,但是不限于此。远程服务器120可以是独立的物理服务器,也可以是多个物理服务器组成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,也可以是区块链中的节点。
本地服务器110和远程服务器120可以通过有线或无线通信方式进行直接或间接地连接,本公开在此不做限制。
本公开实施例所提供的低代码平台代码同步方法可以在本地服务器执行,相应地,低代码平台代码同步装置一般设置于本地服务器中。
下面,结合具体的实施例,对本说明书实施例披露的低代码平台代码同步方法进行介绍。
参考图2所示,本公开提供的一种示例实施方式的低代码平台代码同步方法,可以包括以下步骤。
步骤S210,响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支,临时分支为根据目标分支最新同步至远程数据库的源代码构建的。
步骤S220,获取目标分支的第一源码文件,并利用第一源码文件替换临时分支的相应源代码;目标分支为对代码进行编辑的本地分支。
步骤S230,将替换后的临时分支的源代码与目标代码进行合并,响应于合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中。
步骤S240,采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
在本示例实施方式所提供的低代码平台代码同步方法中,一方面,根据目标分支最新同步至远程数据库的源代码构建临时分支,并利用目标分支(本地分支)编辑的第一源码文件,替换临时分支的相应源代码的方式,实现本地分支代码开发过程的代码迭代,实现本地开发代码与最近开发版本的代码叠加,提高开发效率。另一方面,通过将替换后的临时分支的源代码与目标代码进行合并,避免了直接覆盖式同步引起的一方代码丢失的问题,提高开发体验;此外,当存在冲突时,将带有冲突的源代码文件存储于本地存储资源中,之后再进行冲突处理和同步,避免了同步失败引起的代码丢失和先解决冲突再同步的方式带来的同步效率低,进而影响整个开发效率的问题。
以下对本公开的各个步骤进行更加详细的描述。
在步骤S210中,响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支。
在本示例实施方式中,同步触发事件可以是在开发界面的代码同步操作。本公开的代码同步可以是针对同一基线代码的多个分支之间,同一基线代码是指针对同一项目或任务的开发代码。多个分支可以包括远程分支(开发平台)和本地分支(本地IDE),同一基线的所有分支上的开发代码需要同步至远程数据库进行统一管理。远程数据库可以使用分布式版本控制系统(如GIT),也可以使用集中式版本控制系统(如SVN、CVS),本示例对此不做限定。
在本示例实施方式中,目标代码是待开发项目在远程分支上的编辑代码。例如可以使用GIT CLONE命令获取远程分支的目标代码。可以根据目标分支最近一次同步至远程数据库的与目标代码关联的源代码构建临时分支,与目标代码关联是指针对同一项目开发的代码。示例性地,可以复制目标分支最近一次同步至远程数据库的源代码形成临时分支,例如复制最近一次成功提交到远程数据库的与目标代码关联的COMMIT命令的相关数据,创建一个临时分支。示例性地,可以使用GIT CHECKOUT命令,确定最近一次成功提交到远程数据库的与目标代码关联的COMMIT命令。
在步骤S220中,获取目标分支的第一源码文件,并利用第一源码文件替换临时分支的相应源代码。
在本示例实施方式中,目标分支为对代码进行编辑的本地分支,本地分支在低代码开发平台上开发的编辑代码文件可以存储于各种本地存储资源内,例如,平台数据库(本地数据库)、本地文件、本地内存或网络文件。
由于低代码开发平台中的编辑代码的格式并不是真正意义上的源代码,而是一种中间格式,因此需要对平台的编辑代码文件进行转换,以获取对应的第一源码文件。
示例性地,参考图3,获取目标分支的第一源码文件,可以包括以下步骤S310-S350。
步骤S310,确定目标分支编辑得到的编辑代码文件的类型。
在本示例实施方式中,编辑代码文件可以包括第一类源代码和第二类源代码,第一类源代码为配置文件类源代码(如XML配置源文件),第二类源代码为可执行文件类源代码(如Java源文件)。
步骤S320,对于第一类源代码,通过结构化查询语句读取平台数据库中与第一类源代码对应的目标元素数据。
在本示例实施方式中,当本地编辑代码文件存储于平台数据库中,可以通过SQL语句读取平台数据库中目标元素数据,目标元素数据是指本地分支的编辑代码文件中与第一类源代码对应的元素数据。
步骤S330,确定内存对象的节点信息和节点排序。
在本示例实施方式中,对于XML配置源文件,可以根据代码的语义信息,确定节点信息。例如,对于一个工作流开发代码,其第一步是数据录入,第二步是数据上报,则可以根据配置源文件的语义信息,确定与两个步骤对应的节点信息和节点排序。节点信息可以包括节点名称、节点类型、节点数据等,还可以包括其他节点信息,本示例对此不做限定。节点排序就是根据执行顺序确定的各节点的先后顺序。例如上述工作流中的节点排序为第一步对应节点、第二步对应节点。
步骤S340,按照节点信息、节点排序和预置的节点模板,将目标元素数据存储为内存对象。
在本示例实施方式中,内存对象就是将数据以对象的形式存储于内存中。一般地,对象在堆内存中的存储布局可以包括三部分:对象头,实例数据和对齐填充。对于XML配置源文件,将其存储为内存对象时,该内存对象可以包括XML头格式(对象头)、节点信息(实例数据)、节点排序信息(实例数据)及节点模板信息(模板信息)。
步骤S350,将各节点信息对应的数据填充于相应的节点模板中,形成标准文件,按照节点排序对各标准文件进行排序,以将内存对象转换成第二源码文件。
在本示例实施方式中,对于每个节点模板来讲,可以将节点信息中的数据填充于对应的节点模板中,再将填充好的节点按顺序排列,即可得到该类型对应的第二源码文件。
步骤S360,对于第二类源代码,将目标分支编辑得到的第二类源代码存储于平台数据库的数据库表中,并转换为第三源码文件。
在本示例实施方式中,第二类源代码为代码类,如java类,可以将其存储于数据库表中,例如,通过数据库的clob类型来存储,则可以将其直接转换为一个java源文件。clob为数据库的内置类型,可以将字符大对象(Character Large Object)存储为数据库表某一行中的一个列值。
经过上述步骤,可以将低代码平台编辑的代码转换成真正的源代码文件(适用于其他开发平台的源代码),便于后续的代码替换和合并过程。
示例性地,可以根据文件名称或文件标记信息,确定临时分支中的待替换部分。
示例性地,可以根据第一源码文件的文件名称,确定临时分支中的待替换文件的目标位置;再利用第一源码文件替换临时分支中目标位置的源代码。
在本示例实施方式中,开发平台编辑的代码文件具有对应的文件名称,在经过格式转换之后,文件名称可以不发生变化。上述获取第一源码文件的数据转换过程不改变转换前后的文件名称。
一些实施例中,在利用第一源码文件替换临时分支的相应源代码之后,方法还包括:将替换后的临时分支的源代码存储于本地存储资源中。
在本示例实施方式中,为了避免目标分支开发得到的源代码即替换后的临时分支的源代码,在得到该源代码时可以将其存储于本地存储资源,例如,在GIT系统中,可以使用GIT COMMIT命令提交该替换后的临时分支至本地硬盘。
在步骤S230中,将替换后的临时分支的源代码与目标代码进行合并,响应于合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中。
在本示例实施方式中,可以将替换后的临时分支合并至目标代码中,以使目标分支对源码的修改添加至目标代码中,形成新版本代码文件。例如,在GIT系统中,可以使用GIT MERGE命令来进行代码合并,当系统反馈存在冲突时,可以继续执行一次COMMIT命令。
在本示例实施方式中,当合并过程中出现冲突,则可以将带有冲突的经合并之后的文件存储于本地存储资源(如平台数据库),避免出现冲突引起的同步过程中断及代码丢失问题。例如,可以使用GIT PUSH命令,将合并后代码提交到远程数据库,此时,如果提交远程失败,就说明之前获取的远程分支的目标代码并不是最新版本,则可以重新获取远程分支的目标代码进行上述过程即可。
一些实施例中,在采用预置处理方式处理合并过程中的冲突之前,方法还包括:将经合并之后的源代码文件同步至远程数据库。
在本示例实施方式中,对于一些复杂且难以处理的冲突,可能需要较长的冲突处理时间,为了保证远程数据库中含有最新开发的代码版本,可以先将带有冲突的代码文件同步至远程数据库,以保证其他分支再开发时是基于最新版本进行的,避免冲突积累问题。
在步骤S240中,采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
在本示例实施方式中,可以通过文本化的方式或者图形化的方式进行冲突处理,还可以使用其他方式,本示例对此不做限定。示例性地,预置处理方式可以是预先配置的冲突处理规则或修改方式,处理完冲突之后,将最新版本再次提交至远程数据库。
示例性地,经合并之后的源代码文件包括冲突标识信息,可以遍历经合并之后的源代码文件,根据冲突标识信息,获取冲突文件,以获得冲突文件列表。将冲突文件列表返回给低代码开发平台的前端界面;采用预置处理方式处理,对冲突文件列表中的冲突文件进行处理。
在本示例实施方式中,冲突标识信息可以是系统默认的(如GIT默认的),也可以是自定义的,本示例对此不做限定。可以通过遍历的方式获取存在冲突的文件列表,针对冲突文件列表,对列表中的每个文件进行冲突处理,以保证所有冲突都得到解决。
在一些实施例中,在冲突处理之后还需要检查是否所有冲突都已经处理完毕,示例性地,可以利用冲突处理后的源代码文件与目标代码进行合并,以对冲突处理后的源代码文件进行冲突检查。若合并过程中不再反馈冲突信息,则说明所有冲突解决完成,否则需要继续进行冲突处理。
以上实施例是将目标分支(本地分支)编辑的代码同步至远程数据库的过程。还可以将远程数据库的源文件同步至目标分支(低代码开发平台),具体参见以下实施例。
在一些实施例中,方法还包括:将远程数据库的第四源代码文件同步至目标分支。
在本示例实施方式中,第四源代码文件是指在远程分支中编辑开发的源代码文件,该源代码文件存储于远程数据库中。由于远程数据库中源代码文件与低代码平台的编辑源代码文件数据格式不同,故需要进行数据转换。
示例性地,远程到目标分支的数据转换过程与目标分支到远程的数据转换过程相反,可以通过以下步骤进行。
从远程数据库获取远程分支的第四源代码文件,第四源代码文件包括第一类源代码和第二类源代码;对与第一类源代码对应的第四源代码文件,按照预置的节点模板,提取节点信息和节点排序;对与第二类源代码对应的第四源代码文件,提取文件信息和路径信息;将节点信息、节点排序、文件信息和路径信息同步至平台数据库的对应数据库表中。
在本示例实施方式中,文件信息可以包括文件名、文件内容等。依次遍历远程分支上的第四源代码文件,对于第一类源代码(如XML类型的配置文件),读入第一转换器(XML转换器);对于第二类源代码(java源码)读入第二转换器(java转换器);对于java转换器,提取内容、文件名、路径名;对于XML转换器,可以通过DOM机制,读取其中的节点信息、配置信息、节点顺序相关信息;将提取的信息,采用覆盖的方式存入相应的数据库表中。
举例而言, 本公开的低代码平台代码同步方法的实现过程如图4所示,以分布式版本控制系统GIT为例进行说明,具体可以通过以下步骤实现。
步骤S401,响应于在低代码开发平台的同步触发事件,使用GIT CLONE命令获取远程分支的目标代码至本地。
步骤S402,使用GIT CHECKOUT命令,确定上一次成功提交到远程数据库的COMMIT,复制该COMMIT数据以创建一个临时分支。
步骤S403,获取目标分支的编辑源文件。
步骤S404,对于编辑源文件中的XML类型的配置源文件,通过SQL读取应用元素数据,然后把应用元素转换到内存对象,内存对象包括:XML头格式、节点信息、节点排序信息、节点模板信息。根据节点模板信息、节点信息、节点排序信息,把内存对象导出为一个标准的XML配置文件。
步骤S405,对于编辑源文件中的代码类文件,如java类,则直接由数据库的clob类型来存储,直接转换为一个java源文件。
步骤S406,使用步骤S404和S405得到的源文件覆盖临时分支中的对应代码源文件。使得临时分支中的代码和开发平台数据库中的代码保持一致。
步骤S407,使用GIT COMMIT命令,提交步骤S406中得到的临时分支至平台(本地硬盘)。
步骤S408,使用GIT MERGE命令,将步骤S406的临时分支与步骤S401中的目标代码进行合并,如果有冲突,带着冲突直接COMMIT。
步骤S409,使用GIT PUSH命令,将步骤S408中COMMIT数据提交到远程。此时,如果提交远程失败,说明之前拉取的远程分支目标代码并不是最新版本,需要重新进行以上同步过程。
步骤S410,采用预置处理方式步骤S408中COMMIT数据中的冲突。
步骤S411,判断冲突是否全部解决,若是,转至步骤S412,否则转至步骤S410。
步骤S412,将冲突处理后的源代码文件同步至远程数据库。
步骤S413,将远程分支编辑的第四源代码文件从远程数据库同步至目标分支。在本示例中,需要对数据格式进行逆转换,以将远程数据库的数据格式转换成本地数据库的格式,以实现远程到本地的同步。
本实施例中各步骤的具体细节已经前述实施例中进行了详细的描述,因此此处不再赘述。
本公开针对低代码平台的远程与本地IDE同时开发代码的情况,一方面在同步过程中存在冲突的情况下,先对带有冲突的源代码文件进行本地存储,然后再解决冲突重新提交代码至远程的方式,能够避免传统的当出现冲突就中断同步过程,冲突解决之后再将源代码文件同步至远程的方式所带来的远程数据库中代码不是最新版本而影响后续开发效率的问题,同时,通过将带有冲突的源代码文件存储于本地,避免了由于同步过程中断带来的本地开发代码的丢失问题。另一方面,对于低代码开发平台中的源代码与远程数据库中的源代码数据格式不同的问题,本公开设计了一种数据正转换(本地到远程)和数据逆转换(远程到本地)的方式,实现不同数据格式的同步,使得本公开的同步方法可以适用于不同开发平台和不同数据格式。
进一步的,本示例实施方式中,还提供了一种低代码平台代码同步装置500。该低代码平台代码同步装置500可以应用于低代码开发平台。参考图5所示,该低代码平台代码同步装置500可以包括:获取模块510、代码替换模块520、代码合并模块530和第一同步模块540,获取模块510,用于响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支,临时分支为根据最近同步至远程数据库的与目标代码关联的源代码构建的;代码替换模块520,用于获取目标分支的第一源码文件,并利用第一源码文件替换临时分支的相应源代码;目标分支为对代码进行编辑的本地分支;代码合并模块530,用于将替换后的临时分支的源代码与目标代码进行合并,响应于合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中;第一同步模块540,用于采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
在本公开的一种示例性实施例中,本地存储资源包括平台数据库,第一源码文件包括第二源码文件和第三源码文件,代码替换模块520包括第一替换子模块和/或第二替换子模块,第一替换子模块可以用于通过结构化查询语句读取平台数据库中与第一类源代码对应的目标元素数据,并将目标元素数据存储为内存对象;将内存对象转换成第二源码文件;第一类源代码为配置文件类源代码;
第二替换子模块用于将目标分支编辑得到的第二类源代码存储于平台数据库的数据库表中,并转换为第三源码文件,第二类源代码为可执行文件类源代码。
在本公开的一种示例性实施例中,第一替换子模块还可以用于确定内存对象的节点信息和节点排序;按照节点信息、节点排序和预置的节点模板,将目标元素数据存储为内存对象;将各节点信息对应的数据填充于相应的节点模板中,形成标准文件,按照节点排序对各标准文件进行排序,获得第二源码文件。
在本公开的一种示例性实施例中,代码替换模块520还可以用于根据第一源码文件的文件名称,确定临时分支中的待替换文件的目标位置;利用第一源码文件替换临时分支中目标位置的源代码。
在本公开的一种示例性实施例中,装置500还包括存储模块,第一存储模块可以用于在利用第一源码文件替换临时分支的相应源代码之后,将替换后的临时分支的源代码存储于本地存储资源中。
在本公开的一种示例性实施例中,装置500还包括第二同步模块,第二同步模块可以用于在采用预置处理方式处理合并过程中的冲突之前,将经合并之后的源代码文件同步至远程数据库。
在本公开的一种示例性实施例中,经合并之后的源代码文件包括冲突标识信息,装置还包括冲突确定模块,冲突确定模块用于:遍历经合并之后的源代码文件,根据冲突标识信息,获取冲突文件,以获得冲突文件列表;将冲突文件列表返回给低代码开发平台的前端界面。
第一同步模块540还可以用于:采用预置处理方式,对冲突文件列表中的冲突文件进行处理。
在本公开的一种示例性实施例中,装置500还包括冲突检查模块,冲突检查模块用于:利用冲突处理后的源代码文件与目标代码进行合并,以对冲突处理后的源代码文件进行冲突检查。
在本公开的一种示例性实施例中,装置500还包括第三同步模块,第三同步模块用于:将远程数据库的第四源代码文件同步至目标分支,第四源代码文件为远程分支编辑的源代码文件。
在本公开的一种示例性实施例中,第三同步模块还可以用于:从远程数据库获取远程分支的第四源代码文件,第四源代码文件包括第一类源代码和第二类源代码;对与第一类源代码对应的第四源代码文件,按照预置的节点模板,提取节点信息和节点排序;对与第二类源代码对应的第四源代码文件,提取文件信息和路径信息;将节点信息、节点排序、文件信息和路径信息同步至平台数据库的对应数据库表中。
上述低代码平台代码同步装置中各模块或单元的具体细节已经在对应的低代码平台代码同步方法中进行了详细的描述,因此此处不再赘述。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中的方法。例如,电子设备可以实现如图2~图4所示的各个步骤等。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
下面参照图6来描述根据本公开的这种实施例的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640。
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备670(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RA标识系统、磁带驱动器以及数据备份存储系统等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由计算机设备的处理器执行,以完成上述各个实施例提供的低代码平台代码同步方法。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等,均应视为本公开的一部分。
应可理解的是,本说明书公开和限定的本公开延伸到文中和/或附图中提到或明显的两个或两个以上单独特征的所有可替代组合。所有这些不同的组合构成本公开的多个可替代方面。本说明书的实施方式说明了已知用于实现本公开的最佳方式,并且将使本领域技术人员能够利用本公开。

Claims (13)

1.一种低代码平台代码同步方法,其特征在于,所述方法包括:
响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支,所述目标代码为在远程分支上开发的编辑代码;所述临时分支为根据最近同步至远程数据库的与所述目标代码关联的源代码构建的;
获取目标分支的第一源码文件,并利用所述第一源码文件替换所述临时分支的相应源代码;所述目标分支为本地分支,所述第一源码文件为将本地分支在低代码开发平台上开发的编辑代码文件转换成源代码格式而得;
将替换后的临时分支的源代码与所述目标代码进行合并,响应于合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中;
采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
2.根据权利要求1所述的低代码平台代码同步方法,其特征在于,所述本地存储资源包括平台数据库,所述第一源码文件包括第二源码文件和第三源码文件,所述获取目标分支的第一源码文件,包括以下至少一项:
通过结构化查询语句读取所述平台数据库中与第一类源代码对应的目标元素数据,并将所述目标元素数据存储为内存对象;将所述内存对象转换成所述第二源码文件;所述第一类源代码为配置文件类源代码;
将目标分支编辑得到的第二类源代码存储于平台数据库的数据库表中,并转换为所述第三源码文件,所述第二类源代码为可执行文件类源代码。
3.根据权利要求2所述的低代码平台代码同步方法,其特征在于,所述将所述目标元素数据存储为内存对象,包括:
确定所述内存对象的节点信息和节点排序;
按照所述节点信息、所述节点排序和预置的节点模板,将所述目标元素数据存储为内存对象;
所述将所述内存对象转换成所述第二源码文件,包括:
将各节点信息对应的数据填充于相应的节点模板中,形成标准文件,按照所述节点排序对各所述标准文件进行排序,获得所述第二源码文件。
4.根据权利要求1所述的低代码平台代码同步方法,其特征在于,所述利用所述第一源码文件替换所述临时分支的相应源代码,包括:
根据所述第一源码文件的文件名称,确定所述临时分支中的待替换文件的目标位置;
利用所述第一源码文件替换所述临时分支中所述目标位置的源代码。
5.根据权利要求1所述的低代码平台代码同步方法,其特征在于,在利用所述第一源码文件替换所述临时分支的相应源代码之后,所述方法还包括:
将替换后的所述临时分支的源代码存储于所述本地存储资源中。
6.根据权利要求5所述的低代码平台代码同步方法,其特征在于,在所述采用预置处理方式处理所述合并过程中的冲突之前,所述方法还包括:
将所述经合并之后的源代码文件同步至所述远程数据库。
7.根据权利要求1所述的低代码平台代码同步方法,其特征在于,所述经合并之后的源代码文件包括冲突标识信息,所述方法还包括:
遍历所述经合并之后的源代码文件,根据所述冲突标识信息,获取冲突文件,以获得冲突文件列表;
将所述冲突文件列表返回给所述低代码开发平台的前端界面;
所述采用预置处理方式处理所述合并过程中的冲突,包括:
采用预置处理方式,对所述冲突文件列表中的冲突文件进行处理。
8.根据权利要求7所述的低代码平台代码同步方法,其特征在于,所述方法还包括:
利用冲突处理后的源代码文件与所述目标代码进行合并,以对冲突处理后的源代码文件进行冲突检查。
9.根据权利要求1所述的低代码平台代码同步方法,其特征在于,所述方法还包括:
将所述远程数据库的第四源代码文件同步至目标分支,所述第四源代码文件为远程分支编辑的源代码文件。
10.根据权利要求9所述的低代码平台代码同步方法,其特征在于,所述将所述远程数据库的第四源代码文件同步至目标分支,包括:
从所述远程数据库获取远程分支的第四源代码文件,所述第四源代码文件包括第一类源代码和第二类源代码;
对与所述第一类源代码对应的第四源代码文件,按照预置的节点模板,提取节点信息和节点排序;对与所述第二类源代码对应的第四源代码文件,提取文件信息和路径信息;
将所述节点信息、所述节点排序、所述文件信息和所述路径信息同步至平台数据库的对应数据库表中。
11.一种低代码平台代码同步装置,其特征在于,所述装置包括:
获取模块,用于响应于在低代码开发平台的同步触发事件,获取远程分支的目标代码,并构建临时分支,所述目标代码为在远程分支上开发的编辑代码;所述临时分支为根据最近同步至远程数据库的与所述目标代码关联的源代码构建的;
代码替换模块,用于获取目标分支的第一源码文件,并利用所述第一源码文件替换所述临时分支的相应源代码;所述目标分支为本地分支,所述第一源码文件为将本地分支在低代码开发平台上开发的编辑代码文件转换成源代码格式而得;
代码合并模块,用于将替换后的临时分支的源代码与所述目标代码进行合并,响应于合并过程存在冲突,将经合并之后的源代码文件存储于本地存储资源中;
第一同步模块,用于采用预置处理方式处理经合并之后的源代码文件中的冲突,并将冲突处理后的源代码文件同步至远程数据库。
12.一种电子设备,其特征在于,包括:一个或多个处理器;以及
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至10中任一项所述的方法。
CN202310485162.8A 2023-04-28 2023-04-28 低代码平台代码同步方法和装置、电子设备、存储介质 Active CN116226066B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310485162.8A CN116226066B (zh) 2023-04-28 2023-04-28 低代码平台代码同步方法和装置、电子设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310485162.8A CN116226066B (zh) 2023-04-28 2023-04-28 低代码平台代码同步方法和装置、电子设备、存储介质

Publications (2)

Publication Number Publication Date
CN116226066A CN116226066A (zh) 2023-06-06
CN116226066B true CN116226066B (zh) 2023-09-01

Family

ID=86589475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310485162.8A Active CN116226066B (zh) 2023-04-28 2023-04-28 低代码平台代码同步方法和装置、电子设备、存储介质

Country Status (1)

Country Link
CN (1) CN116226066B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485744A (zh) * 2021-07-23 2021-10-08 中国工商银行股份有限公司 代码同步方法及装置
CN113688028A (zh) * 2020-05-19 2021-11-23 成都鼎桥通信技术有限公司 代码提交方法和装置
CN115167822A (zh) * 2022-07-25 2022-10-11 北京字跳网络技术有限公司 分支代码合并方法、装置、设备和存储介质
CN115220779A (zh) * 2022-06-23 2022-10-21 浪潮软件集团有限公司 一种代码库管理方法、装置及计算机介质
CN115981718A (zh) * 2023-01-06 2023-04-18 抖音视界有限公司 一种代码发布方法、装置、计算机设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119759B2 (en) * 2019-12-18 2021-09-14 Bank Of America Corporation Self-learning code conflict resolution tool

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688028A (zh) * 2020-05-19 2021-11-23 成都鼎桥通信技术有限公司 代码提交方法和装置
CN113485744A (zh) * 2021-07-23 2021-10-08 中国工商银行股份有限公司 代码同步方法及装置
CN115220779A (zh) * 2022-06-23 2022-10-21 浪潮软件集团有限公司 一种代码库管理方法、装置及计算机介质
CN115167822A (zh) * 2022-07-25 2022-10-11 北京字跳网络技术有限公司 分支代码合并方法、装置、设备和存储介质
CN115981718A (zh) * 2023-01-06 2023-04-18 抖音视界有限公司 一种代码发布方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于单元测试的车载时钟同步协议开发方法;罗峰;徐金鹏;;汽车技术(第05期);全文 *

Also Published As

Publication number Publication date
CN116226066A (zh) 2023-06-06

Similar Documents

Publication Publication Date Title
CN106919434B (zh) 一种代码生成方法及装置
US8286132B2 (en) Comparing and merging structured documents syntactically and semantically
US8387014B2 (en) Synchronization of concurrently modified interdependent semi-derived artifacts
US20030004703A1 (en) Method and system for localizing a markup language document
CN109634591B (zh) 一种文件处理方法及装置
US11301643B2 (en) String extraction and translation service
CN110580189A (zh) 生成前端页面的方法、装置、计算机设备以及存储介质
CN108319466A (zh) 一种配置信息的恢复方法和装置
CN110716804A (zh) 无用资源的自动删除方法、装置、存储介质及电子设备
CN111143390A (zh) 更新元数据的方法及装置
CN114489950A (zh) 一种组件适配方法、装置、电子设备及存储介质
CN116088846A (zh) 一种持续集成代码格式的处理方法、相关装置及设备
US11625228B2 (en) System and method for facilitating efficient round-trip engineering using intermediate representations
CN115878589A (zh) 结构化数据的版本管理方法、装置及相关设备
JP2008225898A (ja) 変換装置、変換プログラム及び変換方法
CN116226066B (zh) 低代码平台代码同步方法和装置、电子设备、存储介质
CN116755669A (zh) 一种基于dsl语言操作模型的低代码开发方法和工具
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
CN109829010B (zh) 一种词条修改方法和词条修改装置
Le Zou et al. On synchronizing with web service evolution
CN114461454A (zh) 数据恢复方法、装置、存储介质及电子设备
CN113901025A (zh) 数据库管理方法、装置、设备和存储介质
CN110737431A (zh) 软件开发方法、开发平台、终端设备及存储介质
US20090222447A1 (en) Data processing apparatus and data processing method
CN112051987B (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