Developers create software branches for tentative feature addition and bug fixing, and periodically merge branches to release software with new features or repairing patches. When the program edits from different branches textually overlap (i.e., textual conflicts), or the co-application of those edits lead to compilation or runtime errors (i.e., compiling or dynamic conflicts), it is challenging and time-consuming for developers to eliminate merge conflicts. Prior studies examined %the popularity of merge conflicts and how conflicts were related to code smells or software development process; tools were built to find and solve conflicts. However, some fundamental research questions are still not comprehensively explored, including (1) how conflicts were introduced, (2) how developers manually resolved conflicts, and (3) what conflicts cannot be handled by current tools. For this paper, we took a hybrid approach that combines automatic detection with manual inspection to reveal 204 merge conflicts and their resolutions in 15 open-source repositories. %in the version history of 15 open-source projects. Our data analysis reveals three phenomena. First, compiling and dynamic conflicts are harder to detect, although current tools mainly focus on textual conflicts. Second, in the same merging context, developers usually resolved similar textual conflicts with similar strategies. Third, developers manually fixed most of the inspected compiling and dynamic conflicts by similarly editing the merged version as what they did for one of the branches. Our research reveals the challenges and opportunities for automatic detection and resolution of merge conflicts; it also sheds light on related areas like systematic program editing and change recommendation.


翻译:开发者创建软件分支, 用于临时添加特性和纠正错误, 并定期合并分支, 以发布带有新特性或修补补补补补补补的软件。 当程序编辑不同分支的文本重叠( 文本冲突) 或这些编辑共同应用导致编译或运行错误( 汇编或动态冲突) 时, 开发者要消除合并冲突既具有挑战性和耗时性。 先前的研究检查合并冲突的流行程度, 以及冲突与代码气味或软件开发过程的关系; 建立工具以查找和解决冲突。 但是, 一些基本研究问题仍未得到全面探讨, 包括:(1) 冲突是如何引入的, (2) 开发者如何手工解决冲突, 以及 (3) 现有工具无法处理的冲突。 对于本文,我们采取了一种混合方法, 将自动检测与手动检查结合起来, 以揭示204个合并的冲突及其在15个开放源储存库中的决议。% 在15个公开源项目版本的历史中, 我们的数据分析揭示了三种现象。 首先, 汇编和动态的编辑冲突和动态冲突更难探测, 尽管当前的工具主要侧重于文字冲突。 第二, 合并背景背景, 在相同的背景中, 的合并背景下, 开发者通常以固定的校正动的校正型的校正的校程的校验程 的校验程 。

0
下载
关闭预览

相关内容

【如何做研究】How to research ,22页ppt
专知会员服务
108+阅读 · 2021年4月17日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
76+阅读 · 2020年7月26日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
LibRec 精选:连通知识图谱与推荐系统
LibRec智能推荐
3+阅读 · 2018年8月9日
已删除
将门创投
10+阅读 · 2018年5月2日
人工智能 | 国际会议/SCI期刊约稿信息9条
Call4Papers
3+阅读 · 2018年1月12日
【计算机类】期刊专刊/国际会议截稿信息6条
Call4Papers
3+阅读 · 2017年10月13日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
Arxiv
3+阅读 · 2018年12月18日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
VIP会员
相关资讯
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
LibRec 精选:连通知识图谱与推荐系统
LibRec智能推荐
3+阅读 · 2018年8月9日
已删除
将门创投
10+阅读 · 2018年5月2日
人工智能 | 国际会议/SCI期刊约稿信息9条
Call4Papers
3+阅读 · 2018年1月12日
【计算机类】期刊专刊/国际会议截稿信息6条
Call4Papers
3+阅读 · 2017年10月13日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
Top
微信扫码咨询专知VIP会员