2012-02-13 18 views
2

cvsスタイルのdiffのようなgit diffsの出力形式を作る方法はありますか?私はgit diffsが読みにくくなることを発見します。また、moreに表示されるgit diffsは迷惑です。どうすれば無効にできますか?CVSスタイルの差分をgitに

+0

これは本当に2つの別々の質問だったはずです。 –

答えて

1

書式設定、標準デフで再生してみてください:これは無い文脈で、CVSのような改行とoldlinesを与えるが、そうでない

git difftool -y -x "diff --unchanged-group-format='' --old-line-format='< %L' --new-line-format='> %L'" 

異なる行のグループの間にエキストラを挿入します。残りの部分をどのように達成するかはわかりませんが、私はあなたがCVSのようなフォーマットをしたいと思う程度はわかりません。詳しくは

については

man diff 

また

git difftool -y -x "diff -n" 

を参照してくださいしかし、私は、これは何をしたいん疑います。これがうまくいく場合は、git diffで毎回動作させるようにするには、受け入れられた回答のhttp://jeetworks.com/node/90を参照するConfiguring diff tool with .gitconfig?を参照してください。

+0

これはhttp://stackoverflow.com/questions/11331582/how-to-make-git-diff-output-normal-diff-format-non-unified-non-contextと組み合わせると、私が欲しいものが私に与えられます。乾杯 – user1207217

5

あなたは空の文字列にcore.pagerを設定することにより、ページャを無効にすることができます

git config --global core.pager '' 
+0

これはうれしいことです。私はupvoteしたいと思うが、私はできないようだ... – user1207217

+1

私はそれを行うための通常の方法は 'cat'に設定することだと思います。 –

+0

catに設定するのが控えめに見えます。 – user1207217

6

git diffは、デフォルトでは、「ユニバーサル」形式、diff -uを使用しています。 cvs diffは、より古い標準差分形式(<でマークされた削除された行、>でマークされた行が追加され、各差分の前後にコンテキストはありません)を使用します。

あなたは(あなたがGNUのdiffutilsを使用している、少なくとも場合)5つのコンテキストの行ではなく、デフォルト3.

diff --normalを取得するには、例えば、git diff -cを使用して、「コンテキストdiff」、またはgit diff -C5をします取得することができます古いスタイルの差分を生成しますが、git diff--normalオプションを認識していないようです。

個人的には、私は文脈の差分を旧式の差分よりもはるかに読み易いので、古いスタイルの差分をgit diffで使う必要はないことが分かりました。 git diff -cを試してください(ページャを無効にするためのhaggai_eの提案とともに)。

古いスタイルの差分(<>、コンテキストなし)が本当に必要な場合は、おそらくそれを行う方法があります。

EDIT:

git diffはあなたがやりたいしない場合は、ファイルのリビジョンのコピーを抽出し、それらの上に好きな差分ツールを使用することができます。私自身のget-versionsツールは、git(またはRCSまたはCVS)からファイルの複数のバージョンを抽出できます。

もう少し複雑ですが、ここに別の解決方法があります。例として、git自体のgit repoをクローンしました。私はトップレベルREADMEファイルの2つの連続したバージョンを比較したい場合は、私がこれを行うことができます。

$ diff --normal <(git show 779d7e93773a0dcf918dc77023511fdc68161bd8:README) \ 
       <(git show 71ce415dc088f19a0b8d6c8567dfdd6d851842b2:README) 
24,26c24,25 
< compatible with the GPLv2). 
< It was originally written by Linus Torvalds with help of a group of 
< hackers around the net. It is currently maintained by Junio C Hamano. 
--- 
> compatible with the GPLv2). It was originally written by Linus 
> Torvalds with help of a group of hackers around the net. 
$ 

小さなスクリプトでこれをラップするのは簡単だろう。

:(上記の例ではREADME)に続くファイルパスは、現在のディレクトリではなく、リポジトリのルートからの相対パスであることに注意してください。名前の前には./を付けて、現在のディレクトリからの相対パスにすることができます。 (後者はgitの一部の古いバージョンでは動作しない場合があります。)

+0

これは関係するgitのバージョンを知りませんが、 "git version 1.7.7.6"の場合、git diff -cは無効ですが、git diff -Un(コンテキスト行数ではn)が機能します。 git diff -U0はほとんど私に欲しいものを与えてくれますが、私はまだ外観が気に入らないのです。 これはすべての好みの問題です。実際には、コンテキストの差分を優先していますが、私のためにコミットする前に正気のチェックではありません。コンテキスト差分が必要な場合は、私はmeldを使用しています。 しかし、チップのための乾杯。再び、私はそれが私に許されるならマークアップします。 – user1207217

+0

http://stackoverflow.com/questions/11331582/how-to-make-git-diff-output-normal-diff-format-non-unified-non-context-ここでは--normalオプションを渡すことができます。歓声 – user1207217

+0

@ user1207217:私は私の答えを更新しました(私は上記のコメントのリンクを読む直前)。 –

関連する問題