// SPDX-FileCopyrightText: 2025 Romain Maneschi // // SPDX-License-Identifier: EUPL-1.2 package repository import ( "github.com/go-git/go-git/v6/plumbing" "github.com/go-git/go-git/v6/plumbing/object" "github.com/samber/oops" ) func (repo *GitRootRepositoryWrite) IsForcePush(old plumbing.Hash, new plumbing.Hash) (bool, error) { unlock := repo.repo.manager.repoLocks.Read(repo.repo.name) defer unlock() commitOld, err := object.GetCommit(repo.storer, old) if err != nil { return false, oops.Wrapf(err, "commitOld") } commitNew, err := object.GetCommit(repo.storer, new) if err != nil { return false, oops.Wrapf(err, "commitNew") } ok, err := commitOld.IsAncestor(commitNew) if err != nil { return false, oops.Wrapf(err, "IsAncestor") } return !ok, err }