この回答は、期待される出力/ワークフローには完全に対応していませんが、動きに伴う変更を追跡するという要件に対処します。
git blame
のコピー検出(-C
)を利用しています。 -M
とは対照的に、このスイッチはわずかな変更でコピーを検出します。に変更return true;
ため
$ git blame -C 9f3c95c3 -- bar.js
cff47ee4 bar.js (John Doe 2017-01-13 20:28:51 +0100 36) },
cff47ee4 bar.js (John Doe 2017-01-13 20:28:51 +0100 37)
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 38) isApplicable: function(){
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 39) if (!this._depends) {
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 40) // no depends expression defined, default to "yes, it's applicable"
9f3c95c3 bar.js (John Doe 2017-01-13 20:26:47 +0100 41) return false;
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 42) }
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 43)
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 44) // pass the survey model and the expression
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 45) return Evaluator.evaluate(this.model.toJSON(), this._depends);
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 46) },
e0efec3b foo.js (John Doe 2017-01-13 20:18:51 +0100 47)
cff47ee4 bar.js (John Doe 2017-01-13 20:28:51 +0100 48) render: function(){
移動のみライン41に示されているコミット:それはこの非難(図示のみ関連する行)を生成し、
9f3c95c Moved isApplicable() from Foo => Bar
cff47ee Added bar.js
e0efec3 Added foo.js
isApplicable()
が移動:
この履歴を取りますreturn false;
と一緒に移動します。 isApplicable()
に関連する他の行には、コミットe0efec3b
というラベルが付けられています。これは、最初にそれらを導入した行です(ファイル名の列も元のファイル名を指定します)。
純粋blame
が、一方、(唯一の関連する行が示されている)、このようになります。
$ git blame 9f3c95c3 -- bar.js
cff47ee4 (John Doe 2017-01-13 20:28:51 +0100 36) },
cff47ee4 (John Doe 2017-01-13 20:28:51 +0100 37)
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 38) isApplicable: function(){
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 39) if (!this._depends) {
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 40) // no depends expression defined, default to "yes, it's applicable"
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 41) return false;
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 42) }
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 43)
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 44) // pass the survey model and the expression
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 45) return Evaluator.evaluate(this.model.toJSON(), this._depends);
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 46) },
9f3c95c3 (John Doe 2017-01-13 20:26:47 +0100 47)
cff47ee4 (John Doe 2017-01-13 20:28:51 +0100 48) render: function(){
移動コミットGitが9f3c95c3
で行わ加算としてそれを見ているので、1つのブロックとして示されています。
git blame -C <REV> -- <FILE>
は、1つのファイル内での動作にも使用できます。
-C
スイッチを複数回指定すると、そのコミット内のすべてのファイルまたは見つかったすべてのコミットにトレースを展開できます。manページは言う:-Mに加えて
-C|<num>|
を、ラインを検出する移動または同じコミットで変更された他のファイルからコピー。これは、プログラムを再編成してコードをファイル間で移動する場合に便利です。 このオプションを2回指定すると、コマンドはさらに、ファイルを作成するコミット内の他のファイルからコピーを探します。このオプションが3回指定されると、コマンドは任意のコミットで他のファイルからコピーを探します。
(強調鉱山。)