Как найти количество строк, измененных между версиями CVS?
Вопрос
Я потратил большую часть дня на внесение, по сути, некоторых хозяйственных изменений в кодовую базу одного из наших проектов (заменив все System.out.println()
вызовы с log4j).
Мне немного любопытно, сколько строк кода я обновил с помощью этого набора изменений.
Есть ли в любом случае с cvs diff
или другая команда для получения точного подсчета количества измененных строк?
Я пытался
cvs diff -b -B -R
чтобы получить все изменения в рабочем каталоге (и рекурсивно в подкаталогах), но для каждого измененного файла он также выводит информацию о файле / версии, что делает простой подсчет строк вывода бесполезным.
Есть какие-нибудь идеи?
Решение
Отфильтруйте лишние строки из вывода diff и затем подсчитайте их.
Например, grep только строки, начинающиеся с < или >
cvs diff -b -B -R | egrep '^<|>' | wc -l
Другие советы
Утилита diffstat - хороший инструмент для получения простых метрик из выходных данных cvs, svn или другие различия.
Вы можете просто передать вывод 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 вернет количество строк, которые вы изменили.
ХТХ.
ваше здоровье,
Роб