Как узнать количество измененных строк между версиями CVS?

Я потратил большую часть дня на то, что в основном представляет собой некоторые служебные изменения в кодовой базе одного из наших проектов (заменяя все вызовы System.out.println() на log4j).

Мне любопытно, сколько строк кода я обновил этим набором изменений.

Есть ли способ с помощью cvs diff или другой команды получить точное количество измененных строк?

я пробовал

cvs diff -b -B -R

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

Любые идеи?


person matt b    schedule 22.10.2008    source источник


Ответы (4)


Отфильтруйте лишние строки из вывода diff, а затем подсчитайте строки.

Например, grep только строки, начинающиеся с ‹или>

cvs diff -b -B -R | egrep '^<|>' | wc -l
person Maglob    schedule 22.10.2008
comment
Это то, что я в конечном итоге использовал за несколько секунд до того, как вы опубликовали - спасибо - person matt b; 23.10.2008

Утилита diffstat - хороший инструмент для получения некоторых простых показателей из вывода cvs, svn или других различий. .

person jmcnamara    schedule 08.11.2008
comment
diffstat работал у меня. В Windows я установил Cygwin и выбрал diffstat и cvs из группы разработчиков. Вызов команды выглядит так: cvs diff -r 1.1.6.1 -r 1.1.6.4 Some File | diffstat -m - person buzz3791; 27.03.2013

Вы можете просто направить вывод cvs diff в diffstat.

person sanxiyn    schedule 22.10.2008
comment
Это работает хорошо, хотя кажется, что такие файлы, как jsp / blah.jsp и blah.jsp, учитываются дважды. Раньше не знал о diffstat, спасибо! - person matt b; 23.10.2008

А как насчет проверки того, что вы изменили все экземпляры, например:

find . | egrep -v -e '(CVS|<other patterns you don't want>)' | \
    xargs egrep -e 'System\.out\.println[(][)]' | wc -l

это должно дать вам ноль.

Затем замена регулярного выражения во втором egrep на 'log4j' должна привести к тому, что wc -l вернет количество измененных вами строк.

HTH.

ваше здоровье,

Роб

person Rob Wells    schedule 22.10.2008