Pull to refresh

Наглядное представление активности коммитов SVN в терминале

Reading time2 min
Views6K
В небольших личных проектах я использую SVN и bug-трекером в таких случаях служит лист формата A4. svn log никогда не был легко читаем для меня, поэтому я написал bash-скрипт, позволяющий наглядно видеть активность разработки за последнее время или список коммитов заданной даты:

image



#!/bin/bash

usage='usage: 
  ./svn_log <days>    OR    ./svn_log <date>

examples: 
  ./svn_log 10        OR    ./svn_log 2013-08-02'

# 1. получаем входной параметр - количество дней ($days) или дата в формате YYYY-MM-DD ($date)
param=$1
if [ -n "$param" ]; then
    if [[ "$param" =~ ^[0-9]+$ ]] ; then
        days="$param"
    elif [[ "$param" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
        date="$param"
    else
        echo "$usage"
        exit 1
    fi
else
    days=7 # по умолчанию показываем статистику коммитов за прошедшую неделю
fi

# 2. запуск без параметра или с числовым параметром - статистика коммитов по дням
if [ -n "$days" ]; then
    # svn log в переменную чтобы обойтись одним вызовом
    start=`date +"%Y-%m-%d" --date "$end -$days day"`
    svn_log=`svn log -r {$start}:HEAD`

    for (( i=0; i<$days; i++ ))
    do
        # получаем дату каждого для в формате YYYY-MM-DD
        day=`date +"%Y-%m-%d" --date "$end -$i day"`

        # используем полученную дату для поиска по svn log
        num_commits=$(echo "$svn_log" | grep "$day" | wc -l)
        
        # вывод результатов
        echo -ne "$day "
        for (( c=0; c<$num_commits; c++ )); do
            echo -ne '#'
        done
        echo ''
    done
fi

# 3. запуск с параметром даты - перечень коммитов в указанный день
if [ -n "$date" ]; then
    svn_log=`svn log -r {$date}:HEAD`
    echo "$svn_log" | grep -A 2 -B 1 "$date" | awk "NR%4==0"
fi


Скачать скрипт: pastebin.com

Буду рад, если этот инструмент пригодится кому-либо еще.
Tags:
Hubs:
+6
Comments7

Articles