Skip to content

feat: add configurable file ignore patterns#147

Open
rm-hull wants to merge 5 commits into
mainfrom
feat/exclusion-lists
Open

feat: add configurable file ignore patterns#147
rm-hull wants to merge 5 commits into
mainfrom
feat/exclusion-lists

Conversation

@rm-hull

@rm-hull rm-hull commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Introduce a .gitcommitsummaryignore system to exclude files from git diffs. Exclusions are resolved from multiple locations (default, home, XDG config, and project root) to provide better control over what is analyzed by the LLM.

graph LR
    A[Default Patterns] --> D(Exclusion Resolver)
    B[~/.gitcommitsummaryignore] --> D
    C[./.gitcommitsummaryignore] --> D
    D --> E{Git Diff Args}
    E --> F[Excluded Files]
Loading

Introduce a `.gitcommitsummaryignore` system to exclude files from git
diffs. Exclusions are resolved from multiple locations (default, home,
XDG config, and project root) to provide better control over what is
analyzed by the LLM.

```mermaid
graph LR
    A[Default Patterns] --> D(Exclusion Resolver)
    B[~/.gitcommitsummaryignore] --> D
    C[./.gitcommitsummaryignore] --> D
    D --> E{Git Diff Args}
    E --> F[Excluded Files]
```
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor
TestsPassed ✅SkippedFailed
JUnit Test Report67 ran67 passed0 skipped0 failed
TestResult
JUnit Test Report
com/rm-hull/git-commit-summary/internal/config.TestLoad/Defaults✅ passed
com/rm-hull/git-commit-summary/internal/config.TestLoad/WithEnvironmentVariables✅ passed
com/rm-hull/git-commit-summary/internal/config.TestLoad✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/handle_empty_quoted_strings✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/empty_file,_add_new_properties✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/existing_file,_update_properties✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/doesnt_overwrite_values_if_new_value_is_the_same✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/existing_file,_add_new_and_update_existing✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/preserve_comments_and_other_lines✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/handle_mixed_quoting_styles✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/empty_props,_no_changes✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties/properties_with_special_characters✅ passed
com/rm-hull/git-commit-summary/internal/config.Test_updateProperties✅ passed
com/rm-hull/git-commit-summary/internal/git.TestClient_prepareCommitMessage/Single_line_message_with_skipCI✅ passed
com/rm-hull/git-commit-summary/internal/git.TestClient_prepareCommitMessage/Multi-line_message_with_skipCI✅ passed
com/rm-hull/git-commit-summary/internal/git.TestClient_prepareCommitMessage/Single_line_message_without_skipCI✅ passed
com/rm-hull/git-commit-summary/internal/git.TestClient_prepareCommitMessage/Multi-line_message_without_skipCI✅ passed
com/rm-hull/git-commit-summary/internal/git.TestClient_prepareCommitMessage/Empty_message_with_skipCI✅ passed
com/rm-hull/git-commit-summary/internal/git.TestClient_prepareCommitMessage✅ passed
com/rm-hull/git-commit-summary/internal/git.TestProjectGitCommitSummaryIgnore✅ passed
com/rm-hull/git-commit-summary/internal/git.TestUserHomeGitCommitSummaryIgnore✅ passed
com/rm-hull/git-commit-summary/internal/git.TestValidateIgnorePattern_InvalidGlob✅ passed
com/rm-hull/git-commit-summary/internal/git.TestDedupeExclusions✅ passed
com/rm-hull/git-commit-summary/internal/llm_provider.TestNewProvider/GoogleProvider✅ passed
com/rm-hull/git-commit-summary/internal/llm_provider.TestNewProvider/OpenAIProvider✅ passed
com/rm-hull/git-commit-summary/internal/llm_provider.TestNewProvider/UnknownProvider✅ passed
com/rm-hull/git-commit-summary/internal/llm_provider.TestNewProvider✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/NewHistory✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Add_and_Value✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Undo✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Redo✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Undo_at_beginning✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Redo_at_end✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Add_truncates_future_history✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory/Multiple_Undos_and_Redos✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestHistory✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/tea.KeyMsg_-_CtrlC_in_showSpinner_state✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/tea.KeyMsg_-_CtrlC_in_other_states✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/gitCheckMsg_-_empty_(no_staged_changes)✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/gitCheckMsg_-_non-empty_(staged_changes)✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/gitDiffMsg_with_hint✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/llmResultMsg_-_with_user_message✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/llmResultMsg_-_without_user_message✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/commitMsg✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/regenerateMsg_-_initializes_promptView_with_current_hint✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/userResponseMsg_-_updates_m.hint✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/cancelRegenPromptMsg_-_re-enables_help_text✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/errMsg✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/abortMsg✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/spinner.Update_for_showSpinner_state✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/commitView.Update_for_showCommitView_state✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/promptView.Update_for_showRegeneratePrompt_state✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/llmResultMsg_-_YOLO_mode✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/llmResultMsg_-_YOLO_mode_-_empty_summary✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update/gitDiffMsg_-_includes_recent_commits_in_prompt✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestModel_Update✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestTrimTrailingSpaces/no_trailing_spaces✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestTrimTrailingSpaces/trailing_spaces_on_some_lines✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestTrimTrailingSpaces/tabs_and_carriage_returns✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestTrimTrailingSpaces/empty_string✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestTrimTrailingSpaces/single_line_with_space✅ passed
com/rm-hull/git-commit-summary/internal/ui.TestTrimTrailingSpaces✅ passed
com/rm-hull/git-commit-summary/internal/version.TestCheckLatestReturnsLatestWhenNewer✅ passed
com/rm-hull/git-commit-summary/internal/version.TestCheckLatestReturnsEmptyWhenUpToDate✅ passed
com/rm-hull/git-commit-summary/internal/version.TestCheckLatestReturnsEmptyForDevel✅ passed
com/rm-hull/git-commit-summary/internal/version.TestCheckLatestWithRevSuffix✅ passed
com/rm-hull/git-commit-summary/internal/version.TestCheckLatestWithRevSuffixAndUpToDate✅ passed

@gemini-code-assist gemini-code-assist Bot 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.

Code Review

This pull request refactors the git exclusion logic by moving hardcoded ignore patterns into a separate .gitcommitsummaryignore file and adding support for loading custom ignore patterns from the project directory, user home directory, and XDG config directory. The feedback suggests several key improvements: using xdg.SearchConfigFile to avoid creating empty directories, stopping the directory traversal when an empty ignore file is found, and utilizing Go's testing utilities (t.Setenv and t.Chdir) to prevent test pollution and ensure cross-platform compatibility.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread internal/git/exclusions.go
Comment thread internal/git/exclusions.go
Comment thread internal/git/exclusions_test.go Outdated
Comment thread internal/git/exclusions_test.go Outdated
@coveralls

coveralls commented Jul 4, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 28711369180

Warning

No base build found for commit dfc6db0 on main.
Coverage changes can't be calculated without a base build.
If a base build is processing, this comment will update automatically when it completes.

Coverage: 30.301%

Details

  • Patch coverage: 46 uncovered changes across 2 files (34 of 80 lines covered, 42.5%).

Uncovered Changes

File Changed Covered %
internal/git/exclusions.go 77 34 44.16%
internal/git/client.go 3 0 0.0%

Coverage Regressions

Requires a base build to compare against. How to fix this →


Coverage Stats

Coverage Status
Relevant Lines: 1495
Covered Lines: 453
Line Coverage: 30.3%
Coverage Strength: 0.33 hits per line

💛 - Coveralls

rm-hull and others added 4 commits July 4, 2026 16:46
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
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.

2 participants