Shell脚本案例:获取自己上周git提交记录

背景

日常工作周报需要总结上周的主要工作,开发了哪些需求解决了哪些bug,通过git提交日志来呈现是比较客观的,本文介绍如何使用shell调用git命令获取自己上周的git提交记录。

分析

脚本涉及到几个关键点:

  1. 获取提交作者信息:读取git config获取author;
  2. 获取当天及一周前的日期:使用date命令获取;
  3. 获取git一段日期范围内的提交记录:使用git log命令获取;

脚本实现

mac系统可直接使用:

#!/bin/bash
function isMacOS() {
  # Mac下date命令式BSD(Berkeley Software Distribution)系的,
  # Linux 下date命令式GNU(GNU’s Not Unix)系,二者用法有一些区别。
  # BSD并不是特指定任何一个BSD衍生版本,而是类UNIX操作系统中的一个分支的总称。
  # Mac OS X 和 iOS实际上基于 Darwin,Darwin是BSD其中一个分支。
  uNames=$(uname -s)
  osName=${uNames: 0: 4}
  if [ "$osName" == "Darw" ] # Darwin, AKA "Mac OS X"
  then
    echo 0
  elif [ "$osName" == "Linu" ] # Linux, AKA "GNU/Linux"
  then
    echo 1
  elif [ "$osName" == "MING" ] # MINGW, windows, git-bash
  then
    echo 2
  else
    echo 3
  fi
}
is_mac=$(isMacOS)
author_name=$(git config -l|grep user.name=|cut -c11-)
if [ -z "$author_name" ]; then
  echo "[ERR]: Can not determine username for git, please check user.name"
  exit 1
fi

now_date=$(date +%Y-%m-%d)
if [ "$is_mac" ];
then
  # Mac , 通过-v参数,-v-1d 代表前一天,-v-1y代表上一年
  last_week=$(date -v-7d +%Y-%m-%d)
else
  # Linux,通过–date参数实线,–date=“-1 day” 代表前一天, –date=“-1 year” 代表上一年
  last_week=$(date -date="-7 day" +%Y-%m-%d)
fi
git log --oneline --since="$last_week" --until="$now_date" --author="$author_name" | awk '{ print $2$3}'

你可能感兴趣的:(Scripts,git,bash)