git:检查最后一次获取的运行时间

时间:2014-01-16 19:09:45

标签: git bash

我有一个脚本显示最后几个日志更改,但如果在一两天内没有运行提取,我希望脚本能够手动运行。

以下是如何使用的示例bash代码:

#!/bin/bash

# this is what I need:
last_fetch_date=`git fetch --show-last-fetch-date`

# do the math to see how long ago
timestamp=`date -d "$last_fetch_date" +%s`
now=`date +%s`
diff=`echo $now - $timestamp | bc -l`

# two days
if [ `echo $diff' >= 2*24*60*60' | bc -l` == "1" ]; then
    git fetch --tags
fi

2 个答案:

答案 0 :(得分:6)

由于git不存储该信息,因此无法知道何时运行<{1}} 。如果您想知道,每次运行时都必须在某处写一个时间戳。

但是,您可以在git fetch上次实际提取某些内容时找到。每次git fetch获取新提交时,它都会更新reflog。要查看它,请使用例如

git fetch

这将显示git reflog show --date=iso -n 1 origin/master 与日期的最后一次更改。警告:这也将显示何时 修改了它(通过推送)。

最后,在没有所有这些检查的情况下,只要方便就可以更轻松地进行提取。如果没有什么可以取的,origin/master会很快运行。

答案 1 :(得分:0)

这是我最终做的事,感谢@sleske

#!/bin/bash

# do the math to see how long ago was the last fetch
 now=`date +%s`
 last_fetch=`git reflog show --date=raw -n 1 origin/master | grep -oE '{[0-9]+' | sed 's%{%%'`
 diff=`echo $now - $last_fetch | bc -l`
if [ `echo $diff' >= 2*24*60*60' | bc -l` == "1" ]; then
    git fetch -q
    git fetch --tags -q
fi