2012-06-15 50 views
4

,這個問題就我查到的資料閱讀本文後:Can Git really track the movement of a single function from 1 file to another? If so, how?的Git可以合併「使用」的git的怪-C

這裏是worfklow:

A「很久很久以前」,我們分裂一個大文件folder/file.py在很多文件中:folder1/file.py,folder2/file.py等等。

git blame -C當我們查看folder2/file.py時,正確顯示了該代碼的歷史記錄,我們看到一些提交是在這個分裂之前完成的。

的問題是,我們繼續維持仍然有folder/file.py,當我們在「當前」版本合併修復回來,混帳不斷重新創建該文件夾folder並沒有看到一個修復代碼的舊版本根據這段代碼現在所在的位置,應該合併爲folder/file.pyfolder1/file.pyfolder2/file.py

我看着git help merge很快,但沒有找到任何有關的信息。

+0

對此有幫助嗎? http://stackoverflow.com/questions/11005813/git-putting-folders-in-folders-in-a-repository/11010454#11010454 – uday

回答

0

合併不能利用git blame -C,但git merge確實有重命名檢測。從手冊頁:

rename-threshold=<n> 
    Controls the similarity threshold used for rename detection. See also git-diff(1) -M. 

Git的重命名閾值可能太高,無法在合併期間檢測到您的重命名。也有可能在detection is too computationally intense.嘗試進行測試以較低的重命名閾值合併,比如75:

git merge -X rename-threshold=75 <branch> 

您可能需要玩了一會兒,找到正確的數字,如果混帳退出,因爲它太計算很難,請嘗試設置上面鏈接的線索中討論的git config merge.renamelimit 0

This answer might also help if the above fails.我還沒有試過-X ignore-space-change或鏈接腳本,但它可能值得調查。