diff --git a/t/t5543-atomic-push.sh b/t/t5543-atomic-push.sh index 32181b9afb7117..3a700b06761db4 100755 --- a/t/t5543-atomic-push.sh +++ b/t/t5543-atomic-push.sh @@ -280,7 +280,7 @@ test_expect_success 'atomic push reports (reject by non-ff)' ' test_cmp expect actual ' -test_expect_failure 'atomic push reports exit code failure' ' +test_expect_success 'atomic push reports exit code failure' ' write_script receive-pack-wrapper <<-\EOF && git-receive-pack "$@" exit 1 @@ -296,7 +296,7 @@ test_expect_failure 'atomic push reports exit code failure' ' test_cmp expect err ' -test_expect_failure 'atomic push reports exit code failure with porcelain' ' +test_expect_success 'atomic push reports exit code failure with porcelain' ' write_script receive-pack-wrapper <<-\EOF && git-receive-pack "$@" exit 1 diff --git a/transport.c b/transport.c index 6040593832a832..16a8e8c74313ab 100644 --- a/transport.c +++ b/transport.c @@ -926,10 +926,10 @@ static int git_transport_push(struct transport *transport, struct ref *remote_re close(data->fd[0]); /* * Atomic push may abort the connection early and close the pipe, - * which may cause an error for `finish_connect()`. Ignore this error - * for atomic git-push. + * which may cause an error for `finish_connect()`. We can ignore + * this error when both `--atomic` and `--dry-run` flags provided. */ - if (ret || args.atomic) + if (ret || (args.atomic && args.dry_run)) finish_connect(data->conn); else ret = finish_connect(data->conn);