当前位置: 首页 > 专利查询>谷歌公司专利>正文

用于分布式版本控制的高效注释系统技术方案

技术编号:16178801 阅读:107 留言:0更新日期:2017-09-09 06:28
公开了用于使源代码注释跨软件代码存储库提交可用的系统和方法。一种创建用于确定哪些注释应当被示出的增量责任结构的方法,其从接收包括相对于父提交已经更新的至少一个文件的提交(501)开始。然后,应当识别该至少一个文件的父文件修订(505)。一种示例方法确定该至少一个文件和所识别的父文件修订之间的差异,并且基于所确定的差异来追溯该文件中的每一行的起源(507)。该行的标识符以及该行的起源可以被添加至该文件的增量责任数据结构(521)。

【技术实现步骤摘要】
【国外来华专利技术】用于分布式版本控制的高效注释系统
技术介绍
在开发软件应用时,个体软件工程师通常针对该软件应用的特定特征进行工作。一旦该特征被开发并测试,包含该特征的源代码就可以被登记并提交至该软件应用的代码存储库,以使得可以与针对该软件应用进行工作的其它软件工程师共享该特征。为了将功能提交至代码存储库,软件工程师登记使该特征在其它机器上工作所必需的所有文件变化和文件添加。向软件应用代码存储库的提交可以仅包括一个文件,或者可以包括针对软件工程师的单独机器上的特定源代码文件所作出的一组修改,这些修改应当被添加至该软件应用代码存储库中所保持的代码库。每个提交通常被给定标识符。由其标识符所标识的特定提交可以在给定时间提供代码存储库的快照。该提交内的每个文件可以接收与该提交相关联的文件修订编号。软件工程师可以从代码存储库中拉取并接受更新,以便获得包含代码存储库中的最新版本文件的最新提交并确保它们正在代码库的源代码文件的当前版本上进行工作。在软件应用开发的过程中,在查看代码时,与代码相关的附加信息对于理解该代码的目的、功能、或者对于找到修改该代码或修复损坏代码的方式而可能是相关的。集成开发环境(IDE)或文本编辑器可以将该附加信息显示为对源代码的注释。例如,可以突出显示拼写错误的词,可以在产生错误的代码旁示出编译器错误,并且可以示出对源代码文件或目录的最近更改的列表。注释可能来自多个来源,诸如静态代码分析、生产系统、拼写检查器、或协作工具。提供注释的工具针对一个特定文件修订或提交进行操作。然而,只要在稍后提交中的后续代码修改不会使该注释过时,所生成的注释就可以跨文件修订或存储库快照而保持相关。只要所生成的注释对于软件工程师有用就使它们能够跨源代码文件修订和代码提交可用将会是有利的。如专利技术人所认识到的,应当存在一种在源代码存储库中跨软件代码的提交而有效率且正确地生成并显示注释的方式。
技术实现思路
本说明书大体上描述了涉及显示源代码的技术,并且具体涉及用于使源代码注释跨软件代码存储库提交而可用的方法和系统。大体上,本说明书中所描述主题的一个方面能够以计算机实现的方法和系统来体现。一种示例系统包括:一个或多个处理设备和一个或多个存储指令的存储设备,该指令在被该一个或多个处理设备执行时使得该一个或多个处理设备实现一种示例方法。一种示例方法包括:接收提交,该提交包括至少一个相对于父提交该已经有所更新的文件;识别该至少一个文件的父文件修订;确定该至少一个文件和所识别的父文件修订之间的差异;基于所确定的差异来追溯该文件中的每一行的起源;响应于确定行已经被添加或更改而将该行标示为起源并且在该文件的增量责任数据结构中将该行链接至其自身;以及将该行上的标识符以及该行的起源添加至该文件的增量责任数据结构。另一种用于跨文件的多个修订显示相关注释的示例方法包括:接收文件的当前修订;查询责任结构以获得与该文件相关联的责任数据,以便根据先前修订来确定所述当前修订中的可见行;根据该先前修订确定与当前修订中的该可见行相关联的注释;以及显示所确定的注释。这些和其它实施例能够可选地包括以下特征中的一个或多个特征。追溯行的起源可以包括:将与该行相关联的父文件修订追溯至一个父文件修订,并且将起源信息从该父文件修订复制到该行。追溯行的起源可以包括:将与该行相关联的父文件修订追溯至多个父文件修订,并且在该增量责任数据结构中将起源信息从被确定为最旧的父文件修订复制到该行。被确定为最旧的父文件修订可以基于与父文件修订相关联的时间戳来被找到。响应于确定至少一个文件中的两行包含相同的起源,这两行中的后者可以被标示为新的起源行。基于所确定的差异,至少一个文件的行可以被标示为所添加的行和所去除的行。可以构建布尔查询以检查行是否在提交中可见。可以存在判断布尔查询是否变得过于复杂(例如,当它超过预定长度时)的确定,并且如果是,则该查询可以由快捷标签替换以降低查询大小和复杂度。替选地,可以使用二元决策图来替代布尔查询,并且可以针对每个提交来创建标签。可以沿着边从下到上对该二元决策图进行评估以确定行在提交中是否可见。本专利技术的一个或多个实施例的细节在仅作为说明而给出的附图和下面的描述中被给出。本专利技术的其它特征、方面、和优点将根据说明书、附图、和权利要求书而变得显而易见。各图中相似的附图标记和名称指示相似的元素。附图说明图1是源代码内的注释的示例。图2是源代码的提交的示例。图3是文件的示例责任数据结构。图4是图示对代码存储库的代码变化的示例登记的框图。图5a是用于跨文件的多个修订显示注释的示例方法的流程图。图5b是用于创建增量责任数据结构的示例方法的流程图。图6a是文件的父提交的示例。图6b是要针对图5a中所表示的文件提交的当前代码的示例。图6c是标记确定如图5b所表示的文件的当前状态与如图5a所表示的父提交之间的差异之后的提交的示例。图7a是对于图2的提交#1的标记的示例。图7b是对于图2的提交#2的标记的示例。图7c是对于图2的提交#3的标记的示例。图7d是对于图2的提交#4的标记的示例。图8a是示例提交图。图8b是提交#1的示例二元描述图。图8c是提交#2的示例二元描述图。图8d是提交#3的示例二元描述图。图8e是提交#4的示例二元描述图。图8f是提交#5的示例二元描述图。图8g是主压缩的示例。图8h是提交#6的示例二元描述图。图8i是提交#7的示例二元描述图。图9a是具有注释的示例提交图。图9b是图9a中所示的注释的标签的示例。图9c是图9a中所示的提交图的示例倒排索引;图9d图示了具有图9a所示的注释的与其相对应的文档的正标记。图10图示了示例迭代器类。图11图示了用于找出所有匹配文档的示例二元描述示图的实施方式。图12是用于跨源代码文件修订显示注释的示例方法的流程图。图13是图示示例计算设备的框图。具体实施方式如以上所讨论的,注释提供关于源代码的有用信息,并且只要它们适用于它们所附加的文件行的当前版本就应当可以能够跨提交使用。注释能够视情况而从特定代码行进行添加(或去除)。如图1所图示,注释(103)可以向用户警示在代码中仍然存在TODO的情况。然而通常而言,当代码行或文件被修改时,难以确定注释是否仍然能够适用于该行代码。因此,常规系统并不保留跨文件版本的注释。示例系统可以通过提供在责任层(blamelayer)存储注释的特殊数据结构来允许注释跨提交可用。另外,可以在示例递增责任数据结构之上实现标记方案以使得能够对特定提交的注释进行搜索和汇总。在创建源代码时,软件开发者可以对代码存储库执行若干提交。例如,如图2所图示,根提交可以包括两个文件:文件#1和文件#2。来自根提交的文件#1的内容可以包括行1上的“aaa”,行2上的“bbb”,以及行3上的“ccc”。来自根提交的文件#2的内容可以包括在行1上的“aaa”和行2上的“aaa”。第二提交可以从提交#1得出,并通过删除“aaa”、更改“ccc”、和添加“ddd”来更改文件#1。则文件#1的内容可以是:在行1上的“bbb”(来自提交#1),行2上的“cccc”(来自提交#2),以及行3上的“ddd”(来自提交#2)。文件#2可以被更改已包括行1上的“aaa”(来自提交#1),行2上的“aaa”(来自提交#2),行3上的“aaa”本文档来自技高网
...
用于分布式版本控制的高效注释系统

【技术保护点】
一种计算机实现的用于创建文件的增量责任数据结构的方法,所述方法包括:接收提交,所述提交包括相对于父提交已经被更新的至少一个文件(501);识别所述至少一个文件的父文件修订(505);确定所述至少一个文件和所识别的父文件修订之间的差异(507);基于所确定的差异来追溯所述文件中的每一行的起源(507);响应于确定行已经被添加或更改,将该行标示为起源并且在所述文件的增量责任数据结构中将该行链接至其自身(509,511);响应于确定行未被更新,通过追溯与未修改的行相关联的父文件修订来确定未修改行的起源(509,511);以及将该行的标识符以及该行的起源添加至所述文件的所述增量责任数据结构(521)。

【技术特征摘要】
【国外来华专利技术】2014.12.16 US 14/572,4631.一种计算机实现的用于创建文件的增量责任数据结构的方法,所述方法包括:接收提交,所述提交包括相对于父提交已经被更新的至少一个文件(501);识别所述至少一个文件的父文件修订(505);确定所述至少一个文件和所识别的父文件修订之间的差异(507);基于所确定的差异来追溯所述文件中的每一行的起源(507);响应于确定行已经被添加或更改,将该行标示为起源并且在所述文件的增量责任数据结构中将该行链接至其自身(509,511);响应于确定行未被更新,通过追溯与未修改的行相关联的父文件修订来确定未修改行的起源(509,511);以及将该行的标识符以及该行的起源添加至所述文件的所述增量责任数据结构(521)。2.根据权利要求1所述的计算机实现的方法,其中,追溯行的起源包括:将与该行相关联的父文件修订追溯至一个父文件修订,并且将起源信息从该父文件修订复制到该行。3.根据权利要求1所述的计算机实现的方法,其中,追溯行的起源包括:将与该行相关联的父文件修订追溯至多个父文件修订,并且在所述增量责任数据结构中将起源信息从被确定为最旧的父文件修订复制到该行。4.根据权利要求3所述的计算机实现的方法,其中,被确定为最旧的父文件修订是基于与该父文件修订相关联的时间戳来被找到的。5.根据权利要求3所述的计算机实现的方法,进一步包括:响应于确定所述至少一个文件中的两行包含相同的起源,将所述两行中的后者标示为新的起源行。6.根据权利要求1所述的计算机实现的方法,进一步包括:基于所确定的差异来将所述至少一个文件的行标示为所添加的行和所去除的行;以及构建布尔查询,所述布尔查询检查行是否能够在所述提交中看到。7.根据权利要求6所述的计算机实现的方法,进一步包括:确定所述布尔查询是否比预定长度更长;以及响应于确定所述布尔查询比预定长度更长,利用至少一个新标签来替代所述查询。8.根据权利要求6所述的计算机实现的方法,进一步包括:针对每个提交创建二元决策图和标签;以及沿着边从下到上对所述二元决策图进行评估以确定行在提交中是否可见。9.一种用于跨文件的多个修订来显示相关注释的计算机实现的方法,所述计算机实现的方法包括:接收文件的当前修订(520);查询责任结构以获得与所述文件相关联的责任数据,以便根据先...

【专利技术属性】
技术研发人员:亚历山大·诺伊贝克伊夫根尼·格里亚兹诺夫
申请(专利权)人:谷歌公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1