将未版本控制的源与git存储库相匹配

时间:2016-09-28 12:36:21

标签: git

我有一个遗留项目,也包含几个开源库的源代码。不幸的是,一些库是简单的快照,没有任何修订信息。 我正在寻找一种方法来识别库存储库中的匹配提交(git-driven)。

到目前为止,我一直在做的是单个文件的某种心理'二等分'更改,但这些文件经常在提交之间移动,后来证明是相当困难的。

可以使用的先决条件:

  • 存在完全匹配
  • 某些启发式时间间隔信息可能适用
  • 项目不是太大(<100kB C ++代码)

1 个答案:

答案 0 :(得分:2)

为什么不执行以下操作:

  1. 克隆库的存储库

  2. 使用您手头的版本覆盖工作树

  3. 针对所有提交运行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
    
  4. 即使没有完全匹配,也可以轻松增强此过程,以便搜索与您的版本差异最小的修订版。