From 6e789ba2990b313aa3c8279696bae56698e58d62 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Sun, 12 Nov 2023 20:55:40 -0500 Subject: [PATCH] refactor(branch): remove remove_prefix Ref: https://github.com/arxanas/git-branchless/pull/1130#discussion_r1390357139 --- git-branchless-lib/src/core/check_out.rs | 4 ++-- git-branchless-lib/src/core/repo_ext.rs | 4 ++-- git-branchless-lib/src/core/rewrite/execute.rs | 2 +- git-branchless-lib/src/git/reference.rs | 12 ------------ git-branchless-record/src/lib.rs | 3 +-- git-branchless-submit/src/branch_forge.rs | 2 +- git-branchless-undo/src/lib.rs | 2 +- 7 files changed, 8 insertions(+), 21 deletions(-) diff --git a/git-branchless-lib/src/core/check_out.rs b/git-branchless-lib/src/core/check_out.rs index 437e7e3dc..546a09828 100644 --- a/git-branchless-lib/src/core/check_out.rs +++ b/git-branchless-lib/src/core/check_out.rs @@ -92,7 +92,7 @@ fn maybe_get_branch_name( Ok(branch_name) => { // To remove the `refs/heads/` prefix let name = CategorizedReferenceName::new(branch_name); - Ok(Some(name.remove_prefix()?)) + Ok(Some(name.render_suffix())) } Err(_) => Ok(current_target), }, @@ -124,7 +124,7 @@ pub fn check_out_commit( None => (None, None), Some(CheckoutTarget::Reference(reference_name)) => { let categorized_target = CategorizedReferenceName::new(&reference_name); - (Some(categorized_target.remove_prefix()?), None) + (Some(categorized_target.render_suffix()), None) } Some(CheckoutTarget::Oid(oid)) => (Some(oid.to_string()), Some(oid)), Some(CheckoutTarget::Unknown(target)) => (Some(target), None), diff --git a/git-branchless-lib/src/core/repo_ext.rs b/git-branchless-lib/src/core/repo_ext.rs index e99dbdea2..26e2b6019 100644 --- a/git-branchless-lib/src/core/repo_ext.rs +++ b/git-branchless-lib/src/core/repo_ext.rs @@ -130,7 +130,7 @@ https://github.com/arxanas/git-branchless/discussions/595 for more details.", match CategorizedReferenceName::new(&main_branch_name) { name @ CategorizedReferenceName::LocalBranch { .. } => { if let Some(main_branch) = - self.find_branch(&name.remove_prefix()?, BranchType::Local)? + self.find_branch(&name.render_suffix(), BranchType::Local)? { if let Some(remote_name) = main_branch.get_push_remote_name()? { return Ok(Some(remote_name)); @@ -139,7 +139,7 @@ https://github.com/arxanas/git-branchless/discussions/595 for more details.", } name @ CategorizedReferenceName::RemoteBranch { .. } => { - let name = name.remove_prefix()?; + let name = name.render_suffix(); if let Some((remote_name, _reference_name)) = name.split_once('/') { return Ok(Some(remote_name.to_owned())); } diff --git a/git-branchless-lib/src/core/rewrite/execute.rs b/git-branchless-lib/src/core/rewrite/execute.rs index 969384d60..46b861443 100644 --- a/git-branchless-lib/src/core/rewrite/execute.rs +++ b/git-branchless-lib/src/core/rewrite/execute.rs @@ -118,7 +118,7 @@ pub fn move_branches<'a>( warn!(?reference_name, "Not deleting non-local-branch reference"); } CategorizedReferenceName::LocalBranch { .. } => { - let branch_name = branch_name.remove_prefix()?; + let branch_name = branch_name.render_suffix(); match repo.find_branch(&branch_name, BranchType::Local) { Ok(Some(mut branch)) => { if let Err(err) = branch.delete() { diff --git a/git-branchless-lib/src/git/reference.rs b/git-branchless-lib/src/git/reference.rs index 60a882d39..4fe05d43c 100644 --- a/git-branchless-lib/src/git/reference.rs +++ b/git-branchless-lib/src/git/reference.rs @@ -183,18 +183,6 @@ impl<'a> CategorizedReferenceName<'a> { } } - /// Remove the prefix from the reference name. May raise an error if the - /// result couldn't be encoded as an `String` (shouldn't happen). - #[instrument] - pub fn remove_prefix(&self) -> Result { - let (name, prefix): (_, &'static str) = match self { - Self::LocalBranch { name, prefix } => (name, prefix), - Self::RemoteBranch { name, prefix } => (name, prefix), - Self::OtherRef { name } => (name, ""), - }; - Ok(name.strip_prefix(prefix).unwrap_or(name).to_owned()) - } - /// Render the full name of the reference, including its prefix, lossily as /// a `String`. pub fn render_full(&self) -> String { diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index d6d18ea52..166f6539b 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -188,8 +188,7 @@ fn record( ], )?), [parent_commit] => { - let branch_name = - CategorizedReferenceName::new(reference_name).remove_prefix()?; + let branch_name = CategorizedReferenceName::new(reference_name).render_suffix(); repo.detach_head(&head_info)?; try_exit_code!(git_run_info.run( effects, diff --git a/git-branchless-submit/src/branch_forge.rs b/git-branchless-submit/src/branch_forge.rs index 8519d24d6..4091136ec 100644 --- a/git-branchless-submit/src/branch_forge.rs +++ b/git-branchless-submit/src/branch_forge.rs @@ -57,7 +57,7 @@ impl Forge for BranchForge<'_> { let mut branch_infos = HashMap::new(); for branch_reference_name in branch_reference_names { let branch_name = match CategorizedReferenceName::new(&branch_reference_name) { - name @ CategorizedReferenceName::LocalBranch { .. } => name.remove_prefix()?, + name @ CategorizedReferenceName::LocalBranch { .. } => name.render_suffix(), CategorizedReferenceName::RemoteBranch { .. } | CategorizedReferenceName::OtherRef { .. } => continue, }; diff --git a/git-branchless-undo/src/lib.rs b/git-branchless-undo/src/lib.rs index e745d1541..86248be8d 100644 --- a/git-branchless-undo/src/lib.rs +++ b/git-branchless-undo/src/lib.rs @@ -754,7 +754,7 @@ fn extract_checkout_target( additional_args: match ref_name { Some(ref_name) => { let branch_name = CategorizedReferenceName::new(ref_name); - vec!["-B".into(), branch_name.remove_prefix()?.into()] + vec!["-B".into(), branch_name.render_suffix().into()] } None => Default::default(), },