+34
-6
lines changedFilter options
+34
-6
lines changed Original file line number Diff line number Diff line change
@@ -161,7 +161,7 @@ static const char message_detached_head_die[] =
161
161
" git push %s HEAD:<name-of-remote-branch>\n");
162
162
163
163
static void setup_push_upstream(struct remote *remote, struct branch *branch,
164
-
int triangular)
164
+
int triangular, int simple)
165
165
{
166
166
struct strbuf refspec = STRBUF_INIT;
167
167
@@ -184,7 +184,7 @@ static void setup_push_upstream(struct remote *remote, struct branch *branch,
184
184
"to update which remote branch."),
185
185
remote->name, branch->name);
186
186
187
-
if (push_default == PUSH_DEFAULT_SIMPLE) {
187
+
if (simple) {
188
188
/* Additional safety */
189
189
if (strcmp(branch->refname, branch->merge[0]->src))
190
190
die_push_simple(branch, remote);
@@ -257,11 +257,11 @@ static void setup_default_push_refspecs(struct remote *remote)
257
257
if (triangular)
258
258
setup_push_current(remote, branch);
259
259
else
260
-
setup_push_upstream(remote, branch, triangular);
260
+
setup_push_upstream(remote, branch, triangular, 1);
261
261
break;
262
262
263
263
case PUSH_DEFAULT_UPSTREAM:
264
-
setup_push_upstream(remote, branch, triangular);
264
+
setup_push_upstream(remote, branch, triangular, 0);
265
265
break;
266
266
267
267
case PUSH_DEFAULT_CURRENT:
Original file line number Diff line number Diff line change
@@ -26,15 +26,15 @@ check_pushed_commit () {
26
26
# $2 = expected target branch for the push
27
27
# $3 = [optional] repo to check for actual output (repo1 by default)
28
28
test_push_success () {
29
-
git -c push.default="$1" push &&
29
+
git ${1:+-c push.default="$1"} push &&
30
30
check_pushed_commit HEAD "$2" "$3"
31
31
}
32
32
33
33
# $1 = push.default value
34
34
# check that push fails and does not modify any remote branch
35
35
test_push_failure () {
36
36
git --git-dir=repo1 log --no-walk --format='%h %s' --all >expect &&
37
-
test_must_fail git -c push.default="$1" push &&
37
+
test_must_fail git ${1:+-c push.default="$1"} push &&
38
38
git --git-dir=repo1 log --no-walk --format='%h %s' --all >actual &&
39
39
test_cmp expect actual
40
40
}
@@ -172,4 +172,32 @@ test_pushdefault_workflow success simple master triangular
172
172
# master is updated (parent2 does not have foo)
173
173
test_pushdefault_workflow success matching master triangular
174
174
175
+
# default tests, when no push-default is specified. This
176
+
# should behave the same as "simple" in non-triangular
177
+
# settings, and as "current" otherwise.
178
+
179
+
test_expect_success 'default behavior allows "simple" push' '
180
+
test_config branch.master.remote parent1 &&
181
+
test_config branch.master.merge refs/heads/master &&
182
+
test_config remote.pushdefault parent1 &&
183
+
test_commit default-master-master &&
184
+
test_push_success "" master
185
+
'
186
+
187
+
test_expect_success 'default behavior rejects non-simple push' '
188
+
test_config branch.master.remote parent1 &&
189
+
test_config branch.master.merge refs/heads/foo &&
190
+
test_config remote.pushdefault parent1 &&
191
+
test_commit default-master-foo &&
192
+
test_push_failure ""
193
+
'
194
+
195
+
test_expect_success 'default triangular behavior acts like "current"' '
196
+
test_config branch.master.remote parent1 &&
197
+
test_config branch.master.merge refs/heads/foo &&
198
+
test_config remote.pushdefault parent2 &&
199
+
test_commit default-triangular &&
200
+
test_push_success "" master repo2
201
+
'
202
+
175
203
test_done
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4