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

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

分析
脚本涉及到几个关键点:

获取提交作者信息:读取git config获取author;
获取当天及一周前的日期:使用date命令获取;
获取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}'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
文章知识点与官方知识档案匹配,可进一步学习相关知识
————————————————
版权声明:本文为CSDN博主「csfchh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csfchh/article/details/129696111

猜你喜欢

转载自blog.csdn.net/u012294613/article/details/132432610