fix: introduce GitRootPath branded type and fix getModifiedFiles bug - #3620
Draft
suzuki-shunsuke wants to merge 1 commit into
Draft
fix: introduce GitRootPath branded type and fix getModifiedFiles bug#3620suzuki-shunsuke wants to merge 1 commit into
suzuki-shunsuke wants to merge 1 commit into
Conversation
GitRootPath is a subtype of AbsolutePath that can only be obtained from getRootDir() (git rev-parse --show-toplevel). This prevents passing arbitrary absolute paths where a git root is required. The replaceInFiles functions in scaffold-module and scaffold-working-dir were calling getModifiedFiles with a subdirectory as cwd, but git ls-files returns paths relative to cwd. Since cwd was not the git root, the returned paths were incorrectly typed as GitRelativePath. Now these callers pass the git root as cwd and use toGitRelative to compute the directory argument, fixing the path resolution bug. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
suzuki-shunsuke
marked this pull request as draft
February 8, 2026 12:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GitRootPathbranded type (subtype ofAbsolutePath) that can only be obtained fromgetRootDir(), preventing arbitrary absolute paths from being passed where a git root is requiredscaffold-moduleandscaffold-working-dirwherereplaceInFilescalledgetModifiedFileswith a subdirectory ascwd, causinggit ls-filesto return paths relative to that subdirectory instead of the git rootgetModifiedFiles,getCurrentBranch,hasFileChangedPorcelain,listWorkingDirFiles,checkGitDiff) to requireGitRootPathinstead ofAbsolutePathConfig.git_root_dirtype fromAbsolutePathtoGitRootPathTest plan
npm t— all 794 tests passnpm run lint— no type errorsnpm run fmt— code formatted🤖 Generated with Claude Code