Распечатать процент несходства
Иногда, когда вы радикально меняете файл, он вызывает перезапись:
yes | head -256 > pa.txt
git add .
git commit -m qu
truncate -s128 pa.txt
yes n | head -64 >> pa.txt
git commit -am ro
Результат:
[master 79b5658] ro
1 file changed, 128 insertions(+), 256 deletions(-)
rewrite pa.txt (75%)
Однако это не происходит с небольшими изменениями:
yes | head -128 > pa.txt
git add .
git commit -m qu
truncate -s64 pa.txt
yes n | head -32 >> pa.txt
git commit -am ro
Результат:
[master 88ef937] ro
1 file changed, 32 insertions(+), 96 deletions(-)
Могу ли я запустить команду, которая покажет процентное изменение независимо от суммы? Я посмотрел в git diff-tree, но опять-таки, похоже, он показывается только тогда, когда изменения радикальны.
2 ответа
git diff -U10000 | awk '
/^i/ {getline; next}
/^-/ {pa += length}
/^ / {qu += length}
END {printf "%.0f%\n", pa/(pa+qu)*100}
'
Форсировать полный контекст с
-U10000
Отфильтровывать
---
линииФильтр в удалениях и контекстных строках
Подсчет байтов для каждого
С последним мерзавцем:
> git --version
git version 2.7.0.windows.1
Я использую:
git init dissimilarity
cd dissimilarity
yes aaa | head -128 > pa.txt
git commit -am qu
<remove a few lines>
yes n | head -32 >> pa.txt
git commit -am ro
Затем git diff -B1%/1%
дает мне:
> git diff -B1%/1% @~|grep diss
dissimilarity index 14%
Затем я продолжил вносить даже незначительные изменения, редактируя вручную pa.txt
, удалив несколько строк, добавив новую:
> git diff @~
diff --git a/pa.txt b/pa.txt
index 7f9bf77..bf32d0b 100644
--- a/pa.txt
+++ b/pa.txt
@@ -107,13 +107,7 @@ aaa
aaa
aaa
aaa
-n
-n
-n
-n
-n
-n
-n
+sss
n
n
n
И даже тогда я все еще вижу индекс различий:
> git diff -B1%/1% @~|grep diss
dissimilarity index 2%
2%!