Merge-Bench
收藏arXiv2026-05-25 更新2026-05-27 收录
下载链接:
https://github.com/benedikt-schesch/Merge-Bench-Builder
下载链接
链接失效反馈官方服务:
资源简介:
Merge-Bench是由亚马逊和华盛顿大学的研究团队构建的用于评估大语言模型解决版本控制合并冲突能力的基准数据集。该数据集包含从1439个GitHub公开仓库中提取的7938个真实合并冲突片段,覆盖11种编程语言,每个冲突片段均包含左、右、基版本文本及开发者提交的解决方案作为真实标签。数据集的构建过程完全自动化,通过分析仓库分支历史、利用Git工具重放合并操作并应用严格的过滤规则(如上下文行数限制、令牌数约束)来确保数据质量,无需任何人工标注。该数据集旨在为自动化合并冲突解决工具提供训练与评估基础,推动软件工程中版本控制智能化的发展,解决传统合并工具难以处理的语义冲突问题。
Merge-Bench is a benchmark dataset developed by a research team from Amazon and the University of Washington, designed to evaluate the ability of large language models (LLMs) to resolve version control merge conflicts. This dataset comprises 7,938 real merge conflict snippets extracted from 1,439 public GitHub repositories, spanning 11 programming languages. Each conflict snippet contains the left, right, and base version texts, alongside the developer-submitted resolution as the ground-truth label. The entire dataset construction process is fully automated: it analyzes repository branch histories, replays merge operations via Git tools, and applies strict filtering criteria such as context line limits and token count constraints to guarantee data quality, with no manual annotation required at all. This dataset aims to provide a foundational resource for training and evaluating automated merge conflict resolution tools, advance the development of intelligent version control in software engineering, and address semantic conflict issues that conventional merge tools struggle to handle.
提供机构:
亚马逊; 华盛顿大学
创建时间:
2026-05-25
原始信息汇总
数据集概述:Merge-Bench-Builder
该工具包用于从Git仓库构建合并冲突数据集,旨在帮助研究人员和开发者研究合并冲突解决模式。
数据集可用性
- 预构建数据集:Merge-Bench 数据集已公开发布,地址为 https://github.com/benedikt-schesch/Merge-Bench/releases/tag/main。
- 覆盖范围:包含来自超过1000个仓库的11种编程语言的合并冲突。
核心功能
- 从Git历史中构建可定制的合并冲突数据集。
- 从真实仓库中提取和分析合并冲突。
- 按编程语言、星标数等标准过滤仓库。
- 计算冲突指标并分析解决模式。
- 支持多种数据集大小及可配置参数。
- 从Reaper数据集下载和处理仓库。
数据集构建流程
- 仓库选择:从Reaper数据集下载仓库元数据,按语言、星标数和质量指标过滤,并按指定标准采样。
- 合并冲突提取:克隆选定仓库,分析Git历史找到合并提交,提取合并冲突及其解决方案,处理冲突块和上下文。
- 数据集处理:清理和规范化冲突数据,计算指标和统计信息,将数据分割为训练/测试集,生成最终数据集文件。
- 过滤:验证提取的冲突,移除重复和低质量样本,确保格式和结构正确。
支持的语言
- C、C++、C#
- Python、Ruby、PHP
- JavaScript、TypeScript
- Go、Rust
构建脚本与使用
- 主脚本:
dataset_build_scripts/build_all_datasets.sh,用于为所有支持的语言构建数据集。 - 自定义采样:通过
src/sample_reaper_repos.py和src/download_github_repos.py实现高级自定义仓库采样。 - 脚本选项:
-g:运行仓库下载和冲突提取步骤。-m:计算数据集指标和统计信息。-b:构建最终处理后的数据集。
项目结构
dataset_build_scripts/:包含主构建脚本和按语言区分的脚本。src/:核心源代码,包含数据集构建、仓库下载、冲突提取、合并发现、冲突块处理和指标计算等模块。input_data/:输入数据集和仓库列表。merges/:生成的输出数据集目录。
许可证
该项目基于 MIT 许可证。
搜集汇总
数据集介绍

