Skip to main content

Crate gitstack

Crate gitstack 

Source
Expand description

§gitstack

Git history viewer & analysis tool. Intuitively explore Git repositories via TUI.

§Key Features

  • Commit history browsing: Graph-annotated commit log, branch topology analysis
  • Code analysis: File heatmap, code ownership, Change Coupling
  • Quality metrics: Impact score, quality score, technical debt analysis
  • AI integration: Context pack generation, review pack, MCP integration
  • i18n support: Full Japanese/English internationalization (300+ translation keys)

§Usage

# Launch TUI inside a Git repository
gitstack

# CLI analysis mode
gitstack stats --json
gitstack heatmap --csv
gitstack health

§Crate Structure

  • app - Application state management (App struct)
  • git - Git operations wrapper (git2-based)
  • stats - Statistics & analysis engine
  • tui - Terminal UI rendering (ratatui-based)
  • i18n - Internationalization macros & translation definitions
  • navigation - List navigation (ListNavigation struct)

Re-exports§

pub use app::App;
pub use app::CommitType;
pub use app::InputMode;
pub use app::QuickAction;
pub use app::SidebarPanel;
pub use cache::clear_analysis_cache;
pub use cache::load_or_compute;
pub use cache::load_or_compute_with_repo;
pub use cli::parse_cli_args;
pub use cli::parse_tui_options;
pub use cli::run_cli_mode;
pub use cli::CliCommand;
pub use cli::TuiFocusTarget;
pub use cli::TuiOptions;
pub use compare::BranchCompare;
pub use compare::CompareCommit;
pub use compare::CompareTab;
pub use config::FilterPreset;
pub use config::FilterPresets;
pub use config::LanguageConfig;
pub use config::PRESET_SLOT_COUNT;
pub use event::GitEvent;
pub use event::GitEventKind;
pub use export::bus_factor_to_json;
pub use export::coupling_to_json;
pub use export::export_coupling_csv;
pub use export::export_coupling_json;
pub use export::export_heatmap_csv;
pub use export::export_heatmap_json;
pub use export::export_impact_csv;
pub use export::export_impact_json;
pub use export::export_ownership_csv;
pub use export::export_ownership_json;
pub use export::export_quality_csv;
pub use export::export_quality_json;
pub use export::export_stats_csv;
pub use export::export_stats_json;
pub use export::export_timeline_csv;
pub use export::export_timeline_json;
pub use export::health_to_json;
pub use export::health_to_markdown;
pub use export::heatmap_to_json;
pub use export::impact_to_json;
pub use export::log_to_json;
pub use export::ownership_to_json;
pub use export::quality_to_json;
pub use export::stats_to_json;
pub use export::tech_debt_to_json;
pub use export::timeline_to_json;
pub use filter::FilterQuery;
pub use git::checkout_branch;
pub use git::checkout_branch_in_repo;
pub use git::compare_branches;
pub use git::compare_branches_from_repo;
pub use git::create_branch;
pub use git::create_branch_in_repo;
pub use git::create_commit;
pub use git::create_commit_in_repo;
pub use git::delete_branch;
pub use git::delete_branch_in_repo;
pub use git::fetch_remote_at_path;
pub use git::get_blame;
pub use git::get_blame_from_repo;
pub use git::get_commit_diff;
pub use git::get_commit_diff_from_repo;
pub use git::get_commit_files;
pub use git::get_commit_files_from_repo;
pub use git::get_file_history;
pub use git::get_file_history_from_repo;
pub use git::get_file_patch;
pub use git::get_file_patch_from_repo;
pub use git::get_head_hash;
pub use git::get_head_hash_cached;
pub use git::get_head_hash_from_repo;
pub use git::get_index_mtime;
pub use git::get_index_mtime_cached;
pub use git::get_index_mtime_from_repo;
pub use git::get_repo_info_cached;
pub use git::get_stash_list;
pub use git::get_status;
pub use git::get_status_cached;
pub use git::get_status_from_repo;
pub use git::get_working_file_diff;
pub use git::get_working_file_diff_from_repo;
pub use git::has_staged_files;
pub use git::has_staged_files_in_repo;
pub use git::list_branches;
pub use git::list_branches_cached;
pub use git::list_branches_from_repo;
pub use git::load_events;
pub use git::load_events_fast;
pub use git::load_events_from_repo;
pub use git::pull;
pub use git::pull_in_repo;
pub use git::push;
pub use git::push_in_repo;
pub use git::stage_all;
pub use git::stage_all_in_repo;
pub use git::stage_file;
pub use git::stage_file_in_repo;
pub use git::stash_apply;
pub use git::stash_drop;
pub use git::stash_pop;
pub use git::stash_save;
pub use git::unstage_all;
pub use git::unstage_all_in_repo;
pub use git::unstage_file;
pub use git::unstage_file_in_repo;
pub use git::BlameLine;
pub use git::BranchInfo;
pub use git::CommitDiff;
pub use git::DiffLine;
pub use git::DiffStats;
pub use git::FileChange;
pub use git::FileChangeStatus;
pub use git::FileHistoryEntry;
pub use git::FilePatch;
pub use git::FileStatus;
pub use git::FileStatusKind;
pub use git::RepoInfo;
pub use git::StashEntry;
pub use graph::build_graph;
pub use graph::get_graph_color;
pub use graph::GraphCell;
pub use graph::GraphLayout;
pub use graph::GraphRow;
pub use i18n::Language;
pub use index::load_review_pack as load_cached_review_pack;
pub use index::save_review_pack as save_cached_review_pack;
pub use insights::actions_to_markdown;
pub use insights::build_context_pack;
pub use insights::build_context_summary;
pub use insights::build_handoff_context;
pub use insights::build_next_actions;
pub use insights::build_review_pack;
pub use insights::compute_signals_for_event;
pub use insights::explain_recommendation;
pub use insights::handoff_to_markdown;
pub use insights::pack_to_markdown;
pub use insights::review_pack_to_markdown;
pub use insights::summary_to_markdown;
pub use insights::verify_patch_risk;
pub use insights::ActionRecommendation;
pub use insights::ContextPack;
pub use insights::ContextSummary;
pub use insights::HandoffContext;
pub use insights::ReviewOwnerCandidate;
pub use insights::ReviewPack;
pub use insights::ReviewRisk;
pub use insights::SignalContext;
pub use insights::SignalSet;
pub use insights::MIN_COMMITS_FOR_COUPLING;
pub use insights::MIN_COUPLING_RATIO;
pub use intent::classify_intent;
pub use intent::ChangeIntent;
pub use metrics::load_metrics;
pub use metrics::quick_action_usage_enabled;
pub use metrics::record_quick_action_usage;
pub use metrics::reset_metrics;
pub use metrics::ActionUsageEntry;
pub use metrics::MetricsData;
pub use navigation::ListNavigation;
pub use pr::check_gh_available;
pub use pr::create_pr;
pub use pr::PrCreateState;
pub use related_files::RelatedFiles;
pub use relevance::calculate_relevance;
pub use relevance::RelevanceScore;
pub use review_queue::ReviewItem;
pub use review_queue::ReviewQueue;
pub use review_queue::ReviewStatus;
pub use risk::calculate_staged_risk;
pub use risk::RiskLevel;
pub use session::detect_sessions;
pub use session::AiSession;
pub use session::SessionStats;
pub use split::suggest_splits;
pub use split::SplitGroup;
pub use split::SplitSuggestion;
pub use staging::suggest_groups;
pub use staging::StagingGroup;
pub use stats::calculate_activity_timeline;
pub use stats::calculate_bus_factor;
pub use stats::calculate_change_coupling;
pub use stats::calculate_file_heatmap;
pub use stats::calculate_impact_scores;
pub use stats::calculate_ownership;
pub use stats::calculate_project_health;
pub use stats::calculate_quality_scores;
pub use stats::calculate_stats;
pub use stats::calculate_tech_debt;
pub use stats::is_test_file;
pub use stats::ActivityTimeline;
pub use stats::AggregationLevel;
pub use stats::AlertSeverity;
pub use stats::AuthorStats;
pub use stats::BusFactorAnalysis;
pub use stats::BusFactorEntry;
pub use stats::BusFactorRisk;
pub use stats::ChangeCouplingAnalysis;
pub use stats::CodeOwnership;
pub use stats::CodeOwnershipEntry;
pub use stats::CommitImpactAnalysis;
pub use stats::CommitImpactScore;
pub use stats::CommitQualityAnalysis;
pub use stats::CommitQualityScore;
pub use stats::ConfidenceLevel;
pub use stats::ContributorInfo;
pub use stats::FileCoupling;
pub use stats::FileHeatmap;
pub use stats::FileHeatmapEntry;
pub use stats::HealthAlert;
pub use stats::HealthAlertKind;
pub use stats::HealthConfidence;
pub use stats::HealthScoreComponent;
pub use stats::ProjectHealth;
pub use stats::RepoStats;
pub use stats::TechDebtAnalysis;
pub use stats::TechDebtEntry;
pub use stats::TechDebtLevel;
pub use suggestion::generate_suggestions;
pub use suggestion::CommitSuggestion;
pub use topology::analyze_branch_recommendations;
pub use topology::analyze_topology;
pub use topology::analyze_topology_from_repo;
pub use topology::BranchHealth;
pub use topology::BranchRecommendation;
pub use topology::BranchRecommendations;
pub use topology::BranchRelation;
pub use topology::BranchStatus;
pub use topology::BranchTopology;
pub use topology::HealthWarning;
pub use topology::RecommendedAction;
pub use topology::TopologyBranch;
pub use topology::TopologyConfig;

Modules§

app
Application state management (App struct)
cache
cli
CLI mode (non-interactive mode) module
compare
Branch comparison feature
config
Configuration management
event
export
Export functionality module
filter
Smart filter module
git
graph
Graph display module
i18n
Internationalization (i18n) module
index
insights
intent
Change intent classification
metrics
navigation
pr
One-key PR creation workflow
related_files
Related file analysis
relevance
Related commit prioritization
review_queue
Review feedback loop queue
risk
Staged risk scoring
session
AI Session detection and visualization
split
PR split suggestions
staging
Smart staging
stats
Statistics module
suggestion
Commit suggestion engine
topology
Branch topology view module
tui