Advertisement
Guest User

svn_log

a guest
Aug 3rd, 2013
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.79 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. usage='usage:
  4.  ./svn_log <days>    OR    ./svn_log <date>
  5.  
  6. examples:
  7.  ./svn_log 10        OR    ./svn_log 2013-08-02'
  8.  
  9. # 1. получаем входной параметр - количество дней ($days) или дата в формате YYYY-MM-DD ($date)
  10. param=$1
  11. if [ -n "$param" ]; then
  12.     if [[ "$param" =~ ^[0-9]+$ ]] ; then
  13.         days="$param"
  14.     elif [[ "$param" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
  15.         date="$param"
  16.     else
  17.         echo "$usage"
  18.         exit 1
  19.     fi
  20. else
  21.     days=7 # по умолчанию показываем статистику коммитов за прошедшую неделю
  22. fi
  23.  
  24. # 2. запуск без параметра или с числовым параметром - статистика коммитов по дням
  25. if [ -n "$days" ]; then
  26.     # svn log в переменную чтобы обойтись одним вызовом
  27.     start=`date +"%Y-%m-%d" --date "$end -$days day"`
  28.     svn_log=`svn log -r {$start}:HEAD`
  29.  
  30.     for (( i=0; i<$days; i++ ))
  31.     do
  32.         # получаем дату каждого для в формате YYYY-MM-DD
  33.         day=`date +"%Y-%m-%d" --date "$end -$i day"`
  34.  
  35.         # используем полученную дату для поиска по svn log
  36.         num_commits=$(echo "$svn_log" | grep "$day" | wc -l)
  37.        
  38.         # вывод результатов
  39.         echo -ne "$day "
  40.         for (( c=0; c<$num_commits; c++ )); do
  41.             echo -ne '#'
  42.         done
  43.         echo ''
  44.     done
  45. fi
  46.  
  47. # 3. запуск с параметром даты - перечень коммитов в указанный день
  48. if [ -n "$date" ]; then
  49.     svn_log=`svn log -r {$date}:HEAD`
  50.     echo "$svn_log" | grep -A 2 -B 1 "$date" | awk "NR%4==0"
  51. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement