Как подсчитать количество коммитов, сделанных для всех репозиториев, размещенных gitosis на моем сервере - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь выяснить общее количество коммитов, сделанных во всех репозиториях, размещенных на моей установке gitosis.У кого-нибудь есть идеи, как мне это сделать?

Ответы [ 6 ]

2 голосов
/ 16 июля 2011

Существует несколько способов подсчета количества коммитов, таких как:

git rev-list --all | wc -l

или для ветви

git log branch --pretty=oneline | wc -l

Можете ли вы использовать это в каждом репо или написать скрипт, который идетк каждому из репо, запускает любой из вышеперечисленных и получает счет?

1 голос
/ 13 ноября 2017

Для более новых версий git (протестировано на 2.14.1) команда git rev-list --count HEAD будет работать и даст тот же результат, что и git rev-list --all | wc -l.

1 голос
/ 16 июля 2011
ls /path/to/repos/ | xargs -I % git --git-dir=/path/to/repos/%/.git rev-list --all 2>/dev/null | wc -l

Это работает довольно хорошо для меня. Вы можете grep -v zip или использовать более конкретный запрос find, чтобы просто найти определенные каталоги.

Обновление : используйте rev-list --all вместо log --pretty=oneline.

0 голосов
/ 13 сентября 2013

На моем сервере Gitosis я использую эту команду

cd /path/to/repos/
ls | xargs -I % git --git-dir=% rev-list --all 2>/dev/null | wc -l

А на сервере Gitorious я использую

array=($(ls /path/to/repos/))
for i in ${array[@]}; do cd /path/to/repos/$i; ls | xargs -I % git --git-dir=% rev-list --all 2>/dev/null | wc -l; done

Это покажет коммиты для всех проектов, которые вы должны добавить самостоятельно

0 голосов
/ 16 июля 2011

Мне неизвестна функция в gitosis, которая делает это, но поскольку gitosis сохраняет все репозитории в одном каталоге, это довольно просто.

Например, установка gitosis по умолчанию (ну или по крайней меремой :)) хранит репозитории в ~ git / repositories.

Перейдите в этот каталог и выполните что-то похожее на это:

for rep in `find . -maxdepth 1 -mindepth 1 -type d -print`; do 
    echo $rep; 
    (cd $rep && git log -pretty=oneline | wc -l); 
done

Возможно, это можно сделать аккуратнее, но это показывает репозиторийс последующим количеством коммитов.

0 голосов
/ 16 июля 2011

Я бы порекомендовал сделать «инспекционный репозиторий».Я использую gitolite, но процесс будет таким же:

Сначала создайте репо, который собирает коммиты из всех репозиториев:

git init --bare all && cd all
ssh gitolite@gitserver | grep @W | xargs -i{} git remote add {} gitolite@gitserver:{}.git
git fetch --all

Теперь вы сможете получить счет, выполнивколичество строк:

git log --all --format=%h | wc -l

Надеюсь, это поможет.

...