Skip to content

Fix build error with libgit2 -Wmissing-field-initializers - #91

Merged
DeusData merged 1 commit into
DeusData:mainfrom
jsyrjala:fix/libgit2-diff-options-init
Mar 23, 2026
Merged

DeusData merged 1 commit into
DeusData:mainfrom
jsyrjala:fix/libgit2-diff-options-init

Conversation

@jsyrjala

@jsyrjala jsyrjala commented Mar 21, 2026 •

Copy link
Copy Markdown

Summary

  • Build fails at pass_githistory.c:171 with -Werror,-Wmissing-field-initializers because GIT_DIFF_OPTIONS_INIT macro doesn't list all struct fields
  • Observed with libgit2 1.9.2 on macOS (Apple clang), but the macro has never listed all fields — any libgit2 version can trigger this depending on compiler warning settings
  • Replace the macro with git_diff_options_init() runtime API, which properly initializes all fields
  • git_diff_options_init() available since libgit2 0.28 (2019)

Test plan

  • Verify scripts/build.sh completes without errors

Fixes #104

🤖 Generated with Claude Code

Build fails at pass_githistory.c:171 with:

  error: missing field 'interhunk_lines' initializer
         [-Werror,-Wmissing-field-initializers]
    git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT;

codebase-memory-mcp at 75b5dcb has this issue. The GIT_DIFF_OPTIONS_INIT
macro does not list all struct fields, which clang flags as an error
under -Werror.

Replace the macro with the runtime git_diff_options_init() API, which
properly initializes all fields. Available since libgit2 0.28.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@DeusData

Copy link
Copy Markdown
Owner

Merged to main. Fixes #104. Thanks @jsyrjala — clean, correct fix using the libgit2-recommended runtime init pattern.

ngallodev added a commit to ngallodev/codebase-memory-cli that referenced this pull request Nov 9, 2026
…ok installer

Jenkins DeusData#91 failed two tests added by upstream DeusData#1862 follow-up e8f0f4a:
cli_hermes_hook_reinstalls_after_uninstall_empties_hooks and
cli_hermes_hook_cycle_keeps_foreign_pre_llm_hook.

Two fork differences caused it:

- In this fork, `install` writes agent instructions and skills only; hooks
  come from `install-hooks`. The tests called cbm_install_agent_configs,
  which never writes the Hermes pre_llm_call hook here. They now call
  cbm_install_agent_hooks_for_testing, the same entry point the existing
  cli_hermes_stable_shell_context_contract test uses.
- The fixture named the binary codebase-memory-mcp. The fork's uninstall
  identifies its owned hook by the codebase-memory-cli binary name, so it
  treated the upstream-named entry as user-modified and kept it. The
  fixture now uses codebase-memory-cli.

The assertions are unchanged: one owned hook after install, `hooks: {}`
accepted on uninstall/reinstall, and a foreign hook restored byte for byte.
Locally all three Hermes hook tests pass.
ngallodev added a commit to ngallodev/codebase-memory-cli that referenced this pull request Nov 9, 2026
…ification

Adds per-batch receipts (13m1.md, 13m2.md, 13n.md) and updates ledger.json,
PLAN.md and CONTINUE.md for the 2026-11-08 upstream closeout against
DeusData 612eee2.

Jenkins release-tooling full gate, exact heads:
- 13M-1 c3c5271: DeusData#90 SUCCESS; merged to main via PR #33 (929adfe).
  DeusData#89 on 3cbefe2 failed only on the index_policy fixture fixed there.
- 13M-2 0f1927f: DeusData#93 SUCCESS. DeusData#91 on 1c5f82a failed two upstream
  Hermes hook cycle tests, fixed in 0f1927f.
- 13N 98eab3c: DeusData#94 SUCCESS. DeusData#92 on cf24b6a was aborted because that
  head lacked the 13M-2 test fix.

Native Windows was not run for any batch, so the reserved-`nul` change
(DeusData#2903) is unverified on Windows. This commit only touches docs; the code
Jenkins qualified is 98eab3c.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build fails with libgit2 1.9.2: -Wmissing-field-initializers error in pass_githistory.c

2 participants