# Component sync workflow This workflow synchronizes components from the main [untitleduico/react](https://github.com/untitleduico/react) repository with intelligent commit tracking. ## How to use 1. Go to the "Actions" tab in your GitHub repository 2. Select "Sync Components from Main Repository" 3. Click "Run workflow" 4. Configure options: - **Directories**: Which directories to sync (default: `components,hooks,utils,styles`) - **Sync mode**: Choose between `all` or `existing-only` 5. Click "Run workflow" to start the sync ## What it does 1. **Fetches** the latest commit information from the main repository 2. **Tracks** previously synced commits to show what's new 3. **Creates** a branch named `sync/YYYY-MM-DD-[commit-hash]` 4. **Processes** files by removing `"use client";` directives 5. **Generates** a PR with commit history and detailed diff summaries 6. **Stores** the sync state for future runs ## Sync modes ### `all` (default) - Syncs all files from the main repository - Adds new files and updates existing ones - Creates complete mirror of main repo structure ### `existing-only` - Only updates files that already exist in your repository - Skips new files from the main repository - Useful for maintaining a subset of components ## Smart commit tracking - **First run**: Shows "Initial sync" with latest commit details - **Subsequent runs**: Shows commit range since last sync - **Up-to-date**: Indicates when no new commits are available - **Commit history**: Collapsible list of all commits since last sync ## Branch naming Branches follow the pattern: `sync/YYYY-MM-DD-[short-commit-hash]` - Example: `sync/2024-03-15-a1b2c3d` ## PR format The generated PR includes: ### Title - **New commits**: `🔄 Sync components (X commits) → a1b2c3d` - **First sync**: `🎉 Initial sync from main repository → a1b2c3d` ### Content - **Commits since last sync**: Collapsible commit history with links - **Changed files**: Each file with collapsible diff view - **Sync details**: Source repo, latest commit, date, directories synced - **Automated processing**: Notes about `"use client"` removal ## State management The workflow stores sync state in `.github/last-sync-commit` to track: - Last successfully synced commit hash - Enables incremental sync reporting - Shows commit ranges in PR descriptions ## Requirements - Repository must have `contents: write` and `pull-requests: write` permissions - Uses `GITHUB_TOKEN` (automatically available in GitHub Actions) - GitHub CLI (`gh`) for PR creation