Repository navigation
chore(pre-commit): improves pre-commit handling of partially-staged files - #16
Merged
Merged
Conversation
… files - Refactor logic to hide and restore unstaged changes for staged files using patch files. - Introduce new functions for managing git directory and applying patches. - Enhance error handling during restoration of unstaged changes.
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.
This PR updates
.ghk/pre-committo correctly handle partially staged files (files that are staged but also have additional unstaged edits).What changed
git stash push --keep-index -- <paths>+git stash popflow with a patch-based flow.--stagedmode, for any file that is both staged and has unstaged edits:.git/.git checkout --force -- <files>to temporarily hide unstaged edits while tasks run.git apply --3wayon conflict.Why
Stash-pop based restoration often conflicts when formatters rewrite the same lines as unstaged hunks. The patch + checkout + apply approach is more deterministic and mirrors the strategy used by
lint-staged.Behavior notes
--stagedmode;--dirtymode intentionally does not modify working tree state.--stagedmode.