Previously the hook redirected stderr to /dev/null, hiding useful error messages like 'Git conflict markers detected'. Users only saw a generic warning with no indication of the root cause. Now captures and displays the actual error output, making it immediately clear what went wrong (e.g., merge conflicts in JSONL). Fixes bd-nszi Amp-Thread-ID: https://ampcode.com/threads/T-6231e968-2c06-44ad-855d-bb5fafe452f6 Co-authored-by: Amp <amp@ampcode.com>
46 lines
1.2 KiB
Bash
Executable File
46 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# bd-hooks-version: 0.22.1
|
|
#
|
|
# bd (beads) post-merge hook
|
|
#
|
|
# This hook syncs the bd database after a git pull or merge:
|
|
# 1. Checks if any .beads/*.jsonl file was updated
|
|
# 2. Runs 'bd sync --import-only' to import changes
|
|
#
|
|
# Installation:
|
|
# cp examples/git-hooks/post-merge .git/hooks/post-merge
|
|
# chmod +x .git/hooks/post-merge
|
|
#
|
|
# Or use the install script:
|
|
# examples/git-hooks/install.sh
|
|
|
|
# Check if bd is available
|
|
if ! command -v bd >/dev/null 2>&1; then
|
|
echo "Warning: bd command not found, skipping post-merge sync" >&2
|
|
exit 0
|
|
fi
|
|
|
|
# Check if we're in a bd workspace
|
|
if [ ! -d .beads ]; then
|
|
# Not a bd workspace, nothing to do
|
|
exit 0
|
|
fi
|
|
|
|
# Check if any JSONL file exists in .beads/
|
|
if ! ls .beads/*.jsonl >/dev/null 2>&1; then
|
|
exit 0
|
|
fi
|
|
|
|
# Run bd sync --import-only to import the updated JSONL
|
|
# This is more robust than direct import as it handles all edge cases
|
|
# Capture both stdout and stderr to show user what went wrong
|
|
if ! output=$(bd sync --import-only 2>&1); then
|
|
echo "Warning: Failed to sync bd changes after merge" >&2
|
|
echo "$output" >&2
|
|
echo "" >&2
|
|
echo "Run 'bd sync --import-only' manually to resolve" >&2
|
|
# Don't fail the merge, just warn
|
|
fi
|
|
|
|
exit 0
|