Intereting Posts
Нажатие на TFS git с использованием открытого / закрытого ключа Удаление конфиденциальных файлов и их коммитов из истории Git Как вы справляетесь с визуальными базовыми файлами 6 frm и frx в контроле источника? Git checkout в подкаталоге без локального полного репо Комбинировать node.js api-layers с git – как структурировать? Как я могу отслеживать текущие события Follow / Unfollow в API Github? Правильный способ использования Git? Измененный Java-класс (обработанный как двоичные файлы) сразу после git clone Некоторые папки пусты при клонировании после добавления git -A Отключение форматирования фиксации магического режима Ошибка SVN E195005: «xyz» не является корнем репозитория? .NET для файлов ANT и WAR? Пустые транзакции удаляются после интерактивной переустановки, хотя используется -keep-empty Обновление прерывистого репозитория с TortoiseSVN Попытка получить идентификатор фиксации git в grunt

Можно ли подсчитать количество новых тестов JUnit на человека с помощью git-журнала?

Есть ли какой-либо способ для меня найти, кто совершил наибольшее количество строк, содержащих @Test используя git log или аналогичный?

Я написал этот короткий скрипт python, который ищет аналогичный шаблон в python codebase:

 import collections import subprocess lines_by_author = collections.defaultdict(int) for line in subprocess.check_output(( 'git', 'log', '-G', '^def test', '--format=%ae %h', )).decode().splitlines(): email, h = line.split() for line in subprocess.check_output(( 'git', 'show', h, )).decode().splitlines(): if line.startswith('+def test'): lines_by_author[email] += 1 elif line.startswith('-def test'): lines_by_author[email] += 1 import pprint pprint.pprint(sorted(lines_by_author.items(), key=lambda kv: -1 * kv[1])) 

Сценарий можно изменить, чтобы искать @Test , изменив параметр на -G и два startswith() .

Он будет производить вывод, например:

 $ python3 tests_by_user.py [('user1@example.com', 1351), ('user2@example.com', 129), ('user3@example.com', -5)]