33b79898
Extract auto_detect_and_update helper to eliminate repeated pattern
a73x 2026-03-21 19:10
Addresses review feedback: the 3-line detect+push pattern was duplicated in comment(), review(), and merge(). Now callers use a single line. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
diff --git a/src/patch.rs b/src/patch.rs index 21d7e8b..0256319 100644 --- a/src/patch.rs +++ b/src/patch.rs @@ -57,6 +57,19 @@ fn auto_detect_revision( })) } /// Auto-detect revision changes and update the in-memory PatchState in place. fn auto_detect_and_update( repo: &Repository, ref_name: &str, patch: &mut PatchState, sk: &ed25519_dalek::SigningKey, ) -> Result<(), Error> { if let Some(rev) = auto_detect_revision(repo, ref_name, patch, sk)? { patch.revisions.push(rev); } Ok(()) } pub fn create( repo: &Repository, title: &str, @@ -214,13 +227,10 @@ pub fn comment( ) -> Result<(), crate::error::Error> { let sk = signing::load_signing_key(&signing::signing_key_dir()?)?; let (ref_name, id) = state::resolve_patch_ref(repo, id_prefix)?; let patch = PatchState::from_ref(repo, &ref_name, &id)?; let mut patch = PatchState::from_ref(repo, &ref_name, &id)?; // Auto-detect revision (runs for all comment types to record branch changes) let mut patch = patch; if let Some(rev) = auto_detect_revision(repo, &ref_name, &patch, &sk)? { patch.revisions.push(rev); } auto_detect_and_update(repo, &ref_name, &mut patch, &sk)?; let author = get_author(repo)?; @@ -281,13 +291,10 @@ pub fn review( ) -> Result<(), crate::error::Error> { let sk = signing::load_signing_key(&signing::signing_key_dir()?)?; let (ref_name, id) = state::resolve_patch_ref(repo, id_prefix)?; let patch = PatchState::from_ref(repo, &ref_name, &id)?; let mut patch = PatchState::from_ref(repo, &ref_name, &id)?; // Auto-detect revision let mut patch = patch; if let Some(rev) = auto_detect_revision(repo, &ref_name, &patch, &sk)? { patch.revisions.push(rev); } auto_detect_and_update(repo, &ref_name, &mut patch, &sk)?; let rev = if let Some(target) = target_revision { if !patch.revisions.iter().any(|r| r.number == target) { @@ -367,9 +374,7 @@ pub fn merge(repo: &Repository, id_prefix: &str) -> Result<PatchState, crate::er // Auto-detect revision before merge let mut p = p; if let Some(rev) = auto_detect_revision(repo, &ref_name, &p, &sk)? { p.revisions.push(rev); } auto_detect_and_update(repo, &ref_name, &mut p, &sk)?; // Check merge policy let config = read_collab_config(repo);