将不同大小的代码更改作业集合提供至验证器的制造方法

文档序号:9438866阅读:305来源:国知局
将不同大小的代码更改作业集合提供至验证器的制造方法
【专利说明】将不同大小的代码更改作业集合提供至验证器
【背景技术】
[0001] 在一些情况下,许多源代码开发者可处理开发中的软件项目(例如,计算机应用 等)的共享代码。在一些示例,源代码管理(SCM)系统可被利用作为用于保持共享代码的 当前版本的中央仓库(repository)。在这样的示例中,每一个开发者可从SCM系统检索共 享代码的当前版本并可提交它们的代码更改至保持于SCM系统中的共享代码。
【附图说明】
[0002] 如下详细描述参考附图,其中:
[0003] 图IA为示例计算设备的框图,计算设备提供不同大小的作业集合至多个验证器 中的每一个;
[0004] 图IB为存储于队列中的示例的多个作业的框图;
[0005] 图2为示例系统的框图,示例系统基于作业失败概率确定集合大小分布;
[0006] 图3为示例方法的流程图,示例方法用于基于概率上期望被作为组验证成功的作 业数目来确定集合大小分布;以及
[0007] 图4为示例方法的流程图,示例方法用于基于作业失败间隔更新作业失败概率。
【具体实施方式】
[0008] 如上所述,处理开发中的软件项目(例如,计算机应用等)的共享代码的软件开发 者可利用源代码管理(SCM)系统作为保持共享代码的当前版本的中央仓库。如本文所使用 的,"共享代码"可包括至少一个机器可读指令文件(例如,源代码,等),至少一个机器可读 指令文件被关联于开发中的软件项目并且被保持在仓库中以供由多个不同的软件开发者 或其他用户访问。如本文所使用的,"软件"可指代由计算设备的处理资源可执行的机器可 读指令的集合(例如,源代码,等)。
[0009] 如上所述,每一个开发者可从该SCM系统获取该共享代码的当前版本并可通过提 交它们的代码更改至保持共享代码的SCM系统来更新该共享代码。如本文所使用的,"提交" 代码更改至共享代码可包括合并,保存,或其他方式将该代码更改并入至该共享代码。然 而,开发者可能会提交将错误引入该共享代码的代码更改。引入的错误可能会仿碍该共享 代码编译,运行,等,引起功能退化(例如,破坏先前工作的功能),或以其他方式破坏该共 享代码。在这样的示例中,当其他开发者使他们的工作区与该共享代码的最新版本同步时, 该误差可传播至所述其他开发者,给这些开发者留出了非工作的环境并且空等待着共享代 码去被纠正。
[0010] 在一些示例,对共享代码的更改可在被提交至该共享代码之前被测试。通过该测 试的代码更改可被提交,而测试失败的更改可被拒绝(例如,不被提交至共享代码)。然而, 独立地为每个递交的代码更改的集合编译和测试共享代码可能是耗时的过程。附加地,如 果多个代码更改的集合被一起测试,并且该测试失败,查找和拒绝失败的更改集合可能会 涉及单独地重新测试每个更改的集合。 toon] 为解决这些问题,本文描述的示例可接收多个作业,每个包括被请求要提交至共 享代码的至少一个代码更改,在队列中放置每个作业,并且提供不同大小的作业集合至多 个验证器中的每一个,每个作业集合包含在给定时间该队列中的一个或多个作业的连续 组,连续组以给定时间时处于队列前端的作业开始。本文描述的示例可进一步从每一个验 证器接收所提供的作业集合中的所有作业是否作为组被该验证器成功验证了的指示。
[0012] 在一些示例,每个所提供的作业集合可与包括更小作业集合的所有作业的每对作 业集合的较大者相重叠,并且每个作业集合以队列前端的作业开始。附加地,每个验证器可 应用并尝试将其被提供的作业集合的所有代码更改作为组(例如,一起作为单个代码更改 的集合)验证,并且所有验证器可并行地执行该过程。以这种方式,本文描述的示例可作为 组验证,然后将提供至验证器的作业集合中的最大完全有效的作业集合的每个作业的代码 更改作为组提交。本文描述的示例可由此降低在测试队列中所有代码更改的过程中所涉及 的时间量。此外,通过对不同大小的重叠作业集合并行执行验证,本文描述的示例可将队列 中的第一失败作业标识为属于造成最大有效作业集合和下一最大作业集合(即,最小失败 作业集合)之间的差别的作业的相对较小的序列。本文描述的示例由此可降低在提交之前 验证代码更改过程中所涉及的时间量,并降低当一起验证多个作业时识别队列中第一无效 作业的时间量。
[0013] 附加地,本文描述的一些示例可基于概率上期望被作为组成功验证的作业的数量 确定作业集合的相应大小。以这种方式,本文描述的示例可谨慎地选择要作为组验证的作 业集合的大小,以增加成功验证队列中相对大的作业集合的机会,这可由此降低在提交代 码更改至共享代码之前验证代码更改的过程所消耗的时间。此外,通过控制什么代码更改 被提交和何时代码更改被提交,通过防止任何代码更改被提交至该共享代码而另一代码更 改的集合处于正被验证和提交的过程中,本文描述的示例可保持该共享代码处于连续一致 的和有效的状态。
[0014] 现参见附图,图IA为示例计算设备100的框图,示例计算设备100提供不同大小 的作业集合至多个验证器的每一个。如本文所使用的,"计算设备"可为桌面计算机,笔记本 计算机,工作站,平板计算机,移动电话,智能设备,服务器,或其他任何处理设备或装置。在 图IA的示例中,计算设备100包括处理资源110和用指令122,124,126和128编码的机器 可读存储介质120。在一些示例中,存储介质120可包括附加的指令。在一些示例中,本文 相对于存储介质120描述的指令122,124,126,128和任何其他指令可被存储于远离计算设 备100和处理资源110但可由计算设备100和处理资源110访问的机器可读存储介质。
[0015] 在本文描述的示例中,处理资源可包括例如包括在单个计算设备中或跨多个计 算设备分布的一个处理器或多个处理器。如本文所使用的,"处理器"可为中央处理单元 (CPU),基于半导体的微处理器,图形处理单元(GPU),配置以获取和执行指令的现场可编程 门阵列(FPGA),适用于获取和执行存储于机器可读存储介质中的指令的其他电子电路,或 其组合中的至少一个。处理资源110可提取,解码和执行存储于存储介质120中的指令以 执行如下描述的功能。在其它示例中,存储介质120的任何指令的功能可采用电子电路的 形式,以编码在机器可读存储介质上的可执行指令的形式,或其组合实现。
[0016] 如本文所使用的,"机器可读存储介质"可为任何电子,磁,光,或其他物理存储装 置,用以包含或存储信息,诸如可执行指令,数据,等。例如,本文描述的任何机器可读存储 介质可为随机存取存储器(RAM),易失性存储器,非易失性存储器,闪存,存储驱动器(例 如,硬盘驱动器),固态驱动器,任何类型的存储盘(例如,压缩盘只读存储器(⑶-ROM),任 何其他类型的压缩盘,DVD,等)等,或其组合中的任一项。进一步,本文描述的任何机器可 读存储介质可为非暂时的。
[0017] 在本文描述的示例中,指令122,124,126和128可实现一部分质量网关系统,以充 当软件开发者(或其他用户)和SCM系统之间的中间媒介。在这样的示例中,不同于开发者 直接地提交共享代码的代码更改至SCM系统,开发者可提交包括代码更改的作业至质量网 关系统。在这样的示例中,质量网关系统可对包括于递交的作业中的代码更改执行验证过 程,如果更改被成功验证,则提交代码更改至SCM系统,并且如果未成功验证,则拒绝(即, 不提交)代码更改。在一些示例中,SCM系统可由计算设备100实现。在其它示例中,SCM 系统可至少部分地被实现于远离计算设备100但可被计算设备100访问的计算设备上。
[0018] 在本文描述的示例中,"作业"可包括被请求提交至共享代码的至少一个代码更改 请求的集合。在一些示例中,作业可作为请求的一部分被提供至质量网关系统以提交包括 于作业的代码更改(一个或多个)至共享代码,或者,作业本身可表示至质量网关系统的、 提交所包括的代码更改(一个或多个)至共享代码的请求。作业可以包括采用任何合适的 格式或表示的代码更改。例如,作业可以包括采用软件补丁形式等的代码更改。
[0019] 在图IA的示例中,指令122可接收多个作业165。多个作业165的每一个可包括 被请求要提交至共享代码的至少一个代码更改。指令122可从SCM系统的各种不同用户 (诸如软件开发者)接收多个作业165的各种不同的作业。
[0020] 指令124可将指令122接收的每个作业(即,每个作业165)放置在队列140中。 在一些示例中,队列140可为由指令124实现的先入先出(FIFO)数据结构。指令124可在 计算设备100的存储器(例如,机器可读存储介质)中存储队列140。在其它示例中,队列 140可存储于远离计算设备100和处理资源110但可被计算设备100和处理资源110访问 的机器可读存储介质上。图IA的示例的特征在下面相对于在图IB中图示的示例性的多个 作业165加以描述。
[0021] 图IB为存储于队列140中的示例性多个作业165的框图。多个作业165可包括 数目"N"个作业,其中N为大于1的整数。在图IB的示例中,多个作业165包括N个作业 160-1至160-N,其由指令122按照那个次序接收。在一些示例中,指令124可在队列140 中以例如作业160-1至160-N被接收的次序放置作业160-1至160-N中的每一个。在这样 的示例中,在队列140中放置作业160-1至160-N中的每一个之后,队列140可包括在图IB 中所图示的多个作业165。例如,按照那个次序,作业160-1可在队列140的前端142处并 可跟随以作业160-2至160-N,作业160-N处于在队列140的后端144。
[0022] 在图IA和IB的示例中,质量网关系统可包括多个验证器。在本文描述的示例中, 验证器可为质量网关系统的组件,用以对作业集合的多个作业作为组执行验证过程。如本 文所使用的,"作业集合"可为一个或多个作业的集合。在本文描述的示例中,对作业集合的 多个作业"作为组"执行验证过程可包括尝试利用作业集合的多个作业的所有代码更改来 更新共享代码的拷贝,并且如果利用所有代码更改成功更新了所有拷贝,则对更新的共享 代码的拷贝执行至少一个测试。在一些示例中,验证器可在编译并运行更新的共享代码的 建立(build)(或生成更新的共享代码的一个建立)或其组合之后执行测试(一个或者多 个)。
[0023] 验证器还可指示作业集合的多个作业是否作为组由验证器成功验证了。例如,如 果利用所有代码更改成功更新了的共享代码的拷贝(即,代码更改并不相互冲突),并且更 新的共享代码的拷贝通过所有应用的测试(例如,在编译或其他活动之后生成共享代码的 建立(build)),验证器可指示作业作为组被成功验证了。如果利用所有代码更改未成功更 新共享代码(例如,因为代码更改包括冲突的代码更改),或成功更新的共享代码的拷贝在 至少一个应用的测试中失败,则验证器可指示作业集合中的作业作为组验证未成功。验证 器还可对包括一个作业的作业集合执行上述验证过程。
[0024] 在本文描述的示例中,通过或将通过验证过程的作业在本文可称为"有效作业", 而包括所有有效作业的作业集合在本文可称为"有效作业集合"。此外,在本文描述的示例 中,验证过程失败或将失败的作业本文可称为"无效作业",而包括至少一个无效作业的作 业集合在本文可称为"无效作业集
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1