Modern, complex software systems are being continuously extended and adjusted. The developers responsible for this may come from different teams or organizations, and may be distributed over the world. This may make it difficult to keep track of what other developers are doing, which may result in multiple developers concurrently editing the same code areas. This, in turn, may lead to hard-to-merge changes or even merge conflicts, logical bugs that are difficult to detect, duplication of work, and wasted developer productivity. To address this, we explore the extent of this problem in the pull request based software development model. We study half a year of changes made to six large repositories in Microsoft in which at least 1,000 pull requests are created each month. We find that files concurrently edited in different pull requests are more likely to introduce bugs. Motivated by these findings, we design, implement, and deploy a service named ConE (Concurrent Edit Detector) that proactively detects pull requests containing concurrent edits, to help mitigate the problems caused by them. ConE has been designed to scale, and to minimize false alarms while still flagging relevant concurrently edited files. Key concepts of ConE include the detection of the Extent of Overlap between pull requests, and the identification of Rarely Concurrently Edited Files. To evaluate ConE, we report on its operational deployment on 234 repositories inside Microsoft. ConE assessed 26,000 pull requests and made 775 recommendations about conflicting changes, which were rated as useful in over 70% (554) of the cases. From interviews with 48 users we learned that they believed ConE would save time in conflict resolution and avoiding duplicate work, and that over 90% intend to keep using the service on a daily basis.
翻译:现代、复杂的软件系统正在不断扩展和调整。 负责这一问题的开发者可能来自不同的团队或组织, 并可能分布在世界各地。 这可能使得很难跟踪其他开发者正在做什么, 这可能导致多个开发者同时编辑相同的代码领域。 这反过来可能导致难以合并的修改, 甚至合并冲突、 逻辑错误, 难以检测、 重复工作、 浪费开发者生产率。 为了解决这个问题, 我们探索基于调试软件开发模型中的问题程度。 我们研究对微软的六个大型存储器的修改半年, 其中每个月至少产生1 000个调试请求。 我们发现, 在不同调试运行请求中同时编辑的文档更有可能引入错误。 受这些发现的影响, 我们设计、 实施和部署一个名为 ConE (Contit 探测器) 的服务, 积极主动地检测包含同步编辑请求的拉动请求, 帮助缓解这些请求造成的问题。 7E 设计用于扩大和尽量减少错误的提醒, 同时标定相关文档的90个用户。 ConE 的关键概念, 使用对调 E 系统内部的升级, 评估, 运行 运行 运行中, 运行中, 运行 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 运行中 。