mod client;
mod error;
mod merge;
mod rebase;
mod repo;
mod sleeper;
mod sync;
mod worktree;
#[cfg(any(test, feature = "test-utils"))]
pub use client::MockGitClient;
pub use client::{GitClient, GitFuture, RealGitClient};
pub use error::GitError;
pub use merge::SquashMergeOutcome;
pub(crate) use merge::{squash_merge, squash_merge_diff};
pub use rebase::{InProgressGitOperation, RebaseStepResult};
pub(crate) use rebase::{
abort_rebase, has_unmerged_paths, in_progress_operation, is_rebase_in_progress,
list_conflicted_files, list_staged_conflict_marker_files, rebase, rebase_continue,
rebase_onto_start, rebase_start,
};
pub(crate) use repo::{main_checkout_working_tree, main_repo_root, repo_url};
#[cfg(test)]
pub(crate) use sleeper::MockSleeper;
pub(crate) use sleeper::{Sleeper, ThreadSleeper};
pub use sync::{BranchTrackingMap, PullRebaseResult, SingleCommitMessageStrategy};
pub(crate) use sync::{
branch_tracking_statuses, check_pre_commit_hook_ready, commit_all,
commit_all_preserving_single_commit, current_upstream_reference, delete_branch, diff,
fetch_remote, get_ahead_behind, get_ref_ahead_behind, has_commits_since, head_commit_message,
head_hash, head_short_hash, is_worktree_clean, list_local_commit_titles,
list_upstream_commit_titles, pull_rebase, push_current_branch,
push_current_branch_to_remote_branch, ref_hash, remote_branch_exists, stage_all,
tracked_worktree_status, worktree_status,
};
pub(crate) use worktree::{create_worktree, detect_git_info, find_git_repo_root, remove_worktree};