Как да намеря броя редове, променени между версиите на 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 от групата devel. Извикването на командата изглежда като cvs diff -r 1.1.6.1 -r 1.1.6.4 Някои файлове | 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