CN111708747B - 分布式版本管理文档版本树生成方法 - Google Patents
分布式版本管理文档版本树生成方法 Download PDFInfo
- Publication number
- CN111708747B CN111708747B CN202010541807.1A CN202010541807A CN111708747B CN 111708747 B CN111708747 B CN 111708747B CN 202010541807 A CN202010541807 A CN 202010541807A CN 111708747 B CN111708747 B CN 111708747B
- Authority
- CN
- China
- Prior art keywords
- submission
- list
- branch
- version
- document
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/101—Collaborative creation, e.g. joint development of products or services
Abstract
本发明提供了分布式版本管理文档版本树生成方法,包括以下步骤:从分布式版本管理系统的版本库中获取包含指定文档修订的所有信息,计入信息列表;从步骤S1获取的信息列表,构建指定文档版本历史结构;依据步骤S2重构的版本历史,通过图形绘制,呈现指定文档的版本树。本发明公开了分布式版本管理文档版本树生成方法,在分布式版本管理系统‑Git提交历史信息的基础上,设计了自动化的分析筛选算法,提取指定文档的所有修订信息;重构在各分支上,指定文档版本序列;并以文档版本树的形式做前端呈现。该方法更加清晰的呈现指定文档的修改历史信息,为项目团队自查及适航审定提供支持。
Description
技术领域
本发明涉及一种分布式版本管理文档版本树生成方法。
背景技术
民用飞机项目要求对项目产品做完善的版本管理,以确保工程质量并提供适航审定依据。在版本管理中,文档的版本序号是重要的自查和审查线索。
现代民用飞机项目的研发是一个复杂的多专业、多任务协同开发过程,为支持这种复杂多任务并发的工作模式,常采用分布式版本管理系统。分布式版本管理提供了灵活的分支策略,从而支持多任务并发,且分支之间信息隔离,避免项目团队在开发中不必要的相互干扰。
如图27所示,分布式版本管理系统中,常设定一个稳定的主分支,由其推出特定的工作任务分支,在工作任务分支中实施文档变更相关工作,并在必要时从任务分支合并回主分支。图27中每一个圆点都代表了全项目的文档,在项目开展到一定阶段后,就较难直观查验,对于指定文档,其在哪些任务分支中有过更改,并且工程研发至今,指定文档在各分支中,分别有几个版本。
需要注意的是,本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
发明内容
本发明目的在于提供了分布式版本管理文档版本树生成方法,实现了指定文档的修改历史信息清晰呈现,确保了项目团队自查和适航审定。
为实现上述目的本发明采用如下技术方案:
该分布式版本管理文档版本树生成方法,其特征在于,包括以下步骤:
S1:获取提交数据
从分布式版本管理系统的版本库中获取包含指定文档修订的所有信息,计入信息列表;
S2:重构版本历史
从步骤S1获取的信息列表,构建指定文档版本历史结构;
S3:版本树呈现
依据步骤S2重构的版本历史,通过图形绘制,呈现指定文档的版本树。
进一步地,上述步骤S1具体是:
S101:按时间逆序获取分布式版本管理系统提交历史;
S102:逐一查看各提交修订文档列表,若包括指定文档,则将该提交计入信息列表,否则该提交为无关提交。
进一步地,上述步骤S101中提交包括提交ID、提交人、提交日期、提交概要和提交信息。
进一步地,上述步骤S2具体是:
S201:获取主分支提交列表
从主分支指向的提交开始,依次获取各提交的第一个父提交,如对应提交存在于提交信息列表中,则将其纳入主分支提交列表中;
S202:.重构主分支提交关联
遍历主分支提交列表中的所有提交,并将各提交的第一个父提交设置为主分支提交列表中的下一个提交;主分支提交列表最后一个提交的父提交设置为空;
S203:获取已合并任务分支
遍历主分支提交列表中的各个提交,若对应提交存在多余一个的父提交,则其从第二个父提交开始,每个父提交对应一个已合并任务分支;
S204:获取已合并任务分支提交列表
对于每个任务分支,通过其父提交,依次找到不在主分支列表中,但在提交信息列表中的提交,作为任务分支中的提交纳入对应分支提交列表;
如果通过父提交找到的第一个主分支列表中的提交是该任务分支的分叉点提交;
S205:重构任务分支提交关联
依次遍历各任务分支提交列表中的所有提交,并将各提交的第一个父提交设置为对应任务分支提交列表中的下一个提交;如果存在分叉点提交,则任务分支提交列表最后一个提交的父提交为该任务分支的分叉点提交,否则任务分支提交列表最后一个提交的父提交为空。
进一步地,上述步骤S3具体是:
S301:提交定位
按照时间顺序计算各个提交在图形上的位置坐标;
S302:连线计算
根据各提交的位置坐标,及其提交间的关联,计算提交连线曲线的绘制路径;
S303:版本树绘制
根据步骤S302和S303的计算位置绘制相应的版本树图谱,并标注相应的版本信息。
本发明的有益效果:
本发明公开了分布式版本管理文档版本树生成方法,在分布式版本管理系统-Git提交历史信息的基础上,设计了自动化的分析筛选算法,提取指定文档的所有修订信息;重构在各分支上,指定文档版本序列;并以文档版本树的形式做前端呈现。该方法更加清晰的呈现指定文档的修改历史信息,为项目团队自查及适航审定提供支持。
附图说明
图1是本发明文件版本树生成系统的示意图;
图2是本发明的逻辑示意图;
图3是本发明获取提交信息交互的示意图
图4是本发明提交序列示意图;
图5是本发明过滤指定文件版本历史示意图;
图6是本发明重构版本历史示意图;
图7是本发明重构主分支示意图;
图8是本发明获取主分支提交列表示意图;
图9是本发明重构主分支追溯关系示意图;
图10是本发明重构任务分支示意图;
图11是本发明重构已合并分支示意图;
图12是本发明任务分支提取示意图;
图13是本发明提取分支列表示意图;
图14是本发明重构分支追溯关系示意图;
图15是本发明重构未合并分支示意图;
图16是本发明生成版本树示意图;
图17是本发明信息布局示意图;
图18是本发明提交位置定位示意图;
图19是本发明提交Y坐标生成示意图;
图20是本发明提交X坐标生成示意图;
图21是本发明是提交连线生成示意图;
图22是本发明标注信息生成示意图;
图23是本发明分支标注示意图;
图24是本发明提交信息生成示意图;
图25是本发明文件生成示意图;
图26是本发明提交历史生成示意图;
图27是现有技术文件版本树生成系统的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征或特性可以以任何合适的方式结合在一个或更多实施方式中。
如图1所示,分布式版本管理文件版本树生成系统的完整实现涉及分布式版本库,文件版本树生成和版本树渲染和呈现三大部分。
其中:
(1)分布式版本库中存储了所有版本信息,是文件版本树原始版本信息的源头所在。本发明提取的数据均源自Git分布式版本数据库。
(2)文件版本树生成软件从版本数据库中提取原始版本信息,并进行筛选重组,最终生成文件版本树。
(3)版本树渲染和呈现软件读取文件版本树生成软件生成的版本树信息,并将其最终呈现给用户。
如图2所示分布式版本管理文档版本树生成方法,它从Git分布式版本库中提取版本信息,并最终生成为可被计算机可视化的版本树图像。
具体包含如下步骤:
步骤1:获取提交信息;
步骤2:重构版本历史;
步骤3:生成版本树。
“步骤1:获取提交信息”主要从分布式版本库中提取出指定文件相关的版本信息,其操作过程如图3所示,包括:
步骤1.1:文件版本树生成软件向分布式版本库请求版本历史;
步骤1.2:分布式版本库返回版本历史给文件版本树生成软件,返回的版本历史为一个提交信息列表,其中的每个提交包含如下信息:
1)提交ID
2)提交人
3)提交日期
4)提交概要
5)父提交ID
6)修订文件列表
其中父提交表示当前提交衍生自哪些之前的提交。如图4所示的提交序列中,提交2的父提交是提交1,提交5的父提交是提交2和提交4,其中提交2是提交5的首个父提交;
步骤1.3:文件版本树生成软件过滤版本历史,从中提取实际修改了指定文件的提交。
“步骤1.3:文件版本树生成软件过滤版本历史”的逻辑如图5所示,包括如下操作步骤:
步骤1.3.1:遍历版本历史;
步骤1.3.2:判断版本历史遍历是否完成;
步骤1.3.3:如果版本历史遍历尚未完成,将当前遍历到的提交设置为当前提交;
步骤1.3.4:如果版本历史遍历完成,结束步骤1.3;
步骤1.3.5:判断当前提交的修订文件列表中是否包含指定文件;
步骤1.3.6:如果当前提交的修订文件列表中包含指定文件,则将该提交添加至指定文件版本历史列表,转至步骤1.3.1继续遍历;
步骤1.3.7:如果当前提交的修订文件列表中不包含指定文件,则转至步骤1.3.1继续遍历。
“步骤2:重构版本历史”依据已获得的版本历史和指定文件版本历史列表,重构出指定文件的版本历史,其操作过程如图6所示,包括:
步骤2.1:复制指定文件历史列表为剩余提交列表,剩余提交列表用户记录尚未进行重构处理的有效提交;
步骤2.2:重构主分支;
步骤2.3:重构任务分支;
步骤2.4:整合分支;
“步骤2.2:重构主分支”用于构建主分支提交历史,其操作逻辑如图7所示,包括如下操作步骤:
步骤2.2.1:获取主分支提交列表;
步骤2.2.2:重构主分支追溯关系。
“步骤2.2.1:获取主分支提交列表”的操作过程如图8所示,包括:
步骤2.2.1.1:获取主分支指向的提交;
步骤2.2.1.2:将主分支指向的提交加入主分支提交列表;
步骤2.2.1.3:将主分支指向的提交设置为当前提交;
步骤2.2.1.4:判断当前提交是否存在父提交;
步骤2.2.1.5:如果当前提交存在父提交,则将当前提交的首个父提交设置为新的当前提交;
步骤2.2.1.6:如果当前提交不存在父提交,结束步骤2.2.1;
步骤2.2.1.7:判断当前提交是否在指定文件的版本历史列表中;
步骤2.2.1.8:如果当前提交在指定文件版本历史列表中,则将当前提交添加至主分支提交列表;
步骤2.2.1.9:将当前提交从剩余提交列表中删除,转至步骤2.2.1.4继续执行;
步骤2.2.1.10:如果当前提交不在指定文件版本历史列表中,则转至步骤2.2.1.4继续执行。
“步骤2.2.2:重构主分支追溯关系”的操作过程如图9所示,包括:
步骤2.2.2.1:遍历主分支提交列表;
步骤2.2.2.2:判断主分支提交列表遍历是否结束;
步骤2.2.2.3:如果主分支提交列表遍历结束,结束步骤2.2.2;
步骤2.2.2.4:如果主分支提交列表遍历未结束,将当前遍历到的提交设置为当前提交;
步骤2.2.2.5:判断当前提交是否为主分支提交列表中的最后一个提交;
步骤2.2.2.6:如果当前提交不是主分支提交列表中的最后一个提交,将当前提交的第一个父提交设置为主分支提交列表中的下一个提交,然后转至步骤2.2.2.1继续执行;
步骤2.2.2.7:如果当前提交是主分支提交列表中的最后一个提交,判断当前提交是否存在父提交;
步骤2.2.2.8:如果当前提交存在父提交,将当前提交的第一个父提交设置为空。转至步骤2.2.2.1继续执行;
步骤2.2.2.9:如果当前提交不存在父提交,则转至步骤2.2.2.1继续执行。
“步骤2.3:重构任务分支”用于构建相关任务分支的提交历史,其操作逻辑如图10所示,包含如下操作步骤:
步骤2.3.1:重构已合并分支;
步骤2.3.2:重构未合并分支。
“步骤2.3.1:重构已合并分支”的操作过程如图11所示,包括:
步骤2.3.1.1:遍历指定分支提交列表;
步骤2.3.1.2:判断指定分支提交列表遍历是否结束;
步骤2.3.1.3:如果指定分支提交列表遍历结束,则结束步骤2.3.1;
步骤2.3.1.4:如果指定分支提交列表遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤2.3.1.5:判断当前提交的父提交数是否大于1;
步骤2.3.1.6:如果当前提交的父提交数小于1,则转至2.3.1.1继续执行;
步骤2.3.1.7:如果当前提交的父提交数大于1,则从第二个父提交开始遍历所有的父提交;
步骤2.3.1.8:判断父提交遍历是否结束;
步骤2.3.1.9:如果父提交遍历完成,转至2.3.1.1继续执行;
步骤2.3.1.10:如果父提交遍历未完成,将当前遍历到的提交设置为当前父提交;
步骤2.3.1.11:提取当前父提交对应的提交列表;
步骤2.3.1.12:判断当前父提交对应分支的提交列表是否为空;
步骤2.3.1.13:如果当前父提交对应分支的提交列表为空,则删除对应的父提交,返回步骤2.3.1.7继续执行;
步骤2.3.1.14:如果当前父提交对应分支的提交列表不为空,则将对应的父提交设置为父提交对应提交列表的首个提交;
步骤2.3.1.15:将父提交对应分支提交列表作为一个新的分支加入分支列表中。
“步骤2.3.1.11:提取当前父提交对应的提交列表”用于根据指定提交,提取对应分支的提交列表,其操作逻辑如图12所示,包括如下操作步骤:
步骤2.3.1.11.1:提取分支列表;
步骤2.3.1.11.2:重构分支追溯关系;
步骤2.3.1.11.3:重构关联分支。
“步骤2.3.1.11.1:提取分支列表”的工作逻辑如图13所,包括如下操作步骤:
步骤2.3.1.11.1.1.1:将当前父提交设置为当前提交;
步骤2.3.1.11.1.1.2:判断当前提交是否在指定文件历史列表中;
步骤2.3.1.11.1.1.3:如果当前提交不在指定文件历史列表中,判断当前提交是否存在父提交;
步骤2.3.1.11.1.1.4:如果当前提交不存在父提交,判断新分支提交列表是否为空;
步骤2.3.1.11.1.1.5:如果新分支提交列表为空,则结束步骤2.3.1.11.1;
步骤2.3.1.11.1.1.6:如果新分支提交列表不为空,则将新分支提交列表中最后一个提交的首个提交设置为空。结束步骤2.3.1.11.1;
步骤2.3.1.11.1.1.7:如果当前提交存在父提交,则将当前提交的第一个父提交设置为当前提交,转至2.3.1.11.1.1.2继续执行;
步骤2.3.1.11.1.1.8:如果当前提交在指定文件历史列表中,判断当前提交是否在剩余提交列表中;
步骤2.3.1.11.1.1.9:如果当前提交不在剩余提交列表中,则将新分支提交列表中的最后一个提交的首个父提交设置为当前提交,并结束步骤2.3.1.11.1;
步骤2.3.1.11.1.1.10:如果当前提交在剩余提交列表中,则将当前提交添加至新分支提交列表中;
步骤2.3.1.11.1.1.11:将当前提交从剩余提交列表中删除,转至步骤2.3.1.11.1.1.3继续执行。
“步骤2.3.1.11.2:重构分支追溯关系”的工作逻辑如图14所示,包括如下操作步骤:
步骤2.3.1.11.2.1:遍历分支提交列表;
步骤2.3.1.11.2.2:判断分支提交列表是否遍历结束;
步骤2.3.1.11.2.3:如果当前分支提交列表遍历结束,则结束步骤2.3.1.11.2;
步骤2.3.1.11.2.4:如果当前分支提交列表遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤2.3.1.11.2.5:判断当前提交是否为分支提交列表中的最后一个提交;
步骤2.3.1.11.2.6:如果当前提交不是分支列表中的最后一个提交,则将当前提交的第一个父提交设置为分支提交列表中的下一个提交,转至2.3.1.11.2.1继续执行。
步骤2.3.1.11.2.7:如果当前提交是分支列表中的最后一个提交,转至步骤2.3.1.11.2.1继续执行。
“步骤2.3.1.11.3:重构关联分支”用于重构当前分支的已合并关联分支,其工作逻辑如图11所示。
通过步骤2.3.1,完成所有已合并分支的重构。
“步骤2.3.2重构未合并分支”的操作步骤如图15所示,包括:
步骤2.3.2.1:判断剩余提交列表是否为空;
步骤2.3.2.3:如果剩余提交列表为空,则结束步骤2.3.2;
步骤2.3.2.4:如果剩余提交列表不为空,则将剩余提交列表中的第一个提交设置为当前提交;
步骤2.3.2.5:提取当前提交对应分支的提交列表,当前提交对应分支提交列表操作同步骤2.3.1.11。
步骤2.3.2.6:判断当前提交对应分支的提交列表是否为空;
步骤2.3.2.7:如果当前提交对应分支的提交列表为空,则转至步骤2.3.2.1继续执行;
步骤2.3.2.8:如果当前提交对应分支的提交列表不为空,则将当前提交对应分支的提交列表加入分支列表中,然后转至步骤2.3.2.1继续执行;
“步骤2.4:整合分支”将主分支作为分支列表的第一个元素加入分支列表中。从而构建指定文件提交历史的完整分支结构。
“步骤3:生成版本树”依据重构的版本历史,生成可被版本树渲染和呈现程序识别的文件。其操作步骤如图16所示,包括:
步骤3.1:信息布局;
步骤3.2:文件生成。
“步骤3.1:信息布局”用来产生版本树所需的图形布局及定位信息,其操作步骤如图17所示,包括:
步骤3.1.1:提交位置定位;
步骤3.1.2:提交连线生成;
步骤3.1.3:标注信息生成。
“步骤3.1.1:提交位置定位”生成文件版本树中所有提交对应的位置信息,其步骤如图18所示,包括:
步骤3.1.1.1:提交Y坐标生成;
步骤3.1.1.2:提交X坐标生成;
“步骤3.1.1.1:提交Y坐标生成”的操作逻辑如图19所示,包括:
步骤3.1.1.1.1:设定处置Y坐标;
步骤3.1.1.1.2:遍历指定文件历史列表;
步骤3.1.1.1.3:判断指定文件历史列表遍历是否结束;
步骤3.1.1.1.4:如果指定文件历史列表遍历结束,则结束步骤3.1.1.1;
步骤3.1.1.1.5:如果指定文件历史例表遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤3.1.1.1.6:设置当前提交的Y坐标等于Y坐标;
步骤3.1.1.1.7:Y左边增加纵向间隔距离,并转至步骤3.1.1.1.2继续执行。
“步骤3.1.1.2:提交X坐标生成”的操作逻辑如图20所示,包括:
步骤3.1.1.2.1:设定初始X坐标;
步骤3.1.1.2.2:遍历分支列表;
步骤3.1.1.2.3:判断分支列表遍历是否结束;
步骤3.1.1.2.4:如果分支列表遍历结束,则结束步骤3.1.1.2;
步骤3.1.1.2.5:如果分支列表遍历未结束,则将当前遍历到的分支设置为当前分支;
步骤3.1.1.2.6:遍历当前分支;
步骤3.1.1.2.7:判断当前分支遍历是否结束;
步骤3.1.1.2.8:如果当前分支遍历结束,则X左边增加横向间隔距离,并转至步骤3.1.1.2.2继续执行;
步骤3.1.1.2.9:如果当前分支遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤3.1.1.2.10:甚至当前提交的X左边等于X左边,并转至步骤3.1.1.2.6继续执行。
“步骤3.1.2:提交连线生成”的操作逻辑如图21所示,包括:
步骤3.1.2.1:遍历指定文件历史列表;
步骤3.1.2.2:判断指定文件历史列表遍历是否结束;
步骤3.1.2.3:如果指定文件历史列表遍历结束,则完成步骤3.1.2;
步骤3.1.2.4:如果指定文件历史列表遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤3.1.2.5:遍历当前提交的所有父提交;
步骤3.1.2.6:判断当前提交的父提交遍历是否结束;
步骤3.1.2.7:如果父提交遍历结束,则转至步骤3.1.2.1继续执行;
步骤3.1.2.8:如果父提交遍历未结束,则将当前遍历到的父提交设置为当前父提交;
步骤3.1.2.9:当前提交与当前父提交连线的起始位置设置为当前提交的位置;
步骤3.1.2.10:当前提交与当前父提交连线的中止位置设置为当前父提交的位置;
步骤3.1.2.11:按需计算和设置连线的样式,并转至步骤3.1.2.5继续执行。
“步骤3.1.3:标注信息生成”用以生成文件版本树所需的标注信息,其操作步骤如图22所示,包括:
步骤3.1.3.1:分支标注;
步骤3.1.3.2:提交信息定位。
“步骤3.1.3.1:分支标注”用以确定分支名称及其标注位置,其逻辑如图23所示,包括:
步骤3.1.3.1.1:遍历分支列表;
步骤3.1.3.1.2:判断分支列表遍历是否结束;
步骤3.1.3.1.3:如果分支列表遍历结束,则完成步骤3.1.3.1;
步骤3.1.3.1.4:如果分支列表遍历未结束,则将当前遍历到的分支设置为当前发分支;
步骤3.1.3.1.5:将当前分支的首个提交设置为当前体骄傲;
步骤3.1.3.1.6:获取当前提交所在的分支的名称;
步骤3.1.3.1.7:设置当前提交所在分支的名称为当前分支的分支名;
步骤3.1.3.1.8:分支名称位置设置为当前提交位置的上方。
“步骤3.1.3.2:提交信息定位”用以确定提交信息的标注位置,其逻辑如图24所示,包括:
步骤3.1.3.2.1:遍历指定文件历史列表;
步骤3.1.3.2.2:判断指定文件历史列表遍历是否结束;
步骤3.1.3.2.3:如果指定文件历史列表遍历结束,则结束步骤3.1.3.2;
步骤3.1.3.2.4:如果指定文件历史列表遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤3.1.3.2.5:将当前提交的提交信息的位置设置在当前提交的右侧,并转至步骤3.1.3.2.1继续执行。
“步骤3.2:文件生成”依据已提取的布局信息,生成所需的版本树文件,其操作步骤如图25所示,包括:
步骤3.2.1:文件信息输出,文件信息输出将指定文件路径以指定格式输出至版本树文件中;
步骤3.2.2:提交历史输出。
“步骤3.2.2:提交历史输出”根据步骤3.1得到的信息布局,以指定格式输出至版本树文件中,其逻辑如图26所示,包括:
步骤3.2.2.1:遍历指定文件历史列表;
步骤3.2.2.2:判断指定文件历史列表遍历是否结束;
步骤3.2.2.2:如果指定文件历史列表遍历结束,开始遍历分支列表;
步骤3.2.2.3:判断如果分支列表遍历是否结束;
步骤3.2.2.4:如果分支列表遍历结束,则结束步骤3.2.2;
步骤3.2.2.5:如果分支列表遍历未结束,则将当前遍历到的分支设置为当前分支;
步骤3.2.2.6:在当前分支名称位置处输出当前分支的名称,并转至步骤3.2.2.2继续执行;
步骤3.2.2.7:如果指定文件历史列表遍历未结束,则将当前遍历到的提交设置为当前提交;
步骤3.2.2.8:根据当前提交的位置输出当前提交标识;
步骤3.2.2.9:根据当前提交的提交信息的位置输出当前提交信息;
步骤3.2.2.10:遍历当前提交的父提交;
步骤3.2.2.11:判断当前提交的父提交遍历是否结束;
步骤3.2.2.12:如果当前提交父提交遍历结束,转至步骤3.2.2.1继续执行;
步骤3.2.2.13:如果当前提交父提交遍历未结束,则将当前遍历的提交设置为当前父提交;
步骤3.2.2.14:获取当前提交和当前父提交对应的连线,包括起始位置和样式信息;
步骤3.2.2.15:根据连线信息生成连线,并转至步骤3.2.2.10继续执行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。
Claims (4)
1.分布式版本管理文档版本树生成方法,其特征在于,包括以下步骤:
S1:获取提交数据
从分布式版本管理系统的版本库中获取包含指定文档修订的所有信息,计入信息列表;
S2:重构版本历史
从步骤S1获取的信息列表,构建指定文档版本历史结构;
S201:获取主分支提交列表
从主分支指向的提交开始,依次获取各提交的第一个父提交,如对应提交存在于提交信息列表中,则将其纳入主分支提交列表中;
S202:重构主分支提交关联
遍历主分支提交列表中的所有提交,并将各提交的第一个父提交设置为主分支提交列表中的下一个提交;主分支提交列表最后一个提交的父提交设置为空;
S203:获取已合并任务分支
遍历主分支提交列表中的各个提交,若对应提交存在多余一个的父提交,则其从第二个父提交开始,每个父提交对应一个已合并任务分支;
S204:获取已合并任务分支提交列表
对于每个任务分支,通过其父提交,依次找到不在主分支列表中,但在提交信息列表中的提交,作为任务分支中的提交纳入对应分支提交列表;
如果通过父提交找到的第一个主分支列表中的提交是该任务分支的分叉点提交;
S205:重构任务分支提交关联
依次遍历各任务分支提交列表中的所有提交,并将各提交的第一个父提交设置为对应任务分支提交列表中的下一个提交;如果存在分叉点提交,则任务分支提交列表最后一个提交的父提交为该任务分支的分叉点提交,否则任务分支提交列表最后一个提交的父提交为空;
S3:版本树呈现
依据步骤S2重构的版本历史,通过图形绘制,呈现指定文档的版本树。
2.根据权利要求1所述的分布式版本管理文档版本树生成方法,其特征在于,所述步骤S1具体是:
S101:按时间逆序获取分布式版本管理系统提交历史;
S102:逐一查看各提交修订文档列表,若包括指定文档,则将该提交计入信息列表,否则该提交为无关提交。
3.根据权利要求2所述的分布式版本管理文档版本树生成方法,其特征在于:所述步骤S101中提交包括提交ID、提交人、提交日期、提交概要和提交信息。
4.根据权利要求1所述的分布式版本管理文档版本树生成方法,其特征在于,所述步骤S3具体是:
S301:提交定位
按照时间顺序计算各个提交在图形上的位置坐标;
S302:连线计算
根据各提交的位置坐标,及其提交间的关联,计算提交连线曲线的绘制路径;
S303:版本树绘制
根据步骤S302和S303的计算位置绘制相应的版本树图谱,并标注相应的版本信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541807.1A CN111708747B (zh) | 2020-06-15 | 2020-06-15 | 分布式版本管理文档版本树生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541807.1A CN111708747B (zh) | 2020-06-15 | 2020-06-15 | 分布式版本管理文档版本树生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111708747A CN111708747A (zh) | 2020-09-25 |
CN111708747B true CN111708747B (zh) | 2023-02-10 |
Family
ID=72540129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010541807.1A Active CN111708747B (zh) | 2020-06-15 | 2020-06-15 | 分布式版本管理文档版本树生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111708747B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860632B (zh) * | 2021-01-22 | 2022-10-21 | 重庆六花网络科技有限公司 | 文件处理方法、终端及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929630A (zh) * | 2012-10-31 | 2013-02-13 | 中标软件有限公司 | 一种基于分布式协同开发环境下的代码管理方法及系统 |
CN105094851A (zh) * | 2015-09-06 | 2015-11-25 | 浪潮软件股份有限公司 | 一种基于Git随时发布代码的实现方法 |
CN108170469A (zh) * | 2017-12-20 | 2018-06-15 | 南京邮电大学 | 一种基于代码提交历史的Git仓库相似性检测方法 |
CN110990055A (zh) * | 2019-12-19 | 2020-04-10 | 南京邮电大学 | 一种基于程序分析的Pull Request功能分类方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9390124B2 (en) * | 2013-03-15 | 2016-07-12 | Microsoft Technology Licensing, Llc. | Version control system using commit manifest database tables |
US20140289280A1 (en) * | 2013-03-15 | 2014-09-25 | Perforce Software, Inc. | System and Method for Bi-directional Conversion of Directed Acyclic Graphs and Inter-File Branching |
CN104063446A (zh) * | 2014-06-17 | 2014-09-24 | 沈阳龙天科技有限公司 | 多用户创作内容的版本控制方法和实现方法 |
CN104657137A (zh) * | 2015-02-10 | 2015-05-27 | 上海创景计算机系统有限公司 | 一种软件模型的数据版本管理方法 |
CN108228231B (zh) * | 2018-01-08 | 2021-07-27 | 南京邮电大学 | 一种Git仓库文件注解系统的可视化漂移方法 |
CN108536472A (zh) * | 2018-03-13 | 2018-09-14 | 中国银行股份有限公司 | 一种代码的规范性检查方法及装置 |
CN109086071A (zh) * | 2018-08-22 | 2018-12-25 | 平安普惠企业管理有限公司 | 一种管理软件版本信息的方法及服务器 |
CN109871233B (zh) * | 2019-02-13 | 2022-05-17 | 南京南瑞继保电气有限公司 | 一种云编程文件管理方法及装置、设备、存储介质 |
CN110221860A (zh) * | 2019-06-11 | 2019-09-10 | 腾讯科技(深圳)有限公司 | 一种配置文件处理方法、装置、终端及介质 |
CN110413309A (zh) * | 2019-08-02 | 2019-11-05 | 浪潮云信息技术有限公司 | 一种基于gitlab的项目代码分支管理方法及系统 |
-
2020
- 2020-06-15 CN CN202010541807.1A patent/CN111708747B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929630A (zh) * | 2012-10-31 | 2013-02-13 | 中标软件有限公司 | 一种基于分布式协同开发环境下的代码管理方法及系统 |
CN105094851A (zh) * | 2015-09-06 | 2015-11-25 | 浪潮软件股份有限公司 | 一种基于Git随时发布代码的实现方法 |
CN108170469A (zh) * | 2017-12-20 | 2018-06-15 | 南京邮电大学 | 一种基于代码提交历史的Git仓库相似性检测方法 |
CN110990055A (zh) * | 2019-12-19 | 2020-04-10 | 南京邮电大学 | 一种基于程序分析的Pull Request功能分类方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111708747A (zh) | 2020-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021144719A (ja) | 影響分析 | |
US8825695B2 (en) | Mapping dataset elements | |
US7542980B2 (en) | Methods of comparing and merging business process configurations | |
US8438534B2 (en) | Transformation of data between hierarchical data formats | |
US8683431B2 (en) | Applying rules to data | |
US20060242176A1 (en) | Methods of exposing business configuration dependencies | |
US20110161946A1 (en) | Batch data processing | |
US20060242172A1 (en) | Systems and methods for transforming logic entities of a business application into an object-oriented model | |
US8140894B2 (en) | Transaction regions in graphical computer-implemented methods of processing data | |
US20060242174A1 (en) | Systems and methods for using object-oriented tools to debug business applications | |
US20060242194A1 (en) | Systems and methods for modeling and manipulating a table-driven business application in an object-oriented environment | |
US20210263833A1 (en) | Code Generation Platform with Debugger | |
EP2348401A1 (en) | Transformation of hierarchical data formats using graphical rules | |
JP3871832B2 (ja) | データ処理プログラム自動生成システム及びその方法並びにコンピュータ可読記録媒体 | |
CN111708747B (zh) | 分布式版本管理文档版本树生成方法 | |
Gonçales et al. | Comparison of design models: A systematic mapping study | |
JP2008225898A (ja) | 変換装置、変換プログラム及び変換方法 | |
CN101359337B (zh) | 用于交互式地编辑gis拓扑数据集的方法 | |
Zheng et al. | Collaborative design: Improving efficiency by concurrent execution of Boolean tasks | |
AU760395B2 (en) | Program reproducing method and device, and medium on which program for program reproduction recording | |
Eichinski et al. | Datatrack: An R package for managing data in a multi-stage experimental workflow data versioning and provenance considerations in interactive scripting | |
CN117171203B (zh) | 一种基于零代码推理引擎的sql自动生成方法及系统 | |
CN116226066B (zh) | 低代码平台代码同步方法和装置、电子设备、存储介质 | |
JPH09292985A (ja) | プログラム再利用部品生成方法 | |
Bill et al. | Virtual textual model composition for supporting versioning and aspect-orientation |
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 |