Skip to content

Commit

Permalink
Merge branch 'cb/receive-pack-keep-errors' into maint
Browse files Browse the repository at this point in the history
* cb/receive-pack-keep-errors:
  do not override receive-pack errors
  • Loading branch information
Junio C Hamano committed Feb 21, 2012
2 parents c7707a4 + ef7e93d commit e147e96
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 11 deletions.
24 changes: 17 additions & 7 deletions builtin/receive-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -642,8 +642,10 @@ static void check_aliased_updates(struct command *commands)
}
sort_string_list(&ref_list);

for (cmd = commands; cmd; cmd = cmd->next)
check_aliased_update(cmd, &ref_list);
for (cmd = commands; cmd; cmd = cmd->next) {
if (!cmd->error_string)
check_aliased_update(cmd, &ref_list);
}

string_list_clear(&ref_list, 0);
}
Expand Down Expand Up @@ -707,8 +709,10 @@ static void execute_commands(struct command *commands, const char *unpacker_erro
set_connectivity_errors(commands);

if (run_receive_hook(commands, pre_receive_hook, 0)) {
for (cmd = commands; cmd; cmd = cmd->next)
cmd->error_string = "pre-receive hook declined";
for (cmd = commands; cmd; cmd = cmd->next) {
if (!cmd->error_string)
cmd->error_string = "pre-receive hook declined";
}
return;
}

Expand All @@ -717,9 +721,15 @@ static void execute_commands(struct command *commands, const char *unpacker_erro
free(head_name_to_free);
head_name = head_name_to_free = resolve_refdup("HEAD", sha1, 0, NULL);

for (cmd = commands; cmd; cmd = cmd->next)
if (!cmd->skip_update)
cmd->error_string = update(cmd);
for (cmd = commands; cmd; cmd = cmd->next) {
if (cmd->error_string)
continue;

if (cmd->skip_update)
continue;

cmd->error_string = update(cmd);
}
}

static struct command *read_head_info(void)
Expand Down
22 changes: 18 additions & 4 deletions t/t5504-fetch-receive-strict.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ test_expect_success 'fetch with transfer.fsckobjects' '
)
'

cat >exp <<EOF
To dst
! refs/heads/master:refs/heads/test [remote rejected] (missing necessary objects)
EOF

test_expect_success 'push without strict' '
rm -rf dst &&
git init dst &&
Expand All @@ -66,7 +71,8 @@ test_expect_success 'push without strict' '
git config fetch.fsckobjects false &&
git config transfer.fsckobjects false
) &&
git push dst master:refs/heads/test
test_must_fail git push --porcelain dst master:refs/heads/test >act &&
test_cmp exp act
'

test_expect_success 'push with !receive.fsckobjects' '
Expand All @@ -77,9 +83,15 @@ test_expect_success 'push with !receive.fsckobjects' '
git config receive.fsckobjects false &&
git config transfer.fsckobjects true
) &&
git push dst master:refs/heads/test
test_must_fail git push --porcelain dst master:refs/heads/test >act &&
test_cmp exp act
'

cat >exp <<EOF
To dst
! refs/heads/master:refs/heads/test [remote rejected] (n/a (unpacker error))
EOF

test_expect_success 'push with receive.fsckobjects' '
rm -rf dst &&
git init dst &&
Expand All @@ -88,7 +100,8 @@ test_expect_success 'push with receive.fsckobjects' '
git config receive.fsckobjects true &&
git config transfer.fsckobjects false
) &&
test_must_fail git push dst master:refs/heads/test
test_must_fail git push --porcelain dst master:refs/heads/test >act &&
test_cmp exp act
'

test_expect_success 'push with transfer.fsckobjects' '
Expand All @@ -98,7 +111,8 @@ test_expect_success 'push with transfer.fsckobjects' '
cd dst &&
git config transfer.fsckobjects true
) &&
test_must_fail git push dst master:refs/heads/test
test_must_fail git push --porcelain dst master:refs/heads/test >act &&
test_cmp exp act
'

test_done

0 comments on commit e147e96

Please sign in to comment.