Skip to content

feat(git): git worktree 支持与侧边栏项目分组 #403

Description

@Mieluoxxx

动机

Git 分支选择器目前只支持创建分支。使用 git worktree 需要手动执行 shell 命令,而且被 worktree 检出的分支无法从面板删除(分支被任何 worktree 检出时 git branch -d/-D 都会被拒绝)。

改动

Git Worktree

  • 创建:在「创建新分支」旁新增「新建 Worktree」入口。worktree 创建在 ~/.liveagent/worktree/<repo_id>/<worktree_name>(repo_id 由规范化后的仓库根路径派生:清洗后的仓库名 + fnv1a64 哈希),自动检出同名新分支,并在侧边栏打开为新工作区。
  • 删除:当分支被 worktree 检出时,分支操作面板切换为「删除 Worktree」,移除 worktree 及其分支;worktree 含未提交改动时提供强制移除的二次确认。后端拒绝删除未登记路径。

侧边栏项目分组

  • 项目列表支持用户自定义分组:新建、重命名、删除(项目回到未分组)、移动项目、分组折叠状态。
  • Worktree 自动聚合到以原始仓库项目命名的分组(原始项目与全部 worktree 同组)。分组按 sourceProjectPath 匹配,重命名分组不会重复建组;从 worktree 再创建的 worktree 会溯源回原始仓库。
  • 分组区块按组内最早成员排序(pinned/running 成员提升整组),折叠视图不会拆开分组。

持久化修复

workspaceProjectGroups 之前不在系统设置保存白名单中,保存时被静默丢弃,导致重启后分组消失。现已持久化(含 round-trip 测试)。

测试

  • Rust:worktree 创建/布局/移除 + 3 个新测试、设置 round-trip 测试——676 全部通过
  • 前端:1460 个测试通过(分组纯函数、设置归一化)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions