如何"放松"的参与开源社区建设

前言

如果你是在因为害怕 github 的 commit 提交时间是在某个时间段, 并害怕被某些人发现.

恭喜你, 你可能跟我考虑的是一个问题.

通过下面的脚本(ChatGPT 提供), 将 commit 的时间调整至(18:00/19:00) 后.

建议 19:00, 18:00 左右的时间容易存在争议

脚本

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash

# 检测操作系统类型
if date --version >/dev/null 2>&1; then
# GNU date (Linux)
DATE_CMD="gnu"
else
# BSD date (macOS)
DATE_CMD="bsd"
fi

# 获取今天的日期
TODAY=$(date +"%Y-%m-%d")

# 获取当天 19:00 的时间戳
if [ "$DATE_CMD" = "gnu" ]; then
# Linux: 使用 GNU date 的 -d 参数
NINETEEN_TIME=$(date -d "${TODAY} 19:00:00" "+%s")
else
# macOS: 使用 BSD date 的 -j 和 -f 参数
NINETEEN_TIME=$(date -j -f "%Y-%m-%d %H:%M:%S" "${TODAY} 19:00:00" "+%s")
fi

# 获取 Git 中的最后一次提交时间戳
LAST_COMMIT_TIME=$(git log -1 --format="%ct" 2>/dev/null)

# 如果没有提交记录,初始化 LAST_COMMIT_TIME 为 0
if [ -z "$LAST_COMMIT_TIME" ]; then
LAST_COMMIT_TIME=0
fi

# 提交函数
commit_with_adjusted_time() {
# 获取当前时间戳
CURRENT_TIME=$(date "+%s")

# 如果当前时间早于 19:00 或没有提交记录
if [ "$CURRENT_TIME" -lt "$NINETEEN_TIME" ] && [ "$LAST_COMMIT_TIME" -lt "$NINETEEN_TIME" ]; then
# 使用当天 19:00 的时间作为基准
COMMIT_TIME=$NINETEEN_TIME
else
# 基于上一次提交时间递增 1 秒
COMMIT_TIME=$(($LAST_COMMIT_TIME + 1))
fi

# 更新最后一次提交的时间
LAST_COMMIT_TIME=$COMMIT_TIME

# 格式化时间为 Git 可识别的格式
if [ "$DATE_CMD" = "gnu" ]; then
# Linux: 使用 GNU date 的 -d 参数
FORMATTED_TIME=$(date -d "@$COMMIT_TIME" "+%Y-%m-%dT%H:%M:%S")
else
# macOS: 使用 BSD date 的 -j 和 -f 参数
FORMATTED_TIME=$(date -j -f "%s" "$COMMIT_TIME" "+%Y-%m-%dT%H:%M:%S")
fi

# 设置提交时间并提交代码
GIT_AUTHOR_DATE=$FORMATTED_TIME GIT_COMMITTER_DATE=$FORMATTED_TIME git commit -m "$1" --date="$FORMATTED_TIME"

echo "Commit created with time: $FORMATTED_TIME"
}

# 检查参数是否传入提交信息
if [ -z "$1" ]; then
echo "Usage: $0 <commit-message>"
exit 1
fi

# 调用提交函数
commit_with_adjusted_time "$1"

使用

1
2
chmod +x commit.sh
./commit.sh "commit message"