婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具

Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具

熱門標(biāo)簽:申請(qǐng)公司400電話要注意什么 安裝外呼系統(tǒng)費(fèi)用 電銷機(jī)器人 劍魚 寧波智能外呼系統(tǒng)公司 聯(lián)通電話機(jī)器人怎么接 奧維互動(dòng)地圖標(biāo)注參數(shù) 衛(wèi)星地圖標(biāo)注地名 地圖標(biāo)注輻射圖案 曲阜400電話辦理

最近沒啥事,就用bash寫了一個(gè)基于svn的代碼統(tǒng)計(jì)小工具。 可以指定統(tǒng)計(jì)的目錄,默認(rèn)遞歸統(tǒng)計(jì)子目錄。

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

#!/bin/bash -  
#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
#     FILE: lines.sh 
#  
#     USAGE: ./lines.sh [dir] 
#     AUTHOR: william 
#  
#  DESCRIPTION: 基于SVN的代碼提交量統(tǒng)計(jì)工具 
#    OPTIONS: --- 
#    CREATED: 06/05/2012 12:49:20 PM CST 
#""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
 
set -o nounset               # Treat unset variables as an error 
 
 
# 關(guān)注的文件類型 后罪名 
FILES_TYPE="*.cpp *.h *.lua" 
 
# 需要統(tǒng)計(jì)的人員,在這里寫入需要統(tǒng)計(jì)的人,用空格隔開。哈還不智能 
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 "-----開始統(tǒng)計(jì),請(qǐng)耐心等待.... :) " 
action $1 
total 
 
exit 0 

您可能感興趣的文章:
  • Ubuntu下定時(shí)提交代碼到SVN服務(wù)器的Shell腳本分享
  • Linux svn的搭建與使用(圖文詳解)
  • SVN 安裝教程之服務(wù)器和客戶端
  • Eclipse 安裝 SVN 在線插件教程
  • CentOS下搭建SVN服務(wù)器的步驟詳解
  • svn 清理失敗 (cleanup 失敗) 的快速解決方法
  • Eclipse、MyEclipse 導(dǎo)入svn項(xiàng)目具體步驟
  • 使用AndroidStudio上傳忽略文件至SVN Server的解決辦法
  • Android Studio與SVN版本控制程序的協(xié)作使用指南
  • 圖解SVN服務(wù)器搭建和使用(一)
  • windows下svn服務(wù)器快速搭建圖文教程
  • Windows下SVNServer安裝與配置詳解
  • SVN無法提交出現(xiàn) Can''t set file "/db/txn_current" read-write :拒絕訪問

標(biāo)簽:上饒 江西 遵義 大興安嶺 安康 仙桃 大慶 三門峽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具》,本文關(guān)鍵詞  Shell,腳本,實(shí)現(xiàn),的,基于,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具》相關(guān)的同類信息!
  • 本頁收集關(guān)于Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    婷婷综合另类小说色区| 国产一区日韩二区欧美三区| 日韩av一区二| 成人免费视频一区| 欧美一区二区三区色| 国产精品初高中害羞小美女文| 日本不卡一区二区| 色综合天天做天天爱| 久久这里只有精品首页| 五月天久久比比资源色| 色天使色偷偷av一区二区| 欧美激情一区二区三区四区| 美女视频网站黄色亚洲| 欧美日韩成人在线一区| 亚洲另类在线一区| 99久久国产综合精品色伊| 久久精品亚洲麻豆av一区二区| 免费一级片91| 91精品国产高清一区二区三区 | 日本丶国产丶欧美色综合| 国产午夜亚洲精品不卡| 韩日av一区二区| 日韩免费电影网站| 美女视频网站久久| 欧美裸体bbwbbwbbw| 亚洲高清免费观看| 欧美绝品在线观看成人午夜影视| 一区二区三区四区高清精品免费观看| 国产成人精品三级| 国产精品视频一二| 91在线无精精品入口| 亚洲欧洲色图综合| 日本伦理一区二区| 亚洲一区二区三区四区在线观看| 一本大道久久a久久综合| 亚洲精品美国一| 91福利社在线观看| 亚洲高清不卡在线观看| 91麻豆精品国产综合久久久久久| 美脚の诱脚舐め脚责91| 久久伊99综合婷婷久久伊| 国产在线国偷精品产拍免费yy| 精品国产乱码久久久久久免费| 久久99精品国产91久久来源| 国产日韩在线不卡| www.成人在线| 午夜精品久久久久久久99樱桃| 欧美高清你懂得| 狠狠狠色丁香婷婷综合激情| 国产精品乱人伦| 欧美在线三级电影| 美女久久久精品| 欧美国产成人在线| 在线观看免费成人| 国产综合一区二区| 国产精品久久久久久久久搜平片 | 久久精品免费看| 国产视频一区不卡| 欧美中文字幕一区二区三区| 奇米777欧美一区二区| 中文字幕精品三区| 欧美猛男gaygay网站| 国产成人综合在线观看| 一区二区三区波多野结衣在线观看| 6080午夜不卡| 99久久免费国产| 青青草国产成人av片免费| 国产人妖乱国产精品人妖| 在线观看欧美日本| 国产成人av一区二区三区在线观看| 亚洲综合色婷婷| 国产欧美日本一区视频| 欧美日产国产精品| 99re这里只有精品6| 免费精品99久久国产综合精品| 亚洲桃色在线一区| 精品成人一区二区三区| 欧美日韩一区 二区 三区 久久精品| 国产一区二区精品久久99| 午夜伦理一区二区| 亚洲色图都市小说| 久久精品视频免费| 这里是久久伊人| 欧美中文字幕一区二区三区亚洲| 成人自拍视频在线观看| 久久se精品一区精品二区| 一区二区三区**美女毛片| 中文字幕一区二区三区精华液| 久久网这里都是精品| 日韩欧美资源站| 欧美美女一区二区在线观看| 91久久国产最好的精华液| 成人午夜精品在线| 国产精品1区二区.| 久久99精品久久久久久| 热久久久久久久| 男女视频一区二区| 日韩和欧美的一区| 偷拍与自拍一区| 丝瓜av网站精品一区二区| 亚洲精品欧美专区| 亚洲欧美偷拍卡通变态| 亚洲丝袜精品丝袜在线| 国产精品国产三级国产aⅴ原创| 久久婷婷成人综合色| 26uuu亚洲综合色欧美| 精品国产乱码久久久久久影片| 欧美成人一区二区三区片免费 | 国产91高潮流白浆在线麻豆| 国产真实乱对白精彩久久| 精品一区二区免费| 国产美女精品一区二区三区| 国产一区欧美日韩| 成人免费视频一区| 91丨九色porny丨蝌蚪| 欧洲一区二区三区在线| 欧美日韩国产小视频| 欧美一级xxx| 久久女同互慰一区二区三区| 国产视频在线观看一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 久久久久高清精品| 亚洲婷婷在线视频| 亚洲一区免费观看| 蜜桃视频免费观看一区| 国产伦精品一区二区三区视频青涩 | 亚洲精品国产无套在线观| 亚洲成人综合网站| 蜜桃久久久久久久| 成人免费黄色大片| 欧洲一区在线观看| 精品嫩草影院久久| 中文字幕亚洲一区二区va在线| 亚洲一区二区三区视频在线播放| 日韩国产欧美视频| 国产91精品精华液一区二区三区| 色婷婷综合在线| 日韩一区二区免费在线观看| 欧美经典三级视频一区二区三区| 亚洲女同一区二区| 久久精品国产一区二区三| av不卡免费在线观看| 欧美日韩国产综合一区二区 | 国产精品久久久久久久久果冻传媒 | 岛国精品在线播放| 欧美日韩亚洲另类| 2019国产精品| 亚洲精品免费在线播放| 精品中文字幕一区二区| 91女人视频在线观看| 欧美精品一区二区蜜臀亚洲| 亚洲美女在线一区| 精品一区二区三区蜜桃| 欧美专区在线观看一区| 国产欧美综合在线| 日本不卡免费在线视频| 在线视频观看一区| 日本一区免费视频| 免费观看久久久4p| 日本高清视频一区二区| 国产精品视频一区二区三区不卡| 日本aⅴ亚洲精品中文乱码| 91高清视频免费看| 国产精品成人免费精品自在线观看 | 国产成人在线视频网站| 这里只有精品电影| 亚洲激情av在线| www.成人网.com| 久久美女高清视频| 麻豆精品国产传媒mv男同 | 色综合天天综合| 国产欧美一区二区精品性色| 美女任你摸久久| 7777精品伊人久久久大香线蕉经典版下载| 日韩一区在线播放| 国产高清不卡一区| 欧美精品一区二区三区视频| 丝袜美腿亚洲综合| 欧美人与性动xxxx| 亚洲国产综合色| 欧美午夜精品电影| 一区二区三区成人| 91成人在线免费观看| 亚洲日本青草视频在线怡红院| 成人免费视频视频在线观看免费| 久久久国产精华| 国产a级毛片一区| 久久精品无码一区二区三区| 国产一区视频导航| 国产日产精品一区| 成人网在线免费视频| 国产精品视频看| 99re视频这里只有精品| 综合在线观看色| 在线视频国内自拍亚洲视频| 亚洲成av人在线观看| 欧美二区三区91| 激情综合网最新| 国产片一区二区| 色综合欧美在线|