Files
Auto_Bangumi/docs/ja/dev/plugins/points/conflict-policy.md
Estrella Pan 3258fcca4b docs(4.0-P7): 插件开发文档拆分为总览加每个扩展点一页,补齐中英日三语
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/
- 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页
- 每个扩展点一页,侧边栏由页面表生成
- 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
2026-10-08 14:51:00 +02:00

1.7 KiB
Raw Permalink Blame History

バージョン競合ポリシー (conflict_policy)

新しいトレントの正規のファイル名を、別のトレントが既に使っている場合に、古いものを残すか置き換えるかを決めます。典型的な場面は、同じ話の v2 リリースです。@provider(points.CONFLICT_POLICY, id=...) は ConflictPolicy を返します。

from ab_sdk.rename import ConflictDecision, ConflictRequest

class ReplaceUpgradesOnly:
    def decide(self, request: ConflictRequest) -> ConflictDecision:
        if request.strict_upgrade:
            return ConflictDecision("replace")
        return ConflictDecision("hold", "同じリリースの上位バージョンではありません")
  • ConflictRequest:target_path、incoming(新しいトレント)、owners(その名前を使っているトレント)、strict_upgrade(唯一の使用者が新しいトレントと同じリリースで、新しいトレントのバージョン番号が上位)。
  • hold は古いファイルを残し、新しいトレントは待機します。reason はユーザーに表示されます。replace は古いタスクとそのファイルを削除します。
  • ホストが replace を実行するのは、「使用者が 1 つだけ、両方が単一ファイルのトレント、両方の解析結果が完全」の場合だけです。それ以外はすべて hold として扱います。
  • ホストは hold と replace を持っています。これが設定「バージョン競合ポリシー」の 2 つの選択肢です。plugins.slots.conflict_policy でポリシーを選びます(既定は hold)。選ばれた id が登録されていない場合は hold に戻ります。