diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2008-05-28 19:29:36 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-05-28 10:47:12 -0700 |
commit | efb98b44536300f5daed25da3650033a1ce7fdef (patch) | |
tree | 3eb5955b1dd88addafa444b746fd240bdee4389a | |
parent | fix sha1_pack_index_name() (diff) | |
download | tgif-efb98b44536300f5daed25da3650033a1ce7fdef.tar.xz |
builtin-fetch.c (store_updated_refs): Honor update_local_ref() return value
Sync with builtin-fetch--tool.c where append_fetch_head()
honors update_local_ref() return value.
This fixes non fast forward fetch exit status,
http://bugzilla.altlinux.org/show_bug.cgi?id=15037
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-fetch.c | 6 | ||||
-rwxr-xr-x | t/t5518-fetch-exit-status.sh | 37 |
2 files changed, 40 insertions, 3 deletions
diff --git a/builtin-fetch.c b/builtin-fetch.c index bfe7711aa8..e81ee2d02b 100644 --- a/builtin-fetch.c +++ b/builtin-fetch.c @@ -286,7 +286,7 @@ static int store_updated_refs(const char *url, struct ref *ref_map) { FILE *fp; struct commit *commit; - int url_len, i, note_len, shown_url = 0; + int url_len, i, note_len, shown_url = 0, rc = 0; char note[1024]; const char *what, *kind; struct ref *rm; @@ -353,7 +353,7 @@ static int store_updated_refs(const char *url, struct ref *ref_map) note); if (ref) - update_local_ref(ref, what, verbose, note); + rc |= update_local_ref(ref, what, verbose, note); else sprintf(note, "* %-*s %-*s -> FETCH_HEAD", SUMMARY_WIDTH, *kind ? kind : "branch", @@ -368,7 +368,7 @@ static int store_updated_refs(const char *url, struct ref *ref_map) } } fclose(fp); - return 0; + return rc; } /* diff --git a/t/t5518-fetch-exit-status.sh b/t/t5518-fetch-exit-status.sh new file mode 100755 index 0000000000..c6bc65faa0 --- /dev/null +++ b/t/t5518-fetch-exit-status.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Copyright (c) 2008 Dmitry V. Levin +# + +test_description='fetch exit status test' + +. ./test-lib.sh + +test_expect_success setup ' + + >file && + git add file && + git commit -m initial && + + git checkout -b side && + echo side >file && + git commit -a -m side && + + git checkout master && + echo next >file && + git commit -a -m next +' + +test_expect_success 'non fast forward fetch' ' + + test_must_fail git fetch . master:side + +' + +test_expect_success 'forced update' ' + + git fetch . +master:side + +' + +test_done |