CN111651196A - 文档发布方法、装置及服务器 - Google Patents

文档发布方法、装置及服务器 Download PDF

Info

Publication number
CN111651196A
CN111651196A CN202010586693.2A CN202010586693A CN111651196A CN 111651196 A CN111651196 A CN 111651196A CN 202010586693 A CN202010586693 A CN 202010586693A CN 111651196 A CN111651196 A CN 111651196A
Authority
CN
China
Prior art keywords
document
project
converted
target
control system
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.)
Granted
Application number
CN202010586693.2A
Other languages
English (en)
Other versions
CN111651196B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010586693.2A priority Critical patent/CN111651196B/zh
Publication of CN111651196A publication Critical patent/CN111651196A/zh
Application granted granted Critical
Publication of CN111651196B publication Critical patent/CN111651196B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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)
  • Document Processing Apparatus (AREA)

Abstract

本申请公开了一种文档发布方法、装置及服务器,涉及云技术领域。其中,该方法包括:对版本控制系统中的提交操作进行监测,若监测到版本控制系统完成一次提交操作,从版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将待转换文档转换成符合发布条件的待发布文档;响应版本控制系统对本次提交操作所提交的项目文档的发布命令,发布该待发布文档。如此,可以及时准确地将每个可能发布的文档转换为符合发布条件的文档,从而在需要发布时实现一键发布,既节省了人工操作,又降低了出错的几率。

Description

文档发布方法、装置及服务器
技术领域
本申请涉及云技术领域,更具体地,涉及一种文档发布方法、装置及服务器。
背景技术
专有云是一种基于用户需求而定制及部署的私有云。私有云(Private Cloud)是指将云设施与软硬件资源创建在防火墙内,以供机构或企业内各部门共享数据中心内的资源。私有云除了包含硬件资源外,一般还有云设备软件,又称基础设施即服务(IaaS,Infrastructure as a Service)软件。
专有云团队通常会维护一全量的专有云产品,并可以根据用户的不同需求基于全量的专有云产品创建一个分支(branch),从而在该分支上开发符合客户需求的定制化专有云产品,从而可以在测试通过后将该定制化专有云产品发布给用户。其中,发布至客户端设备的除了专有云产品的代码之外,还包括用于描述专有云产品的项目文档,比如产品文档、部署手册、产品白皮书等。
在向每个用户发布专有云产品前,通常需要将专有云产品对应的项目文档也处理成该用户可接受的版本。由于不同用户需要的专有云产品可能不同,存在众多的专有云产品版本,对应地,需要处理的项目文档版本也非常多,需要大量的人力重复处理这些工作,不够及时,且非常容易出错。
发明内容
本申请提出了一种文档发布方法、装置及服务器,可以改善上述问题。
一方面,本申请实施例提供了一种文档发布方法,包括:对版本控制系统中的提交操作进行监测;若监测到版本控制系统完成一次提交操作,从版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将待转换文档转换成符合发布条件的待发布文档;响应版本控制系统对本次提交操作所提交的项目文档的发布指令,发布该待发布文档。
另一方面,本申请实施例提供了一种文档发布装置,包括:监测模块、转换模块以及发布模块。其中,监测模块用于对版本控制系统中的提交操作进行监测。转换模块用于当监测到版本控制系统完成一次提交操作时,从版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将待转换文档转换成符合发布条件的待发布文档。发布模块用于响应版本控制系统对本次提交操作所提交的项目文档的发布指令,发布待发布文档。
另一方面,本申请实施例提供了一种服务器,包括:一个或多个处理器;存储器;一个或多个程序,其中所述一个或多个程序代码配置用于执行上述的方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,其上存储有程序代码,该程序代码可被处理器调用执行如上所述的方法。
本申请提供的方案,对版本控制系统中的提交操作进行监测,若监测到版本控制系统完成一次提交操作,从版本控制系统中获取本次提交所提交的项目文档作为待转换文档,并将待转换文档转换成符合发布条件的待发布文档。由于每次提交的项目代码都可能作为被发布给用户的代码版本,对应地,该次提交的项目文档也将被发布给用户。通过本申请的方案,可以及时无误地将每次提交的项目文档转换成适应用户需求的待发布文档,从而可以响应版本控制系统对本次提交操作所提交的项目文档的发布指令,直接发布待发布文档,而避免了大量的人工操作及人工操作可能造成的错误。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的版本控制系统与客户端设备的一种通信示意图。
图2示出了一种适用于本申请实施例的应用环境示意图。
图3示出了本申请一实施例提供的文档发布方法的流程示意图。
图4示出了本申请实施例提供的一个例子中的版本控制系统的分支示意图。
图5示出了图3所示步骤S150的子步骤示意图。
图6示出了图3所示实施例中文档发布方法的另一流程示意图。
图7示出了图6所示步骤S142的一种子步骤示意图。
图8示出了本申请实施例提供的一个例子中的层级关系示意图。
图9示出了图6所示步骤S142的另一种子步骤示意图。
图10示出了图3所示实施例中文档发布方法的又一流程示意图。
图11示出了本申请另一实施例提供的文档发布方法的流程示意图。
图12示出了图11所示实施例中文档发布方法的另一流程示意图。
图13示出了图11所示步骤S250的一种子步骤示意图。
图14示出了图11所示步骤S250的另一种子步骤示意图。
图15示出了本申请实施例提供的一种文档发布装置的框图。
图16是本申请实施例的用于执行根据本申请实施例的文档发布方法的服务器的框图。
图17是本申请实施例的用于保存或者携带实现根据本申请实施例的文档发布方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
请参照图1,图1示出了一些实施例中版本控制系统与用户侧的客户端设备之间的通信示意图。版本控制系统100是一种可以帮助开发人员协同工作,并存档他们工作的完整历史记录的系统。详细地,版本控制系统100可以记录一个或多个文件内容变化,以便将来查阅特定版本文件修订情况。比如,版本控制系统100可以用于对软件开发过程中各种程序代码、配置文件及说明文档(或,描述文档)等文件的变更进行管控。
示例性地,版本控制系统100可以是集中式版本控制系统,或者分布式版本控制系统。集中式版本控制系统例如可以是SVN(Subversion,又称时间机器)系统、CVS(Concurrent Versions System,并发版本系统)等,分布式版本控制系统例如可以是Git系统、Mercurial系统等。本申请实施例将以Git系统为例,对所提供的文档发布方法进行介绍。
版本控制系统100中可以维护有多个版本的专有云产品,如专有云产品V3.3.4、V3.4.0。每个版本的专有云产品可以与至少一个用户的需求对应,换言之,当一个版本的专有云产品开发完成并通过测试后,该版本的专有云产品的项目代码及项目文档,可以被发布给对应的至少一个用户的客户端设备(如,图1中的301、302)。可以理解,这里的用户可以是以机构或企业,对应地,一个用户的客户端设备可以理解为一个机构或企业的硬件设备组成的集群、分布式系统或云服务器。
一个版本的专有云产品的项目代码,可以理解为用于实现该版本的专有云产品功能的所有代码。对应地,一个版本的专有云产品的项目文档,可以是用于说明或描述该专有云产品的文档,其可以包括前文提及的产品文档、部署手册、产品白皮书等。这里的所有文档可以均为相同格式的文档,也可以包括不同格式的文档,本实施例对此没有限制。
对于每一用户,比如用户U1,通常可以依据用户U1的需求,从对应版本的专有云产品中获取用户U1需要的产品功能所对应的项目代码作为待发布代码,并从所述对应版本的专有云产品的项目文档中获取待发布代码对应的项目文档,并将获取的项目文档转换成用户U1的客户端设备支持的格式的文档,并可以将转换后的文档作为待发布文档,待发布文档可以随待发布代码一起发布给用户U1的客户端设备。
上述过程中,待发布文档通常是在临近发布前由人工方式处理获得,由于用户量众多,专有云产品的版本也比较多,对应地,专有云产品的项目文档版本也非常多,需要大量人力来处理项目文档以得到待发布文档,处理效率低,不够及时,且容易出错。
基于此,发明人经过长期研究,提出一种文档发布方法、装置及服务器,可以高效、及时、准确地获得待发布文档,从而可以在需要发布项目代码时,也实现对应项目文档的一键发布。详细描述如下。
请参照图2,图2是一种适用于本申请实施例的应用环境示意图。其中,服务器300可以通过网络与版本控制系统100、前端显示组件400以及至少一个客户端设备(如,200A、200B)通信连接。
其中,服务器300可以是独立的物理服务器,也可以是多个服务器构成的服务器集群或者分布式系统,还可以是提供云计算、大数据和人工智能平台等云计算服务的云服务器。服务器300可以用于执行本申请实施例提供的文档发布方法,并可以通过第一数据库310进行文档存储。第一数据库310可以部署在服务器300上,也可以是部署在与服务器300通信的设备上。前端显示组件400可以理解成与服务器300中的服务端程序对应的客户端程序,服务器300可以通过前端显示组件400进行信息显示,比如可以显示第一数据库310存储的文档。
可选地,第一数据库310可以是任意类型的数据库,比如,可以是MySQL数据库或者SQL Server数据库等,本实施例对此没有限制。此外,服务器300还可以与云存储系统通信连接,该云存储系统可以用于对服务器300通过本实施例提供的文档发布方法生成的待发布文档进行备份,以避免因第一数据库崩溃导致的数据丢失。
客户端设备可以是用户侧用于部署专有云产品的硬件设备,发布至客户端设备的待发布文档可以被存储在特定的数据库中。比如,发布至客户端设备200A的待发布文档可以存储于第二数据库210A中,发布至客户端设备200B的待发布文档可以存储于第二数据库210B中。可以理解,所述特定的数据库可以是与客户端设备通信的设备上部署的数据库,也可以直接部署在客户端设备上,本申请实施例对此没有限制。
请参照图3,图3是本申请一实施例提供的一种文档发布方法的流程示意图,该方法可以应用于图2所示的服务器300。下面对该方法包括的步骤进行详细描述。
S110,对版本控制系统中的提交操作进行监测。
版本控制系统通常可以包括工作区和代码仓库(可以是本地仓库或远程仓库),开发人员可以将某个版本的专有云产品(如专有云产品V0)加载至工作区,在工作区对专有云产品V0做进一步的开发,从而得到新版本的专有云产品(如专有云产品V1),并可以通过提交(commit)命令将专有云产品V1存储至代码仓库中。以版本控制系统100是Git系统为例,提交命令例如可以是git commit。
每通过一个提交命令将一个版本的专有云产品存储至代码仓库,则可以视为在版本控制系统100中完成了一次提交操作。当检测到提交命令时,版本控制系统100可以调用预先配置的一文本编辑器,开发人员可以通过该文本编辑器输入用于描述本次提交的专有云产品的提交信息,该提交信息将会随专有云产品的项目代码一起被提交至代码仓库。其中,提交信息可以视为专有云产品的项目文档。其中,提交信息的格式与文本编辑器的类型有关,比如,在Git系统中,通常可以采用Markdown编辑器作为文本编辑器,对应地,得到的提交信息为markdown(即,md)格式的文档。
以前述的基于专有云产品V0开发得到的专有云产品V1,版本控制系统100是Git系统为例,Git系统可以基于针对专有云产品V1的提交命令,生成类文件对象、树对象和提交对象。详细地,针对专有云产品V1包括的每个文件,Git系统可以获取该文件的快照(snapshot),并生成包括该快照的类文件对象。所述类文件对象例如可以是blob对象。Git系统还可以依据专有云产品V1的文件目录及各文件之间的关系生成至少一树(tree)对象。树对象包括专有云产品V1的目录结构及每个blob对象的索引(index)。Git系统还可以生成与提交命令对应的提交对象,提交对象包括指向树对象的第一指针,以及指向父对象的第二指针及开发人员在本次提交命令触发的文本编辑器中输入的提交信息。
其中,父对象也是一个提交对象,这个提交对象与作为本次提交的专有云产品的开发基础的专有云产品对应。在上述示例中,根据针对专有云产品V1的提交命令生成的提交对象,其中的第二指针所指向的父对象,即为根据针对专有云产品V0的提交命令生成的提交对象。
本申请实施例中,版本控制系统100可以具有多个分支(branch),每个分支可以理解成一个指针,其指向一个具体的提交对象。一些场景中,一个分支也可以理解成指向某个具体版本的专有云产品的指针。为了便于管理,一些版本控制系统中,会设置主分支(master)、开发(develop)分支和多个功能(feature)分支,这些分支相互并行。其中,master分支可以指向最稳定的专有云产品,develop分支可以指向正在开发的专有云产品,功能分支可以指向用于开发某一功能的专有云产品。此外,在版本控制系统100中,存在一特殊的指针HEAD(可以称为“头指针”),HEAD指针可以指向特定的分支,HEAD所指向的分支即为版本控制系统100当前所在的分支。
如图4所示,主分支在初始时刻指向稳定的专有云产品V-m1,HEAD指针指向主分支,表示版本控制系统100当前处于主分支。如果需要基于专有云产品V-m1做进一步开发,则可以创建开发分支,创建的开发分支将会指向专有云产品V-m1,即当前所在的主分支所指向的专有云产品。然后,可以将HEAD指针切换至开发分支,并基于开发分支所指向的专有云产品V-m1进行开发,并可以对开发后的专有云产品V-d1指向提交操作,从而可以在版本控制系统100的代码仓库中保存专有云产品V-d1,开发分支也将指向专有云产品V-d1。类似地,按照前述过程在开发分支上做进一步的开发,并执行提交操作,可以得到新版本的专有云产品如V-d2和V-d3,在得到V-d3时,开发分支可以指向V-d3,HEAD指针也将随着当前所指向的开发分支移动。
假如此时需要对专有云产品V-d3进行发布,则可以拉取专有云产品V-d3作为待发布的专有云产品V-r1,创建一指向V-r1的发布分支,将HEAD指针移动至发布分支,并对发布分支执行发布命令,则可以实现对专有云产品V-d3的项目代码的发布。V-r1作为稳定的专有云产品,可以和主分支当前所指向的V-m1合并,得到新版本的专有云产品V-m2。此时,主分支指向V-m2。HEAD指针可以指向主分支。
在对V-d3进行发布后,可以将HEAD指针移动到开发分支,并可以基于开发分支当前指向的V-d3做进一步的开发和提交操作,例如可以得到V-d4。
进一步地,如果需要基于开发分支上的V-d1对功能1进行开发,则可以将开发分支切换至V-d1,对应地,HEAD指针也将随着开发分支移动。此时,可以创建用于开发功能1的功能分支1,并将HEAD指针移动至功能分支1。此时,功能分支1指向V-d1,HEAD指针指向功能分支1。则可以在功能分支1上开发功能1,假设开发到一定阶段,开发人员针对当前开发得到的专有云产品V-f11输入了提交命令,则功能分支1将指向V-f11,HEAD指针也会随着功能分支1移动。在此基础上,可以进一步对功能1进行开发,例如可以得到专有云产品V-f12,对应地,功能分支1可以指向V-f12,HEAD指针也随着功能分支1移动。
此时,如果需要基于开发分支上的V-d1对功能2进行开发,可以按照前述对功能1的开发过程进行处理,从而可以得到具有功能2的专有云产品V-f21和Vf22,当完成对V-f22的提交操作时,功能分支2可以指向V-f22,HEAD指针可以指向功能分支2。
当确定V-f12和V-f22为稳定代码时,可以选择将专有云产品V-f12和v-f22合并到开发分支,即,可以将V-f12、V-f22以及V-d4合并,从而得到新版本的专有云产品V-d5。此时,如果需要发布专有云产品V-d5,则可以按照上述发布V-d3的过程进行处理。其中,发布分支当前所指向的专有云产品V-r2通常是稳定的,因此可以和主分支当前指向的V-m2合并,得到新版本的专有云产品V-m3。此时,主分支指向V-m3,HEAD指针可以指向主分支。
本实施例中,可以在版本控制系统100中设置钩子(hook)指令,该钩子命令可以在完成提交操作时执行,以版本控制系统100是Git系统为例,该钩子命令可以是post commit命令。所述钩子命令可以设置用于向服务器300发送第一通知,如此,服务器300在接收到第一通知时,可以确定版本控制系统100中完成了一次提交操作。示例性地,版本控制系统100在完成一次提交操作后发送的第一通知可以包括版本控制系统100基于该次提交操作保存的提交对象。
S130,若监测到所述版本控制系统完成一次提交操作,从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
本实施例中,服务器300可以在接收到版本控制系统100发送的第一通知时,确定版本控制系统100完成了一次提交操作,并可以根据第一通知中的提交对象中的第一指针找到树对象,进而依据树对象中索引找到本次提交操作所提交的专有云产品,该专有云产品包括项目代码和项目文档。实施时,可以从找到的专有云产品中获取项目文档,该项目文档即为S130中的本次提交操作所提交的项目文档,从而可以将该项目文档确定为待转换文档。
可选地,本实施例中,可以按照用户对专有云产品的需求的不同,设置不同的分支,每个分支可以对应一个用户组(包括一个或多个用户),这个用户组中的用户的需求可以相同或者不完全相同。服务器300可以存储分支、用户组标识以及用户组中的用户标识之间的对应关系。实施过程中,可以按照所述对应关系,确定本次提交操作所在分支对应的用户标识(如,id-x),进而依据用户标识id-x确定其对应的发布条件,所述发布条件例如可以包括发布方式、文档格式等。这里的发布方式例如可以是在线发布或离线发布。在确定发布条件后,可以按照所述发布条件对待转换文档进行转换,以使待转换文档符合该发布条件。最终得到的符合发布条件的待转换文档,即为S130中的待发布文档。然后,可以将得到的待发布文档和用户标识id-x对应存储。
S150,响应所述版本控制系统对所述本次提交操作所提交的项目文档的发布指令,发布所述待发布文档。
本实施例中,发布命令可以包括待发布的专有云产品的标识信息(如,提交对象)、用户标识以及该用户标识所指示的客户端设备的地址,这里的用户标识所指示的客户端设备是用于部署所述待发布的专有云产品的客户端设备。实施过程中,版本控制系统100可以在接收到针对任一版本的专有云产品的发布命令时,可以按照图4所示方式,获取该版本的专有云产品的项目代码,基于该项目代码得到待发布代码,并向相应用户的客户端设备发布所述待发布代码。此时,版本控制系统100可以向服务器300发送第二通知,该第二通知可以和发布命令包含的信息相同。这里的第二通知可以理解为S150中的发布指令。
服务器300依据第二通知中的用户标识,可以查找到该用户标识对应的待发布文档,并向第二通知中的客户端设备的地址发布该待发布文档。
通过本实施例提供的文档发布方法,可以将可能被发布的每个版本的专有云产品的项目文档都及时地转换成符合用户对应的发布条件的待发布文档,从而可以在对该版本的专有云产品的待发布代码进行发布时,一键发布与该待发布代码对应的待发布文档。
可选地,本实施例中,由于一个分支对应的用户组中可能存在多个用户,而这些用户可能只需要该分支的专有云产品的部分功能,对应地,发布给这些用户的待发布代码可能只包括该分支的专有云产品的项目代码的一部分。对应地,最终发布给用户侧的待发布文档也需与待发布代码对应。
因此,本实施例中,S150中,将所述待转换文档转换成符合发布条件的待发布文档的步骤,可以通过图5所示的流程实现。详细描述如下。
S151,从版本控制系统获取待转换文档中每个子文档的元数据信息,从所述元数据信息中获取所述子文档对应的产品标识。
本实施例中,待转换文档是一个版本的专有云产品的完整项目文档,其可以包括一个或多个子文档,每个子文档可以具有对应的元数据信息,该元数据信息可以是JSON(JavaScript Object Notation,Java对象简谱)格式的配置文件,例如config.json。
一个子文档的元数据信息,可以包括该子文档的文档标识、链接地址、该子文档所属的各个层级的菜单以及该子文档对应的产品标识。其中,文档标识例如可以是文档ID(Identity),其可以是能够在版本控制系统100中唯一表示该子文档的字符或字符串。链接地址例如可以是子文档的URL(Uniform Resource Locator,统一资源定位符)地址。子文档所属的菜单可以理解成子文档所属的章节,一个子文档可以属于多个不同层级的章节,其中,一个层级的章节信息即为子文档所属的一个层级的菜单信息。子文档对应的产品标识可以表示该子文档的内容所描述的产品代码的功能或特性。
换句话说,在确定待转换文档之后,服务器300可以依据待转换文档的每个子文档的元数据信息,确定该子文档对应的产品代码的功能或特性。
S152,根据目标用户的标识对应的目标产品标识,从所述待转换文档中确定所述目标产品标识对应的至少一个目标子文档,并将所述至少一个目标子文档转换成待发布文档。
本实施例中,服务器300可以存储有每个用户购买或选取的产品功能或特性,该产品功能或特性可以采用产品标识表示。
实施过程中,当需要基于用户Un的发布条件生成待发布文档时,用户Un可以视为目标用户,用户Un的标识则可以为目标用户的标识,用于表示用户Un购买或选取的每个产品功能或特性的产品标识则可以视为目标产品标识。可选地,每个目标用户的标识可以与一个或多个目标产品标识对应。对应地,可以从待转换文档包括的各个子文档中分别确定与每个目标产品标识对应的子文档,所确定的子文档即可视为S152中的目标子文档。
在确定目标子文档之后,可以分别对确定的每个目标子文档进行转换,转换后的各符合发布条件的目标子文档的集合,可以视为所述待发布文档。
通过图5所示流程,得到的待发布文档的内容与待发布代码是完全对应的,更加符合用户需求。
可选地,有时在待发布的专有产品的项目文档中可能存在一些错误,如果将这些错误发出去,一方面可能导致用户配置或使用出错,使得用户体验很差,另一方面,后续需要将项目文档更改正确后,重新发布正确的文档,产生了不必要的工作量。基于此,在执行S152之前,本实施例提供的文档发布方法还可以按照图6所示流程处理。
S141,分别对每个目标子文档和该目标子文档的元数据信息进行错误检测,若该目标子文档和该元数据信息中的任意一者中存在错误,则通过前端显示组件显示所述错误。
本实施例中,可以按照设定的检测规则对每个目标子文档和该目标子文档对应的元数据信息进行检测。以待转换文档包括目标子文档d1为例,比如可以从目标子文档d1的元数据信息中获取目标子文档d1的文档标识d1,基于该文档标识d1从版本控制系统100中查找是否存在以d1为文档标识的子文档,即,可以检测目标子文档d1在版本控制系统100中是否存在,如果不存在,则可以确定目标子文档d1的元数据信息存在错误,如果存在,则可以确定目标子文档d1的元数据信息通过此项检测。又比如,还可以查找版本控制系统100中以d1为文档标识的子文档的数量,如果不等于1,则可以确定目标子文档d1的元数据信息存在错误,如果等于1,则可以确定目标子文档d1的元数据信息通过此项检测。又比如,可以从目标子文档d1的元数据信息中获取目标子文档d1的链接地址,检测该链接字符中是否存在指定的非法字符等,如果存在,可以确定目标子文档d1的元数据信息存在错误,如果不存在,则可以确定目标子文档d1的元数据信息通过此项检测。
可选地,在显示元数据信息中的错误时,可以在前端显示组件400上以文字信息进行提醒,也可以直接显示存在错误的元数据信息,并在所显示的元数据信息中采用特殊格式标识出错误的信息,这里的特殊格式例如可以是下划线、高亮显示、采用特定颜色显示等格式,本实施例对此没有限制。
示例性地,对于目标子文档d1,比如可以检测目标子文档d1中是否存在对图像I的引用,如果存在,可以检测所引用的图像I的资源在版本控制系统100中是否存在,如果不存在,则可以确定目标子文档d1存在错误,如果存在,则可以确定目标子文档d1通过此项检测。又比如可以检测目标子文档d1中是否存在黑名单中的字符(如特定产品标识)、链接(如特定广告链接等)等。如果存在,则可以确定目标子文档d1中存在错误,如果不存在,则可以确定目标子文档d1通过此项检测。可选地,在显示目标子文档中的错误时,可以在前端显示组件400上通过文字信息描述所述错误,也可以显示存在错误的目标子文档,并采用特殊格式标识出该目标子文档中的错误信息。
可选地,本实施例中,根据服务器300中的配置,当目标子文档及其元数据信息通过配置的各项检测时,可以确定该目标子文档及元数据信息通过S141中描述的错误检测。
此外,服务器300还可以按照重要等级进行检测规则的设置,比如第一等级的检测规则可以是必须通过的检测项,只有当通过第一等级的所有检测规则时,才可以对至少一个目标子文档进行转换。又比如,第二等级的检测规则可以是需要进行错误提示,但非必须通过的检测项,换句话说,当服务器300基于第二等级的检测规则检测出目标子文档或者目标子文档的元数据信息存在错误时,可以仅仅进行错误提示和错误信息记录,在显示和记录错误信息后可以继续对目标子文档进行转换,而可以不必修改这些错误。实际应用中,基于第二等级的检测规则检测出的错误例如可以是一些对于专有云产品的部署和使用没有影响的错误,比如,目标子文档中出现的域名或特定字符不属于黑名单,也不属于白名单;又比如,目标子文档的链接地址不够符合规范等。
S142,若所述至少一个目标子文档和每个目标子文档的元数据信息通过所述错误检测,则将所述至少一个目标子文档转换成符合发布条件的待发布文档。
实施过程中,当确定需要被转换的每个目标子文档及其元数据信息均通过错误检测时,可以执行S152中将所述至少一个目标子文档转换成待发布文档的步骤,即将需要被转换的每个目标子文档分别转换成符合发布条件的文档,得到的各个符合发布条件的文档的集合可以视为待发布文档。
通过图6所示流程,可以实现降低所发布的文档出错的几率,从而降低对同一专有云产品的项目文档重复发布的几率,可以有效地改善用户体验。
可选地,本实施例中,在得到待发布文档之后,可以通过前端显示组件400对待发布文档进行显示,以供开发人员预览。通过预览待发布文档,开发人员可以在前端显示组件上对发现错误进行修改。前端显示组件可以检测到在显示界面上的修改操作,,并将该修改操作对应的操作内容发送给服务器300,服务器300可以根据该修改操作的内容更新待发布文档。本实施例中,前端显示组件400可以采用不同的框架实现,比如可以采用React实现。
可选地,如前文描述的,向用户侧发布项目文档的方式包括在线发布和离线发布。随着发布方式的不同,用户侧所需的文档格式也有所不同。比如,当发布方式是在线发布时,发布至用户侧的待发布文档通常需要存储至该客户端设备对应的第二数据库中,因此,通过在线方式发布的文档需要是可存储于第二数据库的数据库(Structured QueryLanguage,SQL)文件,换句话说,通过在线方式向目标用户发布的文档与目标用户的客户端设备之间存在对应关系。而当发布方式是离线发布时,可以采用与应用程序、操作系统、硬件等无关的方式进行文件存储的格式,例如可携带文档(Portable Document Format,PDF)格式,来存储用于发布至用户侧的文档,以便于用户打开。对应地,待发布文档可以包括离线发布文档以及针对目标用户的客户端设备的在线发布文档。
可选地,与目标用户的客户端设备对应的在线发布文档可以通过图7所示流程获得。换句话说,S142中,将所述至少一个目标子文档转换成符合发布条件的待发布文档的步骤可以包括图7所示步骤。
S142-1,根据所述至少一个目标子文档的元数据信息确定至少一个目标子文档的层级关系,并根据将所述至少一个目标子文档的元数据信息以及所述至少一个目标子文档封装成树形结构格式的目标信息。
S142-2,将所述目标信息插入第一数据库,形成第一数据库文件。
请返回参照图4,下面结合图4给出一个例子,以对S142-1的处理过程进行阐述。假设将专有云产品V-r1的项目文档确定为待转换文档,并从该待转换文档中确定了目标子文档d1、d2和d3。其中,目标子文档d1属于子菜单A1,子菜单A1属于菜单A,目标子文档d1与产品标识B1对应;目标子文档d2和d3属于子菜单A2,子菜单A2属于菜单A,目标文档d2与产品标识B2和B2-1对应,目标子文档d3与产品标识B2和B2-2对应,则可以确定子菜单A1和子菜单A2是菜单A中的并列子菜单,而目标子文档d1描述的是专有云产品V-r1的功能或特性B1,目标子文档d2描述的是专有云产品V-r1的功能或特性B2-1,目标子文档d3描述的是专有云产品V-r1的功能或特性B2-2。如此,可以确定目标子文档d1、d2和d3之间存在图8所示的层级关系800。
实施时,可以将每个目标子文档、该目标子文档的文档标识、链接地址、该目标子文档所属的菜单以及该目标子文档对应的产品标识确定为一条数据记录,并可以按照层级关系确定所述至少一个目标子文档对应的数据记录的存储顺序,按照所述存储顺序将所述至少一个目标子文档对应的数据记录生成为属树形结构格式的信息,所述树形结构格式的信息即为S142-1中的目标信息。然后,可以通过插入(inert)语句将目标信息存储至第一数据库310中。如此,目标信息则成为了第一数据库310中的一个数据库文件,即第一数据库文件。
S142-3,根据所述目标产品标识确定目标用户的客户端设备支持的第二数据库,按照所述第二数据库的表接口对所述第一数据库文件进行转换,得到所述在线发布文档。
其中,表接口定义了数据库中的数据表的参数信息的格式。本实施例中,可以按照第二数据库的表接口中针对数据表的参数信息格式的定义,对第一数据库文件中的数据的格式进行修改。比如,第一数据库中的数据表中,可能以目标子文档的文档标识(id)为主键,而第二数据库中的数据表中,可能以菜单的标识(如,menu_id)为主键。此时,则需要将第一数据库文件转换成以menu_id为主键的文件,以得到适应第二数据库的表接口的第二数据库文件。该第二数据库文件可以作为在线发布文档。
可选地,离线发布文档可以通过图9所示的流程获得。换句话说,S142中,将所述至少一个目标子文档转换成符合发布条件的待发布文档的步骤可以包括图9所示的步骤。
S142-4,从所述第一数据库中获取所述目标信息,并根据所述目标信息生成页面文件。
本实施例中,目标子文档的元数据信息中还可以包括目标子文档的样式信息,如采用的字体、字体颜色、字体大小等。对应地,可以通过特定的转换工具将目标信息转换成页面文件,所述页面文件例如可以是HTML(HyperText Markup Language,超文本标记语言)文件,所述特定的转换工具例如可以是JavaScript模板引擎(如,EJS)。
S142-5,调用第一转换接口,将所述页面文件转换成可携带文档格式的第一文档,并将所述第一文档作为离线发布文档。
可选地,所述第一转换接口可以是任意能够将页面文件(如,HTML文件)转换成PDF格式的文档的接口。示例性地,服务器300可以采用Node.JS实现服务端程序,对应地,第一转换接口例如可以是Pupppeteer接口。其中,Node.JS是一个JavaScript运行时,即JavaScript的运行环境。通过调用Pupppeteer接口,可以将页面文件转换成PDF格式的文档,该PDF格式的文档即为第一文档。本实施例中,第一文档可以视为离线发布文档。
此外,如前文描述的,通过提交操作提交的项目文档,通常是通过版本控制系统100配置的文本编辑器输入的文档,通过文本编辑器输入的文档包含的通常是文本信息。比如,Markdown格式的文档包含的是文本信息。文本信息可以直接通过版本控制系统100编辑。而非文本信息则无法直接通过版本控制系统100编辑。为了便于描述,将通过文本编辑器输入的项目文档称为第一项目文档,对应地,任意一次提交操作所提交的项目文档可以视为第一项目文档。
在一些实施方式中,在离线发布场景中,开发人员可能会通过一些其他工具生成非文本信息的项目文档,在此将这些非文本信息的项目文档称为第二项目文档。示例性地,通过一些文档处理应用(如,Office应用)输入的项目文档,如word文档,可以视为第二项目文档。基于此,本实施例提供的文档发布方法还可以包括图10所示的步骤。
S161,从版本控制系统中查询与本次提交操作所提交的项目代码对应的项目文档,若所确定的项目文档中除第一项目文档之外还存在通过文档处理应用生成的第二项目文档,则获取所述第二项目文档。
其中,服务器300在接收到第一通知时,可以依据第一通知确定本次提交操作所提交的项目代码,从而可以获取该项目代码对应的项目文档。获取的项目文档至少包括所述本次提交操作(即,接收的第一通知所对应的提交操作)所提交的第一项目文档。其中,第一项目文档的格式与版本控制系统100配置的文本编辑器对应,比如,采用的是Markdown编辑器,则第一项目文档的后缀名通常为md。因此,可以检测获取的项目文档中是否存在后缀名不是md的文档,如果是,则可以确定该文档是第二项目文档。
进一步地,可以在获取的项目文档中存在后缀名不是md的文档时,检测该后缀名不是md的文档是否是通过文档处理应用生成的文档,如后缀名为word文档对应的后缀名(如,doc、docs等),如果是,再确定该后缀名不是md的文档为第二项目文档。在确定存在第二项目文档时,可以从版本控制系统100中拉取该第二项目文档。
S162,调用第二转换接口,将所述第二项目文档转换成可携带文档格式的第二文档。
S163,将所述第二文档添加至离线发布文档中。
本实施例中,第二转换接口可以是任意用于将文档处理应用生成的文档转换为PDF文档的接口,以第二项目文档是office文档为例,第二转换接口可以是LibreOffice接口。基于第二项目文档转换得到的PDF文档,即为S162中的第二文档。服务器300可以将第二文档作为离线发布文档的一部分。
通过上述设计,可以及时准确地为每个可能被发布的专有云产品生产离线发布文档以及与不同用户的客户端设备对应的在线发布文档,从而可以在需要发布时,按照用户所需的发布方式实现一键发布,降低了所需工作量。
可以理解,在一些场景中,如果确定目标用户的客户端设备是支持打开第二项目文档的,比如,支持打开office文档,则可以不对office文档进行转换。
请参照图11,图11示出了本申请一实施例提供的文档发布方法的流程示意图,该方法可以应用于图2所示的服务器300。详细描述如下。
S210,对版本控制系统中的提交操作进行监测。
本实施例中,S210的实现过程与S110类似,可以参照前文对S110的详细描述,在此不再赘述。
S230,若监测到所述版本控制系统完成一次提交操作,判断本次提交操作是否是在所述版本控制系统中的第一分支执行的。若是,执行S250;若否,则可以执行S270。
其中,对于监测到的每次提交操作,可以根据该次提交操作所在的分支,来确定用于处理该次提交操作所提交的项目文档转换的进程。
本实施例中,对于主要用于提交待发布的专有云产品的分支,可以通过一个单独的进程(如,主进程)来处理在该分支提交的专有云产品的项目文档的转换。而对于在其他分支上执行的提交操作所提交的项目文档的转换,则可以共用一个进程(如,次进程)来处理。
示例性地,服务器300中可以配置有第一分支,第一分支可以根据需要灵活配置,比如,可以是专门用于发布的发布分支。又比如,第一分支可以是开发分支,因为开发完成的专有云产品通常会被合并或提交至开发分支,进而基于开发分支进一步提交至发布分支进行发布。也就是说,发布分支上的专有云产品都有可能被发布,而发布分支上的专有云产品通常是从开发分支提交而来的。再换句话说,发布分支上的专有云产品大多是通过在开发分支上执行提交操作而形成的。
基于上述描述,如果用于发布的专有云产品大多来自于某一分支,那么在这一分支上执行的提交操作的频率就会比较高。基于此,本实施例中,第一分支也可以通过图12所示的流程确定。
S221,针对版本控制系统中的每个分支,获取目标时间段内在该分支执行的提交操作的次数。
本实施例中,对于版本控制系统100中的每个分支,服务器300可以存储有与该分支对应的提交操作发生次数,并在进入一个新的目标时间段时对各分支对应的提交操作发生次数清零。
实施过程中,服务器300每接收到一个第一通知,可以根据该第一通知中记录的提交操作所在分支,对该分支对应的提交操作发生次数进行计数,例如可以是在该分支对应的提交操作次数的当前值上累积1。
如此,可以周期性地检查各分支对应的提交操作次数,从而可以将达到目标次数的设置成第一分支。如果存在多个提交操作次数达到目标次数,则可以从所述多个提交操作次数中选择最大的提交操作次数所对应的分支,作为第一分支。
S222,若所述次数达到目标次数,则将该分支确定为第一分支。
本实施例中,目标时间段可以灵活设置,比如可以是一天、一个周、半个月或者一个月,本实施例对此没有限制。目标次数可以是根据统计数据或者经验灵活设置的数据,表示当目标时间段内某一分支上的提交操作次数达到这一目标次数时,该分支很可能是主要用于提交待发布专有云产品的分支。
在版本控制系统100中,执行提交命令时,HEAD指针指向的分支,即为该提交命令对应的提交操作所在的分支。例如图4所示场景中,执行针对专有云产品V-r1的提交命令时,HEAD指针指向发布分支,则可以认为针对专有云产品V-r1的提交操作是在发布分支执行的。
对于任意一次提交操作所在的分支,可以记录在基于该次提交操作保存的提交对象中。因此,服务器300在接收到版本控制系统100发送的第一通知,确定版本控制系统100完成了一次提交操作时,由于第一通知可以包括提交对象中的信息,可以从第一通知中获取本次提交操作所在的分支。在获取到本次提交操作所在的分支之后,可以判断获取的分支是否和第一分支相同。如果相同,表示本次提交操作就是在第一分支执行的,如果不同,则表示本次提交操作不是在第一分支执行的。
S250,通过主进程从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
S270,通过次进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
本实施例中,每个进程可以与任务队列对应,比如,主进程可以与第一任务队列对应,并可以用于依次处理第一任务队列中的第一任务。次进程可以与第二任务队列对应,并可以用于依次处理第二任务队列中的第二任务。
基于此,实施过程中,每当服务器300接收到一个第一通知,并确定版本控制系统100中完成了一次提交操作(如o1)时,如果确定本次提交操作o1是在第一分支执行的,则可以生成与本次提交操作o1对应的第一任务(如t11),并将第一任务添加到第一任务队列中。如果确定本次提交操作o1不是在第一分支执行的,则可以生成与本次提交操作o1对应的第二任务(如t21),并将第二任务添加到第二任务队列中。如此,主进程可以依次执行第一任务队列中的第一任务,当执行至第一任务t11时,即可完成对本次提交操作o1所提交的项目文档的转换。次进程可以依次执行第二任务队列中的第二任务,当执行至第二任务t21时,即可完成对本次提交操作o1所提交的项目文档的转换。
如上描述的,提交操作通常是在某一分支上进行提交的。通常是以某一分支当前指向的专有云产品版本为基础进行开发,得到新版本的专有云产品,并对新版本的专有云产品进行提交操作。然而,一些场景中,在一个分支上的本次提交操作所提交的专有云产品与在该分支上的前一次提交操作所提交的专有云产品可能是相同的。而相同的专有云产品,其项目文档也是一致的。此时,可以不必对本次提交操作所提交的项目文档进行转换,而可以直接获取前一次提交操作所提交的项目文档转换而成的待发布文档来使用。因此,主进程或次进程在处理任一提交操作对应的任务时,可以首先判断该提交操作提交的项目文档是否有变动。
进一步地,由于主进程和次进程对应的分支数量不同,且各自对应的分支上的专有云产品作为被发布产品的频率不同。因此,主进程和次进程处理任务的流程可以有所区别。
基于此,请参照图13,主进程可以按照图13所示流程执行每个第一任务,即,从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
S251,判断本次提交操作所提交的第一项目代码,相较于在所述第一分支的前一次提交操作所提交的第二项目代码是否有变动。若是,则执行S252;若否,则可以执行S253。
本实施例中,服务器300可以从版本控制系统100获取基于本次提交操作保存的提交对象,并从该提交对象中获取指向父对象的第二指针,从而确定本次提交操作对应的提交对象(其对应的专有云产品比如是图4所示的V-r2)的父对象(其对应的专有云产品比如是图4所示的V-r1)。版本控制系统100可以提供用于查询两个版本的专有云产品之间引入的修改的命令,比如,当版本控制系统100是Git系统时,该命令可以是git diff命令。通过该命令,可以查询专有云产品V-r2的项目代码相较于专有云产品V-r1的项目代码所引入的修改。如果查询结果是引入的修改项为0,表示专有云产品V-r2的项目代码相较于专有云产品V-r1的项目代码没有变动。如果查询结果是存在引入的修改项,表示专有云产品V-r2的项目代码相较于专有云产品V-r1的项目代码有变动。
其中,专有云产品V-r2的项目代码可以视为第一项目代码,专有云产品V-r1的项目代码可以视为第二项目代码。
S252,从版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
S253,获取所述第二项目代码的待发布文档作为所提交的所述第一项目代码的待发布文档。
本实施例中,如果发现第一项目代码相较于第二项目代码没有变动,那么第一项目代码对应的项目文档和第二项目代码对应的项目文档应该是一致的。因而可以查找第二项目代码的项目文档转换而成的待发布文档(即,第二项目代码的待发布文档)作为第一项目代码的待发布文档。这里描述的第一项目代码的待发布文档,就是S250中的待发布文档。
如果发现第一项目代码相较于第二项目代码有变动,则表示需要对第一项目代码的项目文档进行转换,从而可以将随第一项目代码一起提交的项目文档(也就是,本次提交操作所提交的项目文档)作为待转换文档。
其中,将待转换文档转换为待发布文档的具体过程与上述实施例类似,可以参照上述实施例对S130的相关描述,在此不再赘述。
由于主进程是每确定一个待转换文档就进行转换,且是通过一个单独的进程处理一个分支上的专有云产品的项目文档转换,从而可以尽可能及时地在第一分支上的专有云产品发布前将待转换文档转换成待发布文档。
可选地,请参照图14,次进程可以按照图14所示流程处理第二任务队列中的第二任务,即,从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
S254,确定本次提交操作所在的第二分支。
本实施例中,当确定本次提交操作不是在第一分支执行的时,可以确定本次提交操作所在的分支,所确定的分支即为第二分支。
S255,判断所述本次提交操作所提交的第一项目代码,相较于在所述第二分支的前一次提交操作所提交的第三项目代码是否有变动。若是,则执行S256;若否,则可以执行S257。
在确定第二分支之后,例如,本次提交操作提交的专有云产品是图4所示的V-d4,则第二分支是开发分支,在第二分支的前一次提交操作所提交的专有云产品为V-d3。服务器300可以判断专有云产品V-d4的项目代码相较于专有云产品V-d3的项目代码是否有变动,其判断过程与上述S251中的过程类似,在此不再赘述。其中,专有云产品V-d4的项目代码可以视为第一项目代码,专有云产品V-d3的项目代码可以视为第三项目代码。
S256,将所述本次提交操作所提交的项目文档作为待转换文档。
实施过程中,如果确定第一项目代码相较于第三项目代码有变动,则可以将第一项目代码的项目文档确定为待转换文档。
S257,获取所述第三项目代码的待发布文档作为所提交的所述第一项目代码的待发布文档。
如果确定第一项目代码相较于第三项目代码没有变动,那么第一项目代码的项目文档和第三项目代码的项目文档应该也是一致的,从而可以直接获取第三项目代码的项目文档转换而成的待发布文档,并将获取的待发布文档作为第一项目代码的待发布文档。这里,第一项目代码的项目文档就是S250中的待发布文档。
S258,针对当前监测到的各提交操作,当完成针对所述各提交操作的待转换文档确定时,依次将所确定的每个待转换文档转换成符合发布条件的待发布文档。
其中,第二任务队列中的所有第二任务各自对应的提交操作,即为当前监测到的各提交操作。通过依次执行第二任务,服务器300可以在每个第二任务对应的提交操作所提交的项目文档有变动时,将该项目文档确定为待转换文档。如此,当按照S255-S257完成对第二任务队列中各第二任务的处理后,即可确定完成了针对所述各提交操作的待转换文档确定。此时,可以按照上述实施例中的转换方式(可以参照上文对S130的相关描述)将所确定的每个待转换文档转换成待发布文档。
由于次进程是与多个分支对应的,这多个分支上的专有云产品被发布的几率相对较小,也就是,这多个分支对于文档转换的及时性要求没有那么高。而在这多个分支上提交的专有云产品中,可能存在一些跨分支的专有云产品相同,因而,次进程先确定所有待转换文档再对待转换文档进行转换,这样,次进程可以在确定待转换文档的过程中,检测一些在不同分支提交的专有云产品是否相同,如果相同,可以只保留这些专有云产品对应的待转换文档中的一者,以减少不必要的转换操作。
可以理解,本实施例中,还可以设置更多的进程,比如,在存在多个提交操作次数达到目标次数的分支时,可以分别针对这多个分支设置一次进程,每个次进程都具有对应的第二任务队列。多个次进程和主进程可以并行工作,本实施例对此没有限制。
请参阅图15,其示出了本申请实施例提供的一种文档发布装置的框图。该装置1500可以包括监测模块1510、转换模块1520以及发布模块1530。
其中,监测模块1510用于对版本控制系统中的提交操作进行监测。
转换模块1520用于当监测到所述版本控制系统完成一次提交操作,从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
发布模块1530用于响应所述版本控制系统对所述本次提交操作所提交的项目文档的发布指令,发布所述待发布文档。
可选地,所述待转换文档包括至少一个文档及每个子文档的元数据信息。对应地,转换模块1520可以通过如下方式将所述待转换文档转换成符合发布条件的待发布文档:获取所述待转换文档中每个子文档的元数据信息,从所述元数据信息中获取所述子文档对应的产品标识;根据目标用户的标识对应的目标产品标识,从所述待转换文档中确定所述目标产品标识对应的至少一个目标子文档,并将所述至少一个目标子文档转换成待发布文档。
可选地,所述待发布文档包括针对所述目标用户的客户端设备的在线发布文档。对应地,转换模块1520将所述至少一个目标子文档转换成符合发布条件的待发布文档的方式可以包括:根据所述至少一个目标子文档的元数据信息确定所述至少一个目标子文档的层级关系,并根据所述层级关系将所述至少一个目标子文档的元数据信息以及所述至少一个目标子文档封装成树形结构格式的目标信息;将所述目标信息插入第一数据库,形成第一数据库文件;根据所述目标产品标识确定所述客户端设备支持的第二数据库,按照所述第二数据库的表接口对所述第一数据库文件进行转换,得到所述在线发布文档。
可选地,所述待发布文档包括离线发布文档。对应地,转换模块1520将所述至少一个目标子文档转换成符合发布条件的待发布文档的方式还可以包括:从所述第一数据库中获取所述目标信息,并根据所述目标信息生成页面文件;调用第一转换接口,将所述页面文件转换成可携带文档格式的第一文档,并将所述第一文档作为所述离线发布文档。
可选地,本次提交操作所提交的项目文档是通过所述版本控制系统配置的文本编辑器编辑成的第一项目文档。对应地,转换模块1520还可以用于:从所述版本控制系统中查询与所述本次提交操作所提交的项目代码对应的项目文档,若所确定的项目文档中除所述第一项目文档之外还存在通过文档处理应用生成的第二项目文档,则获取所述第二项目文档;调用第二转换接口,将所述第二项目文档转换成所述可携带文档格式的第二文档;将所述第二文档添加至所述离线发布文档中。
可选地,装置1500还可以包括错误检测模块。所述错误检测模块可以用于:在将所述至少一个目标子文档转换成待发布文档之前,分别对每个目标子文档和该目标子文档的元数据信息进行错误检测,若该目标子文档和该元数据信息的任意一者中存在错误,则通过前端显示组件显示所述错误;若所述至少一个目标子文档和每个目标子文档的元数据信息通过所述错误检测,则执行所述将所述至少一个目标子文档转换成符合发布条件的待发布文档的步骤。
可选地,转换模块1520具体可以用于:当所述本次提交操作是在所述版本控制系统中的第一分支执行的,通过主进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档;当所述本次提交操作不是在所述版本控制系统中的第一分支执行的,通过次进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
其中,转换模块1520通过主进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档的方式可以是:
若所述本次提交操作所提交的第一项目代码,相较于在所述第一分支的前一次提交操作所提交的第二项目代码有变动,则从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
转换模块1520通过次进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档的方式可以是:
确定所述本次提交操作所在的第二分支;若所述本次提交操作所提交的第一项目代码,相较于在所述第二分支的前一次提交操作所提交的第三项目代码有变动,则将所述本次提交操作所提交的项目文档确定为待转换文档;针对当前监测到的各提交操作,当完成针对所述各提交操作的待转换文档确定时,依次将所确定的每个待转换文档转换成符合发布条件的待发布文档。
可选地,本实施例中,装置1500还可以包括确定模块。确定模块可以用于通过如下方式确定第一分支:针对所述版本控制系统中的每个分支,获取目标时间段内在该分支执行的提交操作的次数,若所述次数达到目标次数,则将该分支确定为所述第一分支。
可选地,本实施例中,装置1500还可以包括更新模块。更新模块可以用于:通过前端显示组件显示所述待发布文档;响应针对所述待发布文档的修改操作,更新所述待发布文档。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图16,其示出了本申请实施例提供的一种服务器300的结构框图。本申请中的服务器300可以包括一个或多个如下部件:处理器310、存储器320、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器320中并被配置为由一个或多个处理器310执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器310可以包括一个或者多个处理核。处理器310利用各种接口和线路连接整个服务器300内的各个部分,通过运行或执行存储在存储器320内的指令、程序、代码集或指令集,以及调用存储在存储器320内的数据,执行服务器300的各种功能和处理数据。可选地,处理器310可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器310可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器310中,单独通过一块通信芯片进行实现。
存储器320可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器320可用于存储指令、程序、代码、代码集或指令集。存储器320可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储服务器300在使用中所创建的数据(比如待转换文档、待发布文档)等。
请参考图17,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1700中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1700可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1700包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1700具有执行上述方法中的任何方法步骤的程序代码1710的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1710可以例如以适当形式进行压缩。
本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质(如上述的1700)中。计算机设备的处理器从计算机可读存储介质中读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的文档发布方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (15)

