In connection with changes in T11114, Differential custom fields which appear on commit messages have changed. This change affects you if:
- you run custom third-party code which defines new Differential Custom Fields; and
- those fields appear in commit messages (for example, with arc diff).
This change is part of a broader set of changes related to T11114 and T12010.
Broadly, the commit message handling parts of custom fields have been separated into a new class (DifferentialCommitMessageField). If you have a subclass of DifferentialCustomField which implements commit message methods, make these changes:
- Create a new, corresponding subclass of DifferentialCommitMessageField for your custom field (for example, if you have DifferentialZebraCustomField, create a new DifferentialZebraCommitMessageField).
- If you use Phabricator's custom field storage, extend DifferentialCommitMessageCustomField instead of extending DifferentialCommitMessageField directly.
- Move these methods from the CustomField to the CommitMessageField:
| Old Method | Action | New Method | Notes |
|---|---|---|---|
| getFieldName() | Copy To | getFieldName() | Both classes should define this method. |
| getFieldKeyForConduit() | Move To | FIELDKEY class constant | Preserves API compatibility. |
| shouldAppearInCommitMessage() | Remove | - | Obsolete. |
| shouldAllowEditInCommitMessage() | Move To | isFieldEditable() | Omit if it always returns true. |
| getCommitMessageLabels() | Move To | getFieldAliases() | Move and rename method. |
| parseValueFromCommitMessage() | Move To | parseFieldValue() | Move and rename method. |
| getRequiredHandlePHIDsForCommitMessage() | Remove | - | Obsolete. |
| renderCommitMessageValue() | Move To | renderFieldValue() | Move and rename method. Signature has changed. |
| - | Create? | readFieldValueFromObject() | Optional, but probably desired. |
| - | Create? | getFieldOrder() | Optional. |
| - | Create? | isFieldEnabled() | Optional. |
| validateCommitMessageValue() | Move | validateFieldValue() | Move and rename. |
| shouldAppearInCommitMessageTemplate() | Move | isTemplateField() | Move and rename. |
In the upstream, these are the underlying changes, which included making these changes to all upstream CustomFields:


