CN110809756A - 代码评审重新设定差异 - Google Patents

代码评审重新设定差异 Download PDF

Info

Publication number
CN110809756A
CN110809756A CN201880043480.6A CN201880043480A CN110809756A CN 110809756 A CN110809756 A CN 110809756A CN 201880043480 A CN201880043480 A CN 201880043480A CN 110809756 A CN110809756 A CN 110809756A
Authority
CN
China
Prior art keywords
iteration
version
code
file
review
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
CN201880043480.6A
Other languages
English (en)
Other versions
CN110809756B (zh
Inventor
J·白金汉
J·L·诺列加德拉维加
F·蒙泰罗达克鲁兹菲约
C·J·安托什
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110809756A publication Critical patent/CN110809756A/zh
Application granted granted Critical
Publication of CN110809756B publication Critical patent/CN110809756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services

Abstract

本发明的各个实施例通常涉及更智能的代码评审工具。具体而言,一些实施例涉及代码评审工具,其包括执行代码迭代的“重新设定”差异的能力。结果,代码评审工具具有将来自基于初始基文件(即,baseFile1)的第一迭代(例如,迭代1)的文件与基于更新的基文件(即,baseFile2)的第二迭代(即,迭代2)的更新进行区分,而无需标识初始基文件和更新的基文件之间发生的差异的能力。这使评审者能够只查看代码评审的作者在连续迭代之间所做的区别,同时过滤掉或抑制由于对基文件的更新而产生的额外噪声。

Description

代码评审重新设定差异
背景技术
诸如计算机、平板设备、移动电话、可穿戴设备等等之类的现代电子设备已成为现代生活的一部分。电子设备的许多用户通常使用各种类型的软件应用程序用于商业和个人活动。软件应用程序的例子可以包括文字处理器、电子表格应用程序、电子邮件客户端、笔记软件、演示应用程序、游戏、计算软件等等。这些软件应用程序还可以用于执行计算、生成图表、组织数据、接收和发送电子邮件、与其他人实时通信等等。软件应用程序的范围从简单的软件到非常复杂的软件。
复杂软件的开发通常由具有指定角色的软件开发团队执行。在许多情况下,代码评审是一个反复的过程,软件中的每一行代码都由作者以外的一个或多个代码评审者进行评审,以确保代码能够按预期执行。代码评审者通常对代码的当前版本发表评论,并请求一项或多项更改。对当前版本代码的评论将传达给团队成员中的一个团队成员,该团队成员在提交代码进行其它评审之前会进行其它更改。
在很多情况下,可以使用差异工具(diffing tool)来比较开发人员对代码的一个或多个文件进行的更改。通常,代码评审将开发人员的文件版本(例如,迭代1)与中央存储库中的文件版本(例如,基文件1(baseFile1))进行比较。通过确定对先前版本的代码进行的更改,下一次评审可以更轻松地确认是否进行了期望的更改,而无需重新评估所有代码。但是,对于复杂的软件产品而言,多个开发人员同时地处理代码并不罕见。这样,仅创建文件版本的直接差异即可标识其他开发人员进行的更改。这可能会给评审者带来额外的工作,该评审者在尝试理解为什么一部分代码发生更改时并不负责代码的其它部分。
总的来说,本文中一些现有或相关系统的示例以及其相关限制旨在是说明性的而非排他性的。在阅读下文时,现存或现有系统的其它限制对于本领域普通技术人员而言将变得显而易见。
发明内容
本发明的各种实施例通常涉及用于促进代码评审的系统和方法。具体而言,一些实施例提供了用于实现改进的代码特征的系统和方法,跨多个设备协作的个人作者和团队可以使用这些改进的代码特征。例如,一些实施例允许客户端设备同时编辑源文档的多个副本。开发人员可以将包含一个或多个更改的第一迭代提交给评审者。另外,响应于客户端设备之一登入已通过评审的源文档的第二副本的已编辑版本,可以创建源文档的新版本(例如,在本地存储库中)。其它客户端设备可以将他们正在编辑的源文档的原始副本进行同步,以便在处理评审者对其先前编辑进行的评论之前,包括源文档的新版本中进行的更改。
可以使用源文档的新版本重新设定第一迭代,并且可以使用源文档的新版本的第一迭代的重新设定(rebase)来创建差异。因此,源文档的重新设定迭代可以是包括其他用户进行的更改的新文档,系统将其视为用于供一个用户或开发人员将来进行编辑的原始版本。这样,重新设定的版本的差异将标识开发人员进行的更改,同时抑制第二基准版本中存在的其它编辑。在一些实施例中,该差异可以抑制文档的新版本中进行的更改,而在其它实施例中,可以使用不同的视觉指示符(例如,颜色代码、字体样式、字体大小、缩进等等)来标识或最小化源自于第一副本与源文档的新版本的同步的更改。在一些实施例中,可以使用各种数据结构来跟踪和识别这些更改的源和时间。再举一个例子,系统可以通过使用第一迭代与源文档的新版本的虚拟合并,将第一迭代与源文档的新版本作为基础,从而抑制更改。一旦评审者批准代码之后,即可创建源文档的第三版本。
本发明的实施例还包括计算机可读存储介质,其包含用于使一个或多个处理器执行本文所描述的方法、方法的变型和其它操作的指令集。
一些实施例提供一种系统,该系统具有一个或多个处理器、存储器、通信组件、存储模块、图形用户界面生成模块、评审管理模块、比较工具和/或其它组件。例如,在一些实施例中,通信组件可以允许系统将代码评审平台连接到第一客户端设备和第二客户端设备。在一些情况下,每个客户端设备可能正在运行能够访问文件的第一基准版本(例如,其存储在本地存储库中)的代码评审工具。通信组件可以接收经由代码评审工具对文件的第一个基准版本进行的编辑。另外,通信组件可以在中央存储库中存储包括第二组编辑的文件的第二基准版本。评审管理模块可以监测针对代码的第一基准版本的编辑的评审,向评审者和开发人员发送提醒等等。在一些实施例中,通信组件可以将来自对代码的第一基准版本的编辑的评审的注释发送给开发人员。响应于同步,还可以相对于第二基准文件的后续更改来重新设定该文件的第一基准版本,以标识更改。
代码评审工具可以包括具有多个窗口的图形用户界面。在这些窗口的一个窗口中,可以呈现在评审代码的第一基准版本的编辑过程中创建的注释。其它窗口可以包括评审者评论、评审状态和工作流程等等。另外,一些实施例允许评审者在多个版本的代码差异之间进行选择。例如,所述多个版本的代码差异可以包括:标识开发人员进行的更改的重新设定版本,同时抑制在第二基准版本中存在的第二组编辑。其它版本的代码差异可以包括基于第二基准或连续迭代的差异。可以使用该差异工具来创建这些差异中的一个或多个(例如,使用对第一基准版本的编辑的重新设定版本创建的差异,后续更改标识在后续迭代中进行的更改)。
虽然公开了多个实施例,但是本领域普通技术人员通过以下的详细描述中将清楚本发明的其它实施例,下面的详细描述示出并说明了本发明的说明性实施例。如将认识到的,能够在各个方面对本发明进行修改,所有这些都不脱离本发明的范围。因此,在本质上认为附图和详细描述是说明性的而非限制性的。
提供该概括部分以便以简化形式来选择介绍在下面的具体实施方式中进一步描述的概念。应当理解的是,该概括部分并不是旨在标识本发明的关键特征或者本质特征,也不是旨在用于限制本发明的保护范围。
附图说明
将通过附图的使用来描述和解释本发明的实施例,其中:
图1根据本发明的一些实施例,示出了能够利用重新设定差异来实现代码评审工具的环境的例子;
图2根据本发明的一个或多个实施例,示出了用于操作代码评审工具的一组操作的例子;
图3示出了与基于云的协作服务相关联的一组组件,该基于云的协作服务支持可以在本发明的一个或多个实施例中使用的增强型评审功能;
图4根据本发明的一个或多个实施例,示出了用于重新设定差异的一组操作的例子;
图5是根据本发明的一些实施例,示出代码评审工具的各个组件之间的数据流的例子的序列图;
图6根据本发明的各个实施例,示出了支持差异重新设定的代码评审工具的例子;
图7根据本发明的各个实施例,示出了支持差异重新设定的代码评审工具的例子;
图8根据本发明的各个实施例,示出了支持差异重新设定的代码评审工具的例子;
图9根据本发明的各个实施例,示出了支持差异重新设定的代码评审工具的例子;
图10示出了一种计算系统的例子,其表示可以在其中实现本文所公开的各种应用、服务、场景和过程的任何系统或系统集合。
没有必要按比例地绘制附图。类似地,为了便于讨论所给出技术的一些实施例起见,可以将一些组件和/或操作分成不同的块或者组合成单个块。此外,虽然本技术适用于进行各种修改和具有替代形式,但是在附图中通过示例的方式示出了特定实施例,并且在下面详细地描述了特定实施例。但是,其意图并不是将技术限制于所描述的特定实施例。相反,本文的技术旨在覆盖落入由所附权利要求限定的技术范围内的所有修改、等同物和替代物。
具体实施方式
本发明的各种实施例通常涉及用于促进代码评审的系统和方法。具体而言,一些实施例提供了用于实现改进的代码特征的系统和方法,跨多个设备协作的个人作者和团队可以使用这些改进的代码特征。世界各地的开发人员都互相发送代码评论,以标识他们的更改并互相反馈。通常使用差异工具来比较开发人员对代码的一个或多个文件进行的更改。通常,代码评审将文件的开发人员版本(迭代1)与中央存储库中该文件的版本(基文件1)进行比较。
但是,开发人员经常对其自己的更改进行更新,并发出更新的代码评审(即,迭代2)。已经频繁检查了更改的第一迭代(即,迭代1)的评审者仅想查看自第一迭代以来的更新更改。不是将第二迭代与当前基文件进行比较,而是评审者希望查看第二迭代与第一迭代之间的比较(即,迭代2相对于迭代1),其仅导致迭代之间的更新,而不是与基文件相比的更新。
在基本情况下,查看代码评审的第二迭代和第一迭代(即,迭代2和迭代1)之间的更新更改很容易,这是因为当前仅有的更改来自于进行这些更改的开发人员。但是,如果开发人员在两次迭代(即,迭代1和迭代2)之间执行了与中央存储库中的当前基文件的“同步”,并且如果在中央存储库中更新了基文件(所有这些都是非常常见的操作),则仅标识出开发人员在两次迭代(即,迭代1和迭代2)之间进行的更改则很难,这是因为第二(即,迭代2)现在还包括来自中央存储库的额外更改,这些更改是更新的基文件(即,baseFile2)的一部分。结果,如果评审者将第二迭代(即,迭代2)与第一迭代(即,迭代1)进行比较,希望只看到开发人员在第二迭代中进行的新更新,那么评审者不仅看到开发人员在第二迭代中进行的更新,而且还很不幸地会看到其他开发人员对更新的基文件(即,baseFile2)进行的更改,而这些更改构成噪音。不幸的是,当导致基文件被更新的迭代之间发生“同步”时,传统的工具不允许代码评审者仅比较评审的开发人员/作者在连续的迭代之间进行的更改。
相比而言,本发明的各个实施例允许开发人员仅评审来自该开发人员的成功更改迭代之间的差异,同时滤除或抑制与中央存储库中的新的基文件“同步”而产生的噪声(其包括来自其它开发人员的更改)。同样,大多数开发人员每周都要进行多次同步,以使他们始终可以从中央存储库获得最新的源代码文件版本。一些实施例将迭代一中的更改与更新后的基文件(即,baseFile2)进行虚拟合并,以使相对于第二基准(即,迭代2)来重新设定迭代1。结果,当工具创建后续迭代的差异(例如,迭代l相对于迭代2)时,两个文件在差异工具中现在表现为好像它们是基于相同的基准,因此初始基文件(即,baseFile1)与后续基文件(即,baseFile2)之间不再存在任何差异。这将导致后续迭代的清晰区别(例如,迭代1相对于迭代2),仅显示作者在第二迭代中进行的更改,而不显示在其更新为更新的基文件(即,baseFile2)时,从“同步”继承的更改。
此外,一些实施例允许在代码作者对于更新基准(例如,basline2)的代码发生更改的相同部分中进行更改的情况下,代码评审者识别代码作者如何将他们的更改与更新的基准(例如,basline2)“合并”。此功能使评审者能够确认作者正确地将其更改与来自更新的基准的冲突更改进行了合并(如果不使用此技术,则可能会失去这种可见性)。
本发明的各个实施例为计算系统和组件提供了广泛的技术效果、优点和/或改进。例如,各种实施例包括以下技术效果、优点和/或改进中的一项或多项:1)减少在创建代码迭代的差异时的用户交互次数;2)自动标识和抑制其他代码开发人员在连续迭代中出现的更改;3)创建一种新格式来跟踪和存储与代码版本相关的数据;4)改进计算设备的操作方式;5)在差异化过程中使用非常规和非例行操作来自动抑制其他代码开发人员进行的更改;6)使用其它图形用户界面来评审代码;7)指出合并文件中同时编辑的部分,以便评审可以确保所需的更改不会丢失或者被覆盖;和/或8)改变计算系统在多个开发人员之间做出反应、处理和管理代码评审的方式。一些实施例包括其它的技术效果、优点、和/或对计算系统和组件的改进。
在下文描述中,为了说明起见,为了对所给出技术的实施例有一个透彻理解,阐述了众多特定的细节。但是,显而易见的是,可以在不需这些特定细节的情况下实现所给出技术的实施例。虽然为了方便起见,参考具有增强型差异化技术的代码评审工具来描述本技术的实施例,但本技术的实施例也等同地适用于各种其它实例(其中在该情况下,多个个体编辑共同的文档)。
这里介绍的技术可以体现为专用硬件(例如,电路)、使用软件和/或固件进行适当编程的可编程电路、或者专用和可编程电路的组合。因此,实施例可以包括其上存储有指令的机器可读介质,这些指令可以用于编程计算机(或其它电子设备)以执行处理。机器可读介质可以包括但不限于软盘、光盘、压缩光盘只读存储器(CD-ROM)、磁光盘、ROM、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或者适用于存储电子指令的其它类型的介质/机器可读介质。
短语“在一些实施例中”、“根据一些实施例”、“在所示出的实施例中”、“在其它实施例中”等等通常意味着该短语之后的特定特征、结构或特性包括在本技术的至少一个实现中,可以包括在一个以上的实现中。此外,这些短语并不一定指代相同的实施例或者不同的实施例。
图1根据本发明的一些实施例,示出了能够利用重新设定差异来实现代码评审工具的环境的例子。如图1中所示,环境100可以包括一个或多个计算设备110a-110N、通信网络120、运行代码评审平台130的远程服务器和中央存储库140。计算设备110A-110N可以是能够本地运行应用程序或者在Web浏览器的上下文中运行应用程序、流式传输应用程序或者以任何其它方式执行应用程序的任何计算系统。计算系统110的例子包括但不限于:个人计算机、移动电话、平板计算机、台式计算机、膝上型计算机、可穿戴计算设备、瘦客户端计算设备、虚拟和/或增强现实计算设备、托管计算环境的虚拟机、分布式应用程序、服务器计算机、计算集群、作为软件即服务(SaaS)托管的应用程序、在平台即服务(PaaS)上运行的应用程序、在基础架构即服务(IaaS)上运行的应用程序或者任何其它形式的因子,包括计算机的任何组合或其变型。关于计算系统1010,在图10中示出了一种这样的代表性架构。
本领域技术人员应当理解,各种组件(未示出)可以包括在计算设备110a-110N中,以使得能够与通信网络120进行网络通信。在一些情况下,通信网络120可以包括多个网络,甚至多个异构网络,例如通过网关互连的一个或多个边界网络、语音网络、宽带网络、服务提供商网络、互联网服务提供商(ISP)网络和/或公共交换电话网络(PSTN),该网关可操作为促进各种网络之间的通信。
代码评审平台130可以允许中央存储库140上存储的资料(例如,文件、文本、代码、对象等)由计算设备110A-110N访问。在一些实施例中,代码评审平台130可以经由通信网络120,接收在第一计算设备上打开文档150的请求。代码评审平台130可以验证请求者的身份,并允许或拒绝对文档的访问。在打开文档后,用户将能够编辑文件。一旦用户完成第一轮编辑,用户就可以将文件提交给评审者以提供评论。在一些实施例中,代码评审平台130接收该通知并通知评审者评审代码并提供反馈。
评审者可以为开发人员提供评论,其中可能包括对代码或文件的更改。然后,开发者可以基于评审者的评论进行更新,并发送更新的文件以供评审。在一些情况下,开发人员可以将其更改与存储在中央存储库140中的最新基文件集成在一起。结果,该文件可能包含其他开发人员进行的更改。但是,由于已经从开发人员处评审了第一更改迭代的评审者可能只想查看自第一迭代以来更新的更改。无需将第二迭代与当前基文件进行比较,代码评审平台中的差异工具可以比较第二迭代和第一迭代(即,迭代1相对于迭代2),同时抑制其他开发人员对该开发人员更新最新的基文件时所包含的内容进行更改。
代码评审平台130可以使用中央存储库140,跟踪和管理评审过程以及文件150的不同版本或迭代。例如,在一些实施例中,代码评审平台130可以存储发送的供开发人员评审的源代码的迭代或版本,同时维护代表最新代码或已批准文件的基文件。根据各种实施例,代码评审平台130可以跟踪由不同开发人员在基文件的版本之间进行的更改。然后,作为差异化过程的一部分,代码评审平台可以只标识可能是该开发人员所进行的更改。在其它实施例中,代码评审平台130可以针对更新的基文件对来自迭代1的更改执行虚拟合并,以使得相对于第二基准来重新设定第一迭代。
结果,当代码评审平台130创建后续迭代的差异(例如,迭代1相对于迭代2)时,两个文件在差异工具中现在表现为好像它们是基于相同的基准,因此初始基文件(即,baseFile1)与后续基文件(即,baseFile2)之间不再存在任何差异。这将导致后续迭代的清晰区别(例如,迭代1相对于迭代2),仅显示作者在第二迭代中进行的更改,而不显示在更新为更新的基文件(即,baseFile2)时,从“同步”继承的更改。
图2根据本发明的一个或多个实施例,示出了用于操作代码评审工具的一组操作200的例子。如图2中所示,复制操作210允许开发人员访问客户端设备上当前基准代码的副本。然后,开发人员可以个自地编辑当前基准代码的副本。在接收操作220期间,开发人员之一可以提交更新的基准代码,更新操作230使用该更新的基准代码来更新中央存储库中的基准代码。在一些实施例中,这可以经由代码评审工具来创建针对其他开发人员的通知。该通知可以提供基准代码已经被更新的视觉指示符。其他开发人员中的一个或多个可以提交在接收操作240期间接收的同步请求。
作为响应,同步操作250更新开发人员签出(check out)的文件以包括对更新后的基准文件的更改。然后,开发人员对其代码副本进行其它更改。例如,这些更改可以是响应于来自一个或多个评审者的评论。当开发人员重新提交代码以供查看时,创建操作260可以创建抑制更改的差异,这些差异被作为更新操作250的一部分进行了合并。在一些实施例中,差异不是抑制来自更新操作250的更改,而是提供用于促进快速评审的不同视觉指示器。例如,不同的视觉指示器可以包括字体颜色、字体大小、线着色、标记的使用等等。
本发明的各个实施例可以将具有迭代版本的基文件一起存储和跟踪。在其它实施例中,基文件可以不与更改一起存储。例如,基文件可以存储在中央存储库或者基于云的存储系统中,而更改可以存在于客户端设备上。一些实施例可以使用指针技术来标识更改和/或文件。例如,基文件可以是指向内部更改管理软件中已经表示的基文件的指针。更改管理软件还可以存储一个或多个中间副本。因此,一些实施例可以从更改管理软件获取快照,并将更改与新文件(例如,仅存在于开发者设备中的文件)打包在一起。
图3示出了与基于云的协作服务相关联的一组组件300,该基于云的协作服务支持可以在本发明的一个或多个实施例中使用的增强型评论功能。如图3中所示,第一客户端设备310A运行可以从服务340访问基准文档330的应用程序320A。协作服务340可以是能够存储可以在客户端设备上打开的任何形式的电子数据的共享驱动器或服务。例如,协作服务340可以为诸如Office 365、
Figure BDA0002340582830000092
Online(SPO)服务、
Figure BDA0002340582830000093
共享网络驱动器等等之类的工作簿提供对于基于云或集中式内容的集中访问以及集中存储。根据各种实施例,应用程序320A可以是集成开发环境(IDE)、定制代码评审工具、办公生产力应用程序(例如但不限于:电子邮件应用程序、文字处理应用程序、笔记记录应用程序、电子表格应用程序)的一部分。
在一些实施例中,协作服务还可以嵌入在客户端设备310A和310B中,并且可以使用网络连接(例如,Wi-Fi、以太网、蓝牙、3G、4G、5G、LTE等等)通信地耦合,或者运行为基于云的服务。协作服务可以包括文件共享、消息传递之类的服务,其中用户使用帐户和诸如电话、文本、电子邮件之类的各种联系方式、以及各种消息传递应用程序和带有联系人信息的社交网络配置文件来登录该服务。
如图3的例子中所示,可以使用应用程序320A在客户端设备310A上打开第三基准文档330(即,图3中所示的文档3)。应用程序320A可以包括具有GUI(图形用户界面)的功能,该GUI运行在客户端设备310A(例如,PC、移动电话设备、Web服务器或其它应用程序服务器)上。这样的系统可以采用一个或多个虚拟机、容器或任何其它类型的虚拟计算资源。如图3中所示,可以随着时间存储基准文档330的多个版本。假设第三文档是用户打开时的当前基准文档330。用户可以使用标准编辑技术(按键、鼠标输入、触摸输入、包括与诸如Microsoft的Cortana助理之类的人工智能服务交互的语音命令、前述的组合等等)来编辑第三基准文档以创建第三基准文档330的已编辑文档350(即,如图3中所示的文档3)。
已编辑文档350可以存储在关联的本地存储器或文档存储库中。在一些实施例中,可以将已编辑文档350发送到基于云的协作服务340。在一些实施例中,可以使用前述的基于云的协作服务340的变型来存储指向应用程序320A中的已编辑文档350的引用、链接、或通用资源标识符(URI)并将其与客户端设备310A关联,或者直接与客户端设备310B共享、或者代码评审应用程序320B利用诸如蓝牙、WIFI、4G、5G、LTE之类的网络连接、便携式存储上的高速缓存等等。
向协作服务340的传输除了已编辑文档350之外,还可以包括其它信息和/或元数据。这种其它信息和/或元数据可以包括但不限于:标识基准文档330、用户、客户端设备310、代码评审应用程序320A、对文档的更改的信息和/或其它信息。可以以多种格式存储已编辑文档350以及附加信息或元数据。该附加信息或元数据可以作为可选信息呈现给代码评审工具320B的用户,或者由与代码评审工具320B相关联的差异工具使用。
当评审者经由客户端设备310B登录到协作服务340时,客户端设备310B可以访问从客户端设备310A复制的已编辑文档350。客户端设备310B可以直接访问协作服务340中的已编辑文档350,或者将副本加载到客户端设备310B上的本地剪贴板、存储器或缓冲区中。然后,用户可以请求(例如,使用菜单或其它命令接口)将已编辑文档350存储到客户端设备310B上的新位置。代码评审工具320可以提供差异选项370,该差异选项370允许评审者容易地标识对代码进行的改变(例如,增加、删除、没有改变等)。
评审者可以经由代码评审工具320B来提供评论360。如图3中所示,评审者已请求开发人员删除A并修改C。与此同时,其他开发人员已编辑了基准文档并创建了新版本。开发人员同步代码350,并进行评审者建议的更改,从而创建迭代3”。但是,由于某些更改是由其他开发人员进行的,并且作为同步过程380的一部分并入的,因此评审者希望代码评审工具320B中的视图仅显示开发人员进行的更改,而不显示同步380创建的那些更改。结果,代码评审工具320B可以创建重新设定的差异390,其仅指示该开发人员进行的更改,而不指示由同步380引起的更改。
图4据本发明的一个或多个实施例,示出了用于重新设定差异的一组操作的例子。如图4中所示,提交操作405接收到已修改的代码(或文档)准备好进行评审的指示。确定操作410确定该提交是开发人员已解决特定评审者评论的后续评审,还是新提交。当确定操作410确定该提交是新提交时,使用初始评审操作415将代码提交给评审者。当确定操作410基于评审者反馈确定该提交是代码(或文档)的修改时,则确定操作410沿分支转到同步操作420,其中在同步操作420处,确定代码(或文档)是否已经与新的基准文档(例如,来自中央存储库)同步,以便除包括专门解决评审者的评论的更改之外还包括来自其他开发人员的更改。
当同步操作420确定代码尚未与更新的基准文档同步时,同步操作420沿分支转到更新的提交操作425。在更新的提交操作425期间,可以将修订的代码重新提交给评审者(或新评审者)。作为更新的提交操作425的一部分,可以在当前迭代与提交给评审者的先前版本之间创建红线、标记或差异。另外,还可以呈现由评审者提供的先前评论。当同步操作420确定代码已经与更新的基准文档同步时,同步操作420沿分支转到合并操作430,在合并操作430中,创建来自第一迭代的更改与更新的基准文件的虚拟合并。差异操作435使用包含虚拟合并的基文件,创建提交代码的标记或差异。结果,该差异抑制或隐藏了当前开发者响应于评审者的原始评论未进行的任何更改。然后,呈现操作440将差异呈现给评审者。
图5是根据本发明的一些实施例,示出在代码评审工具的各个组件之间的数据流的示例的序列图500。如图5中所示,开发人员经由代码评审工具520访问存储在中央存储库510中的基代码。开发人员可以编辑该代码并将更新的代码提交给评审者530。评审者可以向开发者提供关于已编辑代码的期望更改的反馈。当基文件已更新时,开发人员可以执行代码同步以合并其他开发人员进行的更改。然后,使用代码评审工具520,开发人员可以基于评审者的评论来创建第二迭代。可以将第二迭代提交给差异工具540,差异工具540可以标识对代码的新改变的改变(例如,添加、删除、部分代码移动等等)。然而,由于开发人员将代码文件与来自中央存储库510的最新基准版本进行了同步,因此差异工具540可以标识其他人进行的更改并抑制这些更改。例如,在一些实施例中,差异工具540可以在创建差异之前执行基准文件与先前迭代的虚拟合并。因此,差异仅显示该开发人员进行的更改。
图6-9根据本发明的各种实施例,示出了支持差异重新设定的代码评审工具的例子。如图6中所示,开发人员访问编辑窗口610中出现的名为cheeseburger.txt的文件。开发人员的任务是修改代码以修复错误“添加咸菜和秘制酱”。开发人员进行更改并发送代码评审的第一迭代。状态窗口640显示哪些评审者已评审该代码。代码评审者添加了一些注释620和630,开发人员将在第二迭代中解决这些问题并发送出去。
同时,如图7中所示,其他人修改了cheeseburger.txt文件,开发人员必须在发送第二迭代之前赶上这些更改。通过仅查看第二迭代,评审者可能会感到困惑,因为只有两个更改可以解决这两个评论:咸菜应该放在肉上,而秘制酱应该放在面包上。但是,还显示了许多其它更改(例如,添加和去除)。在一些实施例中,这些更改可以用颜色编码(例如,可以将添加指示为黄色,而将删除指示为红色)。发生这种情况是因为第二迭代已与不同的代码基准进行了比较。
代码评审工具的一些实施例提供了第二视图,该第二视图仅通过计算或识别迭代(例如,迭代1和迭代2)之间的差异来忽略对基准的更改,如图8中所示。结果,评审者可以看到咸菜移到了肉的顶部(该diff算法选择显示奶酪在咸菜的顶部移动,但这没关系),并且在面包顶部添加了秘制酱。但是,由于添加了番茄和生菜,并且评审者可能不确定其是由开发人员添加的还是由其他人添加的,因此该视图可能会导致评审工作更加繁琐。当评审者仅查看第二迭代时,可能会创建其它工作,评审者会看到汉堡已被鸡肉替代,但是如果他们查看第一迭代与第二迭代的对比,他们只会看到鸡肉。
通过激活重新设定差异功能,所有内容最终对评审者来说都是清楚的。使用重新设定差异功能,评审者可以轻松地识别出开发者引入了生菜和番茄,而不应将其作为“添加咸菜和秘制酱”更改的一部分。此外,开发者在重新设定第二迭代后,在解决冲突时犯了一个错误。发生的是,开发人员还原了别人的更改,其中该更改用汉堡代替了鸡肉。如果没有重新设定差异,则该更改将不会被注意到。此外,如图9中所示,第一注释920已得到正确处理,并且将咸菜移到了肉的旁边,第二注释930已得到正确处理,这是因为在面包中添加了秘制酱。
图10示出了计算系统1010,其表示可以实现本文所公开的各种应用、服务、场景和过程的任何系统或系统集合。例如,计算系统1010可以包括服务器计算机、刀片服务器、机架服务器、以及适合于执行本文描述的增强协作操作的任何其它类型的计算系统(或者其集合)。在支持增强的组协作的上下文中,这样的系统可以使用一个或多个虚拟机、容器或任何其它类型的虚拟计算资源。
计算系统1010可以实现为单个装置、系统或设备,或者可以以分布式方式实现为多个装置、系统或设备。计算系统1010包括但不限于处理系统1020、存储系统1030、软件1040、用于处理的应用程序1050、通信接口系统1060和用户接口系统1070。处理系统1020操作地与存储系统1030、通信接口系统1060和可选的用户接口系统1070相耦合。
处理系统1020从存储系统1030中加载软件1040并进行执行。当由处理系统1020执行以在多租户基于云的内容和协作环境中部署基于范围的证书时,软件1040指示处理系统1020如本文所述地操作以至少实现在前述的实施方式中讨论的各种过程、操作场景和序列。为简洁起见,计算系统1010可以可选地包括未讨论的其它设备、特征或功能。
仍然参见图10,处理系统1020可以包括微处理器和用于从存储系统1030获取软件1040并进行执行的其它电路。处理系统1020可以在单个处理设备中实现,但也可以分布在协作地执行程序指令的多个处理设备或子系统上。处理系统1020的示例包括通用中央处理单元、专用处理器和逻辑设备、以及任何其它类型的处理设备、其组合或变体。
存储系统1030可以包括可由处理系统1020读取并且能够存储软件1040的任何计算机可读存储介质。存储系统1030可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其它数据。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、磁带盒、磁带、磁盘存储器或其它磁存储设备、或者任何其它适当的存储介质。计算机可读存储介质在任何情况下都不是传播信号。
除了计算机可读存储介质之外,在一些实现中,存储系统1030还可以包括计算机可读通信介质,至少一些软件1040可以通过计算机可读通信介质进行内部地或外部地传送。存储系统1030可以实现为单个存储设备,但也可以跨多个存储设备或子系统来实现,其中所述多个存储设备或子系统相对于彼此同处一地或者是分布式的。存储系统1030可以包括能够与处理系统1020或者可能的其它系统进行通信的其它元件(例如,控制器)。
可以利用程序指令以及其它功能来实现软件1040,当软件1040由处理系统1020执行时,指导处理系统1020以如关于本文所示出的各种操作场景、序列和过程所描述的那样进行操作。例如,软件1040可以包括用于指导系统执行本文所描述的过程的程序指令。
具体而言,程序指令可以包括协作地或以其它方式交互以执行本文所描述的各种过程和操作场景的各种组件或模块。所述各种组件或模块可以体现在编译或解释的指令中,或者体现在某种其它变体或指令的组合中。所述各种组件或模块可以以同步或异步方式、串行或并行地、在单线程环境或多线程中、或者根据任何其它适当的执行范例、变体或其组合来执行。软件1040可以包括诸如操作系统软件、虚拟机软件或应用软件之类的过程、程序或组件。软件1040还可以包括可由处理系统1020执行的固件或者某种其它形式的机器可读处理指令。
通常,当将软件1040加载到处理系统1020中并且执行时,可以将适当的装置、系统或设备(其中计算系统1010是代表性的)整体从通用计算系统转换为专用计算系统。事实上,存储系统1030上的编码软件可以转换存储系统1030的物理结构。物理结构的特定转换可以取决于本说明书的不同实现中的各种因素。这些因素的示例可以包括但不限于:用于实现存储系统1030的存储介质的技术以及计算机存储介质是否被表征为主存储或二级存储、以及其它因素。
例如,如果将计算机可读存储介质实现为基于半导体的存储器,则软件1040可以在编码程序指令时转换半导体存储器的物理状态,例如通过转换晶体管、电容器或构成半导体存储器的其它离散电路元件的状态。对于磁性或光学介质,可以发生类似的转换。在不脱离本说明书的保护范围的情况下,物理介质的其它变换也是可能的,提供前述示例仅仅是为了有助于本文的讨论。
通常,可以将过程1050作为服务托管在云上,分布在各个端点之间的计算设备上,托管成具备云功能的信息创建和编辑解决方案的特征。通信接口系统1060可以包括允许通过通信网络(没有示出)与其它计算系统(没有示出)进行通信的通信连接和设备。一起允许系统间通信的连接和设备的示例可以包括网络接口卡、天线、功率放大器、RF电路、收发器和其它通信电路。这些连接和设备可以通过通信介质进行通信,以与其它计算系统或系统网络(例如,金属、玻璃、空气或任何其它适当的通信介质)交换通信。前述的介质、连接和设备是众所周知的,故这里不需要详细讨论。
用户接口系统1070可以包括键盘、鼠标、语音输入设备、用于从用户接收触摸手势的触摸输入设备、用于检测用户的非触摸手势和其它动作的动作输入设备、以及能够从用户接收用户输入的其它可比较的输入设备和相关联处理元件。诸如显示器、扬声器、触觉设备和其它类型的输出设备之类的输出设备也可以包括在用户接口系统1070中。在一些情况下,输入和输出设备可以组合在单个设备中,例如能够显示图像和接收触摸手势的设备。前述的用户输入和输出设备在本领域中是公知的,故这里不需要详细讨论。在一些情况下,当将计算系统1010实现成诸如刀片服务器、机架服务器或任何其它类型的计算服务器系统(或其集合)之类的一个或多个服务器计算机时,可以省略用户接口系统1070。
用户接口系统1070还可以包括可由处理系统1020执行的相关用户接口软件,以支持上面讨论的各种用户输入和输出设备。用户接口软件和用户接口设备单独地或彼此结合地以及结合其它硬件和软件元件,可以支持图形用户界面、自然用户界面、能够协助代码评审操作自动化的人工智能代理(例如,Microsoft的Cortana助手、Amazon的Alexa或Apple的Siri、Google的Assistant等的增强版)、或者任何其它类型的用户界面(在其中可以呈现生产力应用的用户界面)。
计算系统1010和其它计算系统(没有示出)之间的通信可以通过通信网络或多个通信网络并且根据各种通信协议、协议的组合或者其变型来发生。其示例包括内联网、互联网、因特网、局域网、广域网、无线网络、有线网络、虚拟网络、软件定义网络、数据中心总线、计算背板或者任何其它类型的网络、网络的组合或者其变型。前述的通信网络和协议是众所周知的,故这里不需要详细讨论。在交换数据、内容或任何其它类型的信息的任何前述示例中,信息的交换可以根据各种众所周知的数据传输协议中的任何一种进行。
附图中提供的功能框图、操作场景和序列以及流程图表示用于执行本公开内容的新颖方面的示例性系统、环境和方法。虽然为了简化说明起见,本文包括的方法具有功能图、操作场景或序列或者流程图的形式,可以将其描述为一系列动作,但应当理解和明白的是,这些方法并不受动作顺序的限制,这是因为某些动作可以以不同的顺序发生和/或与本文所示出和描述的其它动作同时发生。例如,本领域普通技术人员应当理解并意识到,方法可以替代地表示为一系列相互关联的状态或事件,例如在状态图中。此外,方法中示出的所有动作并非都是新颖的实施方式所必需的。
本文包括的说明书和附图描述了用于教导本领域普通技术人员如何制作和使用最佳选项的具体实施方式。出于教导发明原理的目的,已经简化或省略了一些常规方面。本领域普通技术人员应当理解,落入本发明的保护范围内的这些实施方式的变型。本领域普通技术人员还应当理解,可以以各种方式组合上述特征以形成多个实现。结果,本发明并不限于上述的具体实施方式,而是仅由权利要求及其等同物进行限定。

