Skip to content

fix: renameしたファイルをFudeReviewDiffで旧パスと比較する - #233

Merged
kyu08 merged 7 commits into
mainfrom
fix/rename-diff-base
Oct 9, 2026
Merged

kyu08 merged 7 commits into
mainfrom
fix/rename-diff-base

Conversation

@kyu08

@kyu08 kyu08 commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

概要

fileをrenameしつつ内容を書き換えると、:FudeReviewDiffのbase側に「New file」と表示され、内容の差分が見られなかった。lazygitと同じく、旧パスのbase内容と比較するようにする。

Closes #217

変更内容

  • previewのbase内容を、renameされたファイルでは旧パスから読むようにした
    • 従来はgit show <base>:<新パス>だけを試しており、新パスはbaseに存在しないため新規ファイル扱いになっていた
    • 旧パスで取得できなければ新パスで再試行する。full PR scopeはbase branchの先端を読むため、base branch側で旧ファイルが消えている可能性がある
  • changed_filesのエントリに旧パス(previous_path)を持たせた
    • GitHub modeはpulls/{pr}/files・commits/{sha}のprevious_filenameを、local modeはgit diff --name-status -MのR行の旧パスを使う
    • GitHub APIのレスポンスをchanged_filesへ変換する処理がinit.luaとscope.luaの6箇所にコピペされていたので、gh.build_changed_filesに集約した。集約しないと6箇所すべてに同じ変更を入れる必要があった

テスト計画

  • make all(lint、format-check、test)が全件パス
  • 新規テスト追加: tests/fude/gh_spec.lua、tests/fude/preview_spec.lua、tests/fude/preview_integration_spec.lua、tests/fude/local_session_spec.lua

備考

  • gitsignsのper-buffer baseはrenameに対応させていない。gitsigns自身が旧パスを追跡するかは未検証なので、renameファイルでsignが全行追加扱いになるかは手動確認が必要
  • full PR scopeのpreviewがmerge_base_shaではなくstate.base_refから読む既存挙動は変えていない

Generated with Claude Code

Copilot AI balanced review requested due to automatic review settings October 9, 2026 15:15
@kyu08
kyu08 marked this pull request as ready for review October 9, 2026 15:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

ローカルモードのGitコマンドがコピー検出を有効化しておらず、文書化されたcopy対応が機能しません。

1 open finding
What changed in this PR

rename/copy 後のファイルを旧パスの内容と比較できるよう、変更ファイル情報と diff preview を拡張するPRです。

Changes:

  • previous_path を GitHub/local の変更ファイル情報へ追加
  • preview で旧パスを優先し、新パスへフォールバック
  • テストと利用者・開発者向けドキュメントを更新
File Description
lua/​fude/​gh.lua GitHub APIレスポンスの変換処理を共通化
lua/​fude/​init.lua 共通の変更ファイル変換処理を使用
lua/​fude/​scope.lua scope切替時にも共通変換処理を使用
lua/​fude/​local/​session.lua rename/copy元パスを保持
lua/​fude/​preview.lua 旧パスからbase内容を取得
tests/​fude/​gh_spec.lua API変換処理を検証
tests/​fude/​local_session_spec.lua ローカルパス解析を検証
tests/​fude/​preview_spec.lua baseパス選択を検証
tests/​fude/​preview_integration_spec.lua preview取得とフォールバックを検証
README.md rename時のdiff動作を追記
doc/​fude.txt rename/copy時の仕様を追記
CLAUDE.md アーキテクチャ説明を更新

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread lua/fude/local/session.lua
Copilot AI balanced review requested due to automatic review settings October 9, 2026 15:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

.claude/review-lessons.md に現在日時より未来の日付が記録されています。

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

@kyu08
kyu08 merged commit 938b1b4 into main Oct 9, 2026
9 checks passed
@kyu08
kyu08 deleted the fix/rename-diff-base branch October 9, 2026 15:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fileをrenameしつつ内容を書き換えた際にFudeReviewDiffで新規作成として表示されてしまう

2 participants