Merge branch 'cb/receive-pack-keep-errors' into maint

* cb/receive-pack-keep-errors:
  do not override receive-pack errors
This commit is contained in:
Junio C Hamano 2012-02-21 15:14:41 -08:00
commit e147e9693a
2 changed files with 35 additions and 11 deletions

View File

@ -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);
}
@ -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;
}
@ -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)

View File

@ -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 &&
@ -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' '
@ -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 &&
@ -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' '
@ -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