2016-09-28 138 views
2

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

到目前为止,我一直在做的是对单个文件进行某种心理上的“平分”变化,但这些文件经常在提交和后续之间移动,结果相当困难。

先决条件,即,可以利用:

  • 一个确切的匹配存在
  • 一些启发式时间间隔的信息是可能适用
  • 项目不是太大(< 100KB的C++代码)

回答

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 
    

即使有不完全匹配,可以轻松增强此过程以搜索与您的版本差异最小的修订。

+0

非常好的模板。因为事实证明,我的第一个先决条件是不正确的,我不得不修改一下。但在那之后,我可以很容易地发现正确的答案:'git diff --exit-code --shortstat $ rev' – Michael

+0

当然,'--exit-code'可以省略 – Michael

相关问题