метрики мерзавца - PullRequest
       5

метрики мерзавца

2 голосов
/ 12 апреля 2011

Я хочу определить метрики git commit с помощью bash-скрипта.
Но я никогда не использую bash-скрипт.

Идея состоит в том, чтобы количество коммитов, на которые не ссылаются в их статусе во времяопределенное время
(то есть: не закрыто или отсутствует #nnnn ссылка, где n - число, потому что мы используем Redmine для отображения ссылки открытого коммита)

алгоритм:

fonction (initial date, final date)
  read initial date
  read final date
  int n=0
  while (initial date<date<final date) do 
    if (status!=closed or status!= #nnnn) //where #nnnn is a reference and n a number
      n=+1
    end if
  end while
  echo "the number of none referenced commit is"
  echo n 
  return 0

Если есть конкретная команда git или другая идея, пожалуйста, оставьте ответ, он мне очень поможет.спасибо

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Такой скрипт будет использовать и использовать низкоуровневые команды git (сантехника, подходит для сценариев) git rev-list:

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

--skip=<number>
    Skip number commits before starting to show the commit output.
--since=<date>
--after=<date>
    Show commits more recent than a specific date.
--until=<date>
--before=<date>
    Show commits older than a specific date.
--max-age=<timestamp>
--min-age=<timestamp>
    Limit the commits output to specified time range.

--grep=<pattern>

Ограничить вывод коммитов теми, у которых сообщение журнала соответствует указанному шаблону (регулярное выражение).

Опции форматирования коммита позволяют отображать только то, что вам нужно, в основном комментарий коммита, для анализа (я полагаю, это вкомментарий коммита, в котором вы сохранили статус указанного коммита, хотя вы также могли бы использовать git notes):

--pretty[=<format>]
--format=<format>

Довольно-печать содержимое журналов фиксации в заданном формате, где может быть один из следующих: один, короткий, средний, полный, полный, электронный, сырой и формат:.См. Раздел «Добрая форма» для получения дополнительной информации о каждом формате.Если опущено, формат по умолчанию средний.

1 голос
/ 12 апреля 2011

Обновление После комментариев:

Кажется, вам действительно помогает гораздо более простой

git log --oneline | egrep -ivw 'closed|#[0123456789]+'

отфильтровывает только общие шаблоны из сообщений коммита. Если вы хотели подсчитать это

git log --oneline | egrep -ivwc 'closed|#[0123456789]+'

Вы можете добавить исходные флаги ответа, чтобы уменьшить вывод git log, например,

git log --oneline --after=2011-01-01 --until=today | egrep -ivwc 'closed|#[0123456789]+'

Оригинальный ответ:

Приходите снова. Этот вопрос не разбирается. "на которые нет ссылок в их статусе" Какой статус? Коммит обычно не имеет его. Вы используете коммит заметки?

У меня сложилось впечатление, что вы хотите найти определенную информацию, которая была не упомянутой в сообщениях git commit в течение определенного периода времени? Если да, приведите примеры того, какой тип сообщений фиксации вы используете и как хранится список «идентификаторов отношений», которые нужно искать. E.g.:

from="3 months ago"
until="1 week ago"

lookforids=( '#bug3' '#update4' '#featureY' )
for lookfor in "${lookforids[@]}";
do
    commitcount=$(git log --no-merges --oneline --after="$from" --until="$until" --all -i --grep="$lookfor" | wc -l)

    if [ "$commitcount" -le 1 ]; then echo "Not referenced: $lookfor"; fi
done

Конечно, вы должны смешивать и подбирать в соответствии с вашими потребностями, изменяя вывод по своему вкусу. from / until, конечно, может быть литералом абсолютной даты, если хотите.

...