3 test_description='server post-receive email notification'
7 export USER_EMAIL=author@example.com
9 test_expect_success 'setup' '
12 git commit -m "setup" &&
13 git clone ./. server &&
14 rm -fr server/.git/hooks &&
15 git remote add origin ./server &&
16 git config branch.master.remote origin &&
17 git config branch.master.merge refs/heads/master &&
18 GIT_DIR=./server/.git git config hooks.post-receive-email.mailinglist commits@list.com &&
19 GIT_DIR=./server/.git git config hooks.post-receive-email.debug true &&
20 echo cbas >./server/.git/description
23 install_post_receive_hook 'post-receive-email'
25 test_expect_success 'create branch' '
26 git checkout -b topic master &&
27 echo "$test_name" >a &&
28 git commit -a -m "$test_name on topic" &&
29 prior_commit_hash=$(git rev-parse HEAD) &&
30 prior_commit_date=$(git log -n 1 --pretty=format:%cd HEAD) &&
32 echo "$test_name 2" >a &&
33 git commit -a -m "$test_name on topic 2 " &&
34 new_commit_hash=$(git rev-parse HEAD) &&
35 new_commit_abbrev=$(git rev-parse --short HEAD) &&
36 new_commit_date=$(git log -n 1 --pretty=format:%cd HEAD) &&
38 git push origin topic &&
40 interpolate ../t2202-1.txt 1.txt new_commit_hash new_commit_abbrev new_commit_date prior_commit_hash prior_commit_date &&
41 test_cmp 1.txt server/.git/refs.heads.topic.out
44 test_expect_success 'create branch with existing commits does not replay them' '
45 git checkout -b topic2 topic &&
46 existing_commit_hash=$(git rev-parse HEAD) &&
47 existing_commit_abbrev=$(git rev-parse --short HEAD) &&
48 existing_commit_date=$(git log -n 1 --pretty=format:%cd HEAD) &&
50 git push origin topic2 &&
52 interpolate ../t2202-3.txt 3.txt existing_commit_hash existing_commit_abbrev existing_commit_date &&
53 test_cmp 3.txt server/.git/refs.heads.topic2.out
56 test_expect_success 'update branch with existing commits does not replay them' '
57 # Put a commit on topic2, then fast foward topic to it
58 git checkout topic2 &&
59 echo "$test_name" >a &&
60 git commit -a -m "$test_name on topic" &&
64 old_commit_hash=$(git rev-parse HEAD) &&
65 old_commit_abbrev=$(git rev-parse --short HEAD) &&
67 existing_commit_hash=$(git rev-parse HEAD) &&
68 existing_commit_abbrev=$(git rev-parse --short HEAD) &&
71 interpolate ../t2202-4.txt 4.txt old_commit_hash old_commit_abbrev existing_commit_hash existing_commit_abbrev &&
72 test_cmp 4.txt server/.git/refs.heads.topic.out
75 test_expect_success 'rewind branch' '
77 old_commit_hash=$(git rev-parse HEAD) &&
78 old_commit_abbrev=$(git rev-parse --short HEAD) &&
80 git reset --hard HEAD^ &&
82 new_commit_hash=$(git rev-parse HEAD) &&
84 interpolate ../t2202-5.txt 5.txt old_commit_hash new_commit_hash old_commit_abbrev &&
85 test_cmp 5.txt server/.git/refs.heads.topic.out
88 test_expect_success 'rewind and continue branch' '
90 old_commit_hash=$(git rev-parse HEAD) &&
91 old_commit_abbrev=$(git rev-parse --short HEAD) &&
93 git reset --hard HEAD^ &&
94 echo "$test_name" >a &&
95 git commit -a -m "$test_name on topic" &&
96 new_commit_hash=$(git rev-parse HEAD) &&
97 new_commit_abbrev=$(git rev-parse --short HEAD) &&
98 new_commit_date=$(git log -n 1 --pretty=format:%cd HEAD) &&
101 interpolate ../t2202-6.txt 6.txt old_commit_hash new_commit_hash new_commit_date new_commit_abbrev old_commit_abbrev &&
102 test_cmp 6.txt server/.git/refs.heads.topic.out
105 test_expect_success 'delete branch' '
106 old_commit_hash=$(git rev-parse HEAD) &&
107 git push origin :refs/heads/topic &&
109 interpolate ../t2202-2.txt 2.txt old_commit_hash &&
110 test_cmp 2.txt server/.git/refs.heads.topic.out