chore(git): add comprehensive Git workflow configuration and documentation
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
193
docs/BRANCH_STRATEGY.md
Normal file
193
docs/BRANCH_STRATEGY.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# Branch Strategy for MEV Bot Project
|
||||
|
||||
This document outlines the branching strategy for the MEV Bot project.
|
||||
|
||||
## Branch Types
|
||||
|
||||
### 1. Main Branches
|
||||
|
||||
#### `main`
|
||||
- Contains production-ready code
|
||||
- Only accepts merges from `release/*` branches
|
||||
- Always stable and deployable
|
||||
- Protected branch - requires pull requests and code review
|
||||
|
||||
#### `develop`
|
||||
- Main development branch
|
||||
- Contains latest delivered development changes
|
||||
- All feature branches merge here
|
||||
- Automated CI/CD pipeline runs on this branch
|
||||
|
||||
### 2. Supporting Branches
|
||||
|
||||
#### `feature/*`
|
||||
- Used for developing new features
|
||||
- Branch from: `develop`
|
||||
- Merge back to: `develop`
|
||||
- Branch naming: `feature/<descriptive-name>`
|
||||
- Examples:
|
||||
- `feature/add-market-scanner`
|
||||
- `feature/improve-uniswap-pricing`
|
||||
- `feature/add-logging`
|
||||
|
||||
#### `fix/*`
|
||||
- Used for bug fixes in development
|
||||
- Branch from: `develop`
|
||||
- Merge back to: `develop`
|
||||
- Branch naming: `fix/<descriptive-name>`
|
||||
- Examples:
|
||||
- `fix/resolve-memory-leak`
|
||||
- `fix/correct-pricing-calculation`
|
||||
|
||||
#### `release/*`
|
||||
- Used for release preparation
|
||||
- Branch from: `develop`
|
||||
- Merge back to: `main` and `develop`
|
||||
- Branch naming: `release/<version>`
|
||||
- Examples:
|
||||
- `release/v1.2.0`
|
||||
- `release/v2.0.0`
|
||||
|
||||
#### `hotfix/*`
|
||||
- Used for critical production fixes
|
||||
- Branch from: `main`
|
||||
- Merge back to: `main` and `develop`
|
||||
- Branch naming: `hotfix/<descriptive-name>`
|
||||
- Examples:
|
||||
- `hotfix/security-patch`
|
||||
- `hotfix/critical-bug-fix`
|
||||
|
||||
## Workflow Examples
|
||||
|
||||
### Feature Development Workflow
|
||||
```bash
|
||||
# 1. Create feature branch from develop
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git checkout -b feature/add-market-scanner
|
||||
|
||||
# 2. Develop feature
|
||||
# ... make changes ...
|
||||
git add .
|
||||
git commit -m "feat(market): implement basic market scanner"
|
||||
|
||||
# 3. Keep feature branch up to date
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git checkout feature/add-market-scanner
|
||||
git rebase develop
|
||||
|
||||
# 4. Push feature branch
|
||||
git push -u origin feature/add-market-scanner
|
||||
|
||||
# 5. Create Pull Request on GitHub/GitLab
|
||||
# 6. After PR approval and merge, delete branch
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git branch -d feature/add-market-scanner
|
||||
git push origin --delete feature/add-market-scanner
|
||||
```
|
||||
|
||||
### Release Workflow
|
||||
```bash
|
||||
# 1. Create release branch from develop
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git checkout -b release/v1.2.0
|
||||
|
||||
# 2. Prepare release
|
||||
# ... bump version numbers, update docs ...
|
||||
git add .
|
||||
git commit -m "chore(release): prepare v1.2.0"
|
||||
|
||||
# 3. Merge to main
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git merge release/v1.2.0
|
||||
git tag -a v1.2.0 -m "Release v1.2.0"
|
||||
git push origin main --tags
|
||||
|
||||
# 4. Merge to develop
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git merge release/v1.2.0
|
||||
git push origin develop
|
||||
|
||||
# 5. Delete release branch
|
||||
git branch -d release/v1.2.0
|
||||
git push origin --delete release/v1.2.0
|
||||
```
|
||||
|
||||
### Hotfix Workflow
|
||||
```bash
|
||||
# 1. Create hotfix branch from main
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git checkout -b hotfix/critical-security-issue
|
||||
|
||||
# 2. Fix issue
|
||||
# ... make changes ...
|
||||
git add .
|
||||
git commit -m "fix(security): resolve critical vulnerability"
|
||||
|
||||
# 3. Merge to main
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git merge hotfix/critical-security-issue
|
||||
git tag -a v1.1.1 -m "Hotfix v1.1.1"
|
||||
git push origin main --tags
|
||||
|
||||
# 4. Merge to develop
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git merge hotfix/critical-security-issue
|
||||
git push origin develop
|
||||
|
||||
# 5. Delete hotfix branch
|
||||
git branch -d hotfix/critical-security-issue
|
||||
git push origin --delete hotfix/critical-security-issue
|
||||
```
|
||||
|
||||
## Branch Protection Rules
|
||||
|
||||
### `main` Branch
|
||||
- Require pull request reviews before merging
|
||||
- Require status checks to pass before merging
|
||||
- Require branches to be up to date before merging
|
||||
- Include administrators in restrictions
|
||||
- Allow force pushes: No
|
||||
- Allow deletions: No
|
||||
|
||||
### `develop` Branch
|
||||
- Require pull request reviews before merging
|
||||
- Require status checks to pass before merging
|
||||
- Include administrators in restrictions
|
||||
- Allow force pushes: No
|
||||
- Allow deletions: No
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
### Good Examples
|
||||
- `feature/add-uniswap-v3-support`
|
||||
- `fix/resolve-arbitrum-parser-bug`
|
||||
- `release/v2.1.0`
|
||||
- `hotfix/security-patch`
|
||||
|
||||
### Avoid These
|
||||
- `feature/fix` (unclear)
|
||||
- `bugfix` (use `fix/` instead)
|
||||
- `new-stuff` (not descriptive)
|
||||
- `feature1` (not descriptive)
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Keep branches short-lived** - Max 1-2 weeks
|
||||
2. **Use descriptive names** - Clearly indicate purpose
|
||||
3. **Keep features small** - One branch per logical feature
|
||||
4. **Regularly sync with develop** - Prevent large merge conflicts
|
||||
5. **Delete branches after merging** - Keep repository clean
|
||||
6. **Use pull requests** - Enable code review and discussion
|
||||
7. **Write meaningful commit messages** - Help with code review
|
||||
8. **Tag releases** - Enable easy rollback and version tracking
|
||||
|
||||
This branching strategy ensures a clean, organized Git history while enabling parallel development and maintaining code quality.
|
||||
264
docs/GIT_WORKFLOW.md
Normal file
264
docs/GIT_WORKFLOW.md
Normal file
@@ -0,0 +1,264 @@
|
||||
# Git Workflow for MEV Bot Project
|
||||
|
||||
This document outlines the Git workflow, best practices, and configurations for the MEV Bot project.
|
||||
|
||||
## 🌿 Branch Strategy
|
||||
|
||||
### Branch Naming Conventions
|
||||
```
|
||||
main # Production-ready code
|
||||
develop # Main development branch
|
||||
feature/<description> # New features (e.g., feature/add-market-scanner)
|
||||
fix/<description> # Bug fixes (e.g., fix/memory-leak)
|
||||
hotfix/<description> # Critical production fixes (e.g., hotfix/security-patch)
|
||||
release/<version> # Release preparation (e.g., release/v1.2.0)
|
||||
```
|
||||
|
||||
### Branch Hierarchy
|
||||
```
|
||||
main
|
||||
└── develop
|
||||
├── feature/add-market-scanner
|
||||
├── feature/improve-performance
|
||||
├── fix/resolve-race-condition
|
||||
└── release/v1.2.0
|
||||
```
|
||||
|
||||
## 📝 Commit Message Conventions
|
||||
|
||||
### Format
|
||||
```
|
||||
type(scope): brief description
|
||||
|
||||
- Detailed explanation of changes
|
||||
- Why the change was needed
|
||||
- Any breaking changes or migration notes
|
||||
|
||||
Resolves: #123
|
||||
See also: #456
|
||||
```
|
||||
|
||||
### Types
|
||||
- `feat`: New feature implementation
|
||||
- `fix`: Bug fix
|
||||
- `perf`: Performance improvement
|
||||
- `refactor`: Code restructuring without feature changes
|
||||
- `test`: Adding or updating tests
|
||||
- `docs`: Documentation updates
|
||||
- `build`: Build system or dependency changes
|
||||
- `ci`: CI/CD pipeline changes
|
||||
- `chore`: Maintenance tasks
|
||||
|
||||
### Scopes
|
||||
- `arbitrum`: Arbitrum monitoring components
|
||||
- `market`: Market analysis and scanning
|
||||
- `uniswap`: Uniswap V3 pricing functions
|
||||
- `config`: Configuration management
|
||||
- `security`: Security-related changes
|
||||
- `performance`: Performance optimizations
|
||||
- `testing`: Test-related changes
|
||||
- `logging`: Logging improvements
|
||||
- `monitor`: Monitoring components
|
||||
- `scanner`: Market scanning components
|
||||
|
||||
## 🔄 Workflow Process
|
||||
|
||||
### 1. Feature Development
|
||||
```bash
|
||||
# Create feature branch from develop
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git checkout -b feature/new-feature-name
|
||||
|
||||
# Make changes and commit frequently
|
||||
git add .
|
||||
git commit -m "feat(scope): description of changes"
|
||||
|
||||
# Push branch to remote
|
||||
git push -u origin feature/new-feature-name
|
||||
```
|
||||
|
||||
### 2. Code Review Process
|
||||
1. Create Pull Request from feature branch to develop
|
||||
2. Request review from team members
|
||||
3. Address feedback and make changes
|
||||
4. Get approval from reviewers
|
||||
5. Merge to develop
|
||||
|
||||
### 3. Release Process
|
||||
```bash
|
||||
# Create release branch
|
||||
git checkout develop
|
||||
git pull origin develop
|
||||
git checkout -b release/v1.2.0
|
||||
|
||||
# Finalize release (version bumps, docs, etc.)
|
||||
git add .
|
||||
git commit -m "chore(release): prepare v1.2.0"
|
||||
|
||||
# Merge to main and develop
|
||||
git checkout main
|
||||
git merge release/v1.2.0
|
||||
git tag -a v1.2.0 -m "Release v1.2.0"
|
||||
git push origin main --tags
|
||||
|
||||
git checkout develop
|
||||
git merge release/v1.2.0
|
||||
git push origin develop
|
||||
|
||||
# Delete release branch
|
||||
git branch -d release/v1.2.0
|
||||
git push origin --delete release/v1.2.0
|
||||
```
|
||||
|
||||
### 4. Hotfix Process
|
||||
```bash
|
||||
# Create hotfix branch from main
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git checkout -b hotfix/critical-bug
|
||||
|
||||
# Fix bug and commit
|
||||
git add .
|
||||
git commit -m "fix(security): resolve critical vulnerability"
|
||||
|
||||
# Merge to main and develop
|
||||
git checkout main
|
||||
git merge hotfix/critical-bug
|
||||
git tag -a v1.1.1 -m "Hotfix v1.1.1"
|
||||
git push origin main --tags
|
||||
|
||||
git checkout develop
|
||||
git merge hotfix/critical-bug
|
||||
git push origin develop
|
||||
|
||||
# Delete hotfix branch
|
||||
git branch -d hotfix/critical-bug
|
||||
git push origin --delete hotfix/critical-bug
|
||||
```
|
||||
|
||||
## 🛡️ Git Hooks
|
||||
|
||||
### Pre-commit Hook
|
||||
Validates code quality before committing:
|
||||
- Run linters
|
||||
- Run tests
|
||||
- Check for secrets
|
||||
- Validate commit message format
|
||||
|
||||
### Pre-push Hook
|
||||
Validates code before pushing:
|
||||
- Run full test suite
|
||||
- Run security scans
|
||||
- Check code coverage
|
||||
|
||||
## 📊 Git Configuration
|
||||
|
||||
### User Configuration
|
||||
```bash
|
||||
git config user.name "Your Name"
|
||||
git config user.email "your.email@example.com"
|
||||
```
|
||||
|
||||
### Project Configuration
|
||||
```bash
|
||||
# Enable color output
|
||||
git config color.ui auto
|
||||
|
||||
# Set default editor
|
||||
git config core.editor "code --wait"
|
||||
|
||||
# Enable rebasing when pulling
|
||||
git config pull.rebase true
|
||||
|
||||
# Set up push behavior
|
||||
git config push.default simple
|
||||
|
||||
# Enable Git Large File Storage (if needed)
|
||||
git config lfs.repositoryformatversion 0
|
||||
```
|
||||
|
||||
## 🔧 Git Aliases
|
||||
|
||||
Add these helpful aliases to your Git configuration:
|
||||
```bash
|
||||
git config --global alias.st status
|
||||
git config --global alias.co checkout
|
||||
git config --global alias.br branch
|
||||
git config --global alias.ci commit
|
||||
git config --global alias.unstage 'reset HEAD --'
|
||||
git config --global alias.last 'log -1 HEAD'
|
||||
git config --global alias.visual '!gitk'
|
||||
git config --global alias.graph 'log --oneline --graph --decorate --all'
|
||||
git config --global alias.amend 'commit --amend'
|
||||
git config --global alias.fixup 'commit --fixup'
|
||||
```
|
||||
|
||||
## 🚀 Best Practices
|
||||
|
||||
### Commit Frequency
|
||||
- Commit early and often
|
||||
- Each commit should represent a single logical change
|
||||
- Write clear, descriptive commit messages
|
||||
- Keep commits small and focused
|
||||
|
||||
### Branch Management
|
||||
- Delete branches after merging
|
||||
- Keep feature branches up to date with develop
|
||||
- Use descriptive branch names
|
||||
- Limit branch lifetime (max 1-2 weeks)
|
||||
|
||||
### Merge Strategies
|
||||
- Use merge commits for feature branches to preserve history
|
||||
- Use rebase for cleaning up local commit history
|
||||
- Use squash merge for small features with multiple commits
|
||||
- Always review changes before merging
|
||||
|
||||
### Code Review
|
||||
- Review code before merging to develop or main
|
||||
- Ensure tests pass and coverage is maintained
|
||||
- Check for security vulnerabilities
|
||||
- Verify code follows project standards
|
||||
|
||||
## 📈 Git Workflow Metrics
|
||||
|
||||
Track these metrics to improve the development process:
|
||||
- Average time from feature branch to merge
|
||||
- Number of commits per pull request
|
||||
- Code review turnaround time
|
||||
- Merge conflict frequency
|
||||
- Release frequency
|
||||
|
||||
## 🆘 Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### Merge Conflicts
|
||||
```bash
|
||||
# Resolve conflicts and continue merge
|
||||
git add .
|
||||
git commit
|
||||
|
||||
# Abort merge if needed
|
||||
git merge --abort
|
||||
```
|
||||
|
||||
#### Accidental Commits
|
||||
```bash
|
||||
# Amend last commit
|
||||
git commit --amend
|
||||
|
||||
# Remove file from last commit
|
||||
git reset --soft HEAD~1
|
||||
```
|
||||
|
||||
#### Lost Commits
|
||||
```bash
|
||||
# Find lost commits
|
||||
git reflog
|
||||
|
||||
# Restore to specific commit
|
||||
git reset --hard HEAD@{n}
|
||||
```
|
||||
|
||||
This Git workflow ensures consistent, high-quality code contributions while maintaining a clean, traceable history.
|
||||
Reference in New Issue
Block a user