Используйте cloc для двух разных коммитов. Просматривайте только фактические строки кода, без комментариев или пустых строк.

Я уже знаю, как получить разницу между двумя коммитами, а также получить их файл за файлом. Я также знаю (благодаря этой теме количество строк в репозитории git ) что вы можете использовать Cloc, чтобы получить только фактические строки кода, а не все строки.

Но как мне сделать, чтобы получить разницу в строках кода только в git, I: E, используя cloc для двух разных коммитов?

Это дает мне распечатку кода с добавлением (+) до и удалением (-). Но здесь я не могу использовать cloc напрямую, мне пришлось бы сделать некоторый синтаксический анализ

git diff `git rev-list --since="jun 30 2014" --reverse origin/master | head -1`..`git rev-list --until="dec 31 2014" origin/master | head -1`

Здесь я получаю все файлы, измененные и добавленные/измененные строки в первом столбце. Проблема в том, что это включает пустые строки и комментарии.

git diff `git rev-list --since="jun 30 2014" --reverse origin/master | head -1`..`git rev-list --until="dec 31 2014" origin/master | head -1` --numstat

Есть ли способ сделать это, не получая пустых строк или комментариев? I: E использует Cloc вместо собственного алгоритма сравнения Gits? И если да, то как я могу это сделать?

Заранее спасибо.


person anders    schedule 24.07.2015    source источник
comment
Не могли бы вы прокомментировать (или принять) предоставленный ответ?   -  person AnimiVulpis    schedule 01.08.2016


Ответы (1)


Если я правильно вас понимаю, самый простой способ добиться того, чего вы хотите, - это выполнить следующие шаги:

git checkout <commit-1>
cloc ./ > ../commit-1-cloc.txt

git checkokut <commit-2>
cloc ./ > ../commit-2-cloc.txt

После этого у вас будут две очень красивые таблицы, показывающие много информации, как показано здесь

person AnimiVulpis    schedule 27.07.2016