Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .claude/commands/sync-downstream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
description: Sync downstream repo with upstream main, preserving downstream-specific files
---

Sync downstream repository with upstream changes while preserving downstream-specific files.

# Important Instructions

- **ALWAYS** start from a detached HEAD: `git checkout --detach`
- **DO NOT** use TodoWrite tool
- **DO NOT** ask for confirmations - just execute
- **BE CONCISE** - minimal output, only show final summary

# Execution Steps

Execute these commands in sequence:

```bash
# 1. Start from detached HEAD (REQUIRED)
Comment on lines +17 to +19

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to move all of this into a script, and just tell claude to use that script/make target?

I feel like that could be more general - then claude users can do a sync with claude and non-claude users can do one manually if they want

git checkout --detach

# 2. Delete old sync branch if it exists
git branch -D sync-downstream 2>/dev/null || true

# 3. Fetch and create sync branch
git fetch downstream
git fetch upstream
git checkout -b sync-downstream upstream/main
git merge -s ours --no-commit downstream/main

# 4. Restore downstream files (read from .downstream-preserve or use defaults)
git checkout downstream/main -- .ci-operator.yaml .snyk .tekton/ Dockerfile.ci Dockerfile.ocp Makefile-ocp.mk OWNERS mcp_config.toml renovate.json

# 5. Update dependencies
go mod tidy
go mod vendor
git add vendor/

# 6. Commit everything in ONE commit
git commit -am "sync: merge upstream main with downstream config"
```

# Output

After completion, show ONLY:
- Commit hash
- File change summary: `git diff --stat downstream/main..HEAD | tail -1`
- Next steps:
```
git push origin sync-downstream
gh pr create --base downstream/main
```

# Error Handling

If any command fails, stop immediately and show the error. No rollback needed - user can investigate.
11 changes: 11 additions & 0 deletions .downstream-preserve
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Downstream files/folders to preserve during upstream sync
# One entry per line, supports directories with trailing /
.ci-operator.yaml
.snyk
.tekton/
Dockerfile.ci
Dockerfile.ocp
Makefile-ocp.mk
OWNERS
mcp_config.toml
renovate.json