Skip to content

[r2cn-测试任务] 为 clone 命令添加 --depth 参数,支持浅克隆 #164

@Nekocurl

Description

@Nekocurl

[任务描述]
为 clone 命令添加 --depth 参数。Git 的浅克隆功能允许用户只克隆指定深度的提交历史,而不是完整的提交历史。这可以显著减少克隆时间和磁盘空间占用,特别是对于大型仓库。

浅克隆的特点:

  1. 只获取指定深度的提交历史(如 --depth 1 只获取最新的一次提交)
  2. 减少网络传输数据量和本地存储空间
  3. 可以与 --branch 和 --single-branch 参数组合使用

[实现方案]

  1. 在 CloneArgs 结构体中添加 depth: Option 字段,使用 clap 解析命令行参数
  2. 修改 fetch_repository 函数签名,添加 depth 参数并传递到协议层
  3. 在 generate_upload_pack_content 函数中实现 Git 协议的 deepen 命令
  4. 更新所有协议客户端(HttpsClient、LocalClient、GitClient)的 fetch_objects 方法
  5. 编写测试用例验证基本浅克隆功能和参数组合功能:
    • test_clone_with_depth() - 测试基本浅克隆(depth=1)
    • test_clone_with_depth_and_branch() - 测试浅克隆与分支参数组合(depth=5)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions