版本控制系统存储库中的修改历史:来自实战的实证研究
软件工程
2025-09-12 v1
摘要
版本控制系统(VCS)如Git允许开发者在本地重写记录的历史,例如重新排序和抑制提交或其中的特定数据。尽管这些修改有其合法用途,但在对公共分支进行修改时就会引发问题:它们破坏推送/拉取工作流程,挑战存储库的完整性和可重复性,同时为供应链攻击者提供了隐藏恶意更改的机会。我们进行了对Git历史修改在公共代码存储库中进行大规模调查的首次研究。我们分析了11100万(百万)个存储库的归档数据,这些数据由Software Heritage保存,无论修改如何,都能保存VCS历史。我们发现在121万个存储库中存在历史修改,总计870万次被重写的历史。我们按修改发生的位置(是哪些存储库、哪些分支)以及修改内容(是文件还是提交元数据)进行分类。通过开展两个针对性案例研究,我们展示出被修改的历史会反式性地改变许可证,或用于删除因错误提交而包含的“机密”(例如私钥)。由于这些行为在项目治理或安全管理方面都属于不佳实践,软件接收方可能希望避免这些行为,我们引入GitHistorian——一个自动化工具,开发者可使用该工具来查找和描述公共Git存储库中的历史修改。
引用
@article{arxiv.2509.09294,
title = {Altered Histories in Version Control System Repositories: Evidence from the Trenches},
author = {Solal Rapaport and Laurent Pautet and Samuel Tardieu and Stefano Zacchiroli},
journal= {arXiv preprint arXiv:2509.09294},
year = {2025}
}