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

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

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

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

я пробовал

cvs diff -b -B -R

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

Есть идеи?

4 ответа

Решение

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

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

cvs diff -b -B -R | egrep '^<|>' | wc -l

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

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

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

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

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

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

НТН.

веселит,

обкрадывать

Другие вопросы по тегам