use anyhow::Result;
use std::path::{Path, PathBuf};
pub trait GitOperations {
fn get_repo_path(&self) -> PathBuf;
fn branch_exists(&self, branch_name: &str) -> Result<bool>;
fn create_worktree(
&self,
branch_name: &str,
worktree_path: &Path,
create_branch: bool,
) -> Result<()>;
fn create_worktree_from(
&self,
branch_name: &str,
worktree_path: &Path,
create_branch: bool,
from_ref: Option<&str>,
) -> Result<()>;
fn remove_worktree(&self, worktree_name: &str) -> Result<()>;
fn list_worktrees(&self) -> Result<Vec<String>>;
fn delete_branch(&self, branch_name: &str) -> Result<()>;
fn inherit_config(&self, worktree_path: &Path) -> Result<()>;
fn list_local_branches(&self) -> Result<Vec<String>>;
fn list_remote_branches(&self) -> Result<Vec<String>>;
fn list_tags(&self) -> Result<Vec<String>>;
}