* fix(sync): respect sync.branch config when no upstream tracking
When sync.branch is explicitly configured, bd sync should use worktree-based
sync even if the current branch has no upstream tracking. This fixes the
issue where jj (Jujutsu) colocated repos and git worktrees without upstream
would incorrectly fall back to --from-main mode.
The fix checks for sync.branch configuration BEFORE the upstream check,
allowing the configured sync branch to take precedence.
Affected workflows:
- jj colocated repos (always use detached HEAD)
- Git worktrees not tracking a remote
- Temporary checkouts for testing
Fixes#638
* test(sync): add regression tests for sync.branch priority over upstream check
Add tests verifying that when sync.branch is configured, bd sync does NOT
fall back to --from-main mode even without upstream tracking. This covers:
- sync.branch configured without upstream (should use worktree sync)
- No sync.branch and no upstream (should fallback to from-main)
- Detached HEAD with sync.branch (jj workflow, should use worktree sync)
These tests ensure the fix for GH#638 doesn't regress.
---------
Co-authored-by: Charles P. Cross <cpdata@users.noreply.github.com>