2016-09-28 136 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

相關問題