git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
e0182779ed5d9480d8c80c3a4419698add825545 blob 6618 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
 
#!/bin/sh
#
# Copyright (c) 2016 Dan Aloni
# Copyright (c) 2016 Jeff King
#

test_description='per-repo forced setting of email address'

. ./test-lib.sh

test_expect_success 'setup a likely user.useConfigOnly use case' '
	# we want to make sure a reflog is written, since that needs
	# a non-strict ident. So be sure we have an actual commit.
	test_commit foo &&

	sane_unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL &&
	sane_unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL &&
	git config user.name "test" &&
	git config --global user.useConfigOnly true
'

test_expect_success 'fails committing if clone email is not set' '
	test_must_fail git commit --allow-empty -m msg
'

test_expect_success 'fails committing if clone email is not set, but EMAIL set' '
	test_must_fail env EMAIL=test@fail.com git commit --allow-empty -m msg
'

test_expect_success 'succeeds committing if clone email is set' '
	test_config user.email "test@ok.com" &&
	git commit --allow-empty -m msg
'

test_expect_success 'succeeds cloning if global email is not set' '
	git clone . clone
'

test_expect_success 'set up rebase scenarios' '
	# temporarily enable an actual ident for this setup
	test_config user.email foo@example.com &&
	test_commit new &&
	git branch side-without-commit HEAD^ &&
	git checkout -b side-with-commit HEAD^ &&
	test_commit side
'

test_expect_success 'fast-forward rebase does not care about ident' '
	git checkout -B tmp side-without-commit &&
	git rebase master
'

test_expect_success 'non-fast-forward rebase refuses to write commits' '
	test_when_finished "git rebase --abort || true" &&
	git checkout -B tmp side-with-commit &&
	test_must_fail git rebase master
'

test_expect_success 'fast-forward rebase does not care about ident (interactive)' '
	git checkout -B tmp side-without-commit &&
	git rebase -i master
'

test_expect_success 'non-fast-forward rebase refuses to write commits (interactive)' '
	test_when_finished "git rebase --abort || true" &&
	git checkout -B tmp side-with-commit &&
	test_must_fail git rebase -i master
'

test_expect_success 'noop interactive rebase does not care about ident' '
	git checkout -B tmp side-with-commit &&
	git rebase -i HEAD^
'

test_expect_success REBASE_P \
	'fast-forward rebase does not care about ident (preserve)' '
	git checkout -B tmp side-without-commit &&
	git rebase -p master
'

test_expect_success REBASE_P \
	'non-fast-forward rebase refuses to write commits (preserve)' '
	test_when_finished "git rebase --abort || true" &&
	git checkout -B tmp side-with-commit &&
	test_must_fail git rebase -p master
'

test_expect_success 'fallbacks for GIT_* and {user,author,committer}.{name,email}' '
	# We must have committer in the object
	test_must_fail test_env \
		GIT_AUTHOR_NAME=author.name \
		GIT_AUTHOR_EMAIL=author@email \
		GIT_COMMITTER_NAME= \
		GIT_COMMITTER_EMAIL= \
		test_commit A 2>stderr &&
	test_i18ngrep "empty ident name.*not allowed" stderr &&

	# With no committer E-Mail we will have an empty field
	test_env \
		GIT_AUTHOR_NAME=author.name \
		GIT_AUTHOR_EMAIL=author@email \
		GIT_COMMITTER_NAME=committer.name \
		GIT_COMMITTER_EMAIL= \
		test_commit B 2>stderr &&
	echo "author.name author@email committer.name " >expected &&
	git log --format="%an %ae %cn %ce" -1 >actual &&
	test_cmp expected actual &&

	# Environment overrides config
	test_config user.name author.config.name &&
	test_env \
		GIT_AUTHOR_NAME=author.name \
		GIT_AUTHOR_EMAIL=author@email \
		GIT_COMMITTER_NAME=committer.name \
		GIT_COMMITTER_EMAIL= \
		test_commit C 2>stderr &&
	echo "author.name author@email committer.name " >expected &&
	git log --format="%an %ae %cn %ce" -1 >actual &&
	test_cmp expected actual
'

test_expect_success 'author.name overrides user.name' '
	test_config user.name user &&
	test_config user.email user@example.com &&
	test_config author.name author &&
	test_commit author-name-override-user &&
	echo author user@example.com >expected-author &&
	echo user user@example.com >expected-committer &&
	git log --format="%an %ae" -1 >actual-author &&
	git log --format="%cn %ce" -1 >actual-committer &&
	test_cmp expected-author actual-author &&
	test_cmp expected-committer actual-committer
'

test_expect_success 'author.email overrides user.email' '
	test_config user.name user &&
	test_config user.email user@example.com &&
	test_config author.email author@example.com &&
	test_commit author-email-override-user &&
	echo user author@example.com >expected-author &&
	echo user user@example.com >expected-committer &&
	git log --format="%an %ae" -1 >actual-author &&
	git log --format="%cn %ce" -1 >actual-committer &&
	test_cmp expected-author actual-author &&
	test_cmp expected-committer actual-committer
'

test_expect_success 'committer.name overrides user.name' '
	test_config user.name user &&
	test_config user.email user@example.com &&
	test_config committer.name committer &&
	test_commit committer-name-override-user &&
	echo user user@example.com >expected-author &&
	echo committer user@example.com >expected-committer &&
	git log --format="%an %ae" -1 >actual-author &&
	git log --format="%cn %ce" -1 >actual-committer &&
	test_cmp expected-author actual-author &&
	test_cmp expected-committer actual-committer
'

test_expect_success 'committer.email overrides user.email' '
	test_config user.name user &&
	test_config user.email user@example.com &&
	test_config committer.email committer@example.com &&
	test_commit committer-email-override-user &&
	echo user user@example.com >expected-author &&
	echo user committer@example.com >expected-committer &&
	git log --format="%an %ae" -1 >actual-author &&
	git log --format="%cn %ce" -1 >actual-committer &&
	test_cmp expected-author actual-author &&
	test_cmp expected-committer actual-committer
'

test_expect_success 'author and committer environment variables override config settings' '
	test_config user.name user &&
	test_config user.email user@example.com &&
	test_config author.name author &&
	test_config author.email author@example.com &&
	test_config committer.name committer &&
	test_config committer.email committer@example.com &&

	test_env \
		GIT_AUTHOR_NAME=env_author \
		GIT_AUTHOR_EMAIL=env_author@example.com \
		GIT_COMMITTER_NAME=env_commit \
		GIT_COMMITTER_EMAIL=env_commit@example.com \
		test_commit env-override-conf &&
	echo env_author env_author@example.com >expected-author &&
	echo env_commit env_commit@example.com >expected-committer &&
	git log --format="%an %ae" -1 >actual-author &&
	git log --format="%cn %ce" -1 >actual-committer &&
	test_cmp expected-author actual-author &&
	test_cmp expected-committer actual-committer
'

test_done
debug log:

solving e0182779ed ...
found e0182779ed in https://public-inbox.org/git/xmqqwomdqzik.fsf@gitster-ct.c.googlers.com/ ||
	https://public-inbox.org/git/20190205195212.25550-3-avarab@gmail.com/
found b2401cec3e in https://80x24.org/mirrors/git.git
preparing index
index prepared:
100755 b2401cec3e3be01d0973dea72f8154b5824762aa	t/t7517-per-repo-email.sh

applying [1/2] https://public-inbox.org/git/xmqqwomdqzik.fsf@gitster-ct.c.googlers.com/
diff --git a/t/t7517-per-repo-email.sh b/t/t7517-per-repo-email.sh
index b2401cec3e..e0182779ed 100755

Checking patch t/t7517-per-repo-email.sh...
Applied patch t/t7517-per-repo-email.sh cleanly.

skipping https://public-inbox.org/git/20190205195212.25550-3-avarab@gmail.com/ for e0182779ed
index at:
100755 e0182779ed5d9480d8c80c3a4419698add825545	t/t7517-per-repo-email.sh

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).