radicle: fix divergence check

The `graph_descendant_of` method is strict in that it will return
false if the two `Oid`s are equal -- they are strictly not
descendants.

If the `head` is the same as the `canonical_oid`, no error should be
returned and the `push` can happen without any issues.

Add a check for `head != canonical_oid` before the
`graph_descendant_check`.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
Fintan Halpenny 2023-10-05 12:31:37 +01:00
parent cd4c44986a
commit 499738de71
No known key found for this signature in database
GPG Key ID: 582959CEFC92CB4E
1 changed files with 3 additions and 1 deletions

View File

@ -230,7 +230,9 @@ pub fn run(
let head = working.find_reference(src.as_str())?;
let head = head.peel_to_commit()?.id();
if !working.graph_descendant_of(head, **canonical_oid)? {
if head != **canonical_oid
&& !working.graph_descendant_of(head, **canonical_oid)?
{
eprintln!(
"hint: you are attempting to push a commit that would \
cause your upstream to diverge from the canonical head"