るつぼでのレビューに適したパッチを作成する方法は?
git diff branch master --no-prefix > patch
これにより、3行のコンテキストのみが生成されます。だから私は次のことをする
git diff --unified=2000 branch master --no-prefix > patch
すべてのファイルの行数が2000行未満になることを願っています。最大行を指定せずにパッチにファイルのすべての行を含めるようにgitに指示する方法はありますか?
私はこれが古いことを知っていますが、ハードコーディングされたソリューションも嫌いなので、これをテストしました:
git diff -U$(wc -l MYFILE)
-Uを使用することがこの問題に対処する唯一の方法のようですが、行数を使用すると、非常に大きなファイルの小さな変更でも機能することが保証されます。
これ はかなりうまくいくようです:
git diff --no-prefix -U1000
警告付き:
-U
フラグは、コンテキストの行を指定します。変更の間に1000行以上ある場合、これを増やす必要があるかもしれません。
注: git1.8.1rc1アナウンス(2012年12月8日) に含まれるもの:
新しい構成変数「
diff.context
"を使用して、パッチ出力のコンテキスト行のデフォルト数を指定し、ハードコードされたデフォルトの3行をオーバーライドできます。
これにより、ここで、より完全なコンテキストを生成できます。
インスピレーションを得たので、gitエイリアスを追加しました。
$ cat ~/.gitconfig | fgrep diff
df = "!git diff -U$(wc -l \"$1\" | cut -d ' ' -f 1) \"$1\""
$ git df <file>
更新:
「git df」は、gitエイリアスを実行するときにディレクトリが変更されるため、動作しないことがあります。 ( gitエイリアスが間違ったディレクトリで動作する を参照)。これが更新されたバージョンです:
$ cat ~/.gitconfig | fgrep df
df = "! [ \"$GIT_PREFIX\" != \"\" ] && cd \"$GIT_PREFIX\"; ~/bin/git_df.sh"
$
$ cat ~/bin/git_df.sh
#!/bin/bash
for FILE in $@; do
git diff -U$(wc -l "${FILE}" | cut -d ' ' -f 1) "${FILE}"
done
exit 0