-
Notifications
You must be signed in to change notification settings - Fork 32
Description
[任务描述]
为 log 命令添加 --grep 参数。Git 的 --grep 参数允许用户根据提交信息中的内容来过滤提交历史,只显示包含指定模式的提交。
--grep 参数的特点:
- 内容过滤:基于提交消息的内容进行搜索匹配。
- 模式匹配:支持简单的字符串包含匹配(后续可扩展为正则表达式)。
- 参数组合:可以与其他 log 参数(如 --oneline, -n, --author 等)组合使用。
- 无结果静默:当没有匹配的提交时,不输出任何内容。
libra 的 log 命令目前支持基本的提交历史显示,但缺少基于内容的过滤功能。
本任务参照 Git 的 --grep 参数实现 libra 的提交信息过滤功能。
[实现方案]
-
参考 libra 其他子命令的方式,给 log 命令添加 LogArgs 结构体用于表示
log 命令的参数(在结构体中添加 Option 类型变量 grep 来表示 --grep 参数),
通过 Parser 库解析命令行参数。 -
根据 grep 值来过滤提交历史,在获取提交列表后,对每个提交的消息内容进行
模式匹配,只保留包含指定模式的提交。 -
改变 log 函数中提交列表处理的代码逻辑 - 这里参考了 Git 中 log 命令的
过滤机制,通过字符串包含匹配来实现基础的内容过滤。 -
为修改后的代码编写测试样例,通过创建包含特定提交信息的测试仓库,验证
--grep 参数能够正确过滤出预期的提交。