1.一种文档发布方法,其特征在于,包括:
对版本控制系统中的提交操作进行监测;
若监测到所述版本控制系统完成一次提交操作,从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档;
响应所述版本控制系统对所述本次提交操作所提交的项目文档的发布指令,发布所述待发布文档。
2.根据权利要求1所述的方法,其特征在于,所述待转换文档包括至少一个文档及每个子文档的元数据信息;所述将所述待转换文档转换成符合发布条件的待发布文档,包括:
获取所述待转换文档中每个子文档的元数据信息,从所述元数据信息中获取所述子文档对应的产品标识;
根据目标用户的标识对应的目标产品标识,从所述待转换文档中确定所述目标产品标识对应的至少一个目标子文档,并将所述至少一个目标子文档转换成待发布文档。
3.根据权利要求2所述的方法,其特征在于,所述待发布文档包括针对所述目标用户的客户端设备的在线发布文档;所述将所述至少一个目标子文档转换成符合发布条件的待发布文档,包括:
根据所述至少一个目标子文档的元数据信息确定所述至少一个目标子文档的层级关系,并根据所述层级关系将所述至少一个目标子文档的元数据信息以及所述至少一个目标子文档封装成树形结构格式的目标信息;
将所述目标信息插入第一数据库,形成第一数据库文件;
根据所述目标产品标识确定所述客户端设备支持的第二数据库,按照所述第二数据库的表接口对所述第一数据库文件进行转换,得到所述在线发布文档。
4.根据权利要求3所述的方法,其特征在于,所述待发布文档包括离线发布文档,所述将所述至少一个目标子文档转换成符合发布条件的待发布文档,还包括:
从所述第一数据库中获取所述目标信息,并根据所述目标信息生成页面文件;
调用第一转换接口,将所述页面文件转换成可携带文档格式的第一文档,并将所述第一文档作为所述离线发布文档。
5.根据权利要求4所述的方法,其特征在于,所述本次提交操作所提交的项目文档是通过所述版本控制系统配置的文本编辑器编辑成的第一项目文档,所述方法还包括:
从所述版本控制系统中查询与所述本次提交操作所提交的项目代码对应的项目文档,若所确定的项目文档中除所述第一项目文档之外还存在通过文档处理应用生成的第二项目文档,则获取所述第二项目文档;
调用第二转换接口,将所述第二项目文档转换成所述可携带文档格式的第二文档;
将所述第二文档添加至所述离线发布文档中。
6.根据权利要求2-5中任意一项所述的方法,其特征在于,在所述将所述至少一个目标子文档转换成待发布文档之前,所述方法还包括:
分别对每个目标子文档和该目标子文档的元数据信息进行错误检测,若该目标子文档和该元数据信息的任意一者中存在错误,则通过前端显示组件显示所述错误;
若所述至少一个目标子文档和每个目标子文档的元数据信息通过所述错误检测,则执行所述将所述至少一个目标子文档转换成符合发布条件的待发布文档的步骤。
7.根据权利要求1-5中任意一项所述的方法,其特征在于,所述从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档,包括:
若所述本次提交操作是在所述版本控制系统中的第一分支执行的,通过主进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
8.根据权利要求7所述的方法,其特征在于,所述主进程通过如下方式从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档:
若所述本次提交操作所提交的第一项目代码,相较于在所述第一分支的前一次提交操作所提交的第二项目代码有变动,则从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
9.根据权利要求7所述的方法,其特征在于,所述从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档,还包括:
若所述本次提交操作不是在所述版本控制系统中的第一分支执行的,通过次进程从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档。
10.根据权利要求9所述的方法,其特征在于,所述次进程通过如下方式从所述版本控制系统中获取所述本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档:
确定所述本次提交操作所在的第二分支;
若所述本次提交操作所提交的第一项目代码,相较于在所述第二分支的前一次提交操作所提交的第三项目代码有变动,则将所述本次提交操作所提交的项目文档确定为待转换文档;
针对当前监测到的各提交操作,当完成针对所述各提交操作的待转换文档确定时,依次将所确定的每个待转换文档转换成符合发布条件的待发布文档。
11.根据权利要求7所述的方法,其特征在于,所述第一分支通过如下方式确定:
针对所述版本控制系统中的每个分支,获取目标时间段内在该分支执行的提交操作的次数,若所述次数达到目标次数,则将该分支确定为所述第一分支。
12.根据权利要求1-5中任意一项所述的方法,其特征在于,在所述发布所述待发布文档之前,所述方法还包括:
通过前端显示组件显示所述待发布文档;
响应针对所述待发布文档的修改操作,更新所述待发布文档。
13.一种文档发布装置,其特征在于,包括:
监测模块,用于对版本控制系统中的提交操作进行监测;
转换模块,用于当监测到所述版本控制系统完成一次提交操作,从所述版本控制系统中获取本次提交操作所提交的项目文档作为待转换文档,并将所述待转换文档转换成符合发布条件的待发布文档;
发布模块,用于响应所述版本控制系统对所述本次提交操作所提交的项目文档的发布指令,发布所述待发布文档。
14.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-12中任意一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-12中任意一项所述的方法。
CN202010586693.2A 2020-06-24 2020-06-24 文档发布方法、装置及服务器 Active CN111651196B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010586693.2A CN111651196B (zh) 2020-06-24 2020-06-24 文档发布方法、装置及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010586693.2A CN111651196B (zh) 2020-06-24 2020-06-24 文档发布方法、装置及服务器

Publications (2)

Publication Number Publication Date
CN111651196A true CN111651196A (zh) 2020-09-11
CN111651196B CN111651196B (zh) 2024-06-21

Family

ID=72347512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010586693.2A Active CN111651196B (zh) 2020-06-24 2020-06-24 文档发布方法、装置及服务器

Country Status (1)

Country Link
CN (1) CN111651196B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416422A (zh) * 2020-11-17 2021-02-26 上海米哈游网络科技股份有限公司 一种开发版本文件提交方法、装置、设备及存储介质
CN112817915A (zh) * 2021-02-01 2021-05-18 浪潮云信息技术股份公司 一种自动化的多产品文档统一发布展示方法
CN113835743A (zh) * 2021-08-16 2021-12-24 北京百度网讯科技有限公司 私有化交付信息处理方法、装置、电子设备及存储介质

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990055219A (ko) * 1997-12-27 1999-07-15 윤덕용 에이치티엠엘(html) 문서 저장 및 검색 시스템
JP2008204066A (ja) * 2007-02-19 2008-09-04 Nec Corp 文書管理システム、文書管理サーバおよび文書管理プログラム
CN103124981A (zh) * 2010-07-08 2013-05-29 情报通信产业振兴院 电子文档分发系统和电子文档分发方法
CN104268211A (zh) * 2014-09-23 2015-01-07 河海大学常州校区 工程文档到pdf文档的在线转换方法
US20160110314A1 (en) * 2014-10-15 2016-04-21 International Business Machines Corporation Generating a document preview
CN105868321A (zh) * 2016-03-25 2016-08-17 乐视控股(北京)有限公司 文件管理方法及装置
CN106933881A (zh) * 2015-12-31 2017-07-07 福建福昕软件开发股份有限公司 一种互联文档的实现方法
CN107357825A (zh) * 2017-06-15 2017-11-17 中工国际工程股份有限公司 一种基于数据库的项目文档管理系统
CN107480234A (zh) * 2017-08-07 2017-12-15 四川长虹电器股份有限公司 一种基于git的企业级文档中心实现方法
CN107885499A (zh) * 2017-10-19 2018-04-06 平安壹钱包电子商务有限公司 一种接口文档生成方法及终端设备
US20180248835A1 (en) * 2017-02-27 2018-08-30 Salesforce.Com, Inc. Facilitating integration of collaborative communication platform and document collaboration tool
CN108804400A (zh) * 2018-06-13 2018-11-13 深圳市轱辘汽车维修技术有限公司 一种电子文档处理方法、装置及相关设备
CN108920181A (zh) * 2018-06-29 2018-11-30 北京拜克洛克科技有限公司 文件处理方法、装置及电子设备
CN110377336A (zh) * 2019-06-17 2019-10-25 平安普惠企业管理有限公司 接口文档生成方法、装置、计算机设备和存储介质
CN110471648A (zh) * 2019-08-19 2019-11-19 山东浪潮通软信息科技有限公司 一种基于异步机制的分布式的ci/cd的实现方法
CN110609998A (zh) * 2019-08-07 2019-12-24 中通服建设有限公司 一种电子文档信息的数据提取方法、电子设备及存储介质
US20200042531A1 (en) * 2018-08-01 2020-02-06 Accenture Global Solutions Limited Digital content management platform
CN110825431A (zh) * 2019-11-14 2020-02-21 京东数字科技控股有限公司 接口文档处理方法及装置、系统、存储介质和电子设备
CN111159099A (zh) * 2019-11-15 2020-05-15 杭州数梦工场科技有限公司 在线数据生成方法、装置、电子设备和存储介质
CN111240653A (zh) * 2019-12-31 2020-06-05 瑞庭网络技术(上海)有限公司 接口文档生成方法、装置及可读存储介质
CN111290996A (zh) * 2020-01-16 2020-06-16 平安医疗健康管理股份有限公司 文档格式转换方法、装置、设备及可读存储介质

