2010-11-24 81 views
4

我正在開發一個腳本以便與git diff一起使用,以便能夠「過濾」僅僅移動到文件中的行。使用Designer文件時,Visual Studio 2008已經變得非常痛苦。它有時似乎堅持以不同的順序重寫整個文件。這使得很難看到文件的真實變化。我將git diff管道輸入到腳本中來調整git diff的輸出。我可以從輸出中刪除線條,或者我可以用不同的符號代替+/-來指示移動,但我不確定要使用哪些符號。Git Diff - 指示行移動

+2

我對這項工作很感興趣,但我很難在那裏找到問題。你到底在問什麼? – grossvogel 2011-03-01 19:29:48

回答

0

這不是問題的答案,而是所描述問題的可能替代解決方案。

我不熟悉Visual Studio 2008或Designer文件,但我遇到了一個解決方案,我想將文件存儲在由其他程序生成的git中。某些文件中的行順序完全無關緊要。在其他文件中,順序並不重要,但簡單的排序不夠充分,因爲它包含嵌套的數據結構。

我的解決方案是在git中使用過濾器在提交之前更改文件內容。這被配置成兩部分。首先,您需要使用.gitattributes文件爲文件分配一個過濾器。

*.list  filter=sort 

接下來,過濾器的行爲需要在配置文件中定義。這可以在您的用戶配置~/.gitconfig或在回購配置.git/config中完成。這只是本地的,並不會與其他人自動共享作爲回購協議的一部分,所以如果您希望其他人也這樣做,那麼您需要告訴他們。

[filter "sort"] 
    clean = sort 
    smudge = cat 

這種簡單的過濾器的結果是,當文件被提交,而不是從創建它們的程序隨機的順序是該行回購,他們是字母數字,只添加,刪除排序,並在差異中出現變化。

現在我提到我有兩種不同的文件類型,一個簡單的和一個複雜的。對於包含嵌套數據類型的複雜數據類型(Lua表具體),我創建了一個腳本來讀取文件內容,對每個嵌套節進行排序並輸出排序結果而不改變行爲當數據被使用時。