#!/bin/sh test_description='git rebase with its hook(s)' . ./test-lib.sh test_expect_success setup ' echo hello >file && git add file && test_tick && git commit -m initial && echo goodbye >file && git add file && test_tick && git commit -m second && git checkout -b side HEAD^ && echo world >git && git add git && test_tick && git commit -m side && git checkout master && git log --pretty=oneline --abbrev-commit --graph --all && git branch test side ' test_expect_success 'rebase' ' git checkout test && git reset --hard side && git rebase master && test "z$(cat git)" = zworld ' test_expect_success 'rebase -i' ' git checkout test && git reset --hard side && EDITOR=true git rebase -i master && test "z$(cat git)" = zworld ' test_expect_success 'setup pre-rebase hook' ' mkdir -p .git/hooks && cat >.git/hooks/pre-rebase <.git/PRE-REBASE-INPUT EOF chmod +x .git/hooks/pre-rebase ' test_expect_success 'pre-rebase hook gets correct input (1)' ' git checkout test && git reset --hard side && git rebase master && test "z$(cat git)" = zworld && test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster, ' test_expect_success 'pre-rebase hook gets correct input (2)' ' git checkout test && git reset --hard side && git rebase master test && test "z$(cat git)" = zworld && test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test ' test_expect_success 'pre-rebase hook gets correct input (3)' ' git checkout test && git reset --hard side && git checkout master && git rebase master test && test "z$(cat git)" = zworld && test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test ' test_expect_success 'pre-rebase hook gets correct input (4)' ' git checkout test && git reset --hard side && EDITOR=true git rebase -i master && test "z$(cat git)" = zworld && test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster, ' test_expect_success 'pre-rebase hook gets correct input (5)' ' git checkout test && git reset --hard side && EDITOR=true git rebase -i master test && test "z$(cat git)" = zworld && test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test ' test_expect_success 'pre-rebase hook gets correct input (6)' ' git checkout test && git reset --hard side && git checkout master && EDITOR=true git rebase -i master test && test "z$(cat git)" = zworld && test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test ' test_expect_success 'setup pre-rebase hook that fails' ' mkdir -p .git/hooks && cat >.git/hooks/pre-rebase <