timeline

简介

打印项目变更历史的时间线。

vb  timeline [WHEN] [CHECKIN|DATETIME] [OPTIONS]

示例

  • 打印当前仓库全部时间线:

$ vb timeline
=== 2024-07-30 ===
09:16:25 [7af4d635a3] *CURRENT* trunk add test.txt (user: admin tags: trunk)
=== 2024-07-23 ===
09:18:25 [54d81d4fa3] v2.0work1提交 (user: admin tags: v2.0)
07:55:15 [dd6ab50d8c] v2.0修改 .fossil-settings文件 (user: admin tags: v2.0)
07:15:46 [bace9a7af2] v2.0分支创建以及v2.0文件提交 (user: admin tags: v2.0)
07:13:26 [8aa0b7b646] *BRANCH* trunk 分支第四次提交 (user: admin tags: trunk)
07:09:20 [1dcff7208e] trunk 分支第三次提交 (user: admin tags: trunk)
...
  • 打印 bace9a7af2 版本之前所有祖先的时间线:

$ vb timeline parents bace9a7af2
=== 2024-07-23 ===
07:15:46 [bace9a7af2] v2.0分支创建以及v2.0文件提交 (user: admin tags: v2.0)
07:13:26 [8aa0b7b646] *BRANCH* trunk 分支第四次提交 (user: admin tags: trunk)
07:09:20 [1dcff7208e] trunk 分支第三次提交 (user: admin tags: trunk)
07:08:16 [93abb4c005] trunk 分支第二次提交 (user: admin tags: trunk)
07:01:16 [2d863e0480] trunk 分支第一次提交 (user: admin tags: trunk)
06:58:05 [8c436629f5] initial empty check-in (user: admin tags: trunk)
+++ no more data (6) +++
  • 打印 bace9a7af2 版本之后所有时间线,包括额外信息:

$ vb timeline -F full after bace9a7af2
Commit:   7af4d635a36298ffef73ec42b1277ee73df635afd9fdb0fb77bd2a65f01a4f74
Date:     2024-07-30 09:16:25
Author:   admin
Comment:  trunk add test.txt
Branch:   trunk
Tags:     trunk
Phase:    *CURRENT* *LEAF* 

Commit:   54d81d4fa3a6b82c0fd1fb95c5705f7b77cc0f2b0f48cba1717aa1e919382bcd
Date:     2024-07-23 09:18:25
Author:   admin
Comment:  v2.0work1提交
Branch:   v2.0
Tags:     v2.0
Phase:    *LEAF* 

Commit:   dd6ab50d8c39add60f98fcc3ffd815d5709cf07a10189237fe0e7293a05ec0a5
Date:     2024-07-23 07:55:15
Author:   admin
Comment:  v2.0修改 .fossil-settings文件
Branch:   v2.0
Tags:     v2.0
Phase:    

--- line limit (20) reached ---
  • 打印2条 v2.0 分支时间线,每个时间线仅显示简短哈希和注释:

$ vb timeline -b v2.0 -n 2 --oneline
54d81d4fa3 v2.0work1提交
dd6ab50d8c v2.0修改 .fossil-settings文件
--- entry limit (2) reached ---
  • 打印跳过最近 2 次提交的详细时间线信息:

$ vb timeline --offset 2 -v
=== 2024-07-23 ===
07:55:15 [dd6ab50d8c] v2.0修改 .fossil-settings文件 (user: admin tags: v2.0)
   DELETED _vbsettings_/crlf-glob
07:15:46 [bace9a7af2] v2.0分支创建以及v2.0文件提交 (user: admin tags: v2.0)
   ADDED _vbsettings_/crlf-glob
   ADDED v2.0.txt
07:13:26 [8aa0b7b646] *BRANCH* trunk 分支第四次提交 (user: admin tags: trunk)
   EDITED work2.txt
   ADDED work4.txt
07:09:20 [1dcff7208e] trunk 分支第三次提交 (user: admin tags: trunk)
   DELETED work3.txt
   ADDED work3/work3.txt
