From 0067804cc00e94ce2b7043e67f9ff50968525479 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Sun, 21 May 2023 11:14:47 +0000 Subject: v0.0.1-alpha funcs --- src/funcs/checkout_branch.rs | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/funcs/checkout_branch.rs (limited to 'src/funcs/checkout_branch.rs') diff --git a/src/funcs/checkout_branch.rs b/src/funcs/checkout_branch.rs new file mode 100644 index 0000000..df08ce8 --- /dev/null +++ b/src/funcs/checkout_branch.rs @@ -0,0 +1,47 @@ +use git2::{Branch, Repository}; + +pub fn checkout_branch( + git_repo: &Repository, + branch: Branch, +) { + // checkout branch + let (object, reference) = git_repo.revparse_ext( + branch.name() + .expect("valid name not to error") + .expect("valid name name to exist") + ) + .expect("object to be located from branch name"); + match git_repo.checkout_tree(&object, None) { + Ok(_) => (), + Err(err) => { + panic!("You cannot checkout branch because {}", err.message()); + } + } + // set head to branch + match reference { + Some(gref) => git_repo.set_head(gref.name().unwrap()), + None => git_repo.set_head_detached(object.id()), + } + .expect("succesfully set head"); +} + +pub fn checkout_branch_from_name( + git_repo: &Repository, + branch_name: &String, +) { + // checkout branch + let (object, reference) = git_repo.revparse_ext(branch_name) + .expect("object to be located from branch name"); + match git_repo.checkout_tree(&object, None) { + Ok(_) => (), + Err(err) => { + panic!("You cannot checkout branch because {}", err.message()); + } + } + // set head to branch + match reference { + Some(gref) => git_repo.set_head(gref.name().unwrap()), + None => git_repo.set_head_detached(object.id()), + } + .expect("succesfully set head"); +} \ No newline at end of file -- cgit v1.2.3