pub mod branch;
pub mod checkout;
pub mod cherry_pick;
pub mod create_commit;
pub mod init;
pub mod log;
pub mod merge;
pub mod revert;
pub mod tag_cmd;
pub mod verify_commit;
pub use init::*;
pub mod merge_branch;
pub use merge_branch::*;
pub mod blame;
pub mod diff;
pub mod log_graph;
pub mod stash;
pub use log_graph::*;
pub mod verify_tag;
pub use verify_tag::*;
pub mod describe;
pub use describe::*;
pub mod octopus_merge;
pub use octopus_merge::*;
pub mod rebase;
pub use rebase::*;
pub mod fsck;
pub use fsck::*;
pub mod show;
pub use blame::*;
pub use branch::*;
pub use checkout::*;
pub use cherry_pick::*;
pub use create_commit::*;
pub use diff::*;
pub use log::*;
pub use merge::*;
pub use revert::*;
pub use show::*;
pub use stash::*;
pub use tag_cmd::*;
pub use verify_commit::*;
use crate::error::VctrlError;
use crate::storage::traits::{ObjectStore, RefStore};
pub trait Command {
type Output;
fn execute(
&self,
store: &mut dyn ObjectStore,
refs: &mut dyn RefStore,
) -> Result<Self::Output, VctrlError>;
}