feat: git retime 支持重排提交日期,新增 install.sh
- 新增 --start-date:按原顺序从指定日期起重排提交日期,默认每天一个 - 新增 --per-day 控制每天提交数、--day-gap 控制日期间隔;两者需配合 --start-date 使用,否则报错提示 - 不给 --start-date 时保持原行为(保留原日期,只改时分秒) - 预览在重排模式下显示完整的新日期时间,并说明日期规则 - install.sh:补 shebang 与可执行权限,构建后安装到 /usr/local/bin - 文档:README.git.md 增加「重排日期」小节与选项表
This commit is contained in:
@@ -423,3 +423,47 @@ func fixtureResp(args ...string) gitResponse {
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func TestParseGitRetimeArgsRedate(t *testing.T) {
|
||||
opts, _, err := parseGitRetimeArgs([]string{
|
||||
"2026-10-01", "2026-10-15",
|
||||
"--start-date", "2026-11-01",
|
||||
"--per-day", "2",
|
||||
"--day-gap", "3",
|
||||
}, time.Now())
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
if opts.StartDate.Format("2006-01-02") != "2026-11-01" || opts.PerDay != 2 || opts.DayGap != 3 {
|
||||
t.Fatalf("opts = %+v", opts)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseGitRetimeArgsRedateValidation(t *testing.T) {
|
||||
tests := []struct {
|
||||
args []string
|
||||
want string
|
||||
}{
|
||||
{[]string{"2026-10-01", "2026-10-02", "--per-day", "2"}, "需要配合 --start-date"},
|
||||
{[]string{"2026-10-01", "2026-10-02", "--day-gap", "2"}, "需要配合 --start-date"},
|
||||
{[]string{"2026-10-01", "2026-10-02", "--start-date", "2026/11/01"}, "YYYY-MM-DD"},
|
||||
{[]string{"2026-10-01", "2026-10-02", "--start-date", "2026-11-01", "--per-day", "0"}, "大于 0"},
|
||||
{[]string{"2026-10-01", "2026-10-02", "--start-date", "2026-11-01", "--day-gap", "x"}, "大于 0"},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
_, _, err := parseGitRetimeArgs(tc.args, time.Now())
|
||||
if err == nil || !strings.Contains(err.Error(), tc.want) {
|
||||
t.Errorf("args %v: err = %v, want %q", tc.args, err, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseGitRetimeArgsDefaultDayGap(t *testing.T) {
|
||||
opts, _, err := parseGitRetimeArgs([]string{"2026-10-01", "2026-10-02", "--start-date", "2026-11-01"}, time.Now())
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
if opts.DayGap != 1 {
|
||||
t.Errorf("DayGap = %d, want the default 1", opts.DayGap)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user