beads init #269
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Preserve Branch-Specific Serena Files | |
| on: | |
| push: | |
| branches: ['**'] | |
| jobs: | |
| preserve-serena: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 2 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Check if this was a merge commit | |
| id: check_merge | |
| run: | | |
| if git log -1 --pretty=format:"%P" | grep -q " "; then | |
| echo "is_merge=true" >> $GITHUB_OUTPUT | |
| echo "✅ Detected merge commit" | |
| else | |
| echo "is_merge=false" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| - name: Check for .serena changes in merge | |
| if: steps.check_merge.outputs.is_merge == 'true' | |
| id: check_serena | |
| run: | | |
| if git log -1 --name-only | grep -q "^\.serena/"; then | |
| echo "serena_changed=true" >> $GITHUB_OUTPUT | |
| echo "🚨 .serena files were modified in merge - will revert!" | |
| else | |
| echo "serena_changed=false" >> $GITHUB_OUTPUT | |
| exit 0 | |
| fi | |
| - name: Revert .serena to pre-merge state | |
| if: steps.check_merge.outputs.is_merge == 'true' && steps.check_serena.outputs.serena_changed == 'true' | |
| run: | | |
| CURRENT_BRANCH=$(git branch --show-current) | |
| echo "🔄 Reverting .serena/ to pre-merge state on $CURRENT_BRANCH" | |
| # Get the first parent (target branch before merge) | |
| MERGE_BASE=$(git log -1 --pretty=format:"%P" | cut -d' ' -f1) | |
| # Restore .serena from the target branch's state before merge | |
| git checkout $MERGE_BASE -- .serena/ 2>/dev/null || echo "No .serena in base commit" | |
| # Configure git | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| # Commit the reversion | |
| if git diff --staged --quiet; then | |
| git add .serena/ | |
| fi | |
| if ! git diff --cached --quiet; then | |
| git commit -m "🔒 Preserve branch-specific .serena files | |
| Reverted .serena/ changes from merge to keep $CURRENT_BRANCH version intact. | |
| [skip ci]" | |
| git push origin $CURRENT_BRANCH | |
| echo "✅ Successfully preserved $CURRENT_BRANCH .serena files" | |
| else | |
| echo "ℹ️ No changes to revert" | |
| fi |