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

StackOverflow https://stackoverflow.com/questions/227210

  •  03-07-2019
  •  | 
  •  

Вопрос

Я потратил большую часть дня на внесение, по сути, некоторых хозяйственных изменений в кодовую базу одного из наших проектов (заменив все 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 вернет количество строк, которые вы изменили.

ХТХ.

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

Роб

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top