我有一个遗留项目,还包含多个开源库的源代码。不幸的是,一些库只是简单的快照,没有任何修订信息。 我正在寻找一种方法来识别库存储库中的匹配提交(git 驱动)。
到目前为止,我一直在做的是对单个文件进行某种心理“平分”更改,但这些文件经常在提交之间移动,并且跟踪结果相当困难。
可以利用的先决条件:
- 存在完全匹配
- 一些启发式时间间隔信息可能适用
- 项目不太大(<100kB C++ 代码)
最佳答案
为什么不执行以下操作:
克隆库的存储库
用您手头的版本覆盖工作树
针对所有提交运行
git diff
:#!/usr/bin/env bash for rev in $(git rev-list --all) do if git diff --exit-code $rev &> /dev/null then echo $rev fi done
即使没有完全匹配,也可以轻松增强此过程以搜索与您的版本差异最小的修订版。
关于git - 将未版本控制的源与 git 存储库相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39747736/