54

a を実行するgit commitと、次の出力が得られます。

[manu@host] git: git commit -a -m "StreamIt instrumentation"
[master 263410f] StreamIt instrumentation
62 files changed, 6117 insertions(+), 5748 deletions(-)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/ClusterBackend.java (91%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/ClusterCodeGenerator.java (95%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/code/FlatIRToCluster.java (94%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/common/ToCCommon.java (92%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/flatgraph/ScheduledStaticStreamGraph.java (93%)
rename Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/sir/lowering/fission/{StatelessDuplicate.java => HorizontalFission.java} (98%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/sir/lowering/partition/dynamicprog/DynamicProgPartitioner.java (93%)
  • ファイルを「書き換え」として報告するとき、gitはどういう意味ですか?
  • 関連するパーセンテージの意味は何ですか?
  • このコミットで変更された 62 行のうち、これらの行にのみパーセンテージが関連付けられているのはなぜですか?
4

1 に答える 1

61

Git はヒューリスティックを使用して、変更がファイルの名前変更またはコピーであったかどうか、およびファイルの「書き換え」であるかどうかを判断します。大雑把に言えば、旧バージョンと新バージョンの差分が新バージョン自体よりも大きい場合、それは「書き直し」です。

これは、ソース ファイルを変更するという git の元のユース ケースに合わせて調整されており、ほとんどの場合、ローカライズされた変更が行われます。行ごとの差分に基づいているため、ソース ファイルの再インデントなどによってトリガーされる可能性があります。また、オンザフライで決定されるため、"-b" や "-w" などの diff オプションを使用して、変更が書き換え (またはコピー、または名前変更) であるかどうかの評価を変更できます。

パーセンテージは、git の「非類似性インデックス」です (名前変更またはコピーのパーセンテージ「類似性インデックス」とは対照的です)。おそらく、変更されたファイル内の行の割合のようなものです。

于 2012-12-01T00:29:23.910 に答える