Git merge drivers only support three placeholders:
- %O (ancestor/base)
- %A (current version)
- %B (other branch's version)
The code was incorrectly using %L and %R, which don't exist in git,
causing them to be passed through literally and breaking JSONL merges.
Changes:
- Fixed merge driver config in init.go, merge.go, README.md, docs
- Added detection in bd doctor with clear error messages
- Added auto-fix in bd doctor --fix
- Added proactive warning in bd sync before git pull
- Added reactive error detection after merge failures
- Updated all tests to use correct placeholders
Now users get helpful guidance at every step:
1. bd doctor detects the issue
2. bd doctor --fix auto-corrects it
3. bd sync warns before pulling if misconfigured
4. Error messages suggest bd doctor --fix when merge fails
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixes#299
Added comprehensive documentation to help new users understand what files
should be committed vs ignored after running bd init:
1. README.md:
- New "Files Created by bd init" section
- Clear lists of files to commit vs ignore
- Explains purpose of .gitattributes for team collaboration
2. docs/GIT_INTEGRATION.md:
- Enhanced .gitattributes section with IMPORTANT notice
- Explains why it must be committed (merge driver config)
- Lists benefits of intelligent JSONL merging
Key clarification: .gitattributes should be COMMITTED (not ignored) as it
configures git merge behavior for the entire team.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>