Hooks
git-gamble
provides his own custom hooks :
pre-gamble <GAMBLED>
pre-gamble
hook is executed with one argument<GAMBLED>
post-gamble <GAMBLED> <ACTUAL>
post-gamble
hook is executed with two arguments<GAMBLED>
and<ACTUAL>
Where :
<GAMBLED>
ispass
orfail
<ACTUAL>
ispass
orfail
Custom hooks of git-gamble
are like any other client-side hooks :
- a hook is a file
- a hook must be in the
$GIT_DIR/hooks/
folder- or in the folder configured by
git config core.hooksPath
- or in the folder configured by
- a hook must be executable (
chmod +x .git/hooks/*-gamble
) - will not be executed if any of these options are used:
--no-verify
--dry-run
Check the hooks
' folder for examples of use
post-gamble.real_time_collaboration.sample.sh
is specially adapted to near real-time collaborationpost-gamble.assistant.sample.sh
is a simple assistant that displays tips based on the result of the gamble
The following diagram shows when custom hooks are executed in relation to normal git hooks
flowchart LR subgraph git-gamble's hooks' lifecyle direction TB git-gamble([git-gamble\n--pass OR --fail]) --> pre-gamble[pre-gamble\npass OR fail]:::gitGambleHookStyle --> GAMBLE_TEST_COMMAND([exec $GAMBLE_TEST_COMMAND]):::gitGambleInternalStyle --> gamble{Result ?}:::gitGambleInternalStyle gamble -->|Success| Success subgraph Success direction TB git_add([git add --all]):::gitGambleInternalStyle --> git_commit([git commit]):::gitGambleInternalStyle --> pre-commit:::gitHookStyle --> prepare-commit-msg[prepare-commit-msg\n$GIT_DIR/COMMIT_EDITMSG\nmessage]:::gitHookStyle --> commit-msg[commit-msg\n$GIT_DIR/COMMIT_EDITMSG]:::gitHookStyle --> post-commit:::gitHookStyle post-commit --> rewritten? rewritten?{{"Last commit rewritten ?\nWhen gambling fail\nafter another gamble fail"}}:::gitGambleInternalStyle rewritten? -->|Yes| post-rewrite[post-rewrite\namend]:::gitHookStyle --> post-gamble-success rewritten? -->|No| post-gamble-success post-gamble-success[post-gamble\npass OR fail\nsuccess]:::gitGambleHookStyle end gamble -->|Error| Error subgraph Error direction TB git_reset([git reset --hard]):::gitGambleInternalStyle --> post-gamble-error[post-gamble\npass OR fail\nerror]:::gitGambleHookStyle end end subgraph Legend direction TB subgraph Legend_[" "] direction LR command([Command executed by user]) git-gamble_command([Command executed by git-gamble]):::gitGambleInternalStyle condition{Condition ?}:::gitGambleInternalStyle end subgraph Hooks direction LR hook[git's hook]:::gitHookStyle hook_with_argument[git's hook\nfirst argument\nsecond argument]:::gitHookStyle git-gamble_hook_with_argument[git-gamble's hook\nfirst argument\nsecond argument]:::gitGambleHookStyle end end classDef gitHookStyle fill:#f05133,color:black,stroke:black; classDef gitGambleHookStyle fill:#5a3730,color:white,stroke:white; classDef gitGambleInternalStyle fill:#411d16,color:white,stroke:white;