[BUG] file có nhiều section nhưng button undo/keep phản ảnh không chính xác #50

Closed
opened 2026-09-25 08:57:05 +00:00 by Phu-Nguyen · 2 comments
Member

image.pngimage.pngimage.png
[BUG] file có nhiều section nhưng button undo/keep phản ảnh không chính xác

Originally posted by @Phu-Nguyen in #43 (comment)

![image.png](/attachments/d0779d4f-4893-4c61-b690-d667c08c0913)![image.png](/attachments/feef7128-8d13-459a-831d-f7771022c426)![image.png](/attachments/f7140272-e96e-4d4a-ad66-033a8e69330f) [BUG] file có nhiều section nhưng button undo/keep phản ảnh không chính xác _Originally posted by @Phu-Nguyen in https://git.smartgift.io.vn/Smartgift-AI/AgentHub/issues/43#issuecomment-703_
Owner

Em đang thực hiện nhé anh

Em đang thực hiện nhé anh
Owner

Đã sửa trong commit 952e858 (đã push lên main).

Nguyên nhân: git gộp các thay đổi cách nhau ≤ 6 dòng (2 × 3 dòng context) vào một hunk @@, nên một file có nhiều cụm +/- gần nhau chỉ hiện một thanh review ("1 of 1") và Undo/Keep tác động lên tất cả các cụm cùng lúc.

Cách sửa: mỗi cụm +/- liên tiếp giờ là một section riêng, có thanh ^/v, "n of N", Undo và Keep của riêng nó (cả chế độ unified lẫn split).

  • Server: stage-hunk / discard-hunk nhận thêm block (số thứ tự của cụm trong hunk). onlyBlock trong server/lib/git-diff.js cắt hunk mới đọc lại từ git xuống đúng cụm đó, giống việc sửa tay một hunk của git add -p. Server vẫn chỉ áp dụng nội dung git trả về, không bao giờ dùng patch từ request.
  • Client: LaneDiffView.tsx chia hunk thành các cụm và đặt một thanh dưới dòng cuối của từng cụm; ^/v nhảy giữa các cụm.

Có test trên repo git thật cho: stage đúng một cụm, stage cụm cuối khi các cụm trước đã làm lệch số dòng, Undo cụm ở giữa, file không có newline cuối, và block sai. Server 1984/1984, client 737/737.

Thay đổi có hiệu lực sau khi release bản mới và update plugin.

Đã sửa trong commit 952e858 (đã push lên `main`). **Nguyên nhân:** git gộp các thay đổi cách nhau ≤ 6 dòng (2 × 3 dòng context) vào **một** hunk `@@`, nên một file có nhiều cụm +/- gần nhau chỉ hiện một thanh review ("1 of 1") và Undo/Keep tác động lên tất cả các cụm cùng lúc. **Cách sửa:** mỗi cụm +/- liên tiếp giờ là một section riêng, có thanh ^/v, "n of N", Undo và Keep của riêng nó (cả chế độ unified lẫn split). - Server: `stage-hunk` / `discard-hunk` nhận thêm `block` (số thứ tự của cụm trong hunk). `onlyBlock` trong `server/lib/git-diff.js` cắt hunk mới đọc lại từ git xuống đúng cụm đó, giống việc sửa tay một hunk của `git add -p`. Server vẫn chỉ áp dụng nội dung git trả về, không bao giờ dùng patch từ request. - Client: `LaneDiffView.tsx` chia hunk thành các cụm và đặt một thanh dưới dòng cuối của từng cụm; ^/v nhảy giữa các cụm. Có test trên repo git thật cho: stage đúng một cụm, stage cụm cuối khi các cụm trước đã làm lệch số dòng, Undo cụm ở giữa, file không có newline cuối, và `block` sai. Server 1984/1984, client 737/737. Thay đổi có hiệu lực sau khi release bản mới và update plugin.
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Smartgift-AI/AgentHub#50