giv Examples - Real-World AI-Powered Git Workflows

Team Collaboration Workflows

Professional team patterns for consistent, high-quality Git documentation

🚀

Feature Development Workflow

Beginner

Complete feature development lifecycle using giv for consistent commit messages, branch summaries, and release documentation.

1. Feature Branch Creation

# Create feature branch git checkout -b feature/user-authentication # Work on feature, make incremental changes git add src/auth/login.py giv message --cached # Output: "feat: implement user login validation with JWT tokens" git commit -m "$(giv message --cached --output-mode none)"

2. Feature Progress Summary

# Summarize feature branch progress for team standup giv summary main..feature/user-authentication # Output: Professional summary of authentication implementation, # including security measures, API changes, and test coverage

3. Pull Request Documentation

# Generate comprehensive PR description giv summary main..HEAD --output-file PR_DESCRIPTION.md # Create release notes for the feature giv release-notes main..HEAD --output-version "feature-auth" \ --output-file FEATURE_NOTES.md

4. Post-Merge Documentation

# After feature merge, update main branch changelog git checkout main git pull origin main giv changelog v1.2.0..HEAD --output-mode prepend \ --output-file CHANGELOG.md

Benefits for Teams

  • Consistent commit message format across team members
  • Professional PR descriptions that save review time
  • Automated feature documentation for stakeholders
  • Standardized changelog maintenance
🔄

Code Review Enhancement

Intermediate

AI-Enhanced Code Review Process

# Before submitting for review git add . giv message --cached --prompt-file .giv/templates/review-ready.md # Custom template focuses on: # - What changed and why # - Potential impact on existing features # - Testing approach and coverage # - Breaking changes or migrations needed git commit -m "$(giv message --cached --output-mode none)" # Generate reviewer-focused summary giv summary HEAD~3..HEAD --prompt-file .giv/templates/reviewer-guide.md \ --output-file REVIEW_GUIDE.md

Post-Review Documentation

# After addressing review feedback git add . giv message --cached # Generates messages like: # "refactor: extract authentication logic per review feedback" # "fix: handle edge case in password validation as suggested" # "docs: update API documentation based on team discussion" # Summarize entire review cycle giv summary pr-base..HEAD --output-file REVIEW_SUMMARY.md

Team Review Templates

# .giv/templates/review-ready.md Generate a commit message for these changes that helps code reviewers: {DIFF} Focus on: - What functionality is being added/modified/removed - Why this approach was chosen - Any potential risks or side effects - Testing strategy used Use conventional commit format with detailed body for complex changes.
📋

Sprint and Release Management

Advanced

Sprint Retrospective Documentation

# Weekly sprint summary for stakeholders SPRINT_START="2024-01-15" SPRINT_END="2024-01-22" # Generate sprint summary using date ranges giv summary --since="$SPRINT_START" --until="$SPRINT_END" \ --prompt-file .giv/templates/sprint-summary.md \ --output-file "sprint-$(date +%Y-week-%U)-summary.md" # Output includes: # - Features completed # - Bug fixes implemented # - Technical debt addressed # - Performance improvements # - Team velocity insights

Release Planning and Documentation

# Prepare for upcoming release LAST_RELEASE="v2.1.0" NEXT_RELEASE="v2.2.0" # Generate comprehensive release notes giv release-notes $LAST_RELEASE..HEAD \ --output-version "$NEXT_RELEASE" \ --output-file "RELEASE_NOTES_$NEXT_RELEASE.md" # Create marketing announcement giv announcement $LAST_RELEASE..HEAD \ --output-version "$NEXT_RELEASE" \ --prompt-file .giv/templates/marketing-announcement.md \ --output-file "ANNOUNCEMENT_$NEXT_RELEASE.md" # Update main changelog giv changelog $LAST_RELEASE..HEAD \ --output-mode prepend \ --output-file CHANGELOG.md

Multi-Team Coordination

# Generate cross-team impact analysis teams=("frontend" "backend" "mobile" "devops") for team in "${teams[@]}"; do echo "Analyzing $team team changes..." giv summary HEAD~20..HEAD -- "*/$team/*" \ --prompt-file .giv/templates/team-impact.md \ --output-file "reports/$team-impact-report.md" done # Combine all team reports giv document --prompt-file .giv/templates/cross-team-summary.md \ HEAD~20..HEAD --output-file "RELEASE_COORDINATION.md"

Automation and CI/CD Examples

Integrate giv into automated workflows for consistent documentation

🔄 GitHub Actions Integration

Automated documentation generation on every push and release

# .github/workflows/documentation.yml name: AI-Powered Documentation on: push: branches: [main, develop] pull_request: branches: [main] release: types: [created] jobs: generate-docs: runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 # Full history for comprehensive analysis - name: Install giv run: | curl -fsSL https://raw.githubusercontent.com/fwdslsh/giv/main/install.sh | bash echo "$HOME/.local/bin" >> $GITHUB_PATH - name: Generate commit documentation if: github.event_name == 'push' run: | # Generate summary of recent changes giv summary HEAD~5..HEAD \ --output-file .github/RECENT_CHANGES.md # Update development changelog giv changelog HEAD~10..HEAD \ --output-mode prepend \ --output-file DEVELOPMENT.md env: GIV_API_KEY: ${{ secrets.OPENAI_API_KEY }} GIV_API_MODEL: "gpt-4" - name: Generate release documentation if: github.event_name == 'release' run: | PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^) CURRENT_TAG=${GITHUB_REF#refs/tags/} # Generate comprehensive release notes giv release-notes $PREVIOUS_TAG..HEAD \ --output-version "$CURRENT_TAG" \ --output-file "RELEASE_NOTES_$CURRENT_TAG.md" # Update main changelog giv changelog $PREVIOUS_TAG..HEAD \ --output-mode prepend \ --output-file CHANGELOG.md # Create marketing announcement giv announcement $PREVIOUS_TAG..HEAD \ --output-version "$CURRENT_TAG" \ --output-file "ANNOUNCEMENT_$CURRENT_TAG.md" env: GIV_API_KEY: ${{ secrets.OPENAI_API_KEY }} - name: Commit documentation updates if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git add . if git diff --staged --quiet; then echo "No documentation changes to commit" else giv message --cached --output-mode none | \ git commit -F - git push fi

🐳 Docker-Based Documentation Pipeline

Consistent cross-platform documentation generation

# docker-compose.docs.yml version: '3.8' services: giv-docs: image: fwdslsh/giv:latest volumes: - .:/workspace - ./docs-output:/output working_dir: /workspace environment: - GIV_API_KEY=${OPENAI_API_KEY} - GIV_API_MODEL=gpt-4 - GIV_OUTPUT_MODE=overwrite command: | sh -c " echo 'Generating comprehensive project documentation...' # Release documentation giv release-notes v1.0.0..HEAD \ --output-file /output/RELEASE_NOTES.md # Development summary giv summary HEAD~20..HEAD \ --output-file /output/DEVELOPMENT_SUMMARY.md # Feature changelogs by directory giv changelog HEAD~30..HEAD -- src/api/ \ --output-file /output/API_CHANGES.md giv changelog HEAD~30..HEAD -- src/frontend/ \ --output-file /output/FRONTEND_CHANGES.md # Custom security review giv document --prompt-file .giv/templates/security-review.md \ HEAD~10..HEAD \ --output-file /output/SECURITY_REVIEW.md echo 'Documentation generation complete!' ls -la /output/ " # Usage: # docker-compose -f docker-compose.docs.yml up giv-docs

🔧 Git Hooks Integration

Automatic commit enhancement and validation

#!/bin/bash # .git/hooks/prepare-commit-msg # Enhance commit messages with AI assistance commit_file="$1" commit_source="$2" commit_sha="$3" # Only enhance commits without existing messages (interactive commits) if [ -z "$commit_source" ] || [ "$commit_source" = "template" ]; then echo "🤖 Enhancing commit message with AI assistance..." # Generate AI-powered commit message ai_message=$(giv message --cached --output-mode none 2>/dev/null) if [ $? -eq 0 ] && [ -n "$ai_message" ]; then # Prepend AI-generated message to commit file { echo "$ai_message" echo "" echo "# AI-generated commit message above." echo "# Edit as needed, then save and close to commit." echo "" cat "$commit_file" } > "$commit_file.tmp" mv "$commit_file.tmp" "$commit_file" echo "✅ AI-enhanced commit message ready for review" else echo "⚠️ Could not generate AI commit message (check giv configuration)" fi fi # Post-commit hook for documentation updates # .git/hooks/post-commit #!/bin/bash echo "🔄 Updating project documentation..." # Update development changelog after every commit giv changelog HEAD~5..HEAD \ --output-mode prepend \ --output-file DEVELOPMENT.md 2>/dev/null # Generate summary for significant changes (>10 files changed) files_changed=$(git diff-tree --no-commit-id --name-only -r HEAD | wc -l) if [ "$files_changed" -gt 10 ]; then echo "📝 Significant changes detected, generating summary..." giv summary HEAD~1..HEAD \ --output-file ".git/LAST_MAJOR_COMMIT.md" 2>/dev/null fi echo "✅ Documentation updated"

📊 Analytics and Reporting

Automated development metrics and team insights

#!/bin/bash # generate-dev-metrics.sh # Comprehensive development analytics using giv echo "📊 Generating Development Metrics Report..." # Configuration REPORT_DIR="reports/$(date +%Y-%m)" WEEKS_BACK=4 START_DATE=$(date -d "$WEEKS_BACK weeks ago" +%Y-%m-%d) mkdir -p "$REPORT_DIR" # Weekly activity summaries for i in $(seq 0 $((WEEKS_BACK-1))); do week_start=$(date -d "$START_DATE + $((i*7)) days" +%Y-%m-%d) week_end=$(date -d "$START_DATE + $(((i+1)*7-1)) days" +%Y-%m-%d) week_num=$(date -d "$week_start" +%U) echo "Analyzing week $week_num ($week_start to $week_end)..." giv summary --since="$week_start" --until="$week_end" \ --prompt-file .giv/templates/weekly-metrics.md \ --output-file "$REPORT_DIR/week-$week_num-summary.md" done # Team productivity analysis team_members=($(git log --since="$START_DATE" --pretty=format:"%an" | sort -u)) echo "👥 Analyzing team member contributions..." for member in "${team_members[@]}"; do safe_name=$(echo "$member" | tr ' ' '-' | tr '[:upper:]' '[:lower:]') giv summary --since="$START_DATE" --author="$member" \ --prompt-file .giv/templates/individual-metrics.md \ --output-file "$REPORT_DIR/contributor-$safe_name.md" done # Technology area analysis tech_areas=("frontend:src/frontend/" "backend:src/api/" "database:migrations/" "tests:tests/") echo "🔧 Analyzing technology area changes..." for area_spec in "${tech_areas[@]}"; do area_name=$(echo "$area_spec" | cut -d: -f1) area_path=$(echo "$area_spec" | cut -d: -f2) giv changelog --since="$START_DATE" -- "$area_path" \ --prompt-file .giv/templates/tech-area-analysis.md \ --output-file "$REPORT_DIR/$area_name-changes.md" done # Generate master report echo "📋 Compiling master metrics report..." giv document --prompt-file .giv/templates/master-metrics.md \ --since="$START_DATE" \ --output-file "$REPORT_DIR/DEVELOPMENT_METRICS.md" # Create team dashboard data cat > "$REPORT_DIR/metrics-summary.json" << EOF { "report_period": { "start": "$START_DATE", "end": "$(date +%Y-%m-%d)", "weeks_analyzed": $WEEKS_BACK }, "team_size": ${#team_members[@]}, "technology_areas": $(echo "${tech_areas[@]}" | wc -w), "generated_reports": $(find "$REPORT_DIR" -name "*.md" | wc -l), "generation_date": "$(date -Iseconds)" } EOF echo "✅ Development metrics report generated in $REPORT_DIR/" echo "📈 View DEVELOPMENT_METRICS.md for comprehensive insights"

Specialized Workflow Patterns

Advanced patterns for specific development scenarios and team structures

🏢

Enterprise Multi-Repository Workflow

Advanced

Cross-Repository Documentation Sync

#!/bin/bash # sync-enterprise-docs.sh # Synchronize documentation across multiple repositories repositories=( "frontend-app:/workspace/frontend" "backend-api:/workspace/api" "mobile-app:/workspace/mobile" "shared-components:/workspace/components" ) ENTERPRISE_DOCS="/shared/enterprise-docs" mkdir -p "$ENTERPRISE_DOCS" echo "🏢 Synchronizing enterprise documentation..." for repo_spec in "${repositories[@]}"; do repo_name=$(echo "$repo_spec" | cut -d: -f1) repo_path=$(echo "$repo_spec" | cut -d: -f2) if [ -d "$repo_path" ]; then echo "📁 Processing $repo_name..." cd "$repo_path" # Generate recent changes summary giv summary HEAD~10..HEAD \ --prompt-file .giv/templates/enterprise-summary.md \ --output-file "$ENTERPRISE_DOCS/$repo_name-recent.md" # Generate API changes if applicable if [ -d "api/" ] || [ -d "src/api/" ]; then giv changelog HEAD~20..HEAD -- "*api*" \ --output-file "$ENTERPRISE_DOCS/$repo_name-api-changes.md" fi # Extract breaking changes giv document --prompt-file .giv/templates/breaking-changes.md \ HEAD~30..HEAD \ --output-file "$ENTERPRISE_DOCS/$repo_name-breaking-changes.md" fi done # Generate enterprise-wide summary cd "$ENTERPRISE_DOCS" giv document --prompt-file /shared/templates/enterprise-overview.md \ --output-file "ENTERPRISE_SUMMARY.md" echo "✅ Enterprise documentation sync complete"

Compliance and Audit Trail

# Generate audit-ready documentation AUDIT_PERIOD_START="2024-01-01" AUDIT_PERIOD_END="2024-12-31" echo "📋 Generating compliance documentation..." # Security-related changes giv changelog --since="$AUDIT_PERIOD_START" --until="$AUDIT_PERIOD_END" \ -- "*security*" "*auth*" "*permission*" \ --prompt-file .giv/templates/security-audit.md \ --output-file "SECURITY_AUDIT_$AUDIT_PERIOD_START.md" # Data handling changes giv changelog --since="$AUDIT_PERIOD_START" --until="$AUDIT_PERIOD_END" \ -- "*data*" "*database*" "*migration*" \ --prompt-file .giv/templates/data-audit.md \ --output-file "DATA_AUDIT_$AUDIT_PERIOD_START.md" # Dependency and vulnerability tracking giv summary --since="$AUDIT_PERIOD_START" --until="$AUDIT_PERIOD_END" \ -- "package*.json" "requirements*.txt" "Cargo.toml" \ --prompt-file .giv/templates/dependency-audit.md \ --output-file "DEPENDENCY_AUDIT_$AUDIT_PERIOD_START.md"
🌊

GitOps and Deployment Automation

Advanced

Deployment Documentation Pipeline

# deployment-docs.sh # Automated deployment documentation for GitOps ENVIRONMENT="$1" # staging, production, etc. DEPLOY_TAG="$2" # git tag for deployment if [ -z "$ENVIRONMENT" ] || [ -z "$DEPLOY_TAG" ]; then echo "Usage: $0 " exit 1 fi echo "📦 Generating deployment documentation for $ENVIRONMENT ($DEPLOY_TAG)..." # Get previous deployment tag PREVIOUS_TAG=$(git describe --tags --abbrev=0 $DEPLOY_TAG^) # Generate deployment notes giv release-notes $PREVIOUS_TAG..$DEPLOY_TAG \ --output-version "$DEPLOY_TAG" \ --prompt-file .giv/templates/deployment-notes.md \ --output-file "deployments/$ENVIRONMENT/$DEPLOY_TAG-deployment.md" # Generate rollback documentation giv document --prompt-file .giv/templates/rollback-guide.md \ $PREVIOUS_TAG..$DEPLOY_TAG \ --output-file "deployments/$ENVIRONMENT/$DEPLOY_TAG-rollback.md" # Database migration documentation if git diff $PREVIOUS_TAG..$DEPLOY_TAG --name-only | grep -q "migrations/"; then giv changelog $PREVIOUS_TAG..$DEPLOY_TAG -- "migrations/" \ --prompt-file .giv/templates/migration-notes.md \ --output-file "deployments/$ENVIRONMENT/$DEPLOY_TAG-migrations.md" fi # Configuration changes if git diff $PREVIOUS_TAG..$DEPLOY_TAG --name-only | grep -qE "\.(env|config|yaml|json)$"; then giv summary $PREVIOUS_TAG..$DEPLOY_TAG -- "*.env*" "*.config*" "*.yaml" "*.json" \ --prompt-file .giv/templates/config-changes.md \ --output-file "deployments/$ENVIRONMENT/$DEPLOY_TAG-config.md" fi echo "✅ Deployment documentation generated for $ENVIRONMENT"

Infrastructure as Code Documentation

# infrastructure-docs.sh # Document infrastructure changes with giv echo "🏗️ Generating infrastructure documentation..." # Terraform changes if [ -d "terraform/" ]; then giv changelog HEAD~20..HEAD -- "terraform/" \ --prompt-file .giv/templates/terraform-changes.md \ --output-file "docs/INFRASTRUCTURE_CHANGES.md" fi # Kubernetes manifests if [ -d "k8s/" ] || [ -d "kubernetes/" ]; then giv summary HEAD~10..HEAD -- "*k8s*" "*kubernetes*" \ --prompt-file .giv/templates/k8s-changes.md \ --output-file "docs/KUBERNETES_CHANGES.md" fi # Docker changes if git diff HEAD~10..HEAD --name-only | grep -q "Dockerfile"; then giv changelog HEAD~10..HEAD -- "Dockerfile*" "docker-compose*" \ --prompt-file .giv/templates/docker-changes.md \ --output-file "docs/CONTAINER_CHANGES.md" fi # CI/CD pipeline changes giv summary HEAD~15..HEAD -- ".github/" ".gitlab-ci.yml" "Jenkinsfile" \ --prompt-file .giv/templates/cicd-changes.md \ --output-file "docs/PIPELINE_CHANGES.md"
🔬

Research and Academic Collaboration

Intermediate

Research Paper Version Control

# academic-docs.sh # Generate academic collaboration documentation echo "🔬 Generating research collaboration documentation..." # Paper revision history giv changelog HEAD~50..HEAD -- "paper/" "*.tex" "*.bib" \ --prompt-file .giv/templates/paper-revisions.md \ --output-file "docs/PAPER_REVISIONS.md" # Data analysis changes giv summary HEAD~20..HEAD -- "analysis/" "data/" "notebooks/" \ --prompt-file .giv/templates/analysis-changes.md \ --output-file "docs/ANALYSIS_CHANGES.md" # Methodology updates giv document --prompt-file .giv/templates/methodology-summary.md \ HEAD~30..HEAD -- "methodology/" "methods/" \ --output-file "docs/METHODOLOGY_UPDATES.md" # Collaboration summary for co-authors contributors=$(git log HEAD~20..HEAD --pretty=format:"%an" | sort -u) giv summary HEAD~20..HEAD \ --prompt-file .giv/templates/collaboration-summary.md \ --output-file "docs/COLLABORATION_SUMMARY.md" # Generate publication-ready changelog giv release-notes v1.0..HEAD \ --prompt-file .giv/templates/publication-notes.md \ --output-file "docs/PUBLICATION_CHANGELOG.md"

Experiment Tracking

# Track experimental changes and results EXPERIMENT_BRANCH="experiment/new-algorithm" # Document experiment setup giv document --prompt-file .giv/templates/experiment-setup.md \ main..$EXPERIMENT_BRANCH \ --output-file "experiments/$(date +%Y%m%d)-experiment-setup.md" # Results documentation if [ -d "results/" ]; then giv summary main..$EXPERIMENT_BRANCH -- "results/" \ --prompt-file .giv/templates/experiment-results.md \ --output-file "experiments/$(date +%Y%m%d)-results-summary.md" fi # Peer review preparation giv release-notes main..$EXPERIMENT_BRANCH \ --prompt-file .giv/templates/peer-review.md \ --output-file "experiments/$(date +%Y%m%d)-peer-review.md"

Custom Template Examples

Specialized prompt templates for different use cases and team requirements

🛡️ Security Review Template

# .giv/templates/security-review.md You are a senior security engineer reviewing code changes for potential security issues. ## Changes to Review: {DIFF} ## Instructions: Analyze the provided changes and create a security review that includes: 1. **Security Assessment** - Identify any potential security vulnerabilities - Review authentication and authorization changes - Check for input validation and sanitization - Assess data handling and storage security 2. **Risk Analysis** - Categorize risks as High, Medium, or Low - Explain potential impact of identified issues - Suggest mitigation strategies 3. **Compliance Check** - Verify adherence to security standards (OWASP, etc.) - Check for compliance with data protection regulations - Review logging and monitoring capabilities 4. **Recommendations** - Security improvements to implement - Testing recommendations - Documentation requirements Format as a professional security review document with clear action items.

📊 Performance Impact Template

# .giv/templates/performance-analysis.md You are a performance engineer analyzing code changes for performance impact. ## Code Changes: {DIFF} ## Performance Analysis Required: 1. **Performance Impact Assessment** - Identify changes that may affect performance - Analyze algorithm complexity changes - Review database query modifications - Check for potential memory leaks or inefficiencies 2. **Benchmark Recommendations** - Suggest specific performance tests to run - Identify metrics to monitor - Recommend load testing scenarios 3. **Optimization Opportunities** - Suggest performance improvements - Identify caching opportunities - Recommend architectural optimizations 4. **Monitoring and Alerting** - Suggest metrics to track - Recommend alert thresholds - Identify potential bottlenecks Provide actionable recommendations with priority levels.

📚 API Documentation Template

# .giv/templates/api-documentation.md You are a technical writer creating API documentation from code changes. ## API Changes: {DIFF} ## Documentation Requirements: 1. **Endpoint Changes** - New endpoints added - Modified endpoints - Deprecated or removed endpoints - Changed URL patterns or parameters 2. **Request/Response Format Changes** - New request parameters - Modified response schemas - Changed HTTP methods - Updated content types 3. **Authentication and Authorization** - New authentication requirements - Permission changes - Security considerations 4. **Examples and Usage** - Provide example requests - Show expected responses - Include error scenarios - Add code samples in multiple languages 5. **Migration Guide** - Breaking changes summary - Migration steps for existing clients - Backward compatibility notes - Deprecation timeline Create comprehensive API documentation suitable for developer consumption.

Troubleshooting and Best Practices

Common issues, solutions, and optimization techniques for giv workflows

🔧 Configuration Management

# Team configuration setup script #!/bin/bash # setup-team-giv.sh - Standardize giv configuration across team echo "🛠️ Setting up team giv configuration..." # Create team configuration template cat > .giv/config << 'EOF' # Team Configuration for giv api.model=gpt-4 api.url=https://api.openai.com/v1/chat/completions project.title=${PROJECT_NAME} project.description=${PROJECT_DESCRIPTION} todo.pattern=TODO:|FIXME:|HACK:|NOTE:|REVIEW: version.file=package.json|pyproject.toml|Cargo.toml output.mode=auto EOF # Create team templates mkdir -p .giv/templates # Team commit message template cat > .giv/templates/commit_message_prompt.md << 'EOF' Generate a commit message following our team conventions: {DIFF} Requirements: - Use conventional commit format (type: description) - Include ticket number if present in branch name - Keep subject line under 72 characters - Add detailed body for complex changes - Mention breaking changes in footer EOF # Team changelog template cat > .giv/templates/changelog_prompt.md << 'EOF' Generate a changelog entry for version {VERSION}: {HISTORY} Format according to Keep a Changelog standard: ## [{VERSION}] - {DATE} ### Added - New features ### Changed - Enhancements to existing features ### Fixed - Bug fixes ### Security - Security improvements EOF echo "✅ Team giv configuration completed" echo "💡 Remind team members to set their API keys:" echo " export GIV_API_KEY='your-api-key'"

⚡ Performance Optimization

# optimize-giv-performance.sh # Optimize giv for large repositories and better performance echo "⚡ Optimizing giv performance..." # Configure for large repositories giv config set api.model.timeout 60 # Increase timeout for large diffs giv config set api.model.max_tokens 4096 # Optimize token usage # Create performance-optimized templates cat > .giv/templates/fast-commit.md << 'EOF' Generate a concise commit message (max 50 characters): {DIFF} Requirements: - Very brief, focused description - Use conventional commit type - No body or footer needed EOF # Batch processing for multiple commits cat > scripts/batch-giv.sh << 'EOF' #!/bin/bash # Process multiple commits efficiently COMMITS=$(git rev-list HEAD~10..HEAD) BATCH_SIZE=5 count=0 for commit in $COMMITS; do if [ $((count % BATCH_SIZE)) -eq 0 ]; then echo "Processing batch starting at commit: $commit" sleep 2 # Rate limiting fi # Process commit with optimized template git show $commit --format="" --name-only | \ giv document --prompt-file .giv/templates/fast-commit.md \ --output-file "logs/commit-$commit.md" ((count++)) done EOF chmod +x scripts/batch-giv.sh echo "✅ Performance optimizations applied"

🔍 Debugging and Validation

# debug-giv-issues.sh # Comprehensive debugging and validation script echo "🔍 Debugging giv configuration and setup..." # Check giv installation echo "📦 Checking giv installation..." if command -v giv >/dev/null 2>&1; then echo "✅ giv is installed: $(giv version)" else echo "❌ giv not found in PATH" exit 1 fi # Validate configuration echo "⚙️ Validating configuration..." giv config list > /tmp/giv-config.txt if grep -q "api.key" /tmp/giv-config.txt; then echo "✅ API key configured" else echo "⚠️ No API key found. Set with: giv config set api.key 'your-key'" fi if grep -q "api.model" /tmp/giv-config.txt; then echo "✅ Model configured: $(giv config get api.model)" else echo "⚠️ No model configured. Set with: giv config set api.model 'gpt-4'" fi # Test Git repository echo "📁 Checking Git repository..." if git rev-parse --git-dir > /dev/null 2>&1; then echo "✅ Valid Git repository" echo "📋 Recent commits: $(git rev-list --count HEAD~5..HEAD)" else echo "❌ Not in a Git repository" exit 1 fi # Test API connectivity echo "🌐 Testing API connectivity..." giv message --dry-run > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "✅ API connection successful" else echo "❌ API connection failed. Check:" echo " - API key validity" echo " - Network connectivity" echo " - API endpoint configuration" fi # Validate templates echo "📝 Checking templates..." if [ -d ".giv/templates" ]; then template_count=$(find .giv/templates -name "*.md" | wc -l) echo "✅ Found $template_count custom templates" else echo "💡 No custom templates found. Create with: giv init" fi # Performance test echo "⚡ Running performance test..." start_time=$(date +%s) giv summary HEAD~2..HEAD --dry-run > /dev/null 2>&1 end_time=$(date +%s) duration=$((end_time - start_time)) if [ $duration -lt 10 ]; then echo "✅ Performance test passed (${duration}s)" else echo "⚠️ Performance test slow (${duration}s) - consider optimization" fi echo "🏁 Debugging complete!"

Continue Learning

Explore more giv capabilities and related tools