zoukankan      html  css  js  c++  java
  • 统计Git

    公司需求统计Mos代码行数

    方法一:用git

    #!/bin/bash
    
    read -p "输入你要统计mos的分支:" branch
    
    Mos_Project=(uusafe-prod-mos-app-inte uusafe-prod-mos-app-client uusafe-prod-mos-app-service uusafe-prod-mos-app-rest uusafe-prod-mos-base-inte uusafe-prod-mos-base-client uusafe-prod-mos-base-rest uusafe-prod-mos-base-service  uusafe-prod-mos-device-inte uusafe-prod-mos-device-client uusafe-prod-mos-device-rest uusafe-prod-mos-device-service uusafe-prod-mos-wrapping-inte  uusafe-prod-mos-wrapping-rest uusafe-prod-mos-wrapping-service uusafe-prod-mos-wrapping-client uusafe-prod-mos-gateway-inte uusafe-prod-mos-gateway-client uusafe-prod-mos-gateway-rest uusafe-prod-mos-gateway-service)
    Users=(填写开发人员的git账号)
    
    Since_Today=`date +%F --date="-3 month"`
    Until_Today=`date +%F`
    echo -e "33[34m当前时间:${Since_Today},三个月之前:${Until_Today}33[0m"
    
    #创建一个临时目录
    mkdir -p /tmp/statistics_git
    for Project in ${Mos_Project[*]}
      do
        cd /tmp/statistics_git
        git clone ssh://xiaojin@192.168.1.29:29418/${Project} -b ${branch} &>/dev/null
        echo -e "33[35m${Project} ${branch}:33[0m"
        cd ${Project}
        for user in ${Users[*]}
           do
            git log --since==${Since_Today} --until=${Until_Today} --author="${user}" --pretty=tformat: --numstat | gawk -vuser="$user" '{ add += $1 ; subs += $2 ; loc += $1 - $2 ;if(NF==3)num+=1} END { printf "提交者: "user" 增加行数: %s 删除行数 : %s 总共行数: %s 修改文件数: %s 
    ",add,subs,loc,num }'
        done
    done
    
    rm -fr /tmp/statistics_git

    方法二:用python工具(gitstats)统计

    [root@platform_4 scripts]# cat android_statistics_gitsubmit.sh 
    #!/bin/bash
    
    read -p "输入统计Android分支的代码线:" branch
    
    git_judge(){
        if [ $? -eq 0 ];then
             echo "正在拉去分支${branch}...."
        else
             echo "${branch}分支不存在"
             exit
        fi
    }
    
    main(){
        mkdir -p /tmp/statistics_android
        cd /tmp/statistics_android
        echo '正在拉取代码......'
        git clone ssh://xiaojin@192.168.1.29:29418/app/android/portal -b ${branch} &>/dev/null
        git_judge
        #统计生成tar包
        cd /tmp/statistics_android/portal
        echo '正在统计代码.....'
        /usr/local/src/gitstats/gitstats . android_${branch} &>/dev/null
        mkdir -p /opt/git_software/android
        tar zcf /opt/git_software/android/android_${branch}_`date +%F`_git.tar.gz android_${branch}
        rm -fr /tmp/statistics_android
        echo "文件生成路径:/opt/git_software/android/android_${branch}_`date +%F`_git.tar.gz"
    }
    
    main
    

      

  • 相关阅读:
    枚举类型
    [ Java学习 ] “goto语句“ 和 “continue + 标号” 的不同待遇
    [ Java学习 ] 其他知识总结(重要)
    [ Java学习 ] Java变量以及内存分配(非常重要)
    [ Java学习 ] 包语句 package等语句的汇总整理
    [ Java学习 ] 破除思维定势之 C++ 和 Java 的差异 003
    P1601一道高精度的题
    啊哈,我又来了
    算了,有一道水题
    再水一道题
  • 原文地址:https://www.cnblogs.com/so-cool/p/9803836.html
Copyright © 2011-2022 走看看