2

私は古い著作権の下にあるプロジェクトに取り組んでおり、プロジェクトが長年にわたって大幅に変更されたため、著作権を削除する良いケースを作ろうとしています.

(心配しないでください。何も盗んではいけません。私は、著作権所有者に同意してもらうために訴訟を起こしています)。

したがって、本当に役立つのは、プロジェクトの 2 つのバージョン間で何が変更されていないかについての正確な統計です。

私はgitを使用していますが、解決策を見つけるのに苦労しています..

4

1 に答える 1

1

方法は見つかりましたが、ネイティブの git ではありません。標準のdiffコマンドと bash 拡張機能を使用します。ともかく

これは、1 つのファイルの場合、ファイルごとに実行するようにスクリプトを作成する必要がある場合があります。ファイルの名前変更は処理せず、コマンド diff に依存して相違点を整理します。

ファイルoriginalfileの元の行数を取得します。私の例では、元のファイルはわずか 2 コミット離れていますが、任意の refspec が機能します。おそらく正確なハッシュが最適です。

git show HEAD^^:originalfile | wc

次に、このマジックラインでまだ変更されていない行数を取得します

diff --unchanged-group-format='%<' --old-group-format='' --new-group-format='' --changed-group-format='' <(git show HEAD^^:original_file) <(git show HEAD:original_file) | wc

説明します。最初に、unchanged-group-format の形式を実際の行 (%<) だけに設定し、他のすべてのグループ (古い、新しい、および変更された) を空 (新しい行でさえありません) に設定します。

次に、bash 拡張 <(コマンド) を使用して、最初に元のバージョンをパイプし、次にファイルの現在のバージョンを diff にパイプします。2 つのチェックアウトを比較することもできます。行をカウントするためにwcにパイプされます。

そして、変更された行の数は、すでに取得したものからわずかに差し引いたものです。

于 2013-01-12T20:27:48.197 に答える