亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Shell腳本實現的基于SVN的代碼提交量統計工具

2020-07-27 19:05:57
字體:
來源:轉載
供稿:網友

最近沒啥事,就用bash寫了一個基于svn的代碼統計小工具。 可以指定統計的目錄,默認遞歸統計子目錄。

目前還沒有屏蔽指定目錄的功能。哈 代碼比較粗糙。不過先曬出來。

#!/bin/bash -  #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" #     FILE: lines.sh #  #     USAGE: ./lines.sh [dir] #     AUTHOR: william #  #  DESCRIPTION: 基于SVN的代碼提交量統計工具 #    OPTIONS: --- #    CREATED: 06/05/2012 12:49:20 PM CST #"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  set -o nounset               # Treat unset variables as an error   # 關注的文件類型 后罪名 FILES_TYPE="*.cpp *.h *.lua"  # 需要統計的人員,在這里寫入需要統計的人,用空格隔開。哈還不智能 declare -r CODER_LIST="coder1 coder2" declare -i coder1 declare -i coder2   declare -r USAGE="Usage: $0 [dir]. default dir is current dir./n"  # ERROR CODES; declare -r E_BAD_PATH=1 declare -r E_INVAILED_ARGU=2 declare -r E_NOT_SVN_DIR=3   #TODO 屏蔽一些dir 還沒寫哈 # TODO other way get path not with / end  getpath() {   #debug   #echo dir_name: ${dir_name}   #echo base_name: ${base_name}   if [ $dir_name == "/" ] || [ $base_name == "/" ]; then     work_path="/"   else     work_path=${dir_name}/${base_name}   fi }  statistic_codelines() {   if [ -z "$1" ]; then     echo "ERROR statistic_codelines not argument"     return   fi   local pwd_length=${#PWD}   echo "--------------------------"   echo "${PWD}"   for coder in $CODER_LIST; do     local num=$(echo "$1" | grep ${coder} | wc -l)     (( ${coder} += num ))     if [ $num -ne 0 ]; then       printf "%10s | %-7d/n" ${coder} $num     fi   done   echo "--------------------------" }   # init check argument set work_path init_work_path() {   if [ $# -eq 1 ]; then     if [ $1 == "-h" ]; then # is help         echo -e "$USAGE"     elif [ -d $1 ]; then       dir_name=$(dirname ${1})       base_name=$(basename ${1})       getpath;     else       echo -e "An invailed argument"       echo -e "Use -h get help."       exit $E_INVAILED_ARGU     fi   fi }  # check work_path check_work_path() {   if [ -z $work_path ] || [ ! -d $work_path ]; then     exit $E_BADPATH;   fi }  # enter work_path enter_work_path() {   cd ${work_path}   if [ ! $? ]; then     echo "Can not enter ${work_path} "   fi }  # check work_pat is a svn dir is_svn_dir() {   (   # check if current dir is asvn dir   svn info &> /dev/null   exit $?   )   return $? }  action() {   local dir_name=.   local base_name=   local work_path=$dir_name    init_work_path $1   check_work_path   enter_work_path #todo can't enter    #echo "NOW DIR: $PWD, OLD DIR $OLDPWD"   is_svn_dir   #todo to next dir   local ret=$?   if [ $ret -ne 0 ]   then     echo -e "Current dir /"${work_path}/" not a svn dir."     exit $E_NOT_SVN_DIR   fi    # get source files   local files=$(ls ${FILES_TYPE} 2> /dev/null)    if [ -n "$files" ]; then    local namelist=$(echo -n ${files} | xargs -n 1 svn blame | awk '{print $2}')    #svn blame $files #| grep $1 | wc -l    statistic_codelines "$namelist"   fi    local sub_dirs=$(find -maxdepth 1 -type d -name "[^.]*" 2>/dev/null)    if [ -n "$sub_dirs" ]; then     for dir in $sub_dirs ; do       action "$dir"     done   fi    cd .. }  total() {   echo "-------- TOTOAL ----------"   echo "   NAME | lines    "    echo "--------------------------"   for coder in $CODER_LIST; do     if [ ${!coder} -ne 0 ]; then       printf "%10s | %-7d/n" ${coder} ${!coder}     fi   done   echo "--------------------------" }  # main echo "-----開始統計,請耐心等待.... :) " action $1 total  exit 0 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩中文字幕在线| y97精品国产97久久久久久| 欧美性videos高清精品| 91国内揄拍国内精品对白| 国产精品电影在线观看| 日本欧美一二三区| 国产一区欧美二区三区| 亚洲三级 欧美三级| 中文在线资源观看视频网站免费不卡| 国产成人亚洲综合青青| 亚洲成**性毛茸茸| 国产精品偷伦一区二区| 欧美性猛交xxxx偷拍洗澡| 日韩精品极品在线观看播放免费视频| 亚洲精品久久久久久下一站| 欧美激情乱人伦一区| 色噜噜狠狠色综合网图区| 一本色道久久综合亚洲精品小说| 91sa在线看| 一本一道久久a久久精品逆3p| 日韩中文字幕网站| 国产精品久久久久久久久久久不卡| 亚洲电影第1页| 久久亚洲欧美日韩精品专区| 免费99精品国产自在在线| 欧美黑人国产人伦爽爽爽| 午夜免费在线观看精品视频| 国产精品久久网| 国产精品成av人在线视午夜片| 日韩成人久久久| 亚洲成成品网站| 欧美一级淫片丝袜脚交| 亚洲人成电影网站色www| 日韩av中文字幕在线免费观看| 国产主播精品在线| 26uuu亚洲国产精品| 日韩免费黄色av| 亚洲国产精品99| 亚洲欧美日本精品| 国产精品黄色av| 日韩在线欧美在线| 欧美自拍视频在线| 亚洲国产日韩一区| 韩国一区二区电影| 国产精品久久一区主播| 亚洲人成在线一二| 狠狠久久亚洲欧美专区| 狠狠久久五月精品中文字幕| 国产精品久久久久77777| 精品久久久久久中文字幕大豆网| 亚洲欧美一区二区三区久久| 国产91ⅴ在线精品免费观看| 日本成人黄色片| 精品久久久中文| 91色在线观看| 91精品久久久久久久久不口人| 亚洲欧美国产日韩中文字幕| 91网站免费观看| 亚洲天堂免费观看| 亚洲成人av在线播放| 亚洲精品二三区| 欧美午夜精品伦理| 日韩视频欧美视频| 91精品视频一区| 欧美韩日一区二区| 国产一区二区三区在线播放免费观看| 国产精品www网站| 91香蕉国产在线观看| 国内外成人免费激情在线视频| 欧美久久精品午夜青青大伊人| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲精品免费网站| 国产精品成av人在线视午夜片| 欧美日韩精品在线观看| 久久久国产91| 色悠久久久久综合先锋影音下载| 久久精品成人欧美大片古装| 91香蕉嫩草神马影院在线观看| 亚洲欧美中文日韩在线v日本| 国产一区二区三区日韩欧美| 国产精品日韩欧美综合| 91精品国产综合久久久久久久久| 亚洲国产精品久久久久| 亚洲国产日韩欧美在线动漫| www.亚洲免费视频| 亚洲视频在线免费观看| 久久久999精品视频| 成人黄色中文字幕| 久久久影视精品| 亚洲影院色在线观看免费| 国产精品欧美激情在线播放| 日韩av影院在线观看| 亚洲日韩欧美视频| 亚洲国产精品va在看黑人| 欧美精品999| 不卡av在线网站| 久久免费少妇高潮久久精品99| 26uuu另类亚洲欧美日本老年| 国产成人精品日本亚洲专区61| 亚洲第一页在线| 国产女人18毛片水18精品| 欧美国产日韩xxxxx| 国产成人精品视频在线观看| 亚洲在线第一页| 久久资源免费视频| 成人免费看黄网站| 亚洲最大成人网色| 欧美日韩在线视频首页| 日韩视频在线免费观看| 国产91精品久久久| 中文字幕视频在线免费欧美日韩综合在线看| 欧美激情中文字幕乱码免费| 韩国三级电影久久久久久| 日韩欧美成人免费视频| 中文.日本.精品| 91免费在线视频网站| 国产精品激情av电影在线观看| 色综合导航网站| 亚洲欧美国产一区二区三区| 亚洲www视频| 久久影院在线观看| 国产精品99久久久久久白浆小说| 欧美大秀在线观看| 亚洲男女自偷自拍图片另类| 麻豆精品精华液| 日韩在线精品一区| 久久精品国产精品亚洲| 日本三级韩国三级久久| 亚洲性生活视频在线观看| 久久久精品2019中文字幕神马| 日韩免费av在线| 欧美成人精品在线观看| 国产精品久久中文| 亚洲精品欧美一区二区三区| 亚洲黄色片网站| 91在线观看免费网站| 久久久久久久影院| 国产一区二区三区毛片| 免费av一区二区| 78m国产成人精品视频| 日韩免费在线电影| 欧美黑人又粗大| 国产不卡精品视男人的天堂| 久久视频精品在线| 欧美xxxwww| 91欧美视频网站| 91夜夜未满十八勿入爽爽影院| 亚洲a成v人在线观看| 91精品久久久久久久久久入口| 国产美女精品视频| 亚洲精品国产综合区久久久久久久| 国产噜噜噜噜噜久久久久久久久| 亚洲精品第一国产综合精品| 久久视频免费在线播放| 亚洲少妇激情视频| 亚洲精品成人网| 久久视频这里只有精品| 国产精品自产拍高潮在线观看| 精品国模在线视频| 成人在线中文字幕| 中日韩美女免费视频网站在线观看| 国语自产精品视频在免费| 欧美在线视频网站| 中文字幕免费精品一区|