07:08:16 [93abb4c005] trunk 分支第二次提交 (user: admin tags: trunk)
   ADDED work2.txt
   ADDED work3.txt
07:01:16 [2d863e0480] trunk 分支第一次提交 (user: admin tags: trunk)
   ADDED work1/day1.doc
06:58:05 [8c436629f5] initial empty check-in (user: admin tags: trunk)
+++ no more data (7) +++
  • 打印与 wiki 页面相关时间线:

$ vb timeline -t w
+++ no more data (0) +++
  • 输出的时间线格式设置为:提交作者、提交时间、提交分支:

$ vb timeline -F "%a %d %b"
admin 2024-07-30 09:16:25 trunk
admin 2024-07-23 09:18:25 v2.0
admin 2024-07-23 07:55:15 v2.0
admin 2024-07-23 07:15:46 v2.0
admin 2024-07-23 07:13:26 trunk
admin 2024-07-23 07:09:20 trunk
admin 2024-07-23 07:08:16 trunk
admin 2024-07-23 07:01:16 trunk
admin 2024-07-23 06:58:05 trunk
+++ no more data (9) +++

说明

timeline 命令以时间线的形式打印所有提交、分支、合并、标签以及其他重要事件的提交记录。可以更好地管理和维护仓库,对理解项目的演变过程、追踪变更和进行历史审查非常有用。

WHEN 包括以下关键字:

  • before :打印指定版本之后的所有时间线,包括其他分支时间线;

  • after :打印指定版本之前的所有时间线,包括其他分支时间线;

  • descendants | children :打印指定版本和其后代版本时间线;

  • ancestors | parents :打印指定版本之前所有祖先的时间线。

CHECKIN 是任何 4 个字符或以上的签入版本号,也可以用 current 来表示当前版本。

适应场景

  • 审查项目历史

timeline 打印最新的日期和时间及之前的所有版本提交记录,帮助了解项目的演变过程,包括所有的提交和重要事件。

  • 追踪特定时间段的变更

通过筛选特定日期,可以查看在某个时间段内发生的所有变更。

  • 分析分支和合并活动

使用分支和合并过滤器来关注特定分支或合并操作的变更历史。

  • 审计用户贡献

按用户筛选可以追踪特定开发者的变更记录,方便进行代码审查和贡献分析。

选项

-b|--branch BRANCH

仅打印指定分支上的项目

-c|--current-branch

仅打印当前分支上的项目

--oneline

仅打印每个时间线的简短哈希和评论

--medium

中等详细时间线格式

--full

额外详细的时间线格式

-n|--limit N

如果 N 为正数,则输出前 N 个时间线。如果 N 为负数,则输出前 -N 行。如果 N 为零,则无限制。默认值为 -20,即 20 行

--offset P

时间线跳过最近 P 次提交。

-p|--path PATH

仅输出影响 PATH 的项目。PATH 可以是文件或子目录

-R REPO

指定要使用的本地仓库。默认为当前签出的仓库

--sql

打印用于生成时间线的 SQL

-t|--type TYPE

仅输出指定类型的项目,例如:ci = file commitse = technical notesf = forum postst = ticketsw = wiki commits

-v|--verbose

输出签入注释后每次提交所更改的文件列表以及每次更改的类型(编辑、删除等)

-W|--width N

设置输出文本宽度(默认为自动检测)。宽度必须大于 20 或者为 0 ,0表示不限制宽度,每个时间线就只有一行

-F|--format

时间线格式设置。可以选择值 onelinemediumfull 将映射到下面的完整选项。否则,可以直接使用字符串,包含以下格式占位符:
%n newline
%% a raw %
%H 完整的提交哈希值
%h 提交哈希值的缩写
%a 提交者
%d 提交时间
%c 提交注释(NL,TAB 替换为空格,LF 删除)
%b 分支
%t 标签
%p 提交阶段:一个或者多个: CURRENT, MERGE, FORK, UNPUBLISHED, LEAF, BRANCH 阶段