Patent Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990055219A (ko) * 1997-12-27 1999-07-15 윤덕용 에이치티엠엘(html) 문서 저장 및 검색 시스템
JP2008204066A (ja) * 2007-02-19 2008-09-04 Nec Corp 文書管理システム、文書管理サーバおよび文書管理プログラム
CN103124981A (zh) * 2010-07-08 2013-05-29 情报通信产业振兴院 电子文档分发系统和电子文档分发方法
CN104268211A (zh) * 2014-09-23 2015-01-07 河海大学常州校区 工程文档到pdf文档的在线转换方法
US20160110314A1 (en) * 2014-10-15 2016-04-21 International Business Machines Corporation Generating a document preview
CN106933881A (zh) * 2015-12-31 2017-07-07 福建福昕软件开发股份有限公司 一种互联文档的实现方法
CN105868321A (zh) * 2016-03-25 2016-08-17 乐视控股(北京)有限公司 文件管理方法及装置
US20180248835A1 (en) * 2017-02-27 2018-08-30 Salesforce.Com, Inc. Facilitating integration of collaborative communication platform and document collaboration tool
CN107357825A (zh) * 2017-06-15 2017-11-17 中工国际工程股份有限公司 一种基于数据库的项目文档管理系统
CN107480234A (zh) * 2017-08-07 2017-12-15 四川长虹电器股份有限公司 一种基于git的企业级文档中心实现方法
CN107885499A (zh) * 2017-10-19 2018-04-06 平安壹钱包电子商务有限公司 一种接口文档生成方法及终端设备
CN108804400A (zh) * 2018-06-13 2018-11-13 深圳市轱辘汽车维修技术有限公司 一种电子文档处理方法、装置及相关设备
CN108920181A (zh) * 2018-06-29 2018-11-30 北京拜克洛克科技有限公司 文件处理方法、装置及电子设备
US20200042531A1 (en) * 2018-08-01 2020-02-06 Accenture Global Solutions Limited Digital content management platform
CN110377336A (zh) * 2019-06-17 2019-10-25 平安普惠企业管理有限公司 接口文档生成方法、装置、计算机设备和存储介质
CN110609998A (zh) * 2019-08-07 2019-12-24 中通服建设有限公司 一种电子文档信息的数据提取方法、电子设备及存储介质
CN110471648A (zh) * 2019-08-19 2019-11-19 山东浪潮通软信息科技有限公司 一种基于异步机制的分布式的ci/cd的实现方法
CN110825431A (zh) * 2019-11-14 2020-02-21 京东数字科技控股有限公司 接口文档处理方法及装置、系统、存储介质和电子设备
CN111159099A (zh) * 2019-11-15 2020-05-15 杭州数梦工场科技有限公司 在线数据生成方法、装置、电子设备和存储介质
CN111240653A (zh) * 2019-12-31 2020-06-05 瑞庭网络技术(上海)有限公司 接口文档生成方法、装置及可读存储介质
CN111290996A (zh) * 2020-01-16 2020-06-16 平安医疗健康管理股份有限公司 文档格式转换方法、装置、设备及可读存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112416422A (zh) * 2020-11-17 2021-02-26 上海米哈游网络科技股份有限公司 一种开发版本文件提交方法、装置、设备及存储介质
CN112817915A (zh) * 2021-02-01 2021-05-18 浪潮云信息技术股份公司 一种自动化的多产品文档统一发布展示方法
CN113835743A (zh) * 2021-08-16 2021-12-24 北京百度网讯科技有限公司 私有化交付信息处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111651196B (zh) 2024-06-21

