Как подсчитать количество написанного кода в репозитории по авторам?
Задача узнать, кто из авторов сколько кода написал. Я знаю, что это необъективная информация для подсчета вклада в проект, но все же хоть какая-то статистика. Если знаете какие-то решения, актуальные на данный момент — прошу поделиться. Пробовал пользоваться вот этим пакетом, но он устарел, т.к. был написан более семи лет назад. Более новых google не выдал. Есть команда git log —numstat , но она выдает разрозненные данные по коммитам и ей невозможно воспользоваться для данных целей. Или я все же что-то пропустил?
Отслеживать
67.9k 216 216 золотых знаков 77 77 серебряных знаков 219 219 бронзовых знаков
задан 11 мар 2016 в 12:08
1,349 1 1 золотой знак 16 16 серебряных знаков 38 38 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Есть команда git log —numstat , но она выдает разрозненные данные по коммитам и ей невозможно воспользоваться для данных целей. Или я все же что-то пропустил?
так на основании выдаваемой информации можно подсчитать, сколько строк добавил и сколько удалил (именно такие цифры выдаёт git log —numstat ) каждый автор.
примерно вот так (это я быстренько «набросал», можно и улучшить и оптимизировать):
$ git log --pretty=format:==%an --numstat | \ sed -r '/==.*/;/^$/D;s/-/0/g;s/\t[^\t]+$//;G;s/(.*)\n(.*)/\2\t\1/' \ | awk -F '\t' ' END >'
для упомянутого вами проекта она выдаёт:
Caue Guerra 361 168 Pedro Matiello 729 238
для проекта https://github.com/processone/ejabberd вот такую статистику выдаёт:
Alexey Shchepin 121555 48334 Andreas Köhler 429 335 Antonio Murdaca 63 10 Anton Ryzhov 0 1 Arno B 22 5 Badlop 310727 228783 Balázs Galambosi 2 2 Ben Langfeld 87 110 bLaDe 1 1 Christian Dröge 17 12 Christopher A. Stelma 1 1 Christophe Romain 42755 54608 Christopher tofu Zorn 128 96 colm 8 3 Cor Cornelisse 2 2 Denis Kurochkin 600 2 ekhramtsov 44 4 Elias Rohrer 24 87 Emilio Bustos 82 52 Evgeniy Khramtsov 229257 210283 Evgeny Khramtsov 0 15 Feotov Daniil 67 6 Geoff Cant 279 163 GreenLunar 66 98 Gu Feng 7 3 HAMANO Tsukasa 390 320 Holger Wei 2 0 Holger Weiss 5665 3161 iulianlaz 13 1 jabber 5 0 Jamie Nguyen 401 532 Janusz Dziemidowicz 129 41 Jerome Sautret 1300 199 Jérôme Sautret 1465 1011 Johan Oudinet 16 12 Jonas Ådahl 7 1 jpegger 1 1 Juan Pablo Carlino 2 2 Leif Bredgaard Honore 2 2 liudan 6 4 Marek Foss 12 5 Martin Langhoff 81 7 Mathias Ertl 33 31 Matthias Rieber 22 6 Matwey V. Kornilov 7 13 Maxim Ignatenko 857 567 Mickael Remond 1458 1118 Mickaël Rémond 394 115 Mickaël Rémond 44205 25665 Mikhail-D 1783 0 mrjameshamilton 1 1 Nathan Bruning 13 11 Nikolaus Polak 17 20 Nycholas de Oliveira e Oliveira 3 1 Otavio Fernandes 71 60 oxpa 4 2 Pablo Polvorin 556 152 Paul Donohue 8 4 Paweł Chmielowski 3305 3548 Peter Lemenkov 11 2 Quan Zhuo 4 4 Radosław Szymczyszyn 51 74 Rahul Gautam 9 9 Remco Wendt 8 0 Sergey Abramyan 542 15 Shelley Shyan 91 104 Sonny Scroggin 167 135 Stephen Röttger 43 36 Steven Lehrburger 2 4 stewart 1 1 Taufan Aditya 5 8 thierry 2 0 tjeerd 4 0 tmallard 6553 1300 Tsukasa Hamano 6 12 Tuncer Ayaz 2 2 vesvalo 19 7 Victor Rodrigues 74 73 W. Andrew Loe III 1 0
click fraud protection
В Git файлы создаются для выполнения различных операций. Один репозиторий Git содержит несколько файлов с разными расширениями. Каждый файл содержит несколько строк кода. Иногда пользователи хотят подсчитать общее количество строк в конкретном репозитории или файле. Для этой цели доступны команды Git для подсчета количества строк.
В этом исследовании будут обсуждаться:
-
- Как подсчитать/вычислить количество строк в конкретном репозитории Git?
- Как подсчитать/вычислить количество строк в определенном файле?
Как подсчитать/вычислить количество строк в конкретном репозитории Git?
Чтобы подсчитать количество строк в конкретном репозитории, выполните указанные шаги.
Сначала напишите приведенную ниже команду и перенаправьте в конкретный репозиторий Git:
Затем выполните следующую команду, чтобы отобразить количество строк в текущем репозитории:
$ git ls-файлы | xargs Туалет -л
Здесь «xargs wc -l” используется для подсчета количества строк в каждом файле. В данном выводе первый столбец представляет количество строк в каждом файле, а список всех файлов можно увидеть во втором столбце. Более того, «
8” — это общее количество строк во всех файлах:
Как подсчитать/вычислить количество строк в определенном файле?
Предположим, что репозиторий содержит различные файлы с разными расширениями, такими как .txt, .py, .php и т. д., и вы хотите подсчитать количество строк в нужном файле. Итак, Git позволяет им вычислять количество строк в любом файле.
Ознакомьтесь со следующими примерами для демонстрации.
Пример 1: Показать количество строк в файлах «.txt»
Чтобы получить количество строк в текстовом файле, используйте «*/*.txt *.txt” вместе с ранее обсуждавшейся командой:
$ git ls-файлы */* .текст * .текст | xargs Туалет -л
Здесь первое «*/*.текст” используется для получения количества всех текстовых файлов в репозитории, а второй “*.текст” используется для подсчета количества строк в каждом файле с расширением .txt. В приведенном ниже выводе показано, что три файла содержат текст, и каждый файл содержит только одну строку:
Пример 2: Показать количество строк в файлах «.php»
Использовать «*/*.php *.php” вместе с той же командой, чтобы получить количество строк в файле PHP:
$ git ls-файлы */* .php * .php | xargs Туалет -л
Здесь можно заметить, что «файл.php” содержит пять строк:
Мы объяснили процедуры подсчета/вычисления количества строк в конкретном репозитории и файле Git.
Заключение
Git позволяет пользователям подсчитывать количество залогов в конкретном репозитории или файле Git. Чтобы получить количество строк в конкретном репозитории Git, «git ls-файлы | xargs wc -l” можно использовать команду. Кроме того, используйте «*/* * ” с той же командой, чтобы отобразить количество строк в конкретном файле. В этом исследовании объяснялись методы подсчета количества строк в конкретном репозитории и файле Git.
GIT: Как подсчитать вклад каждого разработчика?
Нарисовал простой gawk скрипт который парсит результаты команды ‘git log —numstat’. В итоге скрипт выдает вот такую статистику по каждому разработчику (автору):
Author: Scrooge McDuck
Insertions: 136
Deletions: 333
Files changed: 14
Commits: 15Ответ написан более трёх лет назад
Нравится 3 1 комментарий
А почему вы считаете, что они сидят на git репозиторий? Может быть они используют другую CSV?
Redmine делает такую статистику по любой VCS, которая подключена к проекту.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Если речь идет об опенсорс, то подключите репозиторий к www.ohloh.net
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Отличное название для русского уха.
gitstats.sourceforge.net/ – делает HTML там и к-во комитов и кем и строчек кода и тд.
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
NikitaG @NikitaG Автор вопроса
а вот это именно то что нужно. Спасибо.
Ваш ответ на вопросВойдите, чтобы написать ответ
- Git
- +1 ещё
Как залить проект на гитхаб с сохранением папок?
- 1 подписчик
- 21 окт.
- 120 просмотров
2.3 Основы Git — Просмотр истории коммитов
После того, как вы создали несколько коммитов или же клонировали репозиторий с уже существующей историей коммитов, вероятно вам понадобится возможность посмотреть что было сделано — историю коммитов. Одним из основных и наиболее мощных инструментов для этого является команда git log .
Следующие несколько примеров используют очень простой проект «simplegit». Чтобы клонировать проект, используйте команду:
$ git clone https://github.com/schacon/simplegit-progit
Если вы запустите команду git log в каталоге клонированного проекта, вы увидите следующий вывод:
$ git log commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 Change version number commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 Remove unnecessary test commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon Date: Sat Mar 15 10:31:28 2008 -0700 Initial commit
По умолчанию (без аргументов) git log перечисляет коммиты, сделанные в репозитории в обратном к хронологическому порядке — последние коммиты находятся вверху. Из примера можно увидеть, что данная команда перечисляет коммиты с их SHA-1 контрольными суммами, именем и электронной почтой автора, датой создания и сообщением коммита.
Команда git log имеет очень большое количество опций для поиска коммитов по разным критериям. Рассмотрим наиболее популярные из них.
Одним из самых полезных аргументов является -p или —patch , который показывает разницу (выводит патч), внесённую в каждый коммит. Так же вы можете ограничить количество записей в выводе команды; используйте параметр -2 для вывода только двух записей:
$ git log -p -2 commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 Change version number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -5,7 +5,7 @@ require 'rake/gempackagetask' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = "simplegit" - s.version = "0.1.0" + s.version = "0.1.1" s.author = "Scott Chacon" s.email = "schacon@gee-mail.com" s.summary = "A simple gem for using Git in Ruby code." commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 Remove unnecessary test diff --git a/lib/simplegit.rb b/lib/simplegit.rb index a0a60ae..47c6340 100644 --- a/lib/simplegit.rb +++ b/lib/simplegit.rb @@ -18,8 +18,3 @@ class SimpleGit end end - -if $0 == __FILE__ - git = SimpleGit.new - puts git.show -end
Эта опция отображает аналогичную информацию но содержит разницу для каждой записи. Очень удобно использовать данную опцию для код ревью или для быстрого просмотра серии внесённых изменений. Так же есть возможность использовать серию опций для обобщения. Например, если вы хотите увидеть сокращённую статистику для каждого коммита, вы можете использовать опцию —stat :
$ git log --stat commit ca82a6dff817ec66f44342007202690a93763949 Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 Change version number Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 Remove unnecessary test lib/simplegit.rb | 5 ----- 1 file changed, 5 deletions(-) commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon Date: Sat Mar 15 10:31:28 2008 -0700 Initial commit README | 6 ++++++ Rakefile | 23 +++++++++++++++++++++++ lib/simplegit.rb | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+)
Как вы видите, опция —stat печатает под каждым из коммитов список и количество изменённых файлов, а также сколько строк в каждом из файлов было добавлено и удалено. В конце можно увидеть суммарную таблицу изменений.
Следующей действительно полезной опцией является —pretty . Эта опция меняет формат вывода. Существует несколько встроенных вариантов отображения. Опция oneline выводит каждый коммит в одну строку, что может быть очень удобным если вы просматриваете большое количество коммитов. К тому же, опции short , full и fuller делают вывод приблизительно в том же формате, но с меньшим или большим количеством информации соответственно:
$ git log --pretty=oneline ca82a6dff817ec66f44342007202690a93763949 Change version number 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Remove unnecessary test a11bef06a3f659402fe7563abf99ad00de2209e6 Initial commit
Наиболее интересной опцией является format , которая позволяет указать формат для вывода информации. Особенно это может быть полезным когда вы хотите сгенерировать вывод для автоматического анализа — так как вы указываете формат явно, он не будет изменен даже после обновления Git:
$ git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 6 years ago : Change version number 085bb3b - Scott Chacon, 6 years ago : Remove unnecessary test a11bef0 - Scott Chacon, 6 years ago : Initial commit
Полезные опции для git log —pretty=format отображает наиболее полезные опции для изменения формата.