cli: Allow force-push with single delegates

It's not currently possible to force-push rad/master if it's not a
rollback, even if you are the only delegate. Since there is no risk
in doing that, we allow it in this patch.
This commit is contained in:
cloudhead 2023-12-11 11:28:29 +01:00
parent 9aee9b2436
commit 8196027f35
No known key found for this signature in database
1 changed files with 6 additions and 2 deletions

View File

@ -226,11 +226,15 @@ pub fn run(
let (canonical_ref, canonical_oid) = &canonical; let (canonical_ref, canonical_oid) = &canonical;
// If we're trying to update the canonical head, make sure // If we're trying to update the canonical head, make sure
// we don't diverge from the current head. // we don't diverge from the current head. This only applies
// to repos with more than one delegate.
// //
// Note that we *do* allow rolling back to a previous commit on the // Note that we *do* allow rolling back to a previous commit on the
// canonical branch. // canonical branch.
if dst == *canonical_ref && delegates.contains(&Did::from(nid)) { if dst == *canonical_ref
&& delegates.contains(&Did::from(nid))
&& delegates.len() > 1
{
let head = working.find_reference(src.as_str())?; let head = working.find_reference(src.as_str())?;
let head = head.peel_to_commit()?.id(); let head = head.peel_to_commit()?.id();
// Rollback is allowed and head is an ancestor of the canonical head. // Rollback is allowed and head is an ancestor of the canonical head.