Similar Documents

Publication Publication Date Title
US20240211235A1 (en) Software dependency management
US8495572B2 (en) Apparatus and method for identifying contextual changes in source code
CN111651196B (zh) 文档发布方法、装置及服务器
KR101355273B1 (ko) 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체
US11803372B2 (en) Creation and execution of customised code for a data processing platform
US11301643B2 (en) String extraction and translation service
CN111581920A (zh) 文档转换方法、装置、设备及计算机存储介质
US11651607B2 (en) Information processing apparatus and non-transitory computer readable medium storing program
CN113298331A (zh) 一种工单处理方法、装置、系统及电子设备
WO2023151397A1 (zh) 应用程序部署方法、装置、设备及介质
US11061664B2 (en) Code management system and code management method
CN114556238A (zh) 用于在云计算环境中生成资产信息的数字表示的方法和系统
CN113722337B (zh) 业务数据确定方法、装置、设备及存储介质
Le Zou et al. On synchronizing with web service evolution
JP2019101829A (ja) ソフトウェア部品管理システム、計算機および方法
CN114281688A (zh) 一种无码或低码的自动化用例管理方法和装置
CN111279350B (zh) 用于在服务管理应用接口中提供全球化特征的系统和方法
CN113806327A (zh) 一种数据库设计方法、装置及相关设备
US11200078B1 (en) Facilitating use of an unfamiliar command line tool via a familiar command line tool
CN114924721A (zh) 代码生成方法、装置、计算机设备及存储介质
US11526336B2 (en) Community-oriented, cloud-based digital annealing platform
CN117609057A (zh) 基于合并请求增量的代码评审方法、系统、设备及介质
CN117573130A (zh) 代码处理的方法、装置、电子设备和存储介质
CN118410077A (zh) 一种数据挖掘方法、系统、介质及设备
CN116166254A (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