git-branchless amend skips pre-commit hook
Closed this issue · 1 comments
peeeeter commented
Description of the bug
git-branchless amend has some deviations from git commit amend, notably, it doesn't resign and it doesn't run the pre-commit hook.
Expected behavior
Expect that git-branchless amend has similar side-effects to
git commit --amend --no-edit
- runs precommit hook
- resigns commit w/ gpgsign if enabled.
- other things?
Actual behavior
the precommit hook is not called, and it is not resigned.
Version of rustc
No response
Automated bug report
Software version
git-branchless 0.8.0
Operating system
macOS 14.4 (Darwin 23.4.0)
Command-line
git-branchless bug-report
Environment variables
SHELL=/bin/zsh
EDITOR=<not set>
Git version
> git version
git version 2.39.3 (Apple Git-146)
Hooks
Show 7 hooks
Hook post-applypatch
#!/bin/sh
## START BRANCHLESS CONFIG
git branchless hook post-applypatch "$@"
## END BRANCHLESS CONFIG
Hook post-checkout
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-checkout' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs post-checkout "$@"
## START BRANCHLESS CONFIG
git branchless hook post-checkout "$@"
## END BRANCHLESS CONFIG
Hook post-commit
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-commit' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs post-commit "$@"
## START BRANCHLESS CONFIG
git branchless hook post-commit "$@"
## END BRANCHLESS CONFIG
Hook post-merge
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting the 'post-merge' file in the hooks directory (set by 'core.hookspath'; usually '.git/hooks').\n"; exit 2; }
git lfs post-merge "$@"
## START BRANCHLESS CONFIG
git branchless hook post-merge "$@"
## END BRANCHLESS CONFIG
Hook post-rewrite
#!/bin/sh
## START BRANCHLESS CONFIG
git branchless hook post-rewrite "$@"
## END BRANCHLESS CONFIG
Hook pre-auto-gc
#!/bin/sh
## START BRANCHLESS CONFIG
git branchless hook pre-auto-gc "$@"
## END BRANCHLESS CONFIG
Hook reference-transaction
#!/bin/sh
## START BRANCHLESS CONFIG
# Avoid canceling the reference transaction in the case that `branchless` fails
# for whatever reason.
git branchless hook reference-transaction "$@" || (
echo 'branchless: Failed to process reference transaction!'
echo 'branchless: Some events (e.g. branch updates) may have been lost.'
echo 'branchless: This is a bug. Please report it.'
)
## END BRANCHLESS CONFIG
Events
Show 5 events
Event ID: 3826, transaction ID: 3499 (message: amend)
WorkingCopySnapshot { timestamp: 1710189822.835143, event_tx_id: EventTransactionId(3499), head_oid: af5c2fd61a0f0514da635b632daee65292cb0d96, commit_oid: NonZeroOid(60431129a47ff8408ab9991c87797199bcdd79bf), ref_name: Some(ReferenceName("refs/heads/main")) }
RewriteEvent { timestamp: 1710189822.835143, event_tx_id: EventTransactionId(3499), old_commit_oid: af5c2fd61a0f0514da635b632daee65292cb0d96, new_commit_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade }
RefUpdateEvent { timestamp: 1710189822.919142, event_tx_id: EventTransactionId(3499), ref_name: ReferenceName("refs/heads/main"), old_oid: af5c2fd61a0f0514da635b632daee65292cb0d96, new_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade, message: None }
WorkingCopySnapshot { timestamp: 1710189822.944098, event_tx_id: EventTransactionId(3499), head_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade, commit_oid: NonZeroOid(99bcca5a392a9b1ac0db4472d382324c9429f805), ref_name: Some(ReferenceName("refs/heads/main")) }
RefUpdateEvent { timestamp: 1710189823.022823, event_tx_id: EventTransactionId(3499), ref_name: ReferenceName("HEAD"), old_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade, new_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade, message: None }
RefUpdateEvent { timestamp: 1710189823.022823, event_tx_id: EventTransactionId(3499), ref_name: ReferenceName("refs/heads/main"), old_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade, new_oid: 91c12164ef67d64102ecadf5ba6598e2f5001ade, message: None }
:
@ 91c1216 26s (> main) xxx xxxxxxx
Event ID: 3822, transaction ID: 3498 (message: commit)
RefUpdateEvent { timestamp: 1710189218.659835, event_tx_id: EventTransactionId(3498), ref_name: ReferenceName("HEAD"), old_oid: ff58c33216744586f43ad266a89c13bb3f2b0bd1, new_oid: af5c2fd61a0f0514da635b632daee65292cb0d96, message: None }
RefUpdateEvent { timestamp: 1710189218.659835, event_tx_id: EventTransactionId(3498), ref_name: ReferenceName("refs/heads/main"), old_oid: ff58c33216744586f43ad266a89c13bb3f2b0bd1, new_oid: af5c2fd61a0f0514da635b632daee65292cb0d96, message: None }
CommitEvent { timestamp: 1710189216.0, event_tx_id: EventTransactionId(3498), commit_oid: NonZeroOid(af5c2fd61a0f0514da635b632daee65292cb0d96) }
RewriteEvent { timestamp: 1710189218.80025, event_tx_id: EventTransactionId(3498), old_commit_oid: ff58c33216744586f43ad266a89c13bb3f2b0bd1, new_commit_oid: af5c2fd61a0f0514da635b632daee65292cb0d96 }
:
@ 91c1216 26s (> main) xxx xxxxxxx
Event ID: 3818, transaction ID: 3495 (message: commit)
RefUpdateEvent { timestamp: 1710188955.626579, event_tx_id: EventTransactionId(3495), ref_name: ReferenceName("HEAD"), old_oid: 8930af0f0f1147f27dc8ea047e1cc4fa57effb49, new_oid: ff58c33216744586f43ad266a89c13bb3f2b0bd1, message: None }
RefUpdateEvent { timestamp: 1710188955.626579, event_tx_id: EventTransactionId(3495), ref_name: ReferenceName("refs/heads/main"), old_oid: 8930af0f0f1147f27dc8ea047e1cc4fa57effb49, new_oid: ff58c33216744586f43ad266a89c13bb3f2b0bd1, message: None }
CommitEvent { timestamp: 1710188946.0, event_tx_id: EventTransactionId(3495), commit_oid: NonZeroOid(ff58c33216744586f43ad266a89c13bb3f2b0bd1) }
RewriteEvent { timestamp: 1710188955.763559, event_tx_id: EventTransactionId(3495), old_commit_oid: 8930af0f0f1147f27dc8ea047e1cc4fa57effb49, new_commit_oid: ff58c33216744586f43ad266a89c13bb3f2b0bd1 }
:
@ 91c1216 26s (> main) xxx xxxxxxx
Event ID: 3814, transaction ID: 3492 (message: commit)
RefUpdateEvent { timestamp: 1710188925.2088, event_tx_id: EventTransactionId(3492), ref_name: ReferenceName("HEAD"), old_oid: f0a0246e535f797e991551a692c2155531c6bb94, new_oid: 8930af0f0f1147f27dc8ea047e1cc4fa57effb49, message: None }
RefUpdateEvent { timestamp: 1710188925.2088, event_tx_id: EventTransactionId(3492), ref_name: ReferenceName("refs/heads/main"), old_oid: f0a0246e535f797e991551a692c2155531c6bb94, new_oid: 8930af0f0f1147f27dc8ea047e1cc4fa57effb49, message: None }
CommitEvent { timestamp: 1710188908.0, event_tx_id: EventTransactionId(3492), commit_oid: NonZeroOid(8930af0f0f1147f27dc8ea047e1cc4fa57effb49) }
RewriteEvent { timestamp: 1710188925.364901, event_tx_id: EventTransactionId(3492), old_commit_oid: f0a0246e535f797e991551a692c2155531c6bb94, new_commit_oid: 8930af0f0f1147f27dc8ea047e1cc4fa57effb49 }
:
@ 91c1216 26s (> main) xxx xxxxxxx
Event ID: 3813, transaction ID: 3491 (message: push)
RefUpdateEvent { timestamp: 1710188527.902115, event_tx_id: EventTransactionId(3491), ref_name: ReferenceName("refs/remotes/redacted-ref-0"), old_oid: 0000000000000000000000000000000000000000, new_oid: f0a0246e535f797e991551a692c2155531c6bb94, message: None }
:
@ 91c1216 26s (> main) xxx xxxxxxx
Version of git-branchless
No response
Version of git
No response
bsima commented
I was just about to file this bug. I use pre-commit hooks to run a linter so using git amend
often means I'm liable to commit un-linted code. A minor annoyance, but an annoyance nonetheless.