From 4232826771d5bdc4cc0bd21188b6ee5f3e700a52 Mon Sep 17 00:00:00 2001 From: Tay Ray Chuan Date: Fri, 8 Jan 2010 10:12:43 +0800 Subject: [PATCH] transport.c::transport_push(): make ref status affect return value Use push_had_errors() to check the refs for errors and modify the return value. Mark the non-fast-forward push tests to succeed. Signed-off-by: Tay Ray Chuan Signed-off-by: Junio C Hamano --- t/t5541-http-push.sh | 4 ++-- transport.c | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh index 6d92196d24..979624d0dc 100755 --- a/t/t5541-http-push.sh +++ b/t/t5541-http-push.sh @@ -88,7 +88,7 @@ test_expect_success 'used receive-pack service' ' test_cmp exp act ' -test_expect_failure 'non-fast-forward push fails' ' +test_expect_success 'non-fast-forward push fails' ' cd "$ROOT_PATH"/test_repo_clone && git checkout master && echo "changed" > path2 && @@ -104,7 +104,7 @@ test_expect_success 'non-fast-forward push show ref status' ' grep "^ ! \[rejected\][ ]*master -> master (non-fast-forward)$" output ' -test_expect_failure 'non-fast-forward push shows help message' ' +test_expect_success 'non-fast-forward push shows help message' ' grep \ "To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the '"'non-fast-forward'"' diff --git a/transport.c b/transport.c index 12c4423f79..9b23989117 100644 --- a/transport.c +++ b/transport.c @@ -875,7 +875,7 @@ int transport_push(struct transport *transport, int verbose = flags & TRANSPORT_PUSH_VERBOSE; int quiet = flags & TRANSPORT_PUSH_QUIET; int porcelain = flags & TRANSPORT_PUSH_PORCELAIN; - int ret; + int ret, err; if (flags & TRANSPORT_PUSH_ALL) match_flags |= MATCH_REFS_ALL; @@ -892,8 +892,11 @@ int transport_push(struct transport *transport, flags & TRANSPORT_PUSH_FORCE); ret = transport->push_refs(transport, remote_refs, flags); + err = push_had_errors(remote_refs); - if (!quiet || push_had_errors(remote_refs)) + ret |= err; + + if (!quiet || err) print_push_status(transport->url, remote_refs, verbose | porcelain, porcelain, nonfastforward); -- 2.11.4.GIT