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>
This commit is contained in:

committed by
Junio C Hamano

parent
6eec46bdda
commit
efb98b4453
@ -286,7 +286,7 @@ static int store_updated_refs(const char *url, struct ref *ref_map)
|
|||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
struct commit *commit;
|
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];
|
char note[1024];
|
||||||
const char *what, *kind;
|
const char *what, *kind;
|
||||||
struct ref *rm;
|
struct ref *rm;
|
||||||
@ -353,7 +353,7 @@ static int store_updated_refs(const char *url, struct ref *ref_map)
|
|||||||
note);
|
note);
|
||||||
|
|
||||||
if (ref)
|
if (ref)
|
||||||
update_local_ref(ref, what, verbose, note);
|
rc |= update_local_ref(ref, what, verbose, note);
|
||||||
else
|
else
|
||||||
sprintf(note, "* %-*s %-*s -> FETCH_HEAD",
|
sprintf(note, "* %-*s %-*s -> FETCH_HEAD",
|
||||||
SUMMARY_WIDTH, *kind ? kind : "branch",
|
SUMMARY_WIDTH, *kind ? kind : "branch",
|
||||||
@ -368,7 +368,7 @@ static int store_updated_refs(const char *url, struct ref *ref_map)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return 0;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
37
t/t5518-fetch-exit-status.sh
Executable file
37
t/t5518-fetch-exit-status.sh
Executable file
@ -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
|
Reference in New Issue
Block a user