[任务描述]
为 commit 命令添加 -s/--signoff 参数。该参数用于在提交信息的末尾添加一个
签名行(Signed-off-by),以表明提交者遵守项目的贡献者许可协议(如DCO)。
签名行的格式为:
Signed-off-by: 用户名 <邮箱>
其中,用户名和邮箱从Git配置(user.name和user.email)中获取。
该参数应支持与其他参数(如-m、--amend、--conventional等)同时使用。
[实现方案]
在CommitArgs结构体中添加一个bool类型的字段signoff,并为其添加命令行参数解析(使用clap的arg属性)。
参数为短选项-s和长选项--signoff。
在执行commit命令时(execute函数中),如果signoff为true,则:
a. 从配置中获取user.name和user.email(如果未设置,则使用默认值如"unknown")。
b. 将签名行(格式为"Signed-off-by: {name} <{email}>")添加到提交信息的末尾。
提交信息与签名行之间需要有一个空行(即两个换行符分隔)。
修改提交信息的生成方式:
如果启用了signoff,则提交信息为:原始信息 + "\n\n" + 签名行
否则,使用原始信息
该参数需要与-m参数同时使用,因为提交信息是必须的。但clap的参数解析已经通过requires("message")确保。
更新测试用例,添加对signoff参数的解析测试,以及检查生成的提交信息是否包含签名行。
[测试方案]
在test_parse_args测试中,添加对signoff参数的测试,包括:
单独使用-s和--signoff
与其他参数组合(如--amend)
测试签名行是否正确生成:
模拟用户配置
检查生成的提交信息中是否包含正确的签名行
注意:由于当前测试环境可能未设置用户配置,测试时需要模拟配置或设置环境变量。
示例:
输入:commit -m "fix: a bug" -s
提交信息变为:
fix: a bug
[任务描述]
为 commit 命令添加 -s/--signoff 参数。该参数用于在提交信息的末尾添加一个
签名行(Signed-off-by),以表明提交者遵守项目的贡献者许可协议(如DCO)。
签名行的格式为:
Signed-off-by: 用户名 <邮箱>
其中,用户名和邮箱从Git配置(user.name和user.email)中获取。
该参数应支持与其他参数(如-m、--amend、--conventional等)同时使用。
[实现方案]
在CommitArgs结构体中添加一个bool类型的字段signoff,并为其添加命令行参数解析(使用clap的arg属性)。
参数为短选项-s和长选项--signoff。
在执行commit命令时(execute函数中),如果signoff为true,则:
a. 从配置中获取user.name和user.email(如果未设置,则使用默认值如"unknown")。
b. 将签名行(格式为"Signed-off-by: {name} <{email}>")添加到提交信息的末尾。
提交信息与签名行之间需要有一个空行(即两个换行符分隔)。
修改提交信息的生成方式:
如果启用了signoff,则提交信息为:原始信息 + "\n\n" + 签名行
否则,使用原始信息
该参数需要与-m参数同时使用,因为提交信息是必须的。但clap的参数解析已经通过requires("message")确保。
更新测试用例,添加对signoff参数的解析测试,以及检查生成的提交信息是否包含签名行。
[测试方案]
在test_parse_args测试中,添加对signoff参数的测试,包括:
单独使用-s和--signoff
与其他参数组合(如--amend)
测试签名行是否正确生成:
模拟用户配置
检查生成的提交信息中是否包含正确的签名行
注意:由于当前测试环境可能未设置用户配置,测试时需要模拟配置或设置环境变量。
示例:
输入:commit -m "fix: a bug" -s
提交信息变为:
fix: a bug