0bc0d99c21
- Create SettingsTabLayout component with sidebar navigation - Create ProjectSettingsPage with General settings tab - Create RepositoriesSettingsTab for repo management - Add Members placeholder tab - Update router with settings routes - Add CSS styles for settings layout - Navigate to /projects/:id/settings from workspace header
4.0 KiB
4.0 KiB
Git Control - Tasks
Phase 1: Backend Git Utilities
-
Task 1.1: Extend git utilities
- Add to
src/utils/git_control.py:get_status(repo_path)- working directory statuscreate_branch(repo_path, name, base)- create branchdelete_branch(repo_path, name)- delete branchcheckout_branch(repo_path, name)- switch branchcommit_changes(repo_path, message, author)- commit
- Add tests
- Add to
-
Task 1.2: Add remote operations
- Add to
src/utils/git_control.py:fetch(repo_path)- fetch from remotepull(repo_path, branch)- pull updatespush(repo_path, branch)- push changesmerge(repo_path, source, target, message)- merge
- Handle errors (conflicts, auth, etc.)
- Add tests
- Add to
Phase 2: Backend API Endpoints
-
Task 2.1: Branch management endpoints
- POST
/projects/{id}/repositories/{id}/branches- create - DELETE
/projects/{id}/repositories/{id}/branches/{name}- delete - POST
/projects/{id}/repositories/{id}/checkout- checkout - Add to
src/api/git_repositories.py
- POST
-
Task 2.2: Status endpoint
- GET
/projects/{id}/repositories/{id}/status - Returns working directory status
- GET
-
Task 2.3: Commit endpoint
- POST
/projects/{id}/repositories/{id}/commits - Commits all staged changes
- POST
-
Task 2.4: Remote operation endpoints
- POST
/projects/{id}/repositories/{id}/fetch - POST
/projects/{id}/repositories/{id}/pull - POST
/projects/{id}/repositories/{id}/push
- POST
-
Task 2.5: Merge endpoint
- POST
/projects/{id}/repositories/{id}/merge - Handle conflict responses
- POST
Phase 3: Frontend Git Toolbar
-
Task 3.1: Create GitToolbar component
- Fetch, Pull, Push buttons
- Branch selector with count badges
- Commit button
- Merge button
- Add to workspace layout
-
Task 3.2: Add status polling
- Poll status every 5 seconds
- Update toolbar badges (ahead/behind)
- Show commit button when changes exist
Phase 4: Branch Management
-
Task 4.1: Enhance BranchSelector
- Add "Create new branch" option
- Add delete option with confirmation
- Show current branch
- Call branch API endpoints
-
Task 4.2: Create NewBranchDialog
- Branch name input
- Base branch selector
- Create/Cancel buttons
Phase 5: Commit Workflow
-
Task 5.1: Create CommitPanel component
- Shows when files are modified
- Lists changed files
- Commit message input
- Commit button
- Success/error feedback
-
Task 5.2: Add status indicators to FileTree
- Modified icon (✏️)
- New file icon (✨)
- Deleted icon (🗑️)
- Untracked icon (❓)
Phase 6: Remote Operations
-
Task 6.1: Implement fetch/pull/push
- Wire toolbar buttons to API
- Show progress indicators
- Handle errors (auth, conflicts, etc.)
- Update status after operations
-
Task 6.2: Create MergeDialog
- Source branch selector
- Target branch display
- Commit message input
- Merge/Cancel buttons
- Handle conflicts
Phase 7: Integration & Polish
-
Task 7.1: Wire everything together
- Connect toolbar to all APIs
- Update workspace state after operations
- Refresh file tree on branch switch
-
Task 7.2: Add error handling
- Show toast notifications for operations
- Handle all error cases gracefully
- Provide recovery options
-
Task 7.3: Add CSS styles
- Toolbar layout
- Status indicators
- Commit panel
- Dialogs
-
Task 7.4: Run quality gates
- Backend: ruff, mypy, pytest
- Frontend: typecheck, lint, build
Phase 8: Testing
-
Task 8.1: Backend tests
- Created
tests/integration/test_git_control.py - Tests for: get_status, create_branch, checkout_branch, delete_branch, get_current_branch, commit_changes
- All 9 tests passing
- Created
-
Task 8.2: Frontend tests
- Components tested manually
- Integration with workspace verified
-
Task 8.3: Manual testing
- Branch creation, checkout, deletion verified
- Commit workflow tested
- Status polling verified