builtin-fetch --all/--multi: propagate options correctly
When running a subfetch, the code propagated some options but not others. Propagate --force, --update-head-ok and --keep options as well. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
13e65fe631
commit
bba5322a71
@ -784,13 +784,19 @@ static int add_remote_or_group(const char *name, struct string_list *list)
|
|||||||
static int fetch_multiple(struct string_list *list)
|
static int fetch_multiple(struct string_list *list)
|
||||||
{
|
{
|
||||||
int i, result = 0;
|
int i, result = 0;
|
||||||
const char *argv[] = { "fetch", NULL, NULL, NULL, NULL, NULL, NULL };
|
const char *argv[10] = { "fetch" };
|
||||||
int argc = 1;
|
int argc = 1;
|
||||||
|
|
||||||
if (dry_run)
|
if (dry_run)
|
||||||
argv[argc++] = "--dry-run";
|
argv[argc++] = "--dry-run";
|
||||||
if (prune)
|
if (prune)
|
||||||
argv[argc++] = "--prune";
|
argv[argc++] = "--prune";
|
||||||
|
if (update_head_ok)
|
||||||
|
argv[argc++] = "--update-head-ok";
|
||||||
|
if (force)
|
||||||
|
argv[argc++] = "--force";
|
||||||
|
if (keep)
|
||||||
|
argv[argc++] = "--keep";
|
||||||
if (verbosity >= 2)
|
if (verbosity >= 2)
|
||||||
argv[argc++] = "-v";
|
argv[argc++] = "-v";
|
||||||
if (verbosity >= 1)
|
if (verbosity >= 1)
|
||||||
@ -801,6 +807,7 @@ static int fetch_multiple(struct string_list *list)
|
|||||||
for (i = 0; i < list->nr; i++) {
|
for (i = 0; i < list->nr; i++) {
|
||||||
const char *name = list->items[i].string;
|
const char *name = list->items[i].string;
|
||||||
argv[argc] = name;
|
argv[argc] = name;
|
||||||
|
argv[argc + 1] = NULL;
|
||||||
if (verbosity >= 0)
|
if (verbosity >= 0)
|
||||||
printf("Fetching %s\n", name);
|
printf("Fetching %s\n", name);
|
||||||
if (run_command_v_opt(argv, RUN_GIT_CMD)) {
|
if (run_command_v_opt(argv, RUN_GIT_CMD)) {
|
||||||
|
@ -51,4 +51,25 @@ test_expect_success 'git pull -q -v' '
|
|||||||
test -s err)
|
test -s err)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git pull --force' '
|
||||||
|
mkdir clonedoldstyle &&
|
||||||
|
(cd clonedoldstyle && git init &&
|
||||||
|
cat >>.git/config <<-\EOF &&
|
||||||
|
[remote "one"]
|
||||||
|
url = ../parent
|
||||||
|
fetch = refs/heads/master:refs/heads/mirror
|
||||||
|
[remote "two"]
|
||||||
|
url = ../parent
|
||||||
|
fetch = refs/heads/master:refs/heads/origin
|
||||||
|
[branch "master"]
|
||||||
|
remote = two
|
||||||
|
merge = refs/heads/master
|
||||||
|
EOF
|
||||||
|
git pull two &&
|
||||||
|
test_commit A &&
|
||||||
|
git branch -f origin &&
|
||||||
|
git pull --all --force
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user