CN111602114A - 用于在集成开发环境内提供即时通信信道的系统和方法 - Google Patents

用于在集成开发环境内提供即时通信信道的系统和方法 Download PDF

Info

Publication number
CN111602114A
CN111602114A CN201880068346.1A CN201880068346A CN111602114A CN 111602114 A CN111602114 A CN 111602114A CN 201880068346 A CN201880068346 A CN 201880068346A CN 111602114 A CN111602114 A CN 111602114A
Authority
CN
China
Prior art keywords
code
version
instance
user
differences
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
CN201880068346.1A
Other languages
English (en)
Other versions
CN111602114B (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.)
Bi DePeisairuisi
Goodstar Corp
Chepitek Co ltd
Original Assignee
Bi DePeisairuisi
Goodstar Corp
Chepitek 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 Bi DePeisairuisi, Goodstar Corp, Chepitek Co ltd filed Critical Bi DePeisairuisi
Publication of CN111602114A publication Critical patent/CN111602114A/zh
Application granted granted Critical
Publication of CN111602114B publication Critical patent/CN111602114B/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/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/73Program documentation
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • G06F16/90332Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

可以提供一种用于在集成开发环境(“IDE”)中记录关于计算机代码的讨论的方法和系统。在一些方面,通信信道与IDE集成。通信和讨论可以被跟踪并且与具体的代码段链接。

Description

用于在集成开发环境内提供即时通信信道的系统和方法
背景技术
常规的软件开发系统结合了许多增强功能,以便于代码开发、更新和代码修改。存在多种集成开发环境(“IDE”)以提供必要的架构来组织代码开发任务,以及管理这些任务跨开发组的分布。不幸的是,工作协调仍然是一项重大挑战。对合并和协调代码更改的需要仍然是一个重大的障碍,在开发的代码中会引起不一致和内部冲突。
发明内容
人们认识到,缺少在IDE中跟踪的更改之外的记录,包括例如缺少关于代码中具体难题、正在解决的具体问题等的讨论记录,导致代码分歧、冲突和错误的问题增加。根据各个方面,通常可以通过集成的通信信道来解决常规的IDE和代码开发的许多问题。根据另一个方面,所有通信和讨论可以被跟踪并且与具体代码段(例如,行、多个行、代码文件、代码树元素等)链接。因此,任何已标识的难题、问题和/或计划的解决方案都可以被组中的所有开发人员容易地访问。例如,基于在代码开发过程中将讨论和通信链接到具体代码,使得所有后续审查者都可以访问开发周期的集体知识。
根据一个实施方案,实时通信信道作为插件可执行文件被集成到IDE应用中。插件可执行文件可以被配置为更新IDE应用,以便在代码编辑窗口或显示旁边显示通信流。在一个示例中,用户将插件安装到他们的IDE应用中,并且经由在用户接口(“UI”)中进行选择或通过一个或多个专用键的选择来激活所述插件。一旦被激活,插件就被可视化为邻近代码编辑器显示出现的通信面板。通信面板提供用户(例如,开发人员)之间的实时聊天流。实时通信流还提供实时活动屏幕。例如,用户接收通信,并且还接收正在开发的代码中发生的活动的通知。根据另一个示例,活动通知提供直接链接来探索与通知相关联的更改、修改或更新。
根据另一个方面,所述系统可以被配置为动态地标识和链接消息传递、消息线程和/或任何通信信道以选择代码段。在其他的方面中,系统被配置为动态地调整相应消息被绑定到的代码段的限定。在一个示例中,特定的代码段(例如,一组代码行)可以从一个源文件完全提升并且移动到另一个源文件。在没有对代码段进行动态跟踪的情况下,绑定到原始代码段的位置的原始消息线程将被孤立并且最终丢失。这是许多常规消息跟踪系统的故障,本文讨论的各种实施方案解决了所述许多常规消息跟踪系统的故障。所述系统的各种示例提供常规方法和/或常规计算机系统无法启用的功能。
在一个示例中,系统启用动态机器学习算法,所述动态机器学习算法使得系统能够自动地标识代码段内的更改(例如,将方法或命名功能扩展到更多数量的代码行、代码行数的更改等)。机器学习可以分析代码以开发匹配的协议(例如,捕获和匹配方法名、变量名、具体代码片段(例如,功能调用、包装函式等)),可以在后台运行以标识移动的代码、新位置和/或重新引入的代码。
所述系统还被配置为使用代码段内的更改来更新代码段上的元数据。例如,系统分析更改,使得经扩展的代码段(例如,从10-20行的10-25行)被链接到关于所述代码段的消息线程。在一个示例中,在系统上实现算法来分析相应消息线程的内容,并且提取用于更新到消息线程的元数据链接的信息(例如,我向方法(xxxxx)添加了代码行12-15来修复锁定难题)。系统通过增加的行自动地增加链接的代码段限定。在其他实施方案中,所述系统可以实现监测算法(单独或除了其他检测算法之外),所述监测算法在代码段发生更改时标识它们,并且标识用于更新元数据链接的消息、通信和/或线程的更改。
在各种实施方案中,相应代码段上的元数据与代码、代码修订和/或源文件分开存储。在一些示例中,单独存储的元数据可以在软件项的生命周期中被保留,从而允许未来使用元数据、上下文信息、匹配信息等。在一个示例中,这使得系统能够标识和匹配甚至是已删除的代码,以重新捕获和利用先前的消息传递和开发上下文。
在又其他实施方案中,较旧版本的代码可以链接到最新和最有用的消息线程。通常需要旧代码来诊断或测试较新版本中的问题。在其他替代方案中,较旧版本的代码可能表示更稳定的版本。通常,此类对旧版本的恢复伴随着巨大的牺牲(例如,任何新的开发修复等)并且可能包括重新引入早已被遗忘的错误。消息的元数据记录和开发人员之间的通信不仅可以标识此类发布,而且还可以保留为解决问题而实现的具体修复。在一些情况下,可能是修复本身导致了新程序的不稳定性,但是如果没有当前消息线程和特别是旧版本的代码之间的链接,开发人员就不能在各种常规系统中重新捕获先前的开发环境。
下面将详细讨论这些示例性方面和实施方案的其他方面、实施方案和优点。本文公开的任何实施方案可以以与本文公开的目标、目的和需要中的至少一个相一致的任何方式与任何其他实施方案相结合,并且对“实施方案”、“一些实施方案”、“替代实施方案”、“各种实施方案”、“一个实施方案”等的引用不一定相互排斥,并且意图指示结合实施方案描述的特定特征、结构或特性可以包括在至少一个实施方案中。本文中出现的此类术语不一定都指相同的实施方案。附图被包括在内以提供对各个方面和实施方案的说明和进一步理解,并且被并入且构成本说明书的一部分。附图与说明书的其余部分一起用于解释所描述和要求保护的方面和实施方案的原理和操作。
附图说明
下面参考附图讨论至少一个实施方案的各个方面,所述附图并非意图按比例绘制。在附图、具体实施方式或任何权利要求中的技术特征之后是附图标记的情况下,包括附图标记的唯一目的是增加附图、具体实施方式和权利要求的可理解性。因此,附图标记及其缺失都不意图对任何权利要求要素的范围具有任何限制作用。在附图中,在各个附图中示出的每个相同或几乎相同的部件由相同的附图标记表示。为了清楚起见,不是每个部件都可以在每个附图中被标记。附图是为了说明和解释的目的而提供的,并且不意图作为对本发明的限制的限定。在附图中:
图1是根据一个实施方案的用户接口(“UT”)的示例屏幕捕获;
图2A至图2B是根据一个实施方案的示例UI的屏幕捕获;
图3至图6是根据一个实施方案的示例UI的示例屏幕捕获;
图7A至图7B是根据一个实施方案的示例UI的示例屏幕捕获;
图8A至图8B是根据一个实施方案的示例UI的示例屏幕捕获;
图9是根据一个实施方案的示例UI的示例屏幕捕获;
图10是根据一个实施方案的用于在软件开发环境中提供实时通信信道的通信系统的框图;
图11是根据一个实施方案的用于构建代码相关联的消息流的示例过程流程;
图12是根据一个实施方案的专用计算机系统的框图;
图13至图16是根据一个实施方案的示例UI的示例屏幕捕获;并且
图17是根据一个实施方案的用于确定来自不同用户的代码块的实时副本之间的一个或多个差异的示例过程流程。
具体实施方式
概括地说,各个方面描述了将通信信道集成到源代码开发环境中。源代码开发环境还可以并入版本控制系统或服务以便于代码开发。在一些实施方案中,实时通信信道被集成到IDE应用中。集成可以基于对IDE环境的插件或扩展。在其他实施方案中,实时通信信道被配置为在代码编辑窗口或显示旁边显示通信流。在一个示例中,用户将插件安装到他们的IDE应用中,并且经由在用户接口(“UI”)中进行选择或通过一个或多个专用键的选择来激活所述插件。一旦激活,通信面板就被配置为邻近代码编辑器显示出现,并且将用户通信链接到代码、代码树或编码功能的具体部分以及其他选项。通信面板提供用户之间的实时聊天流。实时通信流还实时地提供关于代码相关活动的信息。例如,用户接收通信,并且还接收正在开发的代码中发生的活动的通知。根据另一个示例,活动通知提供给使用户能够探索与通知相关联的更改、修改或更新的代码的直接链接。
本文所讨论的方法和系统的示例不限于应用于在以下描述中阐述或在附图中示出的部件的配置和布置的细节。所述方法和系统能够在其他实施方案中实现,并且能够以各种方式实践或执行。本文提供具体实现方式的示例仅用于说明的目的,并且不意图进行限制。特定地,结合任一个或多个示例讨论的动作、部件、元件和特征不意图被排除在任何其他示例中的类似角色之外。
此外,本文使用的措辞和术语是为了描述的目的,并且不应被视为限制。本文以单数形式提及的系统和方法的示例、实施方案、部件、元件或动作的任何引用还可以涵盖包括多个的实施方案,并且本文任何以复数形式提及的任何实施方案、部件、元件或动作还可以涵盖仅包括单个的实施方案。单数或复数形式的引用不意图限制当前公开的系统或方法、它们的部件、动作或元件。本文对“包括”、“包含”、“具有”、“含有”、“涉及”及其变型的使用意味着涵盖其后列出的项及其等效物以及另外的项。对“或”的引用可以被解释为包括性的,使得使用“或”描述的任何术语可以指示所描述的术语中的单个、一个以上、任何组合以及全部中的任一者。
图1是示例用户接口(UI)的屏幕捕获,示出了集成开发环境100。IDE 100包括组织源代码文件、配置文件、库等的导航面板102。一旦在导航面板102中选择了文件,编辑面板104就被配置为在UI中显示用于编辑的关联文件/代码。图2是示例UI 200的屏幕捕获,示出了启用了通信插件的IDE。例如,一旦用户将插件安装到他们的IDE应用(例如,ATOM)上,实时通信流就被配置为显示在通信面板206中。在一些示例中,插件必须由用户通过在UI中的选择或专用键的选择来激活,并且一旦活动,显示206就出现在UI中。
在与正在编辑面板204中显示的目录或文件相关联的通信流中按时间顺序显示消息(例如,208、210和212)。除了用户消息之外,通信面板206还被配置为显示与正被访问(即,在面板204中可视化)的文件或目录相关联的通知(例如,214)。根据一些实施方案,通信信道的集成和消息流和通知的跟踪提供对常规的开发方法的显著增强。例如,在常规的开发方法下,用户将需要切换到消息应用或服务来开始通信流,而且,用户将必须确定他们希望与之通信的一方,这将需要访问又一个应用。
根据一些实施方案,在216处,通过在文本输入框中键入来简化向另一个用户(例如,开发人员)创建消息。根据另一个实施方案,利用由通信插件提供的另外的特征,用户可以选择代码的各部分(例如,经由鼠标或其他定点装置的突出显示),并且开始与选定的代码部分具体相关联的消息。一旦在UI中被选择,系统被配置为响应于在UI中的选择来维护对代码块/代码段的引用。根据一个实施方案,参考被嵌入消息中,并且可以被存储在系统上,并且当消息被显示或读取时被访问。例如,引用连同代码本身的副本可以被存储在系统上或作为到消息的附件,并且可以被包括作为消息元数据的一部分。
图2B是示出在编辑面板204中选定的代码230的一部分以及在通信面板206中生成的关联的消息的示例用户接口。系统使得用户能够在216处响应于用户想要创建关于突出显示的代码段的消息的指示来输入文本(例如,右键点击代码段并且选择消息、热键“<cntrl>m”等)。在223处,系统显示选定的代码(例如,230)与正在创建的消息之间的关联。在一些实施方案中,系统被配置为响应于选择来分析选定的代码。所述分析由系统执行以标识消息的接收方,而无需用户标识。
例如,系统分析与选定的代码段相关联的作者或编辑器信息,以自动地为消息提供接收方(例如,在225处,系统将“Larry Wall”标识为选定的代码的作者)。在一个示例中,系统从本地存储库标识代码作者或编辑器,或者在代码存储库(例如,git存储库)中搜索关于用户接口中标识的代码的作者或编辑器的信息。
人们认识到,此类集成的消息传递面板和对代码元素负责方的自动检测,提供对已知开发环境和通信系统的显著改善。在第一实例中,用户不必转换到单独的通信应用(例如,电子邮件),并且进一步不同于常规实现方式,用户不必搜索版本控制系统来标识选定的代码(例如,GIT)的作者或编辑器。例如,在使用GIT的常规系统中,用户需要新的终端来调查具有GIT_历史或GIT_责任(即,访问属性记录)的作者。
根据其他的方面,提供一种用于随着时间跟踪对源代码的注释的系统。系统适度地处理正在开发的代码段和关于这些代码段的消息之间的链接。在一些示例中,由于软件开发的性质,这是特别具有挑战性的,其中代码段被动态地改变、删除、移动、重命名和重写(例如,有意地或以其他方式)。在常规方法中,大多数软件是使用分散版本控制系统(VCS)开发的,所述系统允许每个开发人员拥有组成项的所有文件的完整副本。
在开发周期期间,开发人员可能会对其中的若干文件进行一些更改,然后在某个称为提交组的文件中与团队的其他成员共享这些更改。当开发人员完成了她的工作时,有时跨几天或几周,她可以与团队共享工作。所述提交组描述了对已更改的所有文件的更改;添加行、删除行、更改行、添加文件、重命名文件等。
各种实施方案(以及在一些示例中称为“代码流”的系统/应用)提供向文件中的具体点、文件中的行或文件中的范围添加注释的机制,并且在其他示例中保持跨越任何更改(例如,删除、修改、扩展、移动、重命名等)的链接。在一些实施方案中,注释显示在开发用户接口中,就像用户将输入的类似聊天的文本块。注释引用代码的一部分(通常称为代码块或代码段,例如可以通过代码行号来标识)。例如,这个代码块可以从文件的12行开始,并且一直到26行的中间。注释引用所述具体范围,并且在一些示例中存储在元数据文件中,所述元数据文件提供关于注释的上下文的信息,并且包括例如与注释相关联的行号。
随着时间的推移,随着代码的更改,系统会适度地(并且自动地)处理对注释的排序,从而注释仍然指向相同的代码块(即使代码块更改)。更改的示例包括:可以超出当前标识的范围添加-代码,在这种情况下,注释现在可能应引用14-28行;超出范围的代码已移除;在所述范围内添加的代码,在这种情况下,注释现在应引用12-36行;可以跨越范围的边界移除代码;整个代码块都可能被移除,因此注释不再相关;整个代码块可以移动到文件的不同部分、或者移动到不同的文件、或者移动到新文件。
根据各种实施方案,对代码范围的更新可以应用于对所述注释的适当范围的重新计算,从而它仅应用于文件的那个版本(在做出更改之后)。根据各种实施方案,所述算法被配置为确定移动范围、或删除范围或适当修改范围的最佳方式。所述范围的新位置和状态将存储在所述文件的特定版本中。
在又其他实施方案中,随着时间的推移,当文件再次更改时,系统执行所述算法来跟踪注释如何移动。在一些示例中,系统跟踪剪切和粘贴到新文件中,并且更新与注释或通信相关联的元数据。在其他示例中,系统可以分析新代码的更改,以确定任何先前的注释或消息线程是否与新代码匹配-如果匹配结果,则可以进行链接。在又其他实施方案中,所述算法检测对现有代码的更改,并且可以分析先前版本,以确定新的代码行被引入到代码块内部或中间,在这种情况下,系统将链接扩展到更多数量的代码行。此外,系统同样可以响应于代码块内的删除来响应并且更新链接。
消息传递链接元数据可以被访问,并且用于标识与开发或版本控制环境中正在访问的任何文件最相关的消息。因此,无论用户将文件的哪个版本加载到他们的编辑器中(例如,甚至是较旧版本),注释都将引用代码中最好的可能引用。
图3是示例UI 300的屏幕捕获。UI 300示出了在通信面板206中生成的示例消息301。在302处,示例消息301合并用户消息的接收方和文本。示例消息301还包括作者希望在其上通信的代码段的副本。根据一些实施方案,提供与消息相关联的代码比已知方法改善了开发环境的效率。例如,通信插件在常规环境中提供功能,并且减少了在常规环境中需要执行的操作。在其他示例中,在消息中包括代码允许接收方立即理解问题的上下文,并且通过导航到所标识的代码,用户还访问了与所述代码相关联的任何先前的对话线程和/或通知消息。
图4是示例UI 400的屏幕捕获,其中用户“Larry Wall”已经向代码的作者发送了消息。根据一个实施方案,新消息401被显示在消息面板406内。示出消息文本与代码元素的匹配,以可视地示出消息文本与UI中的代码元素(例如,在408和410处)之间的对应关系。对应于代码元素的文本可以被配置为在UI中进行选择,以将编辑面板406转换到包含所述段的代码中的相应位置。类似于在图3中提供的示例(例如,在302和304处),消息401包含与412处的消息相关联的代码的可视化。
根据一些实施方案,所述系统被配置为标识代码中的更改,并且在构建用于显示的消息时在用户接口中标记所述信息。例如,在414处,呈现可视指示符(例如,带有惊叹号的红色三角形),以提供例如消息中的代码更改的可视指示,所述代码更改反映了当前用户正在查看的代码的不同版本。可视指示符可以响应于UI中的指针事件(例如,鼠标移过和鼠标悬停等)。在所述示例中,鼠标移过和鼠标悬停操作会触发UI显示消息“该代码块不同于您当前的副本”。
点击消息401致使系统转换到用户接口中的另一个视图,所述另一个视图被配置为将用户聚焦在与消息中的代码相关联的对话流上。图5示出了示例UI,其示出了在通信面板506中示出的UI中选定的消息501以及相应的消息流的视图,并且聚焦在编辑面板504中的关联代码508上。根据一些实施方案,代码更改消息流提供一些另外的功能。例如,通信面板向代码作者(例如,原始作者、编辑用户、负责编辑器等)提供选项以接受建议的代码更改(例如,经由在520处“应用补丁”的选择)。其他功能包括在522处的“示出差异”,所述“示出差异”触发系统在编辑面板504中示出代码差异视图。代码差异视图示出了对标记语言代码的更改。系统还提供在524处复制代码并且在526处添加回复的功能。选择526允许消息接收方继续通信线程。例如,接收方可以询问为什么需要更改,并且随后的回答被实时显示在通信面板504中。根据各种实施方案,与代码段相关联的通信流被维护以供稍后的用户审查,随后用户能够审查代码更改,并且通过消息流立即理解此类更改的目的或原因。
图6示出了一个示例消息流,所述消息流与代码更改相关联,并且在请求者和代码作者或负责用户之间来回传递消息。消息流可以显示在通信面板中(例如,在606处)。根据一些实施方案,代码更改消息的选择将系统转换为聚焦的代码审查消息流(例如,在606中)。通过选择608,系统被配置为转换回通用文件或目录消息流(例如,类似于图4中的406)。在其他实施方案中,代码具体消息流被存储以供后续访问。例如,在610处,在编辑面板604中结合代码行号显示注释。注释可视元素被配置为在代码的所有可视化中显示。注释指示符被配置为将系统转换到代码具体消息流视图,所述代码具体消息流视图使得用户能够审查例如建议的代码更改、开发人员之间的消息传递等。
图7A是示出未读消息通知的UI的示例屏幕捕获。在代码树列表(例如,702)右侧的空间中,在列710处,显示与代码树中的每个文件相关联的任何未读消息的计数。系统维护关于新消息和读取状态的信息。在一些实施方案中,系统被配置为显示未读消息通知,其中未读消息的计数包括在显示中。通知与消息所属的文件和/或代码相关联地呈现。在一些实施方案中,用户被给予对这些通知的外观的细粒度控制,能够关闭每个文件、跨目录或整个代码树的通知。图7A还示出了响应于在720处对CHANELOG.md的选择,从图6中的消息流视图到图7A中的消息流视图的转换。所述转换包括编辑面板704中的转换,以示出与CHANELOG.md文件相关联的代码,并且通信面板706反映与CHANELOG.md文件相关联的消息。在730处,显示另外的未读消息通知。未读通知显示可以被配置为突出显示指向当前用户的消息。例如,730可以显示为已读,以引起用户对未读消息通知的注意,所述未读消息通知包括指向当前用户的消息。在UI中选择730(例如,用鼠标和指针点击)使系统转换为图7B中所示的示例UI。
一旦用户查看了消息,未读消息指示符就不再显示在列750中。根据一些实施方案,在消息流中,可以显示另外的显示以将用户的注意力吸引到他们的消息上。例如,在760处,可以以高度可见的颜色(例如,红色)显示“@”指示符,以引起对具体消息的注意。如上文所讨论,系统对通知消息提供细粒度控制。例如,右键点击代码树中的文件提供使通知消息静音的菜单选项。菜单中的另外的选项可以包括“粗体”和“徽章”,所述“粗体”和“徽章”被配置为允许用户在系统上定制消息报告信息/可视化。根据一个实施方案,系统默认被配置为显示数字指示符,所述指示符示出向所述文件发送的新消息的数量(例如,所述数量的消息可以被称为“徽章”,例如,在iPhone上,在UI中的消息图标上出现的红色数字示出用户在所有用户对话中有多少未读消息)。例如,如果用户想要知道有新消息,但是不需要关于消息数量的另外的信息,则用户可以从菜单中选择“粗体”。响应于粗体的选择,系统被配置为将未读消息的UI显示限制为没有未读消息数量的可视指示。在一个用例中,当用户想要知道有对话,但是不想被872条未读消息淹没时,用户可以在UI中选择这个选项。根据另一个实施方案,全部静音(例如770)选项可用于关闭与代码树中所有文件的通信流相关联的显示。
图8示出了根据一个实施方案的另一个示例UI,所述另一个示例UI展示了从与用户的IDE集成的版本控制系统(例如,GIT)捕获的版本控制系统(“VCS”)信息。VCS面板800可以在屏幕的右侧上被显示在与802处所示的代码树中的文件相关联的消息流上方。VCS面板800被配置为显示由系统捕获的信息,所述信息通常需要转换到IDE外部的版本控制系统和相关联的操作(例如,GIT责任或历史)。VCS信息启用代码和版本控制信息的全面视图以改善IDE中的常规提交处理。展示的另外的信息包括:810处的贡献者、812处的分支信息和814处的最后编辑信息。在一些实施方案中,可以显示编辑历史时间线(例如,822),所述编辑历史时间线被配置为响应于在定时器中的选择(例如,鼠标点击)来显示相关联的编辑。由插件和/或IDE通信系统提供的通信信道的实时性质使得软件开发人员能够获得类似于增强的存在的其他功能。例如,实时状态窗口可以显示其他开发人员正在进行的动作。
根据一个实施方案,显示820包括实时状态通知,所述实时状态通知可以表明另一个用户当前正在编辑当前用户正致力于提交他们的更改的文件(例如,图8B的820)。其他实施方案提供潜在合并冲突的实时通知,其中另一个用户已经开始编辑正在审查提交的相同的代码或代码行(例如,在820处“与Ken Thompson的未决合并冲突”)。所述系统的一些实施方案在代码行上维护更改状态信息,并且比较由其他用户实时执行的编辑。当其他用户从另一些用户也编辑过的代码的先前版本中编辑相同的代码行时,由系统标识合并冲突。当合并冲突发生时提供关于合并冲突的通知表示优于其他方法的显著进步。
在VCS面板800中选择830处的“差异”将系统转换到编辑面板804中的代码的差异视图。图9是示例UI 900的屏幕捕获,示出了904处的代码的差异视图。责任832的选择图8A转换到用于编辑的属性信息的视图。功能中的每个都提供另外的能力,以改善用户在代码提交期间的能力和理解。而且,在视图中的每个中可用的通信面板便于实时解决与具体代码相关联的问题和/或难题。这些消息随后成为易于访问的上下文,以供以后审查相同的代码。关于UI捕获描述的功能中的每个都由底层的IDE通信系统或插件启用。各种实施方案被提供为插件扩展,所述插件扩展集成并且利用由现有IDE应用提供的功能。一些实施方案包括在不需要扩展或插件的情况下构建有内置的通信接口和跟踪功能的IDE应用。
图10中示出了IDE通信系统1000的框图。根据一些实施方案,IDE通信系统可以包括具有内置的通信功能的IDE应用,或者可以包括用于现有IDE应用的插件或扩展。系统1000被配置为管理访问开发环境的用户群之间的通信。根据一个实施方案,系统管理通信,同时维持与在开发环境中标识的源代码的关联。在一个示例中,系统使用户能够选择在其上构建消息的代码行。系统记录与代码行和编写的消息的关联,并且在绑定到代码行的用户群之间启用消息流。具体消息流还可以链接到源代码文件,并且在与源代码文件相关联的消息流的更高级视图中访问。所述系统还使得能够在与具体代码行相关联的聚焦视图与文件和相关联的较大消息流的视图之间进行转换。
根据各种实施方案,所述系统被配置为管理消息传递功能以及消息和源代码子组之间保存的链接。此外,系统使得聊天对话(例如,即时消息传递)能够在具体位置或代码块周围发生,并且永久地创建源代码和用户之间关于它的对话之间的关联。根据一些实施方案,对话的记录可以是具体的,并且包括例如它所引用的文件/功能/块的哪个版本/分支。系统和相关联的UI可以被配置为显示与文件/功能/块的具体版本/分支相关联的消息流,并且还可以允许访问和/或显示文件/功能/块或代码的所有版本/分支的消息流。例如,较旧版本和相关联的消息可以按时间顺序显示。在其他示例中,导航到其他版本或分支的选项可以在UI中显示。
根据各种实施方案,所述系统被配置为在现存对话的源代码的显示内包括指示符。在一些示例中,显示包括结合代码行号显示而显示的注释指示符。在其他实施方案中,系统可以被配置为提供与源文件相关联的未读消息指示符的显示,例如,在代码树中示出的。所述系统还可以被配置为在用户接口中显示未决的补丁、提到、提交等的不同可视指示符。UI中的选择可以触发系统转换到相应的代码/源文件等连同任何相关联的消息流一起审查。在一些实施方案中,系统被配置为在任何IDE内生成和显示历史滑块,其中历史滑块被配置为通过与一些代码或功能相关联的消息流进行转换。用户可以基于操纵UI中的历史滑块来转换按时间顺序排列的消息。
集成到开发环境中(例如,使用开发环境引擎1002)提供许多扩展传统实现方式的功能。在一些实施方案中,所述系统被配置为响应于UI中的代码的选择(例如,用引擎1002),自动地生成接收方信息并且预填充消息中的地址信息。例如,所述系统可以被配置为从任何代码存储库提取电子邮件地址,并且响应于代码行或代码部分的选择,自动地在消息中填充接收方。在一个示例中,引擎1002可以被配置为搜索代码或代码存储库(例如,甚至外部代码存储库)以寻找作者或代码管理员的关联电子邮件地址,并且将所述信息返回给系统以进行自动消息传递。
所述系统还可以被配置为增强用于开发的代码审查过程。例如,系统被配置为基于消息流和问题的存档、解决方案、建议的更改和提交操作来改善正式的代码审查。在一些实施方案中,所述系统包括跟踪引擎1006,所述跟踪引擎1006被配置为将代码、代码行、代码段等关联到关于它们的消息流。以这种方式,系统使用消息流和对后续用户的呈现来实现代码审查,作为代码内部和关于代码的强通信的有机副产物。在其他示例中,使用通信系统增强可以减少和消除对正式代码审查的需要,同时保持符合正式代码审查协议。换句话说,跟踪问题和解决方案和/或代码随时间的更改,为正式的代码审查过程提供所需的信息。根据一个实施方案,可以在系统上跟踪后续用户对每个消息的审查,并且用于清除正式的代码审查要求。
根据另一个实施方案,所述系统可以包括通信引擎1004,所述通信引擎1004专门被配置为管理增强的通信功能。尽管在其他实施方案中,系统可以被配置为具有相同的功能,而无需专门的引擎。通信引擎被配置为使得能够在开发环境的用户之间进行即时消息传递和/或聊天。例如,通信引擎提供嵌入到任何IDE中的直接消息传递。其他实施方案,启用信道消息传递,其中成员由信道创建者添加到主题具体的信道,或者用户可以添加他们自己,或者请求另外到具体的通信信道。例如,“错误修复”信道可以用于发布错误信息,并且用作对于基于代码的消息流而言分开存在的主题具体消息流。根据各种实施方案,两个消息流可以被绑定到具体代码,并且两个消息流可以被用于访问各种消息,但是信道具体流提供主题组织(例如,所有错误、后端重写信道(例如,具体于后端问题的修复)等)而不是其他消息流的代码行/文件/功能关联。
在其他实施方案中,通信引擎1004可以与接口引擎1008结合操作,以在用户接口中提供关于未决通信或未读消息的上下文指示符。接口引擎可以生成具体的可视化以标识去往当前用户的消息或者向消息流或信道内的消息提供一般通知。此外,接口引擎和/或通信引擎可以被配置为提供文件修改的实时通知,并且可以检测并且向用户群显示实时事件。
根据一些实施方案,接口引擎1008还可以从跟踪引擎1008接收信息。在一个示例中,跟踪引擎可以被配置为维护关于跨所有用户的代码更改的信息配给。跟踪引擎可以被配置为检测由多个用户改变相同的代码而导致的合并冲突。例如,基于合并冲突信息,交互引擎可以被配置为显示未决的合并冲突的实时通知并且防止冲突由相应的各方提交。跟踪引擎1006被配置为检测两个或更多个开发人员之间的实时冲突并且向相应用户触发通知消息。
对常规的IDE方法的进一步增强包括一键式补丁用户接口,所述一键式补丁用户接口被配置为使得由其他开发人员生成的代码补丁能够基于原始代码作者或代码管理员对代码的审查而被自动地应用。另外,系统和/或通信引擎1004被配置为使得能够跨多个开发环境进行消息传递和消息流跟踪。例如,操作第一IDE应用的第一用户和操作第二IDE应用的第二用户两者都可以通过他们相应的环境开发相同的代码库,并且两者都可以访问发送给任一环境中的用户或者在不同环境中操作的用户之间的消息流。根据各种实施方案,系统和/或通信引擎1004可以作为任何数量的不同的IDE应用之间的公共接口来操作,允许任何数量的用户在多个开发平台之间进行选择,同时仍然启用公共通信信道和跟踪功能,这消除了常规IDE应用的许多问题。
例如,系统被配置为向任何类型的文档添加实时对话流(例如,文档可以是源代码文档、“word doc”、电子表格等)以及例如启用以下各项中的任一者或多者:跟踪任何通信、注释文档(例如,源代码文档)以启用对先前消息的访问、自动定向新消息、通知用户定向的消息、维护文档内的未读指示符,以及其他选项。
在其他实施方案中,由系统跟踪的通信流被链接到代码行和/或功能描述(例如,系统被配置为认出在UI中选定的代码行是给定功能的一部分(例如,系统被配置为在前面或后面的行中搜索方法调用、类限定、开始功能字符等)。所述信息由系统自动地链接到给定的消息和/或消息流,因此可以直接搜索关联和/或功能来检索特定代码存储库中的关联消息。
在其他实施方案中,所述系统管理消息流,从而响应于用户接口中的选择,所述系统被配置为基于提交跳转到对话流中的点。在一个示例中,提交操作由跟踪引擎1006跟踪,并且基于提交操作、代码行等是可访问的。在其他实施方案中,系统和/或跟踪引擎存储关于提交历史的信息,以使得能够自动生成审查团队。例如,系统被配置为基于从VCS应用或服务查询的提交历史自动地确定审查团队。此外,系统可以从任何参与过与具体文件、功能、代码行等上的代码提交相关联的消息流的任何用户中构建审查团队。在一个示例中,系统根据VCS提交历史自动组装团队,其中团队由匹配讨论组的成员限定。所述系统还被配置为便于在IDE内部进行代码审查,从而进一步便于代码审查操作。
如上文所讨论,通信系统的多种实施方案可以包括被配置为在系统内执行具体任务的多种引擎,然而,多种实施方案被配置为执行相同的或类似的功能,而不需要情形化上文所讨论的相应部件。
图11是用于构建代码相关联的消息流的示例过程流程1100。根据一个实施方案,过程1100开始于在1102处的用户接口中的一个或多个代码行的选择。在其他示例中,所述过程可以开始于在IDE的编辑面板中选择文档或文档的一部分。响应于代码行的选择,可以在1104处显示消息接口。在一些实施方案中,在1106处,选定的代码行和/或相关联的代码文件可以用于标识代码的作者、代码的最后编辑器、或用于选定的代码的负责方(例如,代码管理员)。然后,所标识的用户在消息传递接口中显示为关于选定的代码的消息的自动生成的接收方。一旦接收到任何消息文本,过程1100在1108继续,将消息传递给指定的接收方。在一些实施方案中,消息在其他IDE应用上被传达给用户,并且可以可选地经由未读消息通知被指示给其他用户。在1110处,所述消息与选定的代码、代码行、代码功能或代码文件中的任一者或多者相关联地被存储。对相同的代码文件的后续访问将显示与所述代码文件相关联的任何消息流。消息流内的选择可以触发系统转换到代码具体消息流的视图。在另一个示例中,在编辑面板中代码的选择可以将通信面板转换为消息流的代码具体视图。
过程1100被示为示例过程流程。在其他实施方案中,所示的各种步骤可以一起执行,或者各种步骤中的一些可以被省略或者作为其他过程的一部分来执行。
本文描述的各种功能、过程和/或伪代码可以被配置为在以示例的方式在图10中示出的系统上执行。所示的系统和/或系统部件可以专门被配置为执行所描述的过程和/或功能。根据本发明的各方面,本文描述的各种方面和功能可以被实现为一个或多个专门配置的计算机系统上的专门配置的硬件、软件或硬件和软件的组合。另外,根据本发明的方面可以位于单个专门配置的计算机系统上,或者可以分布在连接到一个或多个通信网络的一个或多个专门配置的计算机系统中。
例如,各种方面、部件和功能(例如,自动地生成接收方、链接消息和代码行、自动地建立信道和/或团队、代码审查功能、生成未读消息通知、导航到代码具体消息流等)可以分布在一个或多个专用计算机系统中,所述专用计算机系统被配置为向一个或多个客户端计算机、移动装置提供服务,或者作为分布式系统的一部分执行总体任务。另外,可以在包括分布在执行各种功能的一个或多个服务器系统之间的部件或引擎的客户端-服务器或多层系统上执行各方面。因此,示例不限于在任何特定系统或系统组上执行。此外,可以用软件、硬件或固件或其任意组合来实现各方面和功能。因此,可以使用多种硬件和软件配置在方法、动作、系统、系统元件和部件内实现各方面和功能,并且示例不限于任何特定的分布式架构、网络或通信协议。
参考图12,示出了分布式专用计算机系统1200的框图,其中实践了各种方面和功能(例如,包括复制部件(例如,捕获执行的写入操作并且将其分布给托管相同的数据副本的节点)、配置部件(例如,使仲裁器能够参与数据提交和主选举中的一者或两者)、选举部件(例如,响应于主故障触发选举协议)以及其他选项)。如图所示,分布式计算机系统1200包括交换信息的一个或多个专用计算机系统。更具体地,分布式计算机系统1200包括计算机系统1202、1204和1206。如图所示,计算机系统1202、1204和1206通过通信网络1208互连,并且可以通过通信网络1208交换数据。例如,分布式数据库的一部分可以在1202上实现,所述1202可以与其他系统(例如,1204和1206)通信,所述其他系统托管系统的其他或剩余部分、消息数据和/或链接的消息数据的副本。
在一些实施方案中,网络1208可以包括计算机系统可以通过其交换数据的任何通信网络。为了使用网络1208来交换数据,计算机系统1202、1204和1206以及网络1208可以使用各种方法、协议和标准,尤其包括TCP/IP或其他通信标准,并且可以包括安全通信协议VPN、IPsec等。为了确保数据传送是安全的,计算机系统1202、1204和1206可以经由网络1208使用多种安全措施(包括例如,TLS、SSL或VPN或其他标准)来传输数据。尽管分布式计算机系统1200示出了三个联网的计算机系统,但是分布式计算机系统1200不限于此,并且可以包括使用任何介质和通信协议联网的任何数量的计算机系统和计算装置。
如图12所示,专用计算机系统1202包括处理器1210、存储器1212、总线1214、接口1216和数据存储装置1218,并且还包括作为独立系统或分布式系统的一部分的上文所讨论的任一个或多个部件,以实现本文公开的至少一些方面、功能和过程。在一些实施方案中,处理器1210执行一系列导致操纵数据的指令。处理器1210可以是任何类型的处理器、多处理器或控制器。处理器1210通过总线1214连接到包括一个或多个存储器装置1212的其他系统部件。
存储器1212在计算机系统1202的操作期间存储程序和数据。因此,存储器1212可以是相对高性能、易失性、随机存取存储器,诸如动态随机存取存储器(DRAM)或静态存储器(SRAM)或其他标准。然而,存储器1212可以包括用于存储数据的任何装置,诸如磁盘驱动器、硬盘驱动器或其他非易失性存储装置。各种示例可以将存储器1212组织成特定的并且在一些情况下是独特的结构,以执行本文公开的功能。这些数据结构的大小和组织可以存储特定于具体数据库架构和具体数据、类型的值,并且特定地,可以包括用于组织和管理数据存储的标准化格式。
计算机系统1202的部件通过诸如总线1214的互连元件耦合。总线1214可以包括一个或多个物理总线,例如,集成在相同的机器内的部件之间的总线,但是可以包括系统元件之间的任何通信耦合,其包括专用或标准计算总线技术,诸如IDE、SCSI、PCI和无限带宽或其他标准。总线1214使得能够在计算机系统1202的系统部件之间交换诸如数据和指令的通信。
计算机系统1202还包括一个或多个接口装置1216,诸如输入装置、输出装置和组合输入/输出装置。接口装置可以接收输入或提供输出。更特定地,输出装置可以呈现用于外部呈现的信息。输入装置可以接受来自外部源的信息。接口装置的示例包括键盘、鼠标装置、麦克风、触摸屏、打印装置、显示屏、扬声器、网络接口卡等。接口装置允许计算机系统1202交换信息并且与诸如用户、供应商和其他系统的外部实体通信。
数据存储装置1218包括计算机可读且可写的非易失性或非暂时性数据存储介质,所述非易失性或非暂时性数据存储介质中存储了限定由处理器1210执行的程序或其他对象的指令。数据存储装置1218还可以包括记录在介质上或介质中的信息,并且在程序执行期间由处理器1210处理所述信息。更具体地,信息可以存储在一个或多个数据结构中,所述数据结构专门被配置为节省存储空间或提高数据交换性能。
存储在数据存储装置中的指令可以作为编码信号永久地存储,并且这些指令可以致使处理器1210执行本文描述的任何功能。所述介质可以是例如光盘、磁盘或快闪存储器,以及其他选项。在操作中,处理器1210或某一其他控制器致使数据从非易失性记录介质读取到另一个存储器(诸如,存储器1212)中,所述另一个存储器允许由处理器1210比数据存储装置1218中包括的存储介质更快地访问信息。存储器可以位于数据存储装置1218或存储器1212中,然而,处理器1210操纵存储器中的数据,然后在处理完成后将数据复制到与数据存储装置1218相关联的存储介质。多种部件可以管理存储介质和其他存储元件之间的数据移动,并且示例不限于特定的数据管理部件。此外,示例不限于特定的存储器系统或数据存储装置系统。
尽管计算机系统1202作为示例被示出为在其上可以实践各种方面和功能的一种类型的计算机系统,但是各方面和功能不限于在如图12所示的计算机系统1202上实现。可以在具有与图12所示的架构或部件不同的架构或部件的一个或多个专用配置的计算机上实践各种方面和功能,可以对其进行修改以包括所讨论的专用目的部件和/或功能。例如,计算机系统1202可以包括专门编程的专用硬件,诸如专用集成电路(ASIC),所述专用集成电路(ASIC)被定制为执行本文公开的任一个或多个操作(例如,验证接收的操作、路由写入操作、复制操作以及其他示例)。而另一个示例可以使用运行带有Motorola PowerPC处理器的MAC OS System X的若干计算装置和运行专有硬件和操作系统的若干专用计算装置的网格来执行相同的功能。
计算机系统1202可以是包括管理计算机系统1202中包括的至少一部分硬件元件的操作系统的计算机系统。另外,各种方面和功能可以在非编程环境中实现,例如,以HTML、XML或其他格式创建的文档,当在浏览器程序的窗口中查看时,可以呈现图形用户接口的各方面或执行其他功能。
图13示出了示例UI 1300,所述示例UI 1300示出了在具有相应消息流的通信面板1306中显示的UI中选定的消息1301的视图,并且在编辑面板1304中聚焦于未修改的原始代码1308。根据一些实施方案,执行UI的系统或与执行UI的另一个系统通信的系统在消息流中标识消息1301的接收方,并且在消息流中注释关于消息1301的接收方(例如,系统将“Larry Wall”标识并且注释为消息1301的作者)。根据一些实施方案,系统在消息1301的目标用户与消息1301中提到的另一个用户之间进行区分,并且将目标用户选择为消息1301的接收方。例如,如果在消息1301的正文中提到另一个用户,则所述用户不被选择为消息1301的接收方。相反,被用户“Larry Wall”选择或作为目标的接收方被选择为消息1301的接收方。根据一些实施方案,系统确定消息1301是否与专用代码块(例如,改变的代码块、孤立的代码块等)相关。如果消息1301被确定为与具体代码块相关,则系统被配置为在通信面板1306中可视上区分消息1301,以向用户指示这种关系。
根据一些实施方案,如果系统在编辑面板1304中接收到原始代码1308的修改(例如,添加另外的代码、删除、重新编号、移动),则系统存储元数据,用于保持修改后的代码和与原始代码1308相关联的相应消息流之间的通信线程链接。可以在消息1301中接收修改,或者系统的用户可以将修改直接输入到编辑面板1304中。根据一些实施方案,系统在与原始代码1308相关的元数据中存储编辑面板1304中的代码的提交标识和/或修改后的代码的提交标识(例如,当修改后的代码被包括在代码存储库(例如,git存储库)中时)。例如,系统可以存储提交标识,以帮助跟踪跨存储在代码存储库中的代码的不同版本对原始代码1308的更改。
根据一些实施方案,系统确定修改是否包括删除编辑面板1304中的原始代码1308的一部分或全部。响应于确定修改包括这种删除,系统被配置为在编辑面板1304中可视地指示编辑面板1304的对应于删除后的代码的部分。例如,此类可视指示可以辅助用户标识代码已经被删除和/或标识在删除后的代码之前和之后出现的代码。另外地或替代地,系统可以在与原始代码1308相关的元数据中存储消息流中对应于删除后的代码的一个或多个消息,例如消息1301。例如,系统可以将所述信息存储在元数据中,以跟踪跨存储在代码存储库中的代码的不同版本对原始代码1308的更改。读取存储在元数据中的消息的另一个用户可以被提供适当的上下文,用于跨代码的不同版本进行的更改。
根据一些实施方案,系统动态地监测消息流中代码的存在。例如,用户可以接收包括代码(例如,消息1301中的代码)的消息。所述系统可以基于检测一个或多个专用字符、一个或多个变量名或消息中代码存在的另一个合适指示符来检测代码的存在。例如,系统可以基于检测到接收的消息中的行开始处的一个或多个前导空格或一个或多个前导制表符来检测代码的存在。响应于检测到消息流中的消息中的代码,系统可以确定在编辑面板1304中是否存在任何对应的代码。例如,系统可以确定消息1301中的代码对应于编辑面板1304中的原始代码1308。所述系统可以基于在消息中检测到的代码,例如消息1301中的代码,执行基于启发式的搜索算法来标识对应的代码,例如原始代码1308。
根据一些实施方案,系统被配置为例如通过消息面板提供用于接收更新或修改后的代码的一个或多个选项。例如,所述系统可以被配置为向用户(例如,原始作者、编辑用户、负责编辑器、查看用户等)提供选项,来接受消息中建议的代码更改(例如,1301)。例如,系统可以响应于接收到修改后的代码(例如,经由1324处“应用补丁”的选择),在消息传递面板内显示一组选择选项。其他选项可以包括在1322的“示出差异”功能。根据一个实施方案,“示出差异”功能被配置为触发系统在编辑面板1304中显示给定用户正在查看的代码的当前版本和如果执行所建议的修改将会出现的代码之间的代码差异视图。根据一个示例,“代码差异视图”被配置为以标记语言示出对代码的更改。在其他示例中,系统被配置为在1326处提供用于复制代码功能的选项。选择1326可以将来自消息1301的代码存储在临时存储器(例如剪贴板)中,以供用户稍后检索。系统可以在1320处提供用于绕回(warp)功能的选项。绕回功能允许用户或消息接收方查看用于另一个用户(例如,消息1301的发送方)的编辑面板。例如,消息1301的发送方可以在他的编辑面板中查看他的代码版本。发送方可以修改他的代码版本。发送方随后可以发送消息1301,所述消息1301包括对应于他对代码的修改的建议修改。接收消息1301的用户或消息接收方可以选择1320来查看发送方的编辑面板并且观察发送方的修改后的代码。用户或消息接收方可以选择查看发送方的编辑面板的选项,因为用户可能期望在将来自消息1301的建议修改应用到他自己的代码版本之前查看发送方的修改后的代码。根据一个实施方案,选择1320可以允许用户或消息接收方观察另一个用户的编辑面板,并且实时查看另一个用户对他的代码版本进行修改。当其他用户做出修改时,用户可以可选地向其他用户发送带关于修改的反馈的消息。其他用户可以基于来自用户的反馈来改变他的修改。以这种方式,绕回功能可以允许两个用户在代码修改完成之前进行协作。根据一个实施方案,选择1320可以允许用户或消息接收方将他的代码版本与消息发送方的代码版本进行比较。例如,用户或消息接收方可以在显示器的一半中查看他的代码版本,并且在显示器的另一半中查看消息发送方的代码。
根据一个实施方案,用户或消息接收方不在他的编辑面板中修改原始代码。消息发送方在他的编辑面板中修改原始代码,以生成发送方的修改后的代码。消息发送方发送消息,所述消息具有与发送方的修改后的代码对应的建议修改。在所述情况下,诸如“示出差异”的功能被配置为触发系统在用户的编辑面板中显示原始代码和执行了建议的修改的原始代码的修改版本之间的代码差异视图。根据一个实施方案,“示出差异”功能被配置为确定原始代码和发送方的修改后的代码(和/或建议的修改)之间的一组差异,并且基于所述组差异对原始代码执行建议的修改。其他描述的功能可以类似地被配置为将原始代码和原始代码的修改版本与所执行的建议修改进行比较。
根据一个实施方案,用户或消息接收方修改原始代码以生成接收方的修改后的代码。消息发送方还在他的编辑面板中修改原始代码,以生成发送方的修改后的代码。消息发送方发送消息,所述消息具有与发送方的修改后的代码对应的建议修改。在所述情况下,诸如“示出差异”之类的功能被配置为触发系统在用户的编辑面板中显示接收方的修改后的代码和接收方的修改后的代码的版本之间的代码差异视图,并且执行建议的修改。为了正确地应用建议的修改,系统需要适应由于消息接收方和消息发送方在相应的编辑面板中修改了原始代码而引起的并发问题。根据一个实施方案,“示出差异”功能被配置为确定原始代码和发送方的修改后的代码(和/或建议的修改)之间的第一组差异,确定接收方的修改后的代码和第一组差异之间的第二组差异,并且基于所述第二组差异对接收方的修改后的代码执行建议的修改。例如,变量可以在原始代码中赋值为X,在接收方的修改后的代码中赋值为Y,并且在发送方的修改后的代码中赋值为Z。执行“示出差异”功能的系统可以确定第一组差异包括变量在原始代码中被赋值为值X并且将从发送方的修改后的代码(和/或建议的修改)更改为值Z的指示。然后,系统可以确定第二组差异包括所述变量在接收方的修改后的代码中被赋值为Y,并且将从第一组差异更改为Z的指示。然后,系统可以基于所述第二组差异对接收方的修改后的代码执行建议的修改,并且将变量的赋值从Y更改为Z。然后,系统可以在用户的编辑面板中显示接收方的修改后的代码和接收方的修改后的代码的所述版本之间的代码差异视图,以执行建议的修改。
所描述的系统和方法同样适用于具有两个以上用户的系统。消息接收方代码和消息发送方代码之间的并发性问题,诸如上面描述的那些问题,可能会随着系统被扩展到合并两个以上的用户而被放大。而且,每个用户可以与代码的多个版本相关联,包括实时编辑的版本(或活动副本)、本地保存的版本(或保存的副本)以及远程保存的版本(或提交的副本)。所描述的系统和方法可以适应具有多个用户的系统,每个用户与代码的多个版本相关联。例如,所描述的系统和方法可以扩展到成千上万的用户,每个用户与相同的代码的一个或多个版本相关联。图17和下面的关联描述描述了说明性的算法来解决两个用户的情况,每个用户与三个版本的代码相关联。
图14示出了示出选择“示出差异”功能的结果的示例UI 1400。系统在编辑面板1304中显示代码差异视图,其中示出了来自消息接收方的代码1408(对应于原始代码1308)和来自消息发送方的发送方的修改后的代码1409。代码差异视图可以示出对标记语言中的代码的更改。通信面板1306可以包括在1422处的功能“隐藏差异”,所述功能“隐藏差异”触发系统返回到编辑面板1304中的代码视图,如图13所示。另外地或替代地,用户可以在UI1400中从用于应用补丁的功能的选项1324、用于复制代码的功能的选项1326、或者用于将另一个用户(例如,消息1301的发送方)的功能绕回到编辑面板的选项1320中进行选择。
图15示出了示出选择“应用补丁”功能的结果的示例UI 1500。当选择选项1324时,系统被配置为接受在通信面板1306中示出的消息1301中详细描述的建议的代码更改,并且生成由当前用户或消息接收方可视化的代码(例如,接收方的修改后的代码1508)的其中引入了更改的新的可视化。例如,系统可以自动地确定原始代码1308对应于消息1301中的所建议的代码更改,从消息1301的发送方接收用于原始代码1308的标识信息或从消息1301的用户或接收方接收原始代码1308的手动标识。在标识对应代码之后,系统可以用来自消息1301的代码替换原始代码1308,以生成接收方的修改后的代码1508。替代地,系统可以标识代码1301和建议的代码更改之间的差异,并且替换代码1301中不同于建议的代码更改的部分。另外地或替代地,通信面板1306可以包括功能“恢复”1524,所述功能“恢复”1524触发系统将代码恢复到在应用来自通信面板1306中的消息1301的建议代码更改之前的版本,例如原始代码1308。
与以上述方式中的一个将建议的代码更改应用于原始代码1308相结合、在此之后或在此之前,系统可以保存对应于原始代码1308的元数据,其中系统可以包括原始代码1308的所述版本的一个或多个指示。例如,系统可以在元数据中存储对原始代码1308或原始代码1308的整体所做的更改,以及用于在以后检索它的标识信息(例如,时间、日期、代码文件、提交标识和/或其他合适的标识信息)。当用户选择选项1524以在建议的代码更改被应用于原始代码1308之前恢复代码时,系统可以从元数据中检索必要的信息以用原始代码1308替换接收方的修改后的代码1508。
图16示出了示出选择绕回功能的结果的示例UI 1600。选择绕回功能可以允许消息接收方将他在编辑面板1602中的代码版本1608与消息发送方在编辑面板1603中的代码版本1609进行比较。例如,消息1301的发送方可以被标识为“Larry Wall”,并且在选项1320的选择为“绕回到Larry”时,系统可以生成具有代码1608(对应于原始代码1308)的编辑面板1602和具有代码1609(对应于发送方的修改后的代码1409)的编辑面板1603。在所述说明性示例中,用户或接收方可以在屏幕的一半中查看他的代码版本,例如代码1608,并且在屏幕的另一半中查看消息发送方的代码,例如代码1609。可以使用注释可视元素(例如,使用标记语言)来示出代码1608和代码1609中的差异。
图17是用于确定代码块的活动副本之间的一个或多个差异的示例过程流程1700。根据一个实施方案,两个用户,A和B,可以相应在他们相应的系统上显示代码块的活动副本。活动副本引用一行或多行代码或代码文件,其中包括可能已经被修改但尚未保存到本地存储装置的代码。代码块的活动副本还可以称为代码块的可视化实例。活动副本是可以与所保存的副本不同的代码块的版本,所保存的副本又可以不同于代码块的提交的副本。所保存的副本引用一行或多行代码或代码文件,所述一行或多行代码或代码文件包括可能已经被修改并且保存到本地存储装置但尚未提交到远程存储装置(例如代码存储库)的代码。代码块的保存的副本还可以称为代码块的本地实例。提交的副本引用存储在远程存储装置(例如代码存储库)中的一行或多行代码或代码文件。提交的副本可以另外被分类为属于存储在代码存储库中的特定版本。代码块的提交的副本还可以称为代码块的远程实例。
在一个实施方案中,确定例如跨用户A和B的代码块的活动副本的一个或多个差异需要分析和比较用户A的代码块的活动副本、保存的副本和/或提交的副本以及用户B的代码块的活动副本、保存的副本和/或提交的副本。在一些示例中,系统可以维护关于对用户系统上的代码进行的本地更改的元数据信息,并且比较多个用户系统上的元数据信息以确定任何更改。
根据一个方面,考虑到确定差异(例如,跨用户A和B的代码块的实时副本)的复杂性,系统被增强以基于执行差异引擎来解决这些复杂的比较。在一个实施方案中,差异引擎可以被配置为执行关于图17描述的过程流程。在各种实施方案中,差异引擎被配置为随着时间和在用户之间动态地管理代码更改。在其他实施方案中,系统可以在有或没有情形化差异引擎的情况下执行相同的功能。
在一个实施方案中,差异引擎存储与代码更改相关联并且详细描述与代码更改相关联的代码块的元数据。差异引擎保持与代码块的关联。差异引擎可以被配置为生成和/或维护与在计算机上作为活动副本打开的代码块的关联,作为保存的副本、提交的副本或可以被修改(例如,添加另外的代码、删除、重新编号、移动)的代码块的另一个合适版本来保持。保持可以包括重新分配代码块以包括新代码、删除的旧代码或移动的旧代码。在一个实施方案中,差异引擎标识与用户A相关联的代码块的可视化实例和与用户B相关联的代码块的另一个实例之间的一个或多个差异。差异引擎可以通过基于元数据确定在存储所述第一版本的本地实例之后代码块的可视化实例(例如,活动副本)是否已经被修改来发起标识。下面提供其他细节。
参考图17,在所述说明性实施方案中,比较用户A和B的代码块的活动副本(活动副本A,1702;活动副本B,1704),以确定在活动副本之间是否存在任何差异。最初,将用户B的代码块的活动副本(活动副本B,1704)与用户B的代码块的保存的副本(保存的副本B,1706)进行比较。如果确定自从保存的副本B最后存储在本地存储中以来,活动副本B已经被修改,则确定保存的副本B和活动副本B之间的第一组差异(例如,考虑保存的副本B和活动副本B之间的差异)。例如,差异引擎可以比较活动副本B和保存的副本B的每个对应行,以确定在两个副本之间已经更改的行。在另一个示例中,差异引擎可以采用基于启发式的搜索算法来确定保存的副本B和活动副本B之间的公共部分,并且随后比较剩余部分以确定第一组差异。如果确定自从保存的副本B最后存储在本地存储中以来,活动副本B尚未被修改(例如,自从最后保存的副本B以来,活动副本B尚未被编辑),则可以执行过程流程1700中的下一步骤。
接下来,将用户B的代码块的保存的副本(保存的副本B,1706)与用户B的代码块的提交的副本(提交的副本B,1708)进行比较。如果确定自从提交的副本B最后存储在远程存储器中以来,保存的副本B已经被修改,则确定提交的副本B和第一组差异之间的第二组差异(例如,考虑提交的副本B和保存的副本B之间的差异)。如果确定自从提交的副本B最后存储在远程存储器中以来,保存的副本B尚未被修改,则可以执行过程流程1700中的下一步骤。
接下来,将用户B的代码块的提交的副本(提交的副本B,1708)与用户A的代码块的提交的副本(提交的副本A,1710)进行比较。如果确定提交的副本B不对应于提交的副本A,则确定提交的副本A和第二组差异之间的第三组差异(例如,考虑两个提交的副本中的差异,因为它们属于代码存储库中的不同控制版本)。如果确定提交的副本B对应于提交的副本A(例如,两个提交的副本属于代码存储库中的相同的控制版本),则可以执行过程流程1700中的下一步骤。
接下来,将用户A的代码块的提交的副本(提交的副本A,1710)与用户A的代码块的保存的副本(保存的副本A,1712)进行比较。如果确定自从提交的副本A最后存储在远程存储器中以来,保存的副本A已经被修改,则确定保存的副本A和第三组差异之间的第四组差异(例如,考虑提交的副本A和保存的副本A之间的差异)。如果确定自从提交的副本A最后存储在远程存储器中以来,保存的副本A尚未被修改(例如,自从最后提交的副本A以来,保存的副本A尚未被编辑),则可以执行过程流程1700中的下一步骤。
接下来,将用户A的代码块的保存的副本(保存的副本A,1712)与用户A的代码块的活动副本(活动副本A,1702)进行比较。如果确定自从保存的副本A最后存储在本地存储中以来,活动副本A已经被修改,则确定活动副本A和第四组差异之间的第五组差异(例如,考虑保存的副本A和活动副本A之间的差异)。如果确定自从保存的副本A最后存储在远程存储器中以来,活动副本A尚未被修改(例如,自从最后保存的副本A以来,活动副本A尚未被编辑),则可以执行过程流程1700中的下一步骤。
如果在上述所有比较中没有标识出差异,则生成指示以供显示,通知用户在活动副本A和活动副本B之间没有标识出差异。如果在上述比较中的一个或多个中标识出一个或多个差异,则生成指示以供显示,通知用户在活动副本A和活动副本B之间已经标识出一个或多个差异。在一个实施方案中,生成用户接口面板以显示用户A的代码块的活动副本和用户B的代码块的活动副本之间的一个或多个差异。可以基于第五组差异生成差异以显示在所述用户接口面板中。替代地,如果没有确定第五组差异(例如,因为在对应步骤中没有标识出差异),则第四组差异可以用于生成显示,等等。而且,尽管针对不同用户的代码块的实时副本讨论了所示示例,但是所描述的系统和方法同样适用于标识跨越不同用户的实时副本、保存的副本、提交的副本或代码块的其他合适版本的差异。
在一个实施方案中,当生成用于在所述用户接口面板中显示的一个或多个差异时,显示用户A和用户B的代码块的实时副本中的一者或两者。另外,可以在所述用户接口面板中注释实时副本之间的每个差异,以便向用户显示。例如,可以基于第五组差异或来自上述比较的另一个合适组来确定注释。在一个实施方案中,用户接口面板可以生成用于向用户A显示的应用功能(例如,应用补丁),以更改用户A的代码块的活动副本,以符合用户B的代码块的活动副本。另外,用户接口面板可以生成用于向用户A显示的恢复功能(例如,恢复补丁),以恢复到代码块的第一版本的可视化实例。在一个实施方案中,用户接口面板可以生成用于向用户B显示的应用功能(例如,应用补丁),以更改用户B的代码块的活动副本,以符合用户A的代码块的活动副本。另外,用户接口面板可以生成用于向用户B显示的恢复功能(例如,恢复补丁),以恢复到代码块的第一版本的可视化实例。
根据一个实施方案,通信系统可以包括用于集成VCS应用或服务的一个或多个API,以及用于在云提供的资源中维护IDE功能和实时通信信道的API。
此外,各种示例可以被实现为编程或非编程元件,或者它们的任意组合。例如,网页可以使用HTML来实现,而从网页内调用的数据对象可以用C++编写。因此,示例不限于具体的编程语言,并且可以使用任何合适的编程语言。因此,本文公开的功能部件可以包括被配置为执行本文描述的功能的各种各样的元件,例如专用硬件、可执行代码、数据结构或数据对象。
已经如此描述了至少一个示例的若干方面,应理解,本领域技术人员将容易想到各种改变、修改和改善。例如,本文公开的示例还可以在其他背景下使用。此类改变、修改和改善意图成为本公开的一部分,并且意图在本文所讨论的示例的范围内。因此,前面的描述和附图仅作为示例。
使用诸如“第一”、“第二”、“第三”、“a”、“b”、“c”等的序数术语来修饰或以其他方式标识权利要求要素本身并且不意味着一个权利要求要素相对于另一个权利要求要素的任何优先级、优先次序或顺序,或者方法的动作被执行的时间顺序,而是仅被用作将具有特定名称的一个权利要求要素与具有相同的名称(但是使用序数术语)的另一个要素区分开的标签。

Claims (72)

1.一种用于增强软件开发环境的通信系统,所述系统包括:
至少一个处理器,其可操作地连接到存储器;
开发引擎,其由所述至少一个处理器执行,所述至少一个处理器被配置为管理对代码存储库和版本控制应用的访问;
通信引擎,其由所述至少一个处理器执行,所述至少一个处理器被配置为启用基于用户的通信,并且结合代码编辑器和代码导航菜单(例如,代码树、代码列表等)显示通信接口;和
跟踪引擎,由所述至少一个处理器执行,所述至少一个处理器被配置为存储基于用户的通信,所述基于用户的通信具有到相应的基于用户的通信的代码行或代码文件的关联。
2.如权利要求1所述的系统,所述系统还包括接口引擎,所述接口引擎由所述至少一个处理器执行,所述至少一个处理器被配置为将可执行程序集成到现有的集成开发环境(“IDE”)应用(例如,应用或服务)中。
3.如权利要求2所述的系统,其中所述接口引擎包括IDE应用的插件或扩展。
4.如权利要求1所述的系统,所述系统还包括由所述至少一个处理器执行的接口引擎,所述接口引擎被配置为结合代码编辑面板来生成通信面板,其中所述通信面板被配置为显示与所述代码编辑面板中显示的代码相关联的消息流。
5.如权利要求4所述的系统,其中所述接口引擎还被配置为显示用于接受用户地址的通信接口和用于传达基于用户的消息的文本。
6.如权利要求5所述的系统,其中所述接口引擎还被配置为:
确定所述基于用户的消息是否与代码块(例如,改变的代码块、孤立的代码块等)相关;以及
响应于确定所述基于用户的消息与具体代码块相关,在所述通信面板中可视地区分所述基于用户的消息,以向所述用户指示这种关系。
7.如权利要求4所述的系统,其中所述接口引擎还被配置为:
在所述代码编辑面板中接收对所述代码的修改(例如,添加另外的代码、删除、重新编号、移动);以及
响应于接收到所述修改,存储用于保持修改后的代码和与所述代码编辑面板中所述代码相关联的消息流之间的通信线程链接的元数据。
8.如权利要求7所述的系统,其中所述保持动作还包括:
在所述元数据中存储所述代码编辑面板中的所述代码的第一标识和/或所述修改后的代码的第二标识(例如,当所述修改后的代码被包括在所述代码存储库中时)。
9.如权利要求8所述的系统,其中所述第一标识和所述第二标识中的一者或两者是提交标识。
10.如权利要求7所述的系统,其中所述保持动作还包括:
标识所述消息流中的所述基于用户的消息的接收方;以及
在所述元数据中注释关于所述基于用户的消息的所述接收方。
11.如权利要求10所述的系统,其中所述标识所述消息流中的所述基于用户的消息的所述接收方的动作包括:
在所述基于用户的消息的目标用户与所述基于用户的消息中提到的另一个用户之间进行区分;以及
选择所述目标用户作为所述基于用户的消息的所述接收方。
12.如权利要求7所述的系统,其中所述保持动作还包括:
确定所述修改是否包括删除所述代码编辑面板中的所述代码的至少一部分;以及
响应于确定所述修改包括删除:
在所述代码编辑面板中可视地指示对应于所述删除后的代码的部分;以及
在所述元数据中存储对应于所述删除后的代码的所述消息流中的一个或多个基于用户的消息。
13.如权利要求7所述的系统,其中所述接口引擎还被配置为:
由所述至少一个处理器生成用户接口面板,所述用户接口面板被配置为显示所述代码编辑面板中的所述代码和所述接收到的对所述代码的修改之间的一个或多个差异。
14.如权利要求7所述的系统,其中所述接口引擎还被配置为:
由所述至少一个处理器生成用户接口面板,所述用户接口面板被配置为显示应用功能,以基于所述接收到的对所述代码的修改来更改所述编辑面板中的所述代码。
15.如权利要求14所述的系统,其中所述用户接口面板还被配置为显示恢复功能,以将所述编辑面板中的所述代码恢复到所述代码被更改之前的版本。
16.如权利要求4所述的系统,其中所述接口引擎还被配置为:
动态地监测所述消息流中的代码;以及
响应于检测到所述消息流中的代码,确定所述代码编辑面板中的对应代码。
17.如权利要求16所述的系统,其中所述确定所述代码编辑面板中的对应代码的动作包括:
执行基于启发式的搜索算法,以基于在所述消息流中检测到的所述代码标识所述对应代码。
18.一种用于增强软件开发环境的计算机实现的方法,所述方法包括:
由至少一个处理器管理对代码存储库和版本控制应用的访问;
由所述至少一个处理器生成集成到代码编辑器和代码导航显示器(例如,代码树、代码列表等)中的通信接口;以及
由所述至少一个处理器存储基于用户的通信以及与用于相应的基于用户的通信的一个或多个代码行或代码文件的关联。
19.如权利要求18所述的方法,所述方法还包括由所述至少一个处理器将可执行程序集成到现有的集成开发环境(“IDE”)应用(例如,应用或服务)中。
20.如权利要求19所述的方法,其中所述可执行程序包括IDE应用的插件或扩展。
21.如权利要求18所述的方法,所述方法还包括由所述至少一个处理器结合代码编辑面板生成通信面板,其中所述通信面板被配置为显示与所述代码编辑面板中显示的代码相关联的消息流。
22.如权利要求21所述的方法,所述方法还包括显示用于接受用户地址的通信接口和用于传达基于用户的消息的文本。
23.如权利要求22所述的方法,所述方法还包括:
确定所述基于用户的消息是否与代码块(例如,改变的代码块、孤立的代码块等)相关;以及
响应于确定所述基于用户的消息与具体代码块相关,在所述通信面板中可视地区分所述基于用户的消息,以向所述用户指示这种关系。
24.如权利要求21所述的方法,所述方法还包括:
在所述代码编辑面板中接收对所述代码的修改(例如,添加另外的代码、删除、重新编号、移动);以及
响应于接收到所述修改,存储用于保持修改后的代码和与所述代码编辑面板中的所述代码相关联的消息流之间的通信线程链接的元数据。
25.如权利要求24所述的方法,其中所述保持动作还包括:
在所述元数据中存储所述代码编辑面板中的所述代码的第一标识和/或所述修改后的代码的第二标识(例如,当所述修改后的代码被包括在所述代码存储库中时)。
26.如权利要求25所述的方法,其中所述第一标识和所述第二标识中的一者或两者是提交标识。
27.如权利要求24所述的方法,其中所述保持动作还包括:
标识所述消息流中所述基于用户的消息的接收方;以及
在所述元数据中注释关于所述基于用户的消息的所述接收方。
28.如权利要求27所述的方法,其中所述标识所述消息流中的所述基于用户的消息的所述接收方的动作包括:
在所述基于用户的消息的目标用户与所述基于用户的消息中提到的另一个用户之间进行区分;以及
选择所述目标用户作为所述基于用户的消息的所述接收方。
29.如权利要求24所述的方法,其中所述保持动作还包括:
确定所述修改是否包括删除所述代码编辑面板中的所述代码的至少一部分;以及
响应于确定所述修改包括删除:
在所述代码编辑面板中可视地指示对应于所述删除后的代码的部分;以及
在所述元数据中存储对应于所述删除后的代码的所述消息流中的一个或多个基于用户的消息。
30.如权利要求24所述的方法,所述方法还包括:
由所述至少一个处理器生成用户接口面板,所述用户接口面板被配置为显示所述代码编辑面板中的所述代码和所述接收到的对所述代码的修改之间的一个或多个差异。
31.如权利要求24所述的方法,所述方法还包括:
由所述至少一个处理器生成用户接口面板,所述用户接口面板被配置为显示应用功能,以基于所述接收到的对所述代码的修改来更改所述编辑面板中的所述代码。
32.如权利要求31所述的方法,其中所述用户接口面板还被配置为显示恢复功能,以将所述编辑面板中的所述代码恢复到所述代码被更改之前的版本。
33.如权利要求21所述的方法,所述方法还包括:
动态地监测所述消息流中的代码;以及
响应于检测到所述消息流中的代码,确定所述代码编辑面板中的对应代码。
34.如权利要求33所述的方法,其中所述确定所述代码编辑面板中的所述对应代码的动作包括:
执行基于启发式的搜索算法,以基于在所述消息流中检测到的所述代码标识所述对应代码。
35.一种用于增强软件开发环境的通信系统,所述系统包括:
至少一个处理器,其可操作地连接到存储器;
差异引擎,其由所述至少一个处理器执行,所述至少一个处理器被配置为动态地管理随时间进行的和用户之间的代码更改,所述差异引擎被配置为:
存储与代码更改相关联的元数据,所述元数据至少指定与代码更改相关联的代码块;以及
当所述代码块的实例被修改(例如,添加另外的代码、删除、重新编号、移动)时,保持与所述代码块的关联,其中所述保持动作包括重新分配所述代码块的开始和/或结束以包括新代码、删除的旧代码或移动的旧代码的动作。
36.如权利要求35所述的系统,其中所述差异引擎还被配置为:
标识与所述第一用户相关联的所述代码块的第一版本的实例和与第二用户相关联的所述代码块的第二版本的实例之间的一个或多个差异,
其中所述标识动作包括响应于至少分析所述元数据,确定在存储所述第一版本的本地实例之后是否已经修改了所述第一版本的所述实例(例如,活动副本)。
37.如权利要求36所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述本地实例之后尚未修改所述第一版本的所述实例(例如,自从最后保存的副本以来,活动副本尚未被编辑),确定在存储所述第一版本的远程实例之后是否已经修改了所述第一版本的所述本地实例。
38.如权利要求37所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述远程实例之后尚未修改所述第一版本的所述本地实例(例如,自从最后提交的副本以来,保存的副本尚未被编辑),确定所述第一版本的所述远程实例是否对应于所述第二版本的远程实例。
39.如权利要求38所述的系统,其中所述标识动作还包括:
响应于确定所述第一版本的所述远程实例对应于所述第二版本的所述远程实例(例如,两个提交的副本都属于代码存储库中的相同的控制版本),确定在存储所述第二版本的所述远程实例之后是否已经修改了所述第二版本的所述本地实例。
40.如权利要求39所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述远程实例之后尚未修改所述第二版本的所述本地实例(例如,自从最后提交的副本以来保存的副本尚未被编辑),确定在存储所述第二版本的所述本地实例之后是否已经修改了所述第二版本的所述可视化实例。
41.如权利要求40所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述本地实例之后尚未修改所述第二版本的所述可视化实例(例如,自从最后保存的副本以来,活动副本尚未被编辑),生成在所述第一版本的所述实例和所述第二版本的所述可视化实例之间尚未标识出差异的指示以用于显示。
42.如权利要求41所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述本地实例之后已经修改了所述第一版本的所述实例,确定所述第一版本的所述本地实例和所述第一版本的所述实例之间的第一组差异(例如,活动副本和最后保存的副本之间的差异)。
43.如权利要求42所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述远程实例之后已经修改了所述第一版本的所述本地实例,确定所述第一版本的所述远程实例和所述第一组差异之间的第二组差异(例如,考虑最后提交的副本和保存的副本之间的差异)。
44.如权利要求43所述的系统,其中所述标识动作还包括:
响应于确定所述第一版本的所述远程实例不对应于所述第二版本的所述远程实例,确定所述第二版本的所述远程实例和所述第二组差异之间的第三组差异(例如,考虑两个提交的副本中的差异,例如,因为它们属于代码存储库中的不同控制版本)。
45.如权利要求44所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述远程实例之后已经修改了所述第二版本的所述本地实例,确定所述第二版本的所述本地实例和所述第三组差异之间的第四组差异(例如,考虑最后提交的副本和保存的副本之间的差异)。
46.如权利要求45所述的系统,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述本地实例之后已经修改了所述第二版本的所述可视化实例,确定所述第二版本的所述可视化实例和所述第四组差异之间的第五组差异(例如,考虑最后保存的副本和活动副本之间的差异)。
47.如权利要求46所述的系统,其中所述差异引擎还被配置为:
由所述至少一个处理器生成用户接口面板,所述用户接口面板被配置为显示所述代码块的所述第一版本与所述代码块的所述第二版本之间的所述一个或多个差异。
48.如权利要求47所述的系统,其中所述差异引擎还被配置为:
基于所述第五组差异,生成所述代码块的所述第一版本的所述实例和所述代码块的所述第二版本的所述可视化实例之间的一个或多个差异,以在所述用户接口面板中显示。
49.如权利要求48所述的系统,其中所述生成一个或多个差异以在所述用户接口面板中显示的动作包括:
生成所述第一版本的所述实例和所述第二版本的所述可视化实例中的一者或两者,以在所述用户接口面板中向所述第一用户显示;以及
基于所述第五组差异,注释所述第一版本的所述实例和所述第二版本的所述可视化实例之间的每个差异,以在所述用户接口面板中显示。
50.如权利要求47所述的系统,其中所述差异引擎还被配置为:
生成用于在所述用户接口面板中向所述第一用户显示的应用功能(例如,应用补丁),以更改与所述第一用户相关联的所述代码块的所述第一版本的所述实例,以符合与所述第二用户相关联的所述代码块的所述第二版本。
51.如权利要求50所述的系统,其中所述差异引擎还被配置为:
生成用于在所述用户接口面板中向所述第一用户显示的恢复功能(例如,恢复补丁)以恢复到所述代码块的所述第一版本的所述实例。
52.如权利要求47所述的系统,其中所述差异引擎还被配置为:
生成用于在所述用户接口面板中向所述第二用户显示的选项(例如,应用补丁),以更改与所述第二用户相关联的所述代码块的所述第二版本,以符合与所述第一用户相关联的所述代码块的所述第一版本的所述实例。
53.如权利要求52所述的系统,其中所述差异引擎还被配置为:
生成用于在所述用户接口面板中向所述第二用户显示的恢复功能(例如,恢复补丁)以恢复到所述代码块的所述第二版本的所述可视化实例。
54.一种用于增强软件开发环境的计算机实现的方法,所述方法包括:
由至少一个处理器存储与代码更改相关联的元数据,所述元数据至少指定与代码更改相关联的代码块;以及
当所述代码块的实例被修改(例如,添加另外的代码、删除、重新编号、移动)时,由所述至少一个处理器保持与所述代码块的关联,其中所述保持动作包括重新分配所述代码块的开始和/或结束以包括新代码、删除的旧代码或移动的旧代码的动作。
55.如权利要求54所述的方法,所述方法还包括:
标识与第一用户相关联的所述代码块的第一版本的所述实例和与第二用户相关联的所述代码块的第二版本的实例之间的一个或多个差异,
其中所述标识动作包括响应于至少分析所述元数据,确定在存储所述第一版本的本地实例之后是否已经修改了所述第一版本的所述实例(例如,活动副本)。
56.如权利要求55所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述本地实例之后尚未修改所述第一版本的所述实例(例如,自从最后保存的副本以来,活动副本尚未被编辑),确定在存储所述第一版本的远程实例之后是否已经修改了所述第一版本的所述本地实例。
57.如权利要求56所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述远程实例之后尚未修改所述第一版本的所述本地实例(例如,自从最后提交的副本以来,保存的副本尚未被编辑),确定所述第一版本的所述远程实例是否对应于所述第二版本的所述远程实例。
58.如权利要求57所述的方法,其中所述标识动作还包括:
响应于确定所述第一版本的所述远程实例对应于所述第二版本的所述远程实例(例如,两个提交的副本都属于代码存储库中的相同的控制版本),确定在存储所述第二版本的所述远程实例之后是否已经修改了所述第二版本的所述本地实例。
59.如权利要求58所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述远程实例之后尚未修改所述第二版本的所述本地实例(例如,自从最后提交的副本以来,保存的副本尚未被编辑),确定在存储所述第二版本的所述本地实例之后是否已经修改了所述第二版本的所述可视化实例。
60.如权利要求59所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述本地实例之后尚未修改所述第二版本的所述可视化实例(例如,自从最后保存的副本以来,活动副本尚未被编辑),生成在所述第一版本的所述实例和所述第二版本的所述可视化实例之间尚未标识出差异的指示以用于显示。
61.如权利要求60所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述本地实例之后已经修改了所述第一版本的所述实例,确定所述第一版本的所述本地实例和所述第一版本的所述实例之间的第一组差异(例如,活动副本和最后保存的副本之间的差异)。
62.如权利要求61所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第一版本的所述远程实例之后已经修改了所述第一版本的所述本地实例,确定所述第一版本的所述远程实例和所述第一组差异之间的第二组差异(例如,考虑最后提交的副本和保存的副本之间的差异)。
63.如权利要求62所述的方法,其中所述标识动作还包括:
响应于确定所述第一版本的所述远程实例不对应于所述第二版本的所述远程实例,确定所述第二版本的所述远程实例和所述第二组差异之间的第三组差异(例如,考虑两个提交的副本中的差异,例如,因为它们属于代码存储库中的不同控制版本)。
64.如权利要求63所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述远程实例之后已经修改了所述第二版本的所述本地实例,确定所述第二版本的所述本地实例和所述第三组差异之间的第四组差异(例如,考虑最后提交的副本和保存的副本之间的差异)。
65.如权利要求64所述的方法,其中所述标识动作还包括:
响应于确定在存储所述第二版本的所述本地实例之后已经修改了所述第二版本的所述可视化实例,确定所述第二版本的所述可视化实例和所述第四组差异之间的第五组差异(例如,考虑最后保存的副本和活动副本之间的差异)。
66.如权利要求65所述的方法,所述方法还包括:
由所述至少一个处理器生成用户接口面板,所述用户接口面板被配置为显示所述代码块的所述第一版本与所述代码块的所述第二版本之间的所述一个或多个差异。
67.如权利要求66所述的方法,所述方法还包括:
基于所述第五组差异,生成所述代码块的所述第一版本的所述实例和所述代码块的所述第二版本的所述可视化实例之间的一个或多个差异,以在所述用户接口面板中显示。
68.如权利要求67所述的方法,其中所述生成一个或多个差异以在所述用户接口面板中显示的动作包括:
生成所述第一版本的所述实例和所述第二版本的所述可视化实例中的一者或两者,以在所述用户接口面板中向所述第一用户显示;以及
基于所述第五组差异,注释所述第一版本的所述实例和所述第二版本的所述可视化实例之间的每个差异,以在所述用户接口面板中显示。
69.如权利要求66所述的方法,所述方法还包括:
生成用于在所述用户接口面板中向所述第一用户显示的应用功能(例如,应用补丁),以更改与所述第一用户相关联的所述代码块的所述第一版本的所述实例,以符合与所述第二用户相关联的所述代码块的所述第二版本。
70.如权利要求69所述的方法,所述方法还包括:
生成用于在所述用户接口面板中向所述第一用户显示的恢复功能(例如,恢复补丁)以恢复到所述代码块的所述第一版本的所述实例。
71.如权利要求66所述的方法,所述方法还包括:
生成用于在所述用户接口面板中向所述第二用户显示的选项(例如,应用补丁),以更改与所述第二用户相关联的所述代码块的所述第二版本,以符合与所述第一用户相关联的所述代码块的所述第一版本的所述实例。
72.如权利要求71所述的方法,所述方法还包括:
生成用于在所述用户接口面板中向所述第二用户显示的恢复功能(例如,恢复补丁)以恢复到所述代码块的所述第二版本的所述可视化实例。
CN201880068346.1A 2017-08-22 2018-08-22 用于在集成开发环境内提供即时通信信道的系统和方法 Active CN111602114B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762548776P 2017-08-22 2017-08-22
US62/548,776 2017-08-22
US201862626575P 2018-02-05 2018-02-05
US62/626,575 2018-02-05
US201862659346P 2018-04-18 2018-04-18
US62/659,346 2018-04-18
PCT/US2018/047404 WO2019040543A1 (en) 2017-08-22 2018-08-22 SYSTEMS AND METHODS FOR PROVIDING AN INSTANT COMMUNICATION CHANNEL IN INTEGRATED DEVELOPMENT ENVIRONMENTS

Publications (2)

Publication Number Publication Date
CN111602114A true CN111602114A (zh) 2020-08-28
CN111602114B CN111602114B (zh) 2023-12-12

Family

ID=65439860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880068346.1A Active CN111602114B (zh) 2017-08-22 2018-08-22 用于在集成开发环境内提供即时通信信道的系统和方法

Country Status (6)

Country Link
US (3) US10782937B2 (zh)
EP (1) EP3673362A4 (zh)
CN (1) CN111602114B (zh)
AU (2) AU2018322049B2 (zh)
CA (1) CA3072458A1 (zh)
WO (1) WO2019040543A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301424B2 (en) * 2018-03-08 2022-04-12 Micah Mossman Interactive library system and method of interactive, real-time creation and customization
FI129828B (en) * 2018-05-11 2022-09-15 Valmet Technologies Oy Support arrangement for a steam boiler
US11277261B2 (en) * 2018-09-21 2022-03-15 Netiq Corporation Blockchain-based tracking of program changes
US11436005B2 (en) * 2019-04-30 2022-09-06 Salesforce.Com, Inc. Generic integrated development environment extension tool for design systems
US11262983B2 (en) * 2019-05-29 2022-03-01 Red Hat, Inc. Services integration in an integrated development environment
US10990514B2 (en) 2019-08-06 2021-04-27 Red Hat, Inc. Detecting problematic code changes
US10838716B1 (en) * 2019-11-19 2020-11-17 Capital One Services, Llc Automated dependency detection and response
CN113032004B (zh) * 2019-12-09 2024-05-24 伊姆西Ip控股有限责任公司 在开发环境中管理开发作业的方法、设备和程序产品
CN113064590B (zh) * 2019-12-26 2023-10-27 腾讯科技(深圳)有限公司 互动视频中互动组件的处理方法及装置
US11526350B2 (en) * 2020-03-18 2022-12-13 Red Hat, Inc. Providing code editor documentation pages using a lightweight text formatting language and platform-agnostic command links
US20210303297A1 (en) * 2020-03-27 2021-09-30 Atlassian Pty Ltd. Systems and methods for remote code review
US11354118B2 (en) 2020-06-05 2022-06-07 Cross Vista, Inc. Version control system
US11294664B2 (en) * 2020-06-05 2022-04-05 CrossVista, Inc. Version control system
US11232097B1 (en) * 2020-06-08 2022-01-25 Sprint Communications Company L.P. Ordering commits of code in multi-branch parallel development projects
US11347500B2 (en) * 2020-06-17 2022-05-31 Bank Of America Corporation Software code converter for resolving conflicts during code development
US11379207B2 (en) * 2020-08-21 2022-07-05 Red Hat, Inc. Rapid bug identification in container images
US11513792B2 (en) * 2020-09-30 2022-11-29 Izuma Tech, Inc. Tracking history of firmware program updates
US11900105B2 (en) * 2020-11-25 2024-02-13 Red Hat, Inc. Code review system with development environment integration
JP7150002B2 (ja) * 2020-12-29 2022-10-07 マーク マリアン ヴァシレ ソフトウェア開発支援システム、ソフトウェア開発支援サーバ及びソフトウェア開発支援プログラム
US11847444B2 (en) 2020-12-30 2023-12-19 S.T. Swimm Tech Ltd Automatically updating documentation
US11132193B1 (en) * 2020-12-30 2021-09-28 S.T. Swimm Tech Ltd Automatically updating documentation
US11625683B2 (en) * 2021-01-14 2023-04-11 Rockwell Automation Technologies, Inc. System and method of industrial automation multi-developer control code change commits
US11609750B2 (en) 2021-01-25 2023-03-21 Rockwell Automation Technologies, Inc. Industrial automation multi-developer control code synchronization
US11200052B1 (en) * 2021-02-05 2021-12-14 American Express Travel Related Service Company, Inc Documentation enforcement during compilation
US11656866B2 (en) 2021-03-19 2023-05-23 Rockwell Automation Technologies, Inc. Industrial automation distributed project control with milestone rollback
US11656855B2 (en) * 2021-06-14 2023-05-23 International Business Machines Corporation Identify, suggest, and auto-implement best practices for requirement specific software development
IL311651A (en) * 2021-09-22 2024-05-01 S T Swimm Tech Ltd Automatic document update

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050097508A1 (en) * 2003-10-29 2005-05-05 International Business Machines Corporation Collaborative development environments for software
US20060026251A1 (en) * 2004-07-27 2006-02-02 International Business Machines Corporation Method, system and program product for annotating a development artifact
CN101647009A (zh) * 2007-03-19 2010-02-10 微软公司 在团队环境中使用协作性开发信息
US20100050154A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation System, method and program product for guiding correction of semantic errors in code using collaboration records
US20110023007A1 (en) * 2009-07-23 2011-01-27 Ibm Corporation Associating Workflows With Code Sections In A Document Control System
CN101997784A (zh) * 2009-08-17 2011-03-30 埃森哲环球服务有限公司 用于将特定用户定向到讨论链的系统
CN102567838A (zh) * 2010-12-30 2012-07-11 中国移动通信集团公司 一种协同开发系统及协同开发方法
CN102681835A (zh) * 2010-12-20 2012-09-19 微软公司 代码克隆通知以及体系结构改变可视化
CN104350475A (zh) * 2012-06-07 2015-02-11 微软公司 可视化的代码审阅
CN104969177A (zh) * 2012-12-11 2015-10-07 惠普发展公司,有限责任合伙企业 供给用于应用开发的工具
US20160004529A1 (en) * 2014-07-03 2016-01-07 Steven Qian Xia Integration of social networks with integrated development environment (ide)

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6993710B1 (en) * 1999-10-05 2006-01-31 Borland Software Corporation Method and system for displaying changes of source code
US7810069B2 (en) * 1999-10-05 2010-10-05 Borland Software Corporation Methods and systems for relating data structures and object-oriented elements for distributed computing
US20030163801A1 (en) 2001-10-31 2003-08-28 Metacyber.Net Computer-based method for defining a patch in computer source code including conditional compilation cell groups
US7395312B2 (en) * 2003-04-08 2008-07-01 Microsoft Corporation Integrating online community and program development environments
US20050114475A1 (en) * 2003-11-24 2005-05-26 Hung-Yang Chang System and method for collaborative development environments
US20060041440A1 (en) * 2004-08-20 2006-02-23 International Business Machines Corporation Method, system and program product for managing a project
JP4491035B2 (ja) * 2006-03-24 2010-06-30 パナソニック株式会社 再生装置、デバッグ装置、システムlsi、プログラム
US8407670B2 (en) * 2006-06-02 2013-03-26 Microsoft Corporation Collaborative code conflict detection, notification and resolution
US20080005235A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Collaborative integrated development environment using presence information
US9207933B2 (en) * 2006-10-10 2015-12-08 International Business Machines Corporation Identifying authors of changes between multiple versions of a file
US20080134298A1 (en) * 2006-12-04 2008-06-05 Microsoft Corporation Integrated development environment with community integration
US20080244418A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Distributed multi-party software construction for a collaborative work environment
US8032858B2 (en) * 2007-08-28 2011-10-04 International Business Machines Corporation Method and system for navigationally displaying HTTP session entry and exit points
US8495100B2 (en) * 2007-11-15 2013-07-23 International Business Machines Corporation Semantic version control system for source code
US9218166B2 (en) * 2008-02-20 2015-12-22 Embarcadero Technologies, Inc. Development system with improved methodology for creation and reuse of software assets
US10229389B2 (en) * 2008-02-25 2019-03-12 International Business Machines Corporation System and method for managing community assets
US8453112B1 (en) * 2008-11-13 2013-05-28 Adobe Systems Incorporated Systems and methods for collaboratively creating applications using a multiple source file project that can be accessed and edited like a single file
US20110296372A1 (en) * 2009-08-21 2011-12-01 Terrance Joseph Bird Deployment environment systems, methods, and apparatuses for developing applications and diagnostic price and/or time quote determination systems, methods, and apparatuses for application development services
US20110099549A1 (en) * 2009-10-27 2011-04-28 Verizon Patent And Licensing Inc. Methods, systems and computer program products for a reminder manager for project development
US20120210298A1 (en) * 2011-02-10 2012-08-16 International Business Machines Corporation Locating changes in source code
US9595009B2 (en) 2011-06-29 2017-03-14 International Business Machines Corporation Code reviewer selection in a distributed software development environment
US20130111428A1 (en) * 2011-10-26 2013-05-02 Microsoft Corporation Graphical user interface for integrated development environment tool
US20130124268A1 (en) * 2011-11-10 2013-05-16 James Hatton Systems and methods for identifying experts
US10503822B1 (en) * 2012-03-02 2019-12-10 Apparity, LLC Application tracking, auditing and collaboration systems and methods
US20140047413A1 (en) * 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications
US20140068545A1 (en) * 2012-08-28 2014-03-06 Sap Portals Israel Ltd Managing Social Process of Developing Application
US20140075364A1 (en) * 2012-09-13 2014-03-13 Microsoft Corporation Capturing Activity History Stream
US9632771B2 (en) * 2012-12-13 2017-04-25 Microsoft Technology Licensing, Llc Association of metadata with source code and applications and services premised thereon
US9086885B2 (en) * 2012-12-21 2015-07-21 International Business Machines Corporation Reducing merge conflicts in a development environment
US9269076B2 (en) 2013-03-15 2016-02-23 International Business Machines Corporation Techniques to facilitate collaborative social coding
EP2784673A1 (en) * 2013-03-28 2014-10-01 Alcatel Lucent Scheduling
US20150040101A1 (en) * 2013-08-05 2015-02-05 Sap Ag Collaborative Awareness in Software Development
US9507609B2 (en) * 2013-09-29 2016-11-29 Taplytics Inc. System and method for developing an application
US20150301806A1 (en) * 2014-04-16 2015-10-22 The Mathworks, Inc. Tentative program code in an editor
US20160048486A1 (en) 2014-08-13 2016-02-18 R-Corporation Multi-user stream collaborative document editing tool
US20180012181A1 (en) * 2014-08-18 2018-01-11 Kelly Coyle Blincoe Method of collaborative software development
US9348562B2 (en) * 2014-08-25 2016-05-24 International Business Machines Corporation Correcting non-compliant source code in an integrated development environment
US9910837B2 (en) * 2014-08-27 2018-03-06 International Business Machines Corporation Controlling generation of change notifications in a collaborative authoring environment
US9703552B2 (en) * 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9823904B2 (en) * 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US10095509B2 (en) * 2015-02-04 2018-10-09 Sap Se Supporting developer-user collaborative software review in IDE
US9898172B2 (en) * 2015-09-25 2018-02-20 Dropbox, Inc. Content item activity feed for presenting events associated with content items
US9652225B1 (en) * 2016-01-04 2017-05-16 International Business Machines Corporation Development community assessment via real-time workspace monitoring
US10382502B2 (en) * 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
US20170357486A1 (en) * 2016-06-10 2017-12-14 International Business Machines Corporation Enhancing a crowdsourced integrated development environment application
US10061578B2 (en) * 2016-08-10 2018-08-28 Fmr Llc System and method of configuring a data store for tracking and auditing real-time events across different software development tools in agile development environments
US20180053119A1 (en) * 2016-08-16 2018-02-22 Rulai, Inc. Method and system for semi-supervised learning in generating knowledge for intelligent virtual agents
US20180052664A1 (en) * 2016-08-16 2018-02-22 Rulai, Inc. Method and system for developing, training, and deploying effective intelligent virtual agent
US10402311B2 (en) * 2017-06-29 2019-09-03 Microsoft Technology Licensing, Llc Code review rebase diffing
US10789151B2 (en) * 2018-01-08 2020-09-29 Ozcode Ltd Time travel source code debugger incorporating pivoting ability
US10754645B2 (en) * 2018-03-02 2020-08-25 Microsoft Technology Licensing, Llc Displaying results of a codebase analysis service
US20190303140A1 (en) * 2018-03-30 2019-10-03 Ca, Inc. Source code peer review matchmaking

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050097508A1 (en) * 2003-10-29 2005-05-05 International Business Machines Corporation Collaborative development environments for software
US20060026251A1 (en) * 2004-07-27 2006-02-02 International Business Machines Corporation Method, system and program product for annotating a development artifact
CN101647009A (zh) * 2007-03-19 2010-02-10 微软公司 在团队环境中使用协作性开发信息
US20100050154A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation System, method and program product for guiding correction of semantic errors in code using collaboration records
US20110023007A1 (en) * 2009-07-23 2011-01-27 Ibm Corporation Associating Workflows With Code Sections In A Document Control System
CN101997784A (zh) * 2009-08-17 2011-03-30 埃森哲环球服务有限公司 用于将特定用户定向到讨论链的系统
CN102681835A (zh) * 2010-12-20 2012-09-19 微软公司 代码克隆通知以及体系结构改变可视化
CN102567838A (zh) * 2010-12-30 2012-07-11 中国移动通信集团公司 一种协同开发系统及协同开发方法
CN104350475A (zh) * 2012-06-07 2015-02-11 微软公司 可视化的代码审阅
CN104969177A (zh) * 2012-12-11 2015-10-07 惠普发展公司,有限责任合伙企业 供给用于应用开发的工具
US20160004529A1 (en) * 2014-07-03 2016-01-07 Steven Qian Xia Integration of social networks with integrated development environment (ide)

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
LI-TE CHENG: "Building Collaboration into IDEs", pages 40 - 50 *
NATALIYA MURIY: "CodeTogether — Collaborative Development Made Possible for IDE Work", pages 1 - 3, Retrieved from the Internet <URL:《https://www.genuitec.com/codetogether-collaborative-development-made-possible-ide-work/》> *
SOROUSH GHORASHI等: "Jimbo: A Collaborative IDE with Live Preview", 《2016 IEEE/ACM COOPERATIVE AND HUMAN ASPECTS OF SOFTWARE ENGINEERING (CHASE)》, pages 1 - 4 *
WEIXIN_30419799: "IDETalk", pages 1 - 9, Retrieved from the Internet <URL:《https://blog.csdn.net/weixin_30419799/article/details/97170791》> *
朱怡嘉: "CI平台下的Web自动化测试的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 138 - 1926 *

Also Published As

Publication number Publication date
US11567736B2 (en) 2023-01-31
WO2019040543A1 (en) 2019-02-28
CN111602114B (zh) 2023-12-12
US10782937B2 (en) 2020-09-22
AU2018322049B2 (en) 2023-11-16
AU2018322049A1 (en) 2020-03-05
US20200379737A1 (en) 2020-12-03
US20200192638A1 (en) 2020-06-18
CA3072458A1 (en) 2019-02-28
EP3673362A4 (en) 2021-05-26
EP3673362A1 (en) 2020-07-01
US20230176830A1 (en) 2023-06-08
AU2024200596A1 (en) 2024-02-22

Similar Documents

Publication Publication Date Title
CN111602114B (zh) 用于在集成开发环境内提供即时通信信道的系统和方法
US11513793B2 (en) Systems and methods for providing an instant communication channel within integrated development environments
US10747952B2 (en) Automatic creation and server push of multiple distinct drafts
US9245256B2 (en) Assigning and managing reviews of a computing file
CN104620221A (zh) 捕捉活动历史流
US10055302B2 (en) Performing a closure merge operation
CN104572067A (zh) 用于由源代码指定的用户界面的可视化的方法和系统
US11514237B2 (en) Spreadsheet and method for updating same
US20210263833A1 (en) Code Generation Platform with Debugger
Bao et al. Activityspace: a remembrance framework to support interapplication information needs
US20120311538A1 (en) Capturing Rich Actionable Feedback on Working Software
US10580177B2 (en) Visualization of provenance data
US20140189526A1 (en) Changing log file content generation
US9495151B1 (en) Automatic comment creation for computer files
US10261663B2 (en) Mandatory comment on action or modification
JP4180099B2 (ja) シーケンス解析プログラムを記録した記録媒体、シーケンス解析装置およびシーケンス解析方法
US20190005009A1 (en) Customized version labeling for electronic documents

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