构建方式
Merge-Bench的构建始于从GitHub精选的1439个真实代码仓库,覆盖11种编程语言。通过自动化分析每个仓库的多达1000个分支(包括主分支、特性分支以及已删除分支),利用git重现合并过程来捕获合并冲突。每个冲突块(hunk)的上下文大小设定为20行,并确保不跨多个冲突。解析开发者最终提交的合并结果作为标准答案,同时剔除那些上下文行缺失或重复、以及分辨率代码长度超过左、基、右文本总和的冲突块。此外,基于计算资源限制,过滤掉文本行数超过20行或令牌数超过512的冲突块。这套全自动化的流水线无需任何人工标注,使得数据集构建具有高度的可扩展性。
特点
Merge-Bench的核心优势在于其真实性与可扩展性。所有冲突均源自广泛使用的高质量代码仓库,确保了问题场景的现实性。由于冲突的文本表示并非直接存在于互联网上,该数据集有效降低了数据泄露的风险。更重要的是,其完全自动化的构建与评估范式彻底规避了奖励黑客行为(reward hacking),即模型不会通过取巧手段(如通过测试套件)来获得高评分,而是直接评估代码生成的语义等价性。最终数据集包含7938个冲突块,每个冲突都提供了左、右、基版本以及开发者解决后的真实代码,并配有丰富的上下文信息,为评估合并冲突解决能力提供了坚实、无偏的基准。
使用方法
使用Merge-Bench时,研究者可直接将冲突块(包含上下文)作为输入提供给模型,要求其生成解决后的代码。评估采用测试免执行(test-free)范式,通过比较模型输出与开发者提交的解决代码来判定正确性。评估指标包括精确文本匹配和归一化源代码匹配(去除注释与格式化差异后比较),后者是更接近语义等价的实用衡量标准。该数据集支持零样本(zero-shot)提示,即无需提供示例。为便于广泛使用,数据集的构建代码、评估代码以及模型训练代码均已完全开源,研究者可根据自身需求,在不同编程语言子集上或对更大规模的数据集进行训练与评测。
背景与挑战
背景概述
在现代软件工程实践中,版本控制系统是团队协作的基石,然而当多人在同一代码区域进行并发修改时,便会触发合并冲突。这一问题长期以来消耗着开发者的大量精力,甚至成为软件缺陷的温床。为攻克这一难题,来自亚马逊与华盛顿大学的研究人员Benedikt Schesch与Michael D. Ernst于2026年构建了Merge-Bench数据集。该数据集从1439个真实GitHub仓库中精心采集了7938个实际合并冲突代码块,并以其开发者提交的最终解决方案作为真实标注。Merge-Bench的诞生,为利用大型语言模型(LLM)探索自动化合并冲突解决铺平了道路,其构建方法论具备高度可扩展性,无需人工标注,极大推动了实证软件工程与代码智能领域的交叉研究。
当前挑战
Merge-Bench所面临的挑战多维度而深刻。其一,在领域问题层面,合并冲突解决本身要求模型深入理解代码的语义与开发者意图,而不仅仅是处理语法差异,这与传统的图像分类或代码补全任务截然不同,先前的方法如MergeBERT、DeepMerge或基于测试套件的SWE-Bench,或受限于分类模式,或易陷入奖励破解陷阱,难以在真实场景中稳健工作。其二,在数据集构建过程中,研究者需应对数据泄露风险——冲突文本几乎必然存在于商业模型训练语料中;还需保证跨语言、跨仓库的多样性,同时过滤掉歧义过大或上下文缺失的低质量样本。此外,如何设计一种无测试的评估范式,既能规避奖励破解,又能实现规模化自动化评估,亦是一项艰巨挑战。最终,即便是当前最优的商业模型(如Gemini 2.5 Pro),其正确解决率也未能突破60%,足见该问题的复杂性。
常用场景
经典使用场景
Merge-Bench数据集为版本控制合并冲突的自动化解码提供了前所未有的评估基准。该数据集包含来自1439个真实GitHub项目的7938个冲突片段,每个片段都配有开发者手工解决的正确合并结果。其核心使用场景在于评估和训练大语言模型对代码合并冲突进行语义理解与正确解决的能力,特别适用于需要理解代码意图、上下文语义而非简单语法匹配的复杂合并任务。研究者可借助该基准,零样本或微调地测试模型在Java等11种编程语言上的合并表现,同时根据精确文本匹配与源码归一化匹配两种粒度客观衡量模型的合并准确率。
解决学术问题
Merge-Bench系统性地解决了以往合并冲突基准存在的数据泄露稀疏、规模受限、奖励黑客攻击及人工标注成本高昂等根本性问题。通过自动化构建流程,它完全规避了人工创建真实标注的繁琐流程,并引入免测试执行的评估范式,消除了模型通过对测试套件过拟合来获得高分的漏洞。此外,该数据集首次支持跨语言的大规模合并能力评估,为比较不同模型在处理语义冲突时的泛化性能提供了标准化平台。这一贡献显著推进了软件工程领域对LLM在版本控制中应用能力的定量认识,为后续研究奠定了可靠且可扩展的评估基础。
衍生相关工作
Merge-Bench的发布催生了一系列围绕LLM合并冲突解决的重要后续工作。直接衍生的LLMergeJ模型首次采用在线强化学习(GRPO)优化合并推理过程,证明了仅依靠监督微调难以达到的推理能力提升效果。此外,该基准推动了无测试套件评估范式在更广泛软件工程任务中的应用,且其可扩展管道激励了更多研究者在不同编程语言及更大规模仓库上构建专用合并数据集。后续工作可进一步探索基于因果推理的合并策略分类,或将冲突片段与完整项目结构结合,训练更通用的代码理解模型,从而在版本演进分析、代码审查自动化等相邻领域产生深远影响。
以上内容由遇见数据集搜集并总结生成



