Git Workflow And Version Control
Clean Architecture প্রজেক্টের জন্য Git workflow এবং version control best practices।
🎯 Branch Strategy
1. GitFlow Model
main (production)
├── develop (development)
│ ├── feature/auth-implementation
│ ├── feature/dashboard-ui
│ └── feature/profile-management
├── release/v1.0.0
└── hotfix/critical-bug-fix
2. Branch Naming Convention
Feature Branches:
feature/auth-login
feature/dashboard-analytics
feature/profile-update
Bug Fix Branches:
bugfix/login-validation
bugfix/dashboard-crash
Hotfix Branches:
hotfix/security-patch
hotfix/critical-error
Release Branches:
release/v1.0.0
release/v1.1.0
📝 Commit Message Guidelines
Format:
<type>(<scope>): <subject>
<body>
<footer>
Types:
- feat: নতুন feature
- fix: bug fix
- docs: documentation
- style: formatting, code style
- refactor: code refactoring
- test: test cases
- chore: maintenance tasks
Examples:
✅ Good Commit Messages:
feat(auth): add login functionality with validation
- Implement email/password validation
- Add JWT token handling
- Create auth repository and use cases
- Add error handling for invalid credentials
Closes #123
fix(dashboard): resolve data loading issue
- Fix null pointer exception in dashboard controller
- Add proper error handling for API failures
- Update dashboard model to handle empty responses
Fixes #456
refactor(profile): improve code structure
- Move business logic from controller to use case
- Extract common validation logic
- Update repository implementation
- Add proper error handling
❌ Bad Commit Messages:
fix bug # ❌ কোন bug? কোথায়?
update code # ❌ কি update করেছেন?
working version # ❌ কি কাজ করছে?
🔄 Feature Development Workflow
1. নতুন Feature শুরু করা
# Main branch থেকে latest pull করুন
git checkout main
git pull origin main
# Develop branch এ switch করুন
git checkout develop
git pull origin develop
# নতুন feature branch তৈরি করুন
git checkout -b feature/auth-login
# FLX CLI দিয়ে feature তৈরি করুন
flx gen feature auth
2. Development Process
# Regular commits করুন
git add .
git commit -m "feat(auth): add auth entity and repository interface"
# Implementation continue করুন
git add .
git commit -m "feat(auth): implement auth use cases"
git add .
git commit -m "feat(auth): add auth controller and UI pages"
3. Feature Complete করা
# Final testing এবং cleanup
git add .
git commit -m "feat(auth): add unit tests and integration tests"
# Remote branch এ push করুন
git push origin feature/auth-login
# Pull Request তৈরি করুন (GitHub/GitLab)
# Code review এর জন্য অপেক্ষা করুন
📋 Pull Request Guidelines
PR Title Format:
[Feature] Auth Login Implementation
[Fix] Dashboard Data Loading Issue
[Refactor] Profile Module Clean Architecture
PR Description Template:
## 📋 Description
Brief description of changes made.
## 🎯 Type of Change
- [ ] New feature
- [ ] Bug fix
- [ ] Breaking change
- [ ] Documentation update
- [ ] Code refactoring
## 🧪 Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing completed
- [ ] All tests passing
## 📁 Files Changed
- `lib/features/auth/domain/entities/auth_entity.dart`
- `lib/features/auth/domain/repositories/auth_repository.dart`
- `lib/features/auth/domain/usecases/login_usecase.dart`
- `lib/features/auth/data/models/auth_model.dart`
- `lib/features/auth/data/datasources/auth_remote_data_source.dart`
- `lib/features/auth/data/repositories/auth_repository_impl.dart`
- `lib/features/auth/presentation/controllers/auth_controller.dart`
- `lib/features/auth/presentation/pages/login_page.dart`
## ✅ Clean Architecture Checklist
- [ ] Domain layer শুধু business logic আছে
- [ ] Data layer শুধু data operations আছে
- [ ] Presentation layer শুধু UI logic আছে
- [ ] Dependency rule follow করেছে
- [ ] Proper error handling আছে
- [ ] Unit tests আছে
## 📸 Screenshots (if applicable)
<!-- Add screenshots for UI changes -->
## 🔗 Related Issues
Closes #123
Related to #456
🏷️ Tagging এবং Releases
Semantic Versioning
v1.0.0 (MAJOR.MINOR.PATCH)
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
Release Process
# Release branch তৈরি করুন
git checkout develop
git checkout -b release/v1.0.0
# Version bump করুন (pubspec.yaml)
# Final testing এবং bug fixes
# Release branch merge করুন
git checkout main
git merge release/v1.0.0
# Tag তৈরি করুন
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin main
git push origin v1.0.0
# Develop branch এ merge back করুন
git checkout develop
git merge main
git push origin develop
🚫 .gitignore Configuration
Clean Architecture প্রজেক্টের জন্য .gitignore
:
# Flutter/Dart
.dart_tool/
.packages
.metadata
.flutter-plugins
.flutter-plugins-dependencies
build/
pubspec.lock # Keep this if using exact versions
# IDE
.vscode/
.idea/
*.iml
*.ipr
*.iws
# OS
.DS_Store
Thumbs.db
# Environment
.env
.env.local
.env.production
# Coverage
coverage/
# FLX CLI
.flxrc.json # Local configuration
# Generated files
*.g.dart
*.freezed.dart
*.mocks.dart
# Firebase
google-services.json
GoogleService-Info.plist
firebase_options.dart
# Platform specific
android/key.properties
android/app/google-services.json
ios/Runner/GoogleService-Info.plist
📊 Commit Analysis
Feature Development Commits:
git log --oneline --grep="feat"
Bug Fix Commits:
git log --oneline --grep="fix"
Clean Architecture Refactoring:
git log --oneline --grep="refactor"
🔍 Code Review Checklist
Clean Architecture Review:
Domain Layer:
- কোন Flutter dependencies নেই
- Business logic properly implemented
- Abstract repositories defined
- Entities are immutable
- Use cases follow single responsibility
Data Layer:
- Repository interfaces implemented
- Models extend entities
- Data sources separated (remote/local)
- Error handling proper
- Data transformation correct
Presentation Layer:
- UI logic only
- Use cases injected properly
- State management implemented
- Error handling for UI
- Navigation logic proper
General Code Review:
- Code follows Dart conventions
- Proper variable/method naming
- Comments where necessary
- No hardcoded values
- Performance considerations
- Security best practices
🚀 Advanced Git Tips
1. Interactive Rebase
# Last 3 commits rebase করুন
git rebase -i HEAD~3
# Squash commits for cleaner history
pick abc1234 feat(auth): add auth entity
squash def5678 feat(auth): fix entity properties
squash ghi9012 feat(auth): add validation
2. Cherry Pick
# Specific commit অন্য branch এ apply করুন
git cherry-pick abc1234
3. Stashing
# Work in progress save করুন
git stash push -m "WIP: auth implementation"
# Stash apply করুন
git stash pop
4. Conflict Resolution
# Merge conflict হলে
git status
# Files edit করুন
git add .
git commit -m "resolve merge conflicts"
🎯 Team Collaboration
1. Daily Workflow
# দিন শুরু করার আগে
git checkout develop
git pull origin develop
git checkout feature/your-feature
git merge develop # Latest changes নিন
# কাজ শেষে
git add .
git commit -m "appropriate commit message"
git push origin feature/your-feature
2. Code Synchronization
# অন্যদের changes নিতে
git fetch origin
git merge origin/develop
# অথবা rebase (cleaner history)
git rebase origin/develop
✅ Best Practices Summary
- Frequent Commits: ছোট ছোট meaningful commits করুন
- Clear Messages: Descriptive commit messages লিখুন
- Regular Sync: Daily develop branch sync করুন
- Feature Isolation: প্রতিটি feature আলাদা branch এ
- Code Review: Pull request mandatory
- Testing: Commit করার আগে test করুন
- Documentation: Code changes document করুন
মনে রাখবেন: Good Git practices আপনার team collaboration এবং project maintainability significantly improve করে! 🎯