[Feature] 保护 Viva 同一项目的 Git 状态读取顺序
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- git, typescript
Hướng nghiên cứu
Start with desktop/internal/workbench/git.go and desktop/internal/workbench/tasks.go to trace how loadGit reads and publishes project state. Add protection so results from older requests cannot replace newer state, including after a project closes or changes; preserve the current state on read failure. Verify with controlled out-of-order requests and close, switch, and reopen scenarios, then check real operations on macOS and Windows.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem to solve / 要解决的问题
Viva 的 desktop/internal/workbench/git.go 中 loadGit 会异步读取当前项目的 Core Git 状态;返回时直接覆盖 p.git。desktop/internal/workbench/tasks.go 只检查项目对象是否仍相同,没有区分同一项目内先后发出的多个请求。打开项目、暂存或分支等动作可以触发读取,因此较早的请求若最后返回,可能覆盖较新的分支和变更数量。上述是源码层面的并发风险,尚未在真实仓库测量复现频率。
Proposed solution / 建议方案
为当前项目的状态读取引入单调请求身份或等价的结果新旧保护;在关闭或切换项目时失效,旧请求的结果不能覆盖新状态。考虑读取失败与用户操作期间的状态展示,不把失败当成空仓库。使用可控替身安排先后请求逆序完成,以及项目关闭、切换和重新打开,验证旧分支与计数不会回退;再在 macOS 与 Windows 验证实际操作。
Target platform / 目标平台
Cross-platform / 跨平台
Area / 模块
Git
Priority / 优先级
P2 / 后续考虑:目前不着急,可安排到后续版本
Alternatives considered / 已考虑的替代方案
只依赖项目身份不能区分同一项目的不同读取;简单取消旧请求也不能假设底层回调绝不会迟到,发布结果时仍需验证身份。
Additional context / 补充信息
关联 #1794 与 #1799。旧 Windows 客户端曾对状态和操作状态维护发布水位线;Viva 当前尚未实现等价的全局多仓库状态表或元数据监听,这些能力应独立验收。
Checklist / 提交前检查
- I searched existing issues for duplicates. / 我已搜索现有 Issue,确认没有重复建议。
- Ngôn ngữ chính
- TypeScript
- Star
- 1.8k
- Fork
- 151
- Merge trung bình
- 9 giờ 32 phút
- Pull request đã merge (30 ngày)
- 406
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của 1lck/Lithe-IDEA
-
review: high
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
1lck/Lithe-IDEA#1797 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:other bug P2 platform:other review: high
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
1lck/Lithe-IDEA#1789 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
review: medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
1lck/Lithe-IDEA#1670 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:editor bug P0 platform:macos review: low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
1lck/Lithe-IDEA#1118 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement refactor review: high
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
1lck/Lithe-IDEA#1808 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của 1lck/Lithe-IDEA
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
prime-radiant-inc/evener#5901 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug: Batcher binds the texture that opens a new batch twice (one draw call per element with maxBatchableTextures = 1)Có thể đã có người làm @darzarzycki đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
Maintainer thường phản hồi trong vòng 2 ngày
-
area:study-data p2-high ready-for-agent type:chore
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
fderuiter/deruiter.dev#3706 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
nicobailon/pi-subagents#3242 ·
Maintainer thường phản hồi trong vòng 1 ngày