//! Git repository management and operations.
//!
//! This module provides utilities for working with git repositories, including:
//!
//! - **Repository Management**: Clone, list, and find git repositories
//! - **URL Parsing**: Parse git URLs from various platforms (GitHub, GitLab, Gitea/Forgejo)
//! - **Git Operations**: Pull, push, commit, reset, and check repository status
//! - **Advanced Cloning**: Clone with branch selection, subpath extraction, and automatic reset
//!
//! # Key Types
//!
//! - [`GitTree`]: Manages a collection of git repositories under a base directory
//! - [`GitRepo`]: Represents a single git repository
//! - [`GitCloneBuilder`]: Builder for cloning repositories with advanced options
//! - [`ParsedGitUrl`]: Parsed git URL information including branch and subpath
//!
//! # Examples
//!
//! ```no_run
//! use herolib_os::git::GitTree;
//!
//! // Create a repository collection
//! let repos = GitTree::new("/tmp/repos")?;
//!
//! // Clone a repository with specific branch
//! let path = repos
//!     .clone_repo("https://github.com/user/repo")
//!     .branch("development")
//!     .execute()?;
//!
//! // Get path to a specific subdirectory
//! let docs_path = repos
//!     .get_path("https://github.com/user/repo/tree/main/docs")?;
//!
//! # Ok::<(), Box<dyn std::error::Error>>(())
//! ```

mod git;
mod git_executor;
pub mod rhai;

pub use git::*;
pub use git_executor::*;
