client中的output是conflict文件和conflict tuple输出的路径,gitPath是git仓库下载和存放的路径,可以自行修改。
需要进行分析的repo可以按照addSimpleRepo中的格式手动设置。即(项目名,远程URL),设置好之后直接运行client的main方法。
jgit的clone指令由于国内的网络问题,可能会出错,需要先手动下载到本地。
遍历git历史,收集conflict文件,输出到output/conflictFiles中,以commitId\filepaht\filename.java\conflict files的格式存储
遍历上一个步骤收集到的flies,从conflict marks中抽取出conflict tuple,以projectname.json的格式存储到output/mergeTuples中
统计结果输出到标准输出中,如:
- 项目根目录下
list.txt
以逗号分隔,以项目名称和链接表示需要分析的仓库信息;
# 示例
junit4,tmpurl
spring-boot,tmp
- 项目根目录下
repos
目录存放实际仓库;
repos
├── junit4
└── spring-boot
- 项目根目录下
output
记录数据集收集结果;
output
├── conflictFiles # 收集的包括冲突的文件(conflict.java 包含冲突块)
│ ├── junit4
│ └── spring-boot
├── filteredTuples # 经过过滤的 merge tuples
│ ├── lackOfResolution # 缺少resolution
│ ├── mixLine # 行混合
│ └── outOfVocabulary # 有新添加语句
└── mergeTuples # 所有merge tuples
├── junit4.json
└── spring-boot.json