- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 710
 
          fix(oxlint,oxfmt): Skip traversing .git directories
          #14590
        
          New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
  
    fix(oxlint,oxfmt): Skip traversing .git directories
  
  #14590
              Conversation
          
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue: 
 You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking.  | 
    
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds explicit handling to skip traversing .git directories in both oxlint and oxfmt tools, addressing issue #13315 where .git directories were being unnecessarily traversed since they're not covered by the .hidden(false) configuration.
- Added explicit 
.gitdirectory detection and skipping logic - Refactored conditional structure in oxfmt for better readability
 - Both tools now avoid performance overhead of traversing version control directories
 
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description | 
|---|---|
| apps/oxlint/src/walk.rs | Added .git directory skip logic in is_wanted_entry function | 
| apps/oxfmt/src/walk.rs | Refactored directory handling and added .git skip logic with proper WalkState::Skip return | 
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
d6ba1a5    to
    876b3f7      
    Compare
  
    876b3f7    to
    f17ccbb      
    Compare
  
    
          Merge activity
  | 
    
fixes #13315 `.git` is not a special case for `.hidden(false)`. See BurntSushi/ripgrep#3099 (comment) Only tested this manually, can't really create a reproduction ...
f17ccbb    to
    0961c3a      
    Compare
  
    ## [0.6.0] - 2025-10-20 ### 🚀 Features - 7f91a26 oxfmt: Handle ignoring files (#14798) (leaysgur) - 199a2c6 oxfmt: Support `--with-node-modules` option (#14713) (leaysgur) - 6bf8bac formatter: Reimplement formatting for `ImportExpression` (#14712) (Dunqing) - 3f2e036 formatter: Introduce `AstNode<ExpressionStatement>::is_arrow_function_body` (#14709) (Dunqing) - df225e9 formatter: Add `AstNode::ancestor` and `AstNode::grand_parent` methods (#14700) (Dunqing) - 26c5f5a oxfmt: Ignore VCS directories by default (#14616) (leaysgur) - fec2ed9 oxfmt: Use Prettier style config key and value (#14612) (leaysgur) - 1b58521 oxfmt,language_server: Enable JSX for all JS source type (#14605) (leaysgur) ### 🐛 Bug Fixes - 21c4285 formatter: Correct printing remaining trailing comments for `TSMappedType` (#14761) (Dunqing) - 1d1573e formatter: Correct adding semicolons for TypeScript left-hand side nodes (#14760) (Dunqing) - 4cc3b10 formatter: Improve handling of new lines between comments in `MemberChain` (#14759) (Dunqing) - e6bce8e formatter: Break the left hand side of AssignmentLike node if it is an `ObjectPattern` with three properties (#14756) (Dunqing) - dc57a2b formatter: Incorrect handling of `VariableDeclarator` with an `ArrowFunctionExpression` initializer (#14731) (Dunqing) - 537185d formatter: Should always group the left side of `AssignmentPattern` (#14730) (Dunqing) - ef02760 oxfmt: Handle relative path starts with dot (#14708) (leaysgur) - ee37f5d oxfmt: Handle default cwd correctly (#14704) (leaysgur) - 4283fd8 formatter: Correct printing comments for `JSXAttributeValue` (#14719) (Dunqing) - 59c9e1b formatter: Avoid conditional being broken in arguments by trailing comments (#14718) (Dunqing) - 7d64b96 formatter: Should wrap parentheses with JSX arguments of `NewExpression` (#14717) (Dunqing) - 2068a63 formatter: Should indent TemplateExpression if it is a member expression that is part of `ChainExpression` (#14714) (Dunqing) - 5ea3bb6 formatter: Incorrect handling of `ObjectPattern` as an `AssignmentPattern` of a parameter (#14711) (Dunqing) - eb52529 formatter: Incorrect handling of `ObjectPattern` as a parameter (#14670) (Dunqing) - 8ac10da formatter: Correct checking assignment layout for the right side with ownline comment and it is a `PrivateFieldExpression` (#14664) (Dunqing) - 6cba9b1 formatter: Should not merge tail with head for MemberChain when its parent is ArrowFunctionExpression (#14663) (Dunqing) - f44d3c0 formatter: Should not indent BinaryLikeExpression when its parent is `NewExpression` (#14662) (Dunqing) - bf953b8 formatter: Should group nested test for TSConditionalType (#14661) (Dunqing) - 63dc57b formatter: Correct handling if a template literal should be printed as a signle line (#14660) (Dunqing) - 0150ad5 formatter: Should group type parameters and parameters for method-like and function-like nodes (#14659) (Dunqing) - 392bf74 formatter: Improve handling of dangling comments in if statements (#14658) (Dunqing) - fd52b10 formatter: Don't print CallExpression as MemberChain style when its only has one argument and it is a TemplateLiteral on its own line (#14657) (Dunqing) - 29c3c60 formatter: Don't group nested await expression when its is the leftmost expression (#14656) (Dunqing) - 72c7503 formatter: Correct checking function composition when the arguments have an call expression before function (#14655) (Dunqing) - 2b645e2 formatter: Don't wrap parenthesis for `type` when its grandparent isn't a `ExpressionStatement` (#14654) (Dunqing) - e0eb966 formatter: Skip the leading semicolon when calculating leading lines (#14653) (Dunqing) - 0961c3a oxlint,oxfmt: Skip traversing `.git` directories (#14590) (Boshen) ### 🚜 Refactor - b7926f3 oxfmt: Update CLI --help details (#14796) (leaysgur) - 173168b oxfmt: Refactor walk.rs and format.rs relationship (#14795) (leaysgur) - aea9d79 oxfmt: Pass `PathBuf` from walk.rs to service.rs (#14716) (leaysgur) - 83e783a formatter: Organize utils structure (#14710) (Dunqing) - 58dd74a formatter: Remove all `without_parentheses` usages (#14707) (Dunqing) - 75dfcad formatter: Simplify `ExpressionLeftSide` (#14706) (Dunqing) - 273f0fe formatter: Remove unnecessary lifetimes for the implementations of `NeedsParentheses` (#14703) (Dunqing) - bae5f11 formatter: Improve `AstNode` and `AstNodes` (#14686) (Dunqing) ### ⚡ Performance - c6395c7 formatter: Optimize string reservation in print_text (#14751) (Boshen) ### 🧪 Testing - 7c42ea0 oxfmt: Remove args from snapshot file name (#14800) (leaysgur) - 42d8c62 formatter: Add tests for sort-imports (#14685) (leaysgur)

fixes #13315
.gitis not a special case for.hidden(false).See BurntSushi/ripgrep#3099 (comment)
Only tested this manually, can't really create a reproduction ...