Skip to content

[r2cn-测试任务] 为 log 命令添加 --grep 参数,支持按提交信息过滤提交历史 #47

@lunygithub

Description

@lunygithub

[任务描述]
为 log 命令添加 --grep 参数。Git 的 --grep 参数允许用户根据提交信息中的内容来过滤提交历史,只显示包含指定模式的提交。

--grep 参数的特点:

  1. 内容过滤:基于提交消息的内容进行搜索匹配。
  2. 模式匹配:支持简单的字符串包含匹配(后续可扩展为正则表达式)。
  3. 参数组合:可以与其他 log 参数(如 --oneline, -n, --author 等)组合使用。
  4. 无结果静默:当没有匹配的提交时,不输出任何内容。

libra 的 log 命令目前支持基本的提交历史显示,但缺少基于内容的过滤功能。
本任务参照 Git 的 --grep 参数实现 libra 的提交信息过滤功能。

[实现方案]

  1. 参考 libra 其他子命令的方式,给 log 命令添加 LogArgs 结构体用于表示
    log 命令的参数(在结构体中添加 Option 类型变量 grep 来表示 --grep 参数),
    通过 Parser 库解析命令行参数。

  2. 根据 grep 值来过滤提交历史,在获取提交列表后,对每个提交的消息内容进行
    模式匹配,只保留包含指定模式的提交。

  3. 改变 log 函数中提交列表处理的代码逻辑 - 这里参考了 Git 中 log 命令的
    过滤机制,通过字符串包含匹配来实现基础的内容过滤。

  4. 为修改后的代码编写测试样例,通过创建包含特定提交信息的测试仓库,验证
    --grep 参数能够正确过滤出预期的提交。

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions