- Comprehensive image extraction architecture design - Database schema for document_images table - Migration 004: Add document_images table with indexes - Migration runner script - Design and status documentation Prepares foundation for image extraction feature with OCR on images. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.6 KiB
Git Worktree Setup for NaviDocs Testing
Overview
Git worktrees allow you to have multiple working directories from the same repository, enabling parallel development and testing without affecting the main branch.
Current Worktree Configuration
Active Worktrees
/home/setup/navidocs ff3c306 [master]
/home/setup/navidocs-ui-test ff3c306 [ui-smoketest-20251019]
Worktree Details
| Property | Value |
|---|---|
| Main Repository | /home/setup/navidocs |
| Test Worktree | /home/setup/navidocs-ui-test |
| Test Branch | ui-smoketest-20251019 |
| Base Commit | ff3c306 (master) |
| Created | 2025-10-19 |
Setup Process
Step 1: Create Testing Worktree
# Navigate to main repository
cd /home/setup/navidocs
# Create worktree with new branch
git worktree add -b ui-smoketest-20251019 /home/setup/navidocs-ui-test master
Output:
Preparing worktree (new branch 'ui-smoketest-20251019')
HEAD is now at ff3c306 chore(env): add MEILISEARCH_SEARCH_KEY for dev
Step 2: Verify Worktree
# List all worktrees
git worktree list
Expected Output:
/home/setup/navidocs ff3c306 [master]
/home/setup/navidocs-ui-test ff3c306 [ui-smoketest-20251019]
Step 3: Navigate to Test Worktree
cd /home/setup/navidocs-ui-test
Step 4: Verify Branch
git status
Output:
On branch ui-smoketest-20251019
nothing to commit, working tree clean
Use Cases
1. Isolated UI Testing
Test UI changes without affecting the master branch:
cd /home/setup/navidocs-ui-test/client
npm run dev # Runs on separate port if 5174 is occupied
2. Parallel Development
Work on features in the test worktree while keeping master stable:
# In test worktree
cd /home/setup/navidocs-ui-test
# Make changes, commit, test
# In main repository (master remains unchanged)
cd /home/setup/navidocs
git status # Still on master, clean working tree
3. A/B Testing
Compare implementations side-by-side:
# Terminal 1: Master branch
cd /home/setup/navidocs/client
npm run dev # Port 5174
# Terminal 2: Test branch
cd /home/setup/navidocs-ui-test/client
npm run dev -- --port 5175 # Different port
4. Smoke Testing
Run comprehensive tests in isolation:
cd /home/setup/navidocs-ui-test
./start-all.sh # Start all services in test environment
# Run tests, verify functionality
./stop-all.sh
Working with the Test Worktree
Making Changes
cd /home/setup/navidocs-ui-test
# Make changes to files
vim client/src/components/SearchBar.jsx
# Stage and commit
git add client/src/components/SearchBar.jsx
git commit -m "feat(ui): improve search bar accessibility"
Syncing with Master
cd /home/setup/navidocs-ui-test
# Fetch latest changes
git fetch origin
# Merge master into test branch
git merge origin/master
# Or rebase onto master
git rebase origin/master
Viewing Differences
# Compare test branch with master
git diff master..ui-smoketest-20251019
# See commit differences
git log master..ui-smoketest-20251019
Merging Test Changes Back to Master
Option 1: Merge from Test Worktree
cd /home/setup/navidocs-ui-test
# Ensure all changes are committed
git status
# Switch to main repository
cd /home/setup/navidocs
# Merge test branch
git merge ui-smoketest-20251019
Option 2: Create Pull Request
cd /home/setup/navidocs-ui-test
# Push test branch to remote
git push origin ui-smoketest-20251019
# Create PR via GitHub/GitLab/Bitbucket UI
# Or use gh CLI
gh pr create --base master --head ui-smoketest-20251019 \
--title "UI Smoketest: Accessibility improvements" \
--body "Testing results and UI enhancements from ui-smoketest-20251019"
Cleanup
Remove Test Worktree (Temporary)
cd /home/setup/navidocs
# Remove worktree (keeps branch)
git worktree remove /home/setup/navidocs-ui-test
Delete Test Branch (After Merging)
cd /home/setup/navidocs
# Delete local branch
git branch -d ui-smoketest-20251019
# Delete remote branch (if pushed)
git push origin --delete ui-smoketest-20251019
Complete Cleanup
cd /home/setup/navidocs
# Remove worktree and delete branch
git worktree remove /home/setup/navidocs-ui-test
git branch -D ui-smoketest-20251019 # Force delete
Troubleshooting
Worktree Already Exists
Error:
fatal: '/home/setup/navidocs-ui-test' already exists
Solution:
# Remove existing worktree first
git worktree remove /home/setup/navidocs-ui-test
# Or manually delete directory
rm -rf /home/setup/navidocs-ui-test
# Then recreate
git worktree add -b ui-smoketest-20251019 /home/setup/navidocs-ui-test master
Branch Already Exists
Error:
fatal: invalid reference: ui-smoketest-20251019
Solution:
# Use existing branch
git worktree add /home/setup/navidocs-ui-test ui-smoketest-20251019
# Or delete existing branch first
git branch -D ui-smoketest-20251019
git worktree add -b ui-smoketest-20251019 /home/setup/navidocs-ui-test master
Locked Worktree
Error:
fatal: 'remove' cannot be used with reason 'locked'
Solution:
# Unlock worktree
git worktree unlock /home/setup/navidocs-ui-test
# Then remove
git worktree remove /home/setup/navidocs-ui-test
Best Practices
1. Descriptive Branch Names
Use date-stamped or feature-based names:
git worktree add -b ui-smoketest-20251019 /path/to/worktree master
git worktree add -b feature-search-v2 /path/to/worktree master
git worktree add -b bugfix-pdf-streaming /path/to/worktree master
2. Keep Worktrees Short-Lived
Remove worktrees after testing/development is complete:
# Merge changes
git merge ui-smoketest-20251019
# Clean up
git worktree remove /home/setup/navidocs-ui-test
git branch -d ui-smoketest-20251019
3. Sync Regularly
Keep test worktree in sync with master:
cd /home/setup/navidocs-ui-test
git fetch origin
git merge origin/master
4. Isolate Services
When running services in test worktree, use different ports:
# In test worktree's .env
PORT=8002 # Instead of 8001
CLIENT_PORT=5175 # Instead of 5174
5. Document Test Results
Always document findings in the worktree:
cd /home/setup/navidocs-ui-test
vim docs/testing/SMOKETEST_REPORT_20251019.md
git add docs/testing/SMOKETEST_REPORT_20251019.md
git commit -m "docs: add smoketest report for 2025-10-19"
Advanced Usage
Create Multiple Test Worktrees
# UI testing
git worktree add -b ui-test /home/setup/navidocs-ui-test master
# API testing
git worktree add -b api-test /home/setup/navidocs-api-test master
# Performance testing
git worktree add -b perf-test /home/setup/navidocs-perf-test master
List All Worktrees with Details
git worktree list --porcelain
Output:
worktree /home/setup/navidocs
HEAD ff3c30687f0a6e8d9c2b1e4f5a6c7d8e9f0a1b2c
branch refs/heads/master
worktree /home/setup/navidocs-ui-test
HEAD ff3c30687f0a6e8d9c2b1e4f5a6c7d8e9f0a1b2c
branch refs/heads/ui-smoketest-20251019
Prune Stale Worktrees
# Remove worktrees that no longer exist on disk
git worktree prune
References
- Git Worktree Documentation: https://git-scm.com/docs/git-worktree
- NaviDocs Testing Guide:
/home/setup/navidocs/docs/testing/ - Smoketest Report:
/home/setup/navidocs/docs/testing/SMOKETEST_REPORT_20251019.md
Document Version: 1.0 Created: 2025-10-19 Last Updated: 2025-10-19 Maintainer: NaviDocs Development Team