Claims (15)

1.一种代码评审平台,其包括:
一个或多个处理器;
中央存储库,其存储文件的第一基准版本;
通信组件,其用于:
将所述代码评审平台连接至第一客户端设备和第二客户端设备;
其中,每个客户端设备正在运行能够访问所述文件的所述第一基准版本的代码评审工具;
接收经由所述代码评审工具对所述文件的所述第一基准版本的编辑:以及
将所述文件的第二基准版本存储在所述中央存储库中,所述文件的所述第二基准版本包括经由所述第二客户端设备提供的第二组编辑;评审管理模块,其用于:
监测对所述文件的所述第一基准版本的所述编辑的评审;以及
其中,所述通信组件将来自对所述文件的所述第一基准版本的所述编辑的所述评审的评论发送给开发人员,并且其中,响应于同步,针对所述第二基准文件来重新设定所述文件的所述第一基准版本的后续更改,以标识更改。
2.根据权利要求1所述的代码评审平台,其中,所述代码评审工具包括图形用户界面,所述图形用户界面呈现在对所述文件的所述第一基准版本的所述编辑的所述评审期间创建的注释,并允许评审者在多个差异版本之间进行选择。
3.根据权利要求2所述的代码评审平台,其中,所述多个差异版本包括重新设定版本,所述重新设定版本标识开发人员进行的所述更改,同时抑制所述第二基准版本中存在的所述第二组编辑。
4.根据权利要求1所述的代码评审平台,还包括:
差异工具,其用于创建对所述第一基准版本的所述编辑的所述重新设定版本与在后续迭代中进行的连续更改的差异。
5.根据权利要求1所述的代码评审平台,其中,评审管理模块通过后续迭代来跟踪评审者进行的评论。
6.一种存储有指令的计算机可读介质,当所述指令由一个或多个处理器执行时,使机器执行以下操作:
允许客户端设备同时编辑源文档的第一副本和第二副本;
将包括一个或多个更改的所述第一副本的第一迭代提交给评审者;
响应于所述客户端设备之一登入所述源文档的所述第二副本的已编辑版本,创建所述源文档的新版本;
同步所述源文档的所述第一副本,以包括所述源文档的新版本中进行的更改;
创建用于解决所述评审者进行的评论的所述第一副本的第二迭代;
使用所述源文档的所述新版本重新设定所述第一迭代;以及
使用所述源文档的所述新版本,创建所述第二迭代和所述第一迭代的重新设定的差异。
7.根据权利要求6所述的计算机可读介质,还包括:
当由所述一个或多个处理器执行时,进一步使所述机器抑制所述源文档的所述新版本中进行的更改的指令。
8.根据权利要求6所述的计算机可读介质,其中,所述指令在由所述一个或多个处理器执行时使所述机器使用颜色编码,以允许所述评审者标识源自所述第一副本与所述源文档的所述新版本的同步的更改。
9.根据权利要求6所述的计算机可读介质,其中,所述指令在由所述一个或多个处理器执行时使所述机器创建数据结构,所述数据结构标识用户对所述第一副本或所述第二副本进行的更改,并且其中所述差异使用所述数据结构来标识所述用户进行的更改。
10.根据权利要求6所述的计算机可读介质,其中,所述指令在由所述一个或多个处理器执行时,使所述机器通过使用所述第一迭代与所述源文档的所述新版本的虚拟合并,以所述源文档的所述新版本来重新设定所述第一迭代。
11.根据权利要求6所述的计算机可读介质,其中,所述第二迭代和所述第一迭代的所述重新设定的所述差异以不同于第二格式的第一格式来标识由与所述源文档的所述新版本同步而引入的更改,所述第二格式标识解决所述评审者进行的评论的所述第二迭代中进行的更改。
12.根据权利要求6所述的计算机可读介质,其中,所述指令在由所述一个或多个处理器执行时,使所述机器响应于来自所述评审者的批准来创建所述源文档的第三版本。
13.一种方法,其包括:
接收对已编辑文档进行评审的请求;
响应于评审者对所述已编辑文档的第一迭代的评论,确定所述已编辑文档在第二迭代中是否包括其它编辑;
对响应于所述评审者评论而确定所述已编辑文档包括其它编辑做出响应,以识别是否经由与本地存储库中的基文件的同步来更新所述已编辑文档;以及
创建所述第二迭代与所述第一迭代的差异,以抑制由于所述同步而引入的任何更改。
14.根据权利要求13所述的方法,其中,创建所述差异包括:创建所述第一迭代与所述基文件的更改的虚拟合并,并且所述方法还包括:经由图形用户界面,将评审者评论与所述差异一起呈现,并且所述方法还包括:
确定所述已编辑文档是否包括对另一用户编辑的所述基文件的一部分的编辑;以及
突出显示所述基文件和所述已编辑文档之间的任何公共编辑部分。
15.根据权利要求13所述的方法,其中,所述差异包括多个表示,所述多个表示之一允许所述评审者以与第二格式不同的第一格式来标识由与所述基文件同步而引入的更改,其中所述第二格式表示响应于所述评审者编辑进行的所述其它编辑。
CN201880043480.6A 2017-06-29 2018-05-24 代码评审重新设定差异 Active CN110809756B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/638,258 US10402311B2 (en) 2017-06-29 2017-06-29 Code review rebase diffing
US15/638,258 2017-06-29
PCT/US2018/034269 WO2019005351A1 (en) 2017-06-29 2018-05-24 CODE REVISION COVER COMPARISON

Publications (2)

Publication Number Publication Date
CN110809756A true CN110809756A (zh) 2020-02-18
CN110809756B CN110809756B (zh) 2023-11-17

Family

ID=62598053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880043480.6A Active CN110809756B (zh) 2017-06-29 2018-05-24 代码评审重新设定差异

Country Status (4)

Country Link
US (1) US10402311B2 (zh)
EP (1) EP3646168B1 (zh)
CN (1) CN110809756B (zh)
WO (1) WO2019005351A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111831271A (zh) * 2020-07-20 2020-10-27 北京简单一点科技有限公司 一种支持模拟预合入流水线的Git代码评审系统及其方法
CN112748950A (zh) * 2021-01-15 2021-05-04 国能日新科技股份有限公司 一种软件代码审查方法及装置
CN113094443A (zh) * 2021-05-21 2021-07-09 珠海金山网络游戏科技有限公司 数据同步方法及装置
CN113992459A (zh) * 2020-07-09 2022-01-28 腾讯科技(深圳)有限公司 代码评审数据处理方法、装置、计算机设备和存储介质

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3673362A4 (en) * 2017-08-22 2021-05-26 CodeStream, Inc. SYSTEMS AND METHODS FOR PROVIDING AN INSTANT COMMUNICATION CHANNEL IN INTEGRATED DEVELOPMENT ENVIRONMENTS
US11561771B2 (en) * 2017-08-22 2023-01-24 Codestream, Inc. System and method for in-ide code review
US11144309B2 (en) 2018-10-12 2021-10-12 Bentley Systems, Incorporated Changeset conflict rebasing
US11036621B2 (en) 2019-09-24 2021-06-15 International Business Machines Corporation Prevent application outages through operations driven development
CN110865934B (zh) * 2019-10-08 2023-10-27 北京百度网讯科技有限公司 代码验证方法、装置、电子设备及可读存储介质
CN111274127B (zh) * 2020-01-14 2023-04-07 北京百度网讯科技有限公司 代码评审中的代码跳转方法、装置、设备和介质
CN113448793B (zh) * 2020-03-25 2023-05-30 大唐移动通信设备有限公司 一种兼容多操作系统的系统监控方法及装置
CN111930411B (zh) * 2020-09-30 2020-12-29 腾讯科技(深圳)有限公司 代码升级方法、装置、计算机设备和存储介质
US11900105B2 (en) * 2020-11-25 2024-02-13 Red Hat, Inc. Code review system with development environment integration

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030172113A1 (en) * 2002-03-05 2003-09-11 Cameron Brian A. Synchronization of documents between a server and small devices
CN1831760A (zh) * 2005-03-08 2006-09-13 光宝科技股份有限公司 应用自动编译框架来快速开发嵌入式系统的方法及装置
CN103020025A (zh) * 2011-11-16 2013-04-03 微软公司 用于文档内容的自动动画化的技术
CN104272649A (zh) * 2011-11-04 2015-01-07 达索系统加拿大软件股份有限公司 用于通过网络进行数据同步的系统和方法
CN105453104A (zh) * 2013-06-12 2016-03-30 软件营地株式会社 系统保护用文件安全管理装置和管理方法
CN106471475A (zh) * 2014-04-11 2017-03-01 哈佛蒸汽锅炉检验和保险公司 基于系统操作和性能数据建模来改进未来的可靠性预测

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182472A1 (en) * 2002-03-20 2003-09-25 Mark Duffy Synchronization scheme
US20090271768A1 (en) 2008-04-24 2009-10-29 International Business Machines Corporation Discriminating program code updates after merging for live review
JP5775599B2 (ja) 2010-12-15 2015-09-09 マイクロソフト テクノロジー ライセンシング,エルエルシー コードクローン検出を用いたインテリジェントコード差分処理
US8627280B2 (en) 2011-06-20 2014-01-07 Microsoft Corporation Multi-tenant collaborative review service
US9052983B2 (en) 2012-01-16 2015-06-09 International Business Machines Corporation Source code patches
US9594544B2 (en) * 2012-06-07 2017-03-14 Microsoft Technology Licensing, Llc Visualized code review
US9201646B2 (en) 2013-01-05 2015-12-01 Vmware, Inc. Automatic code review and code reviewer recommendation
US9575764B1 (en) * 2013-03-15 2017-02-21 Atlassian Pty Ltd Synchronizing branches of computer program source code
US9710248B2 (en) * 2013-05-29 2017-07-18 Microsoft Technology Licensing, Llc Application install and layout syncing
US9311076B2 (en) * 2014-01-22 2016-04-12 Linkedin Corporation Systems and methods for enforcing code reviews
CN105094780A (zh) * 2014-05-14 2015-11-25 国际商业机器公司 一种信息关联的方法和装置
US9535969B1 (en) * 2014-08-12 2017-01-03 Google Inc. Conflict-free two-way synchronization for distributed version control
US9600275B2 (en) * 2015-03-12 2017-03-21 International Business Machines Corporation Smart source code review system
US9626347B2 (en) 2015-06-08 2017-04-18 International Business Machines Corporation Managing file changes made during a review process
US9898471B1 (en) * 2015-08-14 2018-02-20 VCE IP Holding LLC Computer implemented system and method, and computer program product, for generic source control for orchestration workflows

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030172113A1 (en) * 2002-03-05 2003-09-11 Cameron Brian A. Synchronization of documents between a server and small devices
CN1831760A (zh) * 2005-03-08 2006-09-13 光宝科技股份有限公司 应用自动编译框架来快速开发嵌入式系统的方法及装置
CN104272649A (zh) * 2011-11-04 2015-01-07 达索系统加拿大软件股份有限公司 用于通过网络进行数据同步的系统和方法
CN103020025A (zh) * 2011-11-16 2013-04-03 微软公司 用于文档内容的自动动画化的技术
CN105453104A (zh) * 2013-06-12 2016-03-30 软件营地株式会社 系统保护用文件安全管理装置和管理方法
CN106471475A (zh) * 2014-04-11 2017-03-01 哈佛蒸汽锅炉检验和保险公司 基于系统操作和性能数据建模来改进未来的可靠性预测

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113992459A (zh) * 2020-07-09 2022-01-28 腾讯科技(深圳)有限公司 代码评审数据处理方法、装置、计算机设备和存储介质
CN113992459B (zh) * 2020-07-09 2023-09-15 腾讯科技(深圳)有限公司 代码评审数据处理方法、装置、计算机设备和存储介质
CN111831271A (zh) * 2020-07-20 2020-10-27 北京简单一点科技有限公司 一种支持模拟预合入流水线的Git代码评审系统及其方法
CN111831271B (zh) * 2020-07-20 2023-07-07 北京简单一点科技有限公司 一种支持模拟预合入流水线的Git代码评审系统及其方法
CN112748950A (zh) * 2021-01-15 2021-05-04 国能日新科技股份有限公司 一种软件代码审查方法及装置
CN113094443A (zh) * 2021-05-21 2021-07-09 珠海金山网络游戏科技有限公司 数据同步方法及装置

