2016-10-22 9 views
1

私はプロジェクトに変更ログのテキストファイルを持っています。私は2つのタグの間にこのファイルからの変更のリストを取得したい。私は(+で始まる)を追加としてマークされたすべての行を受け取り、出力としてgit diffを使って追加された行を変更する方法はありますか?

git diff tag1..tag2 file | grep -v -e "+++ b/file" -e "@@" | grep "+" 

:私は、このコマンドを用意しました。しかし、それらの間には以前に存在した行があるかもしれませんが、上記のタグ間で修正されています(例えば、修正されたスペルミス)。新しい行だけ、または変更された行のみをフィルタリングすることができるオプションはありますか?または、行の修正の%条件を出力に出力するように制御するオプションがありますか?

+0

私が知っているように、gitは行を削除された古い行として変更し、新しい行を追加しました。 「変更された」行インジケータはありません。削除された行と追加された行が同じ行番号にあることがわかります。 – Imaginaroom

+0

音がトリッキー。ファイル内を移動したものの、変更されていない行には何が起こりますか? – melpomene

+0

その行はファイル内の別の場所にあるため、新しい行として扱います。 – Yama

答えて

0

私は満足のいく答えを見つけることができませんでした(それ以外はどこにもありません)ので、必要なスクリプトを自分で書く必要がありました。

0

Gitはこれ自体をしません。単純な構文ではなくセマンティクスを気にすると、一般的に難しい問題です。しかしGitにはdiff-highlightという後処理フィルタが付属しています。このPerlスクリプト内のコードは、あなたが興味を持っている種類の構文分析を行います。したがって、あなたが望むものを生成するように変更することができます。

差分を強調表示するソースについては、https://github.com/git/git/tree/master/contrib/diff-highlightを参照してください。 READMEを読んで、この種の分析に関連する意味論的問題についてのノートを参照してください。 as of Git version 2.9に注意してください。ハイライトスクリプトはGitの残りの部分とともにインストールされているので、あなたは貢献元の領域からそれを釣り上げる必要はありません。

関連する問題