Как найти количество строк, измененных между версиями CVS? - PullRequest
2 голосов
/ 22 октября 2008

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

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

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

Я пробовал

cvs diff -b -B -R

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

Есть идеи?

Ответы [ 4 ]

5 голосов
/ 08 ноября 2008

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

3 голосов
/ 22 октября 2008

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

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

cvs diff -b -B -R | egrep '^<|>' | wc -l
2 голосов
/ 22 октября 2008

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

0 голосов
/ 22 октября 2008

Как насчет того, чтобы убедиться, что вы изменили все экземпляры с помощью чего-то вроде:

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

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

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

НТН.

ура

Rob

...