CommitMsgHook class

A hook that runs for Git's commit-msg event.

Git passes the path to the commit message file as $1. After executeHook binds args, messageFile holds that path. Full args and stdin are also available via hookContext from package:hooksman/hooksman.dart.

// hooks/commit_msg.dart
import 'package:hooksman/hooksman.dart';

Hook main() {
  return CommitMsgHook(
    tasks: [
      ShellTask.always(
        name: 'Ensure message file exists',
        commands: (_) {
          final file = hookContext.messageFile ?? '';
          return ['test -f "$file"'];
        },
      ),
    ],
  );
}

Prefer reading messageFile (or hookContext.messageFile) from a Dart task when you need the message contents in Dart. This hook always runs even when the working-tree diff is empty.

Inheritance

Constructors

CommitMsgHook({required List<HookTask> tasks, String? messageFile, List<String> diffArgs = const [], String diffFilters = '', bool runInParallel = true, bool backup = true})
const
CommitMsgHook.verbose({required List<HookTask> tasks, String? messageFile, List<String> diffArgs = const [], String diffFilters = '', bool runInParallel = true, bool backup = true})
const

Properties

backup → bool
Whether to snapshot the index and working tree before the tasks run and roll back to it when the hook fails.
finalinherited
diffArgs → List<String>
Defaults to '--staged'
finalinherited
diffFilters → String
Defaults to 'ACMR'
finalinherited
hashCode → int
The hash code for this object.
no setterinherited
messageFile → String?
Path to the commit message file ($1 from Git). Bound at runtime.
final
props → List<Object?>
The list of properties that will be used to determine whether two instances are equal.
no setterinherited
runInParallel → bool
Whether to run the top level tasks in parallel
finalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
shouldRunOnEmpty → bool
no setteroverride
stringify → bool?
If set to true, the toString method will be overridden to output this instance's props.
no setterinherited
tasks → List<HookTask>
finalinherited
verbose → bool
finalinherited

Methods

bindMessageFile(String? path) → CommitMsgHook
Returns a copy with messageFile set from hook args.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
resolve(List<String> filePaths) → ResolvedHook
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited