ファイルに移動しただけの行を「除外」できるように、git diff で使用するスクリプトを開発しています。Visual Studio 2008 は、Designer ファイルを操作する際に苦労しました。ファイル全体を別の順序で書き換えることを主張しているように見えることがあります。これにより、ファイルへの実際の変更を確認することが難しくなります。git diff をスクリプトにパイプして、git diff の出力を微調整しています。出力から行を削除するか、移動を示すために +/- を別の記号に置き換えることができますが、どの記号を使用すればよいかわかりません。
1 に答える
これは質問に対する回答ではありませんが、説明されている問題に対する可能な代替ソリューションです。
私は Visual Studio 2008 または Designer ファイルに精通していませんが、別のプログラムによって生成されたファイルを git に保存したいソリューションに遭遇しました。一部のファイルの行の順序はまったく問題ではありませんでした。他のファイルでは、順序は重要ではありませんでしたが、ネストされたデータ構造が含まれていたため、単純な並べ替えでは不十分でした。
私の解決策は、コミットされる前にファイルの内容を変更するために git でフィルターを利用することでした。これは 2 つの部分で構成されます。最初に、ファイルを使用してファイルにフィルターを割り当てる必要があり.gitattributes
ます。
*.list filter=sort
次に、フィルターの動作を構成ファイルで定義する必要があります。~/.gitconfig
これは、ユーザー構成またはリポジトリ構成で行うことができます.git/config
。これはローカルのみであり、リポジトリの一部として他のユーザーと自動的に共有されるわけではないため、他のユーザーにもこれを実行してもらいたい場合は、そのことを伝える必要があります。
[filter "sort"]
clean = sort
smudge = cat
この単純なフィルターの結果、ファイルがレポにコミットされると、行がファイルを作成したプログラムのランダムな順序ではなく、英数字順に並べ替えられ、追加、削除、および変更のみが差分に表示されました。
ここで、単純なファイルと複雑なファイルの 2 つの異なるファイル タイプがあることを述べました。ネストされたデータ型 (具体的には Lua テーブル) を含む複雑なものについては、ファイルの内容を読み取り、ネストされた各セクションを並べ替え、動作を変更せずに並べ替えられた結果を出力するスクリプトを (他の誰かから多くの助けを借りて) 作成しました。データが後で使用されたとき。