10

Посчитать количество строк в репозитории Git

16

Как посчитать общее количество строк во всех файлах в git-репозитории?

Команда git ls-files выдает список файлов, отслеживаемых git. Я ищу команду, которая позволит мне объединить содержимое всех этих файлов. Что-то вроде следующего:

git ls-files | [объединить все эти файлы] | wc -l

Как правильно реализовать эту задачу?

5 ответ(ов)

16

Команда xargs позволит вам сначала объединить все файлы с помощью cat, а затем передать их в wc, как вы запрашивали:

git ls-files | xargs cat | wc -l

Однако, пропуская промежуточный cat, вы получите больше информации, и это, вероятно, будет лучше:

git ls-files | xargs wc -l
4

Команда git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 показывает различия от "пустого дерева" до вашего текущего рабочего дерева, что, по сути, означает подсчет всех строк в вашем текущем рабочем дереве.

Чтобы получить статистику по изменениям в вашем текущем рабочем дереве, используйте команду:

git diff --shortstat `git hash-object -t tree /dev/null`

В результате выполнения этой команды вы получите строку, например: 1770 files changed, 166776 insertions(+).

0

Лучшее решение, по крайней мере, на мой взгляд, спрятано в комментариях к ответу @ephemient. Я просто поднимаю его здесь, чтобы оно не осталось незамеченным. Кредиты за это должны принадлежать @FRoZeN (и @ephemient).

git diff --shortstat `git hash-object -t tree /dev/null`

Возвращает общее количество файлов и строк в рабочем каталоге репозитория, без лишнего шума. В качестве бонуса, считается только исходный код — бинарные файлы исключаются из подсчета.

Команда выше работает на Linux и OS X. Кроссплатформенная версия будет следующей:

git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

Эта команда также работает на Windows.

Для справки, параметры для исключения пустых строк:

  • -w/--ignore-all-space
  • -b/--ignore-space-change
  • --ignore-blank-lines
  • --ignore-space-at-eol

не оказывают никакого эффекта при использовании с --shortstat. Пустые строки учитываются.

0

Вы можете использовать следующую команду для подсчета общего числа строк в файлах, которые находятся под версионным контролем Git:

git grep ^ | wc -l

Эта команда ищет все файлы, отслеживаемые Git, по регулярному выражению ^, которое обозначает начало строки. Таким образом, выполнение данной команды возвращает общее количество строк во всех файлах.

0

Для подсчета строк в файлах с расширениями HTML, CSS, Java и JavaScript в cmder, можно использовать следующую команду:

git ls-files | grep "\(\.html\|\.css\|\.js\|\.java\)$" | xargs wc -l

Обратите внимание, что в вашем изначальном выражении grep вы забыли экранировать точку перед расширением файла (например, \.html вместо .html). Это важно, так как точка в регулярных выражениях означает "любой символ", и её нужно экранировать, чтобы она воспринималась именно как точка.

Также, используйте символы \( и \) для группировки ваших паттернов. Это позволит вам использовать оператор | для логического "или". Таким образом, ваша команда будет корректно фильтровать файлы с указанными расширениями, а затем xargs передаст их на вход wc -l, который подсчитает строки в этих файлах.

Удачи!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь