gitflow-analytics 3.4.7__tar.gz → 3.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/PKG-INFO +1 -1
- gitflow_analytics-3.6.0/docs/guides/managing-aliases.md +425 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/_version.py +1 -1
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/cli.py +477 -2
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/cli_wizards/install_wizard.py +268 -22
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/cli_wizards/run_launcher.py +98 -8
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/__init__.py +3 -0
- gitflow_analytics-3.6.0/src/gitflow_analytics/config/aliases.py +306 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/loader.py +35 -1
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/schema.py +1 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics.egg-info/PKG-INFO +1 -1
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics.egg-info/SOURCES.txt +2 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/CHANGELOG.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/CLAUDE.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/LICENSE +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/MANIFEST.in +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/REFACTOR.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/SECURITY.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/STRUCTURE.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/_archive/temp-files/PROGRESS_TRACKING_FIXES.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/_archive/temp-files/SYNTAX_ERROR_FIX.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/architecture/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/architecture/branch-analysis-optimization.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/architecture/caching-strategy.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/architecture/llm-classifier-refactoring.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/architecture/ml-pipeline.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/configuration/configuration.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/deployment/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/design/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/design/circuit-breaker-implementation.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/design/commit-classification-design.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/design/git_pm_correlation_design.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/design/platform-agnostic-pm-framework.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/design/qualitative_data_extraction.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/developer/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/developer/contributing.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/developer/development-setup.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/developer/training-guide.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/examples/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/getting-started/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/getting-started/first-analysis.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/getting-started/installation.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/getting-started/quickstart.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/guides/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/guides/chatgpt-setup.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/guides/identity-resolution-enhanced.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/guides/interactive-launcher.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/guides/ml-categorization.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/guides/troubleshooting.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/quick-reference/launcher-and-identity.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/reference/README.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/reference/cache-system.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/reference/cli-commands.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/reference/configuration-schema.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/docs/reference/json-export-schema.md +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/pyproject.toml +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/setup.cfg +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/classification/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/classification/batch_classifier.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/classification/classifier.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/classification/feature_extractor.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/classification/linguist_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/classification/model.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/cli_wizards/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/errors.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/profiles.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/repository.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config/validator.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/config.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/constants.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/branch_mapper.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/cache.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/data_fetcher.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/git_auth.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/git_timeout_wrapper.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/identity.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/metrics_storage.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/progress.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/schema_version.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/core/subprocess_git.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/extractors/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/extractors/base.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/extractors/ml_tickets.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/extractors/story_points.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/extractors/tickets.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/identity_llm/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/identity_llm/analysis_pass.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/identity_llm/analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/identity_llm/models.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/integrations/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/integrations/github_integration.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/integrations/jira_integration.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/integrations/orchestrator.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/metrics/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/metrics/activity_scoring.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/metrics/branch_health.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/metrics/dora.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/models/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/models/database.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/adapters/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/adapters/jira_adapter.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/base.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/models.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/orchestrator.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/pm_framework/registry.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/chatgpt_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/change_type.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/domain_classifier.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/intent_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/base.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/batch_processor.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/cache.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/cost_tracker.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/openai_client.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/prompts.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm/response_parser.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/llm_commit_classifier.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/classifiers/risk_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/core/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/core/llm_fallback.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/core/nlp_engine.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/core/pattern_cache.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/core/processor.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/enhanced_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/example_enhanced_usage.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/models/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/models/schemas.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/utils/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/utils/batch_processor.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/utils/cost_tracker.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/utils/metrics.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/qualitative/utils/text_processing.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/analytics_writer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/base.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/branch_health_writer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/classification_writer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/cli_integration.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/csv_writer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/data_models.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/database_report_generator.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/example_usage.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/factory.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/formatters.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/html_generator.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/interfaces.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/json_exporter.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/narrative_writer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/story_point_correlation.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/reports/weekly_trends_writer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/config.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/extractors/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/extractors/dependency_checker.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/extractors/secret_detector.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/extractors/vulnerability_scanner.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/llm_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/security/security_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/training/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/training/model_loader.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/training/pipeline.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/app.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/progress_adapter.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/screens/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/screens/analysis_progress_screen.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/screens/configuration_screen.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/screens/loading_screen.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/screens/main_screen.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/screens/results_screen.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/widgets/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/widgets/data_table.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/widgets/export_modal.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/tui/widgets/progress_widget.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/ui/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/ui/progress_display.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics/verify_activity.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics.egg-info/dependency_links.txt +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics.egg-info/entry_points.txt +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics.egg-info/requires.txt +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/src/gitflow_analytics.egg-info/top_level.txt +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/conftest.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/core/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/core/test_analyzer.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/core/test_cache.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/core/test_data_fetcher.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/core/test_identity.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/core/test_progress.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/extractors/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/integrations/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/metrics/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/models/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/qualitative/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/qualitative/test_basic_integration.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/reports/__init__.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_atomic_caching.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_classification_system.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_cli.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_config.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_config_extends.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_config_profiles.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_config_story_points.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_jira_connection.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_llm_commit_classification.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_march_2025_comparison.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_metrics.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_ml_accuracy.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_ml_components.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_ml_comprehensive.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_ml_integration.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_pm_env_resolution.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_report_abstraction.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_reports.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_story_points_analysis.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_training_pipeline.py +0 -0
- {gitflow_analytics-3.4.7 → gitflow_analytics-3.6.0}/tests/test_two_step_process.py +0 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# Managing Developer Aliases
|
|
2
|
+
|
|
3
|
+
This guide explains how to manage developer identity aliases in GitFlow Analytics, including creating, sharing, and maintaining alias configurations across multiple projects.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Developer aliases allow you to consolidate multiple email addresses and identities for the same developer into a single unified identity. This is particularly useful when:
|
|
8
|
+
|
|
9
|
+
- Developers use different email addresses across projects (personal, work, no-reply addresses)
|
|
10
|
+
- GitHub automatically generates no-reply email addresses for commits
|
|
11
|
+
- Team members change email addresses over time
|
|
12
|
+
- You want consistent identity resolution across multiple analysis configurations
|
|
13
|
+
|
|
14
|
+
## Shared Aliases File
|
|
15
|
+
|
|
16
|
+
GitFlow Analytics supports a shared `aliases.yaml` file that can be referenced by multiple configuration files. This approach:
|
|
17
|
+
|
|
18
|
+
- **Centralizes identity mappings** - Maintain one source of truth for all projects
|
|
19
|
+
- **Reduces duplication** - No need to repeat alias configurations in every config file
|
|
20
|
+
- **Simplifies updates** - Change an alias once, apply everywhere
|
|
21
|
+
- **Supports team collaboration** - Share alias files across team members
|
|
22
|
+
|
|
23
|
+
## Aliases File Format
|
|
24
|
+
|
|
25
|
+
Create an `aliases.yaml` file with the following structure:
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
# Developer Identity Aliases
|
|
29
|
+
# Generated by GitFlow Analytics
|
|
30
|
+
# Share this file across multiple config files
|
|
31
|
+
# Each alias maps multiple email addresses to a single developer
|
|
32
|
+
|
|
33
|
+
developer_aliases:
|
|
34
|
+
# Manual alias - high confidence
|
|
35
|
+
- name: "John Smith"
|
|
36
|
+
primary_email: "john.smith@company.com"
|
|
37
|
+
aliases:
|
|
38
|
+
- "jsmith@gmail.com"
|
|
39
|
+
- "150280367+jsmith@users.noreply.github.com"
|
|
40
|
+
- "john.smith@oldcompany.com"
|
|
41
|
+
|
|
42
|
+
# LLM-generated alias - includes confidence and reasoning
|
|
43
|
+
- name: "Jane Doe"
|
|
44
|
+
primary_email: "jane.doe@company.com"
|
|
45
|
+
aliases:
|
|
46
|
+
- "jane@personal.com"
|
|
47
|
+
- "jdoe@company.com"
|
|
48
|
+
confidence: 0.95
|
|
49
|
+
reasoning: "Same name pattern and commit style across all addresses"
|
|
50
|
+
|
|
51
|
+
# Backward compatibility - canonical_email also supported
|
|
52
|
+
- canonical_email: "bob@company.com"
|
|
53
|
+
aliases:
|
|
54
|
+
- "robert@gmail.com"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Field Descriptions
|
|
58
|
+
|
|
59
|
+
- **name** (optional): Display name for the developer in reports
|
|
60
|
+
- **primary_email** (required): Primary email address for this developer
|
|
61
|
+
- **canonical_email**: Deprecated, use `primary_email` instead (still supported for backward compatibility)
|
|
62
|
+
- **aliases** (required): List of alternate email addresses for the same developer
|
|
63
|
+
- **confidence** (optional): Confidence score for LLM-generated aliases (0.0-1.0, default: 1.0)
|
|
64
|
+
- **reasoning** (optional): Explanation for why emails were grouped together (for LLM-generated aliases)
|
|
65
|
+
|
|
66
|
+
## Using Aliases in Configuration
|
|
67
|
+
|
|
68
|
+
### Method 1: Reference External Aliases File
|
|
69
|
+
|
|
70
|
+
Reference a shared aliases file in your config:
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
# config.yaml
|
|
74
|
+
analysis:
|
|
75
|
+
identity:
|
|
76
|
+
aliases_file: ../shared/aliases.yaml # Relative to config file
|
|
77
|
+
similarity_threshold: 0.85
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
or with absolute path:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
analysis:
|
|
84
|
+
identity:
|
|
85
|
+
aliases_file: /Users/team/shared-configs/aliases.yaml
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Method 2: Inline Manual Mappings
|
|
89
|
+
|
|
90
|
+
For project-specific aliases, use inline mappings:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
analysis:
|
|
94
|
+
identity:
|
|
95
|
+
manual_mappings:
|
|
96
|
+
- name: "John Smith"
|
|
97
|
+
primary_email: "john.smith@company.com"
|
|
98
|
+
aliases:
|
|
99
|
+
- "jsmith@gmail.com"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Method 3: Combine Both
|
|
103
|
+
|
|
104
|
+
Use both approaches for maximum flexibility:
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
analysis:
|
|
108
|
+
identity:
|
|
109
|
+
aliases_file: ../shared/team-aliases.yaml
|
|
110
|
+
manual_mappings:
|
|
111
|
+
# Project-specific aliases
|
|
112
|
+
- name: "Contract Developer"
|
|
113
|
+
primary_email: "contractor@external.com"
|
|
114
|
+
aliases:
|
|
115
|
+
- "temp-dev@project.com"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The system will merge aliases from both sources, with inline `manual_mappings` taking precedence in case of conflicts.
|
|
119
|
+
|
|
120
|
+
## Generating Aliases Automatically
|
|
121
|
+
|
|
122
|
+
GitFlow Analytics can analyze your commit history and automatically generate alias suggestions using LLM analysis.
|
|
123
|
+
|
|
124
|
+
### Basic Usage
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Analyze commits and generate aliases
|
|
128
|
+
gitflow-analytics aliases -c config.yaml
|
|
129
|
+
|
|
130
|
+
# Save to specific location
|
|
131
|
+
gitflow-analytics aliases -c config.yaml -o ~/shared/aliases.yaml
|
|
132
|
+
|
|
133
|
+
# Generate and apply automatically
|
|
134
|
+
gitflow-analytics aliases -c config.yaml --apply
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Confidence Threshold
|
|
138
|
+
|
|
139
|
+
Control the minimum confidence level for automatic alias generation:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Only include high-confidence matches (90%+)
|
|
143
|
+
gitflow-analytics aliases -c config.yaml --confidence-threshold 0.9
|
|
144
|
+
|
|
145
|
+
# Include all reasonable matches (70%+)
|
|
146
|
+
gitflow-analytics aliases -c config.yaml --confidence-threshold 0.7
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Review Process
|
|
150
|
+
|
|
151
|
+
The alias generation command will:
|
|
152
|
+
|
|
153
|
+
1. **Analyze commit history** - Examine email addresses, names, and commit patterns
|
|
154
|
+
2. **Generate suggestions** - Use LLM to identify likely matches with confidence scores
|
|
155
|
+
3. **Display results** - Show proposed aliases with reasoning
|
|
156
|
+
4. **Prompt for approval** - Ask before updating configuration (unless `--apply` is used)
|
|
157
|
+
|
|
158
|
+
Example output:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
🔍 Analyzing developer identities from config.yaml
|
|
162
|
+
📊 Confidence threshold: 90%
|
|
163
|
+
|
|
164
|
+
Found 3 potential aliases:
|
|
165
|
+
|
|
166
|
+
John Smith
|
|
167
|
+
Primary: john.smith@company.com
|
|
168
|
+
Aliases: jsmith@gmail.com, 150280367+jsmith@users.noreply.github.com
|
|
169
|
+
Confidence: 95%
|
|
170
|
+
Reasoning: Same name pattern and consistent commit style
|
|
171
|
+
|
|
172
|
+
Jane Doe
|
|
173
|
+
Primary: jane.doe@company.com
|
|
174
|
+
Aliases: jane@personal.com
|
|
175
|
+
Confidence: 92%
|
|
176
|
+
Reasoning: Name matches and overlapping commit timestamps
|
|
177
|
+
|
|
178
|
+
Apply these aliases? [y/N]:
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Multiple Configs Sharing Aliases
|
|
182
|
+
|
|
183
|
+
### Recommended Directory Structure
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
/project/
|
|
187
|
+
├── shared/
|
|
188
|
+
│ └── aliases.yaml # Shared aliases
|
|
189
|
+
├── team1/
|
|
190
|
+
│ └── config-team1.yaml # Team 1 config
|
|
191
|
+
├── team2/
|
|
192
|
+
│ └── config-team2.yaml # Team 2 config
|
|
193
|
+
└── combined/
|
|
194
|
+
└── config-all.yaml # Combined config
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Configuration Examples
|
|
198
|
+
|
|
199
|
+
**Team 1 Config:**
|
|
200
|
+
```yaml
|
|
201
|
+
# team1/config-team1.yaml
|
|
202
|
+
analysis:
|
|
203
|
+
identity:
|
|
204
|
+
aliases_file: ../shared/aliases.yaml
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Team 2 Config:**
|
|
208
|
+
```yaml
|
|
209
|
+
# team2/config-team2.yaml
|
|
210
|
+
analysis:
|
|
211
|
+
identity:
|
|
212
|
+
aliases_file: ../shared/aliases.yaml
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Combined Config:**
|
|
216
|
+
```yaml
|
|
217
|
+
# combined/config-all.yaml
|
|
218
|
+
analysis:
|
|
219
|
+
identity:
|
|
220
|
+
aliases_file: ../shared/aliases.yaml
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
All three configurations now share the same alias mappings, ensuring consistent identity resolution across all analyses.
|
|
224
|
+
|
|
225
|
+
## Programmatic Access
|
|
226
|
+
|
|
227
|
+
You can also work with aliases programmatically:
|
|
228
|
+
|
|
229
|
+
```python
|
|
230
|
+
from pathlib import Path
|
|
231
|
+
from gitflow_analytics.config import AliasesManager, DeveloperAlias
|
|
232
|
+
|
|
233
|
+
# Load existing aliases
|
|
234
|
+
manager = AliasesManager(Path("aliases.yaml"))
|
|
235
|
+
|
|
236
|
+
# Add a new alias
|
|
237
|
+
manager.add_alias(DeveloperAlias(
|
|
238
|
+
name="John Smith",
|
|
239
|
+
primary_email="john@company.com",
|
|
240
|
+
aliases=["jsmith@gmail.com", "john.smith@oldcompany.com"],
|
|
241
|
+
confidence=1.0
|
|
242
|
+
))
|
|
243
|
+
|
|
244
|
+
# Save changes
|
|
245
|
+
manager.save()
|
|
246
|
+
|
|
247
|
+
# Get statistics
|
|
248
|
+
stats = manager.get_statistics()
|
|
249
|
+
print(f"Total aliases: {stats['total_aliases']}")
|
|
250
|
+
print(f"Manual aliases: {stats['manual_aliases']}")
|
|
251
|
+
print(f"LLM-generated: {stats['llm_aliases']}")
|
|
252
|
+
print(f"Average confidence: {stats['avg_confidence']}")
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Best Practices
|
|
256
|
+
|
|
257
|
+
### 1. Start with High Confidence
|
|
258
|
+
|
|
259
|
+
When using LLM-generated aliases, start with a high confidence threshold (0.9+) and gradually lower it as needed:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
gitflow-analytics aliases -c config.yaml --confidence-threshold 0.95
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 2. Review Before Applying
|
|
266
|
+
|
|
267
|
+
Always review LLM-generated aliases before applying them:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Generate and review
|
|
271
|
+
gitflow-analytics aliases -c config.yaml
|
|
272
|
+
|
|
273
|
+
# Apply after review
|
|
274
|
+
gitflow-analytics aliases -c config.yaml --apply
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### 3. Use Shared Aliases for Teams
|
|
278
|
+
|
|
279
|
+
For team projects, maintain a shared `aliases.yaml` in version control:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
# Add to version control
|
|
283
|
+
git add shared/aliases.yaml
|
|
284
|
+
git commit -m "feat: add shared developer aliases"
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### 4. Document Custom Aliases
|
|
288
|
+
|
|
289
|
+
Add comments to explain non-obvious aliases:
|
|
290
|
+
|
|
291
|
+
```yaml
|
|
292
|
+
developer_aliases:
|
|
293
|
+
# John changed email when company was acquired
|
|
294
|
+
- name: "John Smith"
|
|
295
|
+
primary_email: "john.smith@newcompany.com"
|
|
296
|
+
aliases:
|
|
297
|
+
- "john.smith@oldcompany.com"
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 5. Update Aliases Regularly
|
|
301
|
+
|
|
302
|
+
Re-run alias generation periodically as new developers join:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Quarterly alias update
|
|
306
|
+
gitflow-analytics aliases -c config.yaml --confidence-threshold 0.9
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### 6. Combine with Manual Mappings
|
|
310
|
+
|
|
311
|
+
Use aliases file for common mappings, inline for project-specific:
|
|
312
|
+
|
|
313
|
+
```yaml
|
|
314
|
+
analysis:
|
|
315
|
+
identity:
|
|
316
|
+
# Shared team aliases
|
|
317
|
+
aliases_file: ../shared/team-aliases.yaml
|
|
318
|
+
|
|
319
|
+
# Project-specific exceptions
|
|
320
|
+
manual_mappings:
|
|
321
|
+
- name: "External Consultant"
|
|
322
|
+
primary_email: "consultant@external.com"
|
|
323
|
+
aliases:
|
|
324
|
+
- "temp-account@project.com"
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Troubleshooting
|
|
328
|
+
|
|
329
|
+
### Aliases Not Loading
|
|
330
|
+
|
|
331
|
+
If aliases aren't being applied:
|
|
332
|
+
|
|
333
|
+
1. **Check file path**: Ensure `aliases_file` path is correct relative to config file
|
|
334
|
+
2. **Verify file exists**: Confirm the aliases.yaml file exists at the specified path
|
|
335
|
+
3. **Check YAML syntax**: Validate YAML format (no tabs, proper indentation)
|
|
336
|
+
4. **Review logs**: Check for warnings about alias loading failures
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Test config loading
|
|
340
|
+
gitflow-analytics analyze -c config.yaml --validate-only
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Conflicting Aliases
|
|
344
|
+
|
|
345
|
+
If multiple aliases specify the same email:
|
|
346
|
+
|
|
347
|
+
- **Inline mappings take precedence** over aliases file
|
|
348
|
+
- **Later entries override earlier entries** in the same file
|
|
349
|
+
- **Use primary_email uniquely** - each developer should have one unique primary email
|
|
350
|
+
|
|
351
|
+
### LLM Generation Errors
|
|
352
|
+
|
|
353
|
+
If alias generation fails:
|
|
354
|
+
|
|
355
|
+
1. **Check API access**: Ensure you have a valid OpenRouter or OpenAI API key
|
|
356
|
+
2. **Verify network**: Confirm internet connectivity for LLM API calls
|
|
357
|
+
3. **Review commit history**: Ensure sufficient commit data exists for analysis
|
|
358
|
+
4. **Try lower confidence**: Lower the threshold if no matches are found
|
|
359
|
+
|
|
360
|
+
## Advanced Topics
|
|
361
|
+
|
|
362
|
+
### Custom Similarity Threshold
|
|
363
|
+
|
|
364
|
+
Adjust the identity matching threshold:
|
|
365
|
+
|
|
366
|
+
```yaml
|
|
367
|
+
analysis:
|
|
368
|
+
identity:
|
|
369
|
+
aliases_file: aliases.yaml
|
|
370
|
+
similarity_threshold: 0.90 # Higher = more strict matching
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Programmatic Alias Management
|
|
374
|
+
|
|
375
|
+
Build custom alias management tools:
|
|
376
|
+
|
|
377
|
+
```python
|
|
378
|
+
from gitflow_analytics.config import AliasesManager
|
|
379
|
+
|
|
380
|
+
# Load and merge multiple alias files
|
|
381
|
+
main_mgr = AliasesManager(Path("main-aliases.yaml"))
|
|
382
|
+
team_mgr = AliasesManager(Path("team-aliases.yaml"))
|
|
383
|
+
|
|
384
|
+
# Merge team aliases into main
|
|
385
|
+
main_mgr.merge_from_mappings(team_mgr.to_manual_mappings())
|
|
386
|
+
|
|
387
|
+
# Save consolidated aliases
|
|
388
|
+
main_mgr.save()
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Alias Statistics and Validation
|
|
392
|
+
|
|
393
|
+
Get insights about your aliases:
|
|
394
|
+
|
|
395
|
+
```python
|
|
396
|
+
manager = AliasesManager(Path("aliases.yaml"))
|
|
397
|
+
stats = manager.get_statistics()
|
|
398
|
+
|
|
399
|
+
print(f"Tracking {stats['total_email_addresses']} email addresses")
|
|
400
|
+
print(f"Consolidated into {stats['total_aliases']} developers")
|
|
401
|
+
print(f"Average confidence: {stats['avg_confidence']:.1%}")
|
|
402
|
+
|
|
403
|
+
# Find low-confidence aliases for review
|
|
404
|
+
low_confidence = [
|
|
405
|
+
a for a in manager.aliases
|
|
406
|
+
if a.confidence < 0.8
|
|
407
|
+
]
|
|
408
|
+
|
|
409
|
+
for alias in low_confidence:
|
|
410
|
+
print(f"Review: {alias.name} ({alias.confidence:.0%} confidence)")
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
## Related Documentation
|
|
414
|
+
|
|
415
|
+
- [Identity Resolution Guide](identity-resolution-enhanced.md) - Core identity resolution concepts
|
|
416
|
+
- [Configuration Guide](../reference/configuration.md) - Complete configuration reference
|
|
417
|
+
- [Interactive Launcher](interactive-launcher.md) - Using the interactive launcher
|
|
418
|
+
|
|
419
|
+
## Support
|
|
420
|
+
|
|
421
|
+
For issues or questions:
|
|
422
|
+
|
|
423
|
+
- Check [Troubleshooting Guide](troubleshooting.md)
|
|
424
|
+
- Review [GitHub Issues](https://github.com/EWTN-Global/gitflow-analytics/issues)
|
|
425
|
+
- Consult [Project Documentation](../README.md)
|