Also Published As

Publication number Publication date
EP3646168B1 (en) 2021-06-23
EP3646168A1 (en) 2020-05-06
US10402311B2 (en) 2019-09-03
CN110809756B (zh) 2023-11-17
WO2019005351A1 (en) 2019-01-03
US20190004925A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
CN110809756B (zh) 代码评审重新设定差异
JP7158482B2 (ja) クライアント同期における違反の解決のための方法、コンピュータ可読媒体、及びシステム
Kleppmann et al. Local-first software: you own your data, in spite of the cloud
US11025718B2 (en) Synchronization of permissioned content in cloud-based environments
US10360536B2 (en) Implementing a consistent ordering of operations in collaborative editing of shared content items
US11941344B2 (en) Document differences analysis and presentation
US10554664B2 (en) Activity feed for hosted files
US9535924B2 (en) Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US10540368B2 (en) System and method for resolving synchronization conflicts
US8341224B2 (en) Multi-master text synchronization using deltas
EP3049968B1 (en) Master schema shared across multiple tenants with dynamic update
AU2014284461A1 (en) Syncing content clipboard
US9477493B2 (en) Method to generate dynamic customized context-sensitive help
US9342531B2 (en) Managing conflicted copies
US20160179800A1 (en) Revision management
US9442719B2 (en) Regression alerts
US20230246924A1 (en) Automatic canvas creation associated with a group-based communication channel
EP3289544A1 (en) Insertion of unsaved content via content channel

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant