zoukankan      html  css  js  c++  java
  • git_info.sh

    产生关于git仓库的信息,输出格式为json

    #!/bin/bash
    
    set -uo pipefail
    
    # ----------------------------------------------------------------------
    # Check for prerequisite utilities
    # ----------------------------------------------------------------------
    
    PREREQ_COMMANDS="git"
    
    for COMMAND in ${PREREQ_COMMANDS}; do
        type "${COMMAND}" >/dev/null 2>&1 || { echo >&2 "Required command line utility "${COMMAND}" is not available.  Aborting."; exit 1; }
    done
    
    # ----------------------------------------------------------------------
    # Retrieve root URI, full commit SHA1, and version
    # ----------------------------------------------------------------------
    
    URI=$( git remote -v | grep "fetch" | grep "origin" | awk '{print $2}' )
    SHA1=$( git rev-parse HEAD )
    VERSION=$( git describe )
    
    # ----------------------------------------------------------------------
    # Generate root JSON record
    # ----------------------------------------------------------------------
    
    echo -n "
    {"root": {
      "uri": "${URI}",
      "sha1": "${SHA1}",
      "version": "${VERSION}"},
      "submodules": ["
    
    # ----------------------------------------------------------------------
    # Generate submodule records
    # ----------------------------------------------------------------------
    
    submodules=$( git submodule status )
    submodule_count=$( git submodule status | wc -l | tr -d ' ' )
    
    COUNTER=0
    IFS=$'
    '
    
    for line in $submodules; do
        SOURCE_PATH=$( echo "${line}" | cut -d " " -f3 )
        SHA1=$( echo "${line}" | cut -d " " -f2 )
        TAG=$( echo "${line}" | cut -d " " -f4 )
        COUNTER=$((COUNTER+1))
    
    echo -n "
         {"source_path": "${SOURCE_PATH}",
          "sha1": "${SHA1}",
          "tag": "${TAG//[)(]/}"}"
    
        if [ "${COUNTER}" != "${submodule_count}" ]; then
            echo -n ","
        fi
    done
    
    echo "]}"
    
    
  • 相关阅读:
    Day 22 初识面向对象
    Day 21 内存处理与正则
    Day 20 常用模块(三)
    Day 18 常用模块(二)
    url解析
    jQuery---扩展事件
    jQuery---文档操作
    jQuery---属性操作
    jQuery---基本语法
    CSS---常用属性总结
  • 原文地址:https://www.cnblogs.com/Tifa-Best/p/14596213.html
Copyright © 2011-2022 走看看