イシュータイプ(非推奨)
新しいリソースタイプが追加されたとき、それがイシュー(イシュータイプ)の “拡張 “であるべきなのか、それとも新しいファーストクラスのリソースタイプ(イシュー、エピック、マージリクエスト、スニペットと同様)であるべきなのか、はっきりしないことがあります。
イシュータイプのアイデアはこの問題で最初に提案され、その後、インシデント管理などで何度か使用方法が議論されました。
イシュー・タイプとは
イシュー・タイプは既存のイシュー・タイプを拡張したリソース・タイプで、イシューが使用される場所であればどこでも使用できます。例えば、イシューの一覧表示や検索、エピックからこのタイプのオブジェクトをリンクする場合などに使用できます。同じissues
テーブルを使用する必要があります。追加フィールドは別のテーブルに格納することができます。
イシュー・タイプを使用する場合
- 新しいイシュー・タイプが、既存のフィールドを削除することなく、基本イシュー・タイプに新しいフィールドを追加するだけである場合(ただし、基本イシュー・タイプのフィールドの一部がユーザー・インターフェース/APIで非表示になっていても問題ありません)。
- 基本イシュー・タイプが使用されている場所であれば、新しいタイプをどこでも使用できる場合。
ファーストクラスのリソース・タイプを使用する場合
- 新しいリソースに別のモデルとテーブルを使用する場合。
- 基本イシュー・タイプの一部のフィールドを削除する必要がある場合 - UIでの非表示は問題ありませんが、完全な削除はできません。
-
新しいリソースを基本イシュー・タイプの代わりに使用できない場合など:
- エピックには追加できません。
- コミットやマージリクエストから閉じることはできません。
- 他のイシューに関連するものとしてマークすることはできません。
イシュー・タイプが使用できない場合でも、ファーストクラス・タイプを定義し、Issuable
やNoteable
などの関心事を含めることで、すべてのイシュー関連リソースに共通する機能を再利用することができます。しかし、新しいリソースを扱うためのインタフェースを定義し、他のコンポーネントを更新して、新しいタイプで動作するようにする必要があります。
イシュー・タイプの使用によって、そのタイプで使用できるフィールド、機能、またはその両方が制限されます。ただし、この機能はデフォルトで提供されます。