Merge branch 'mm/mediawiki-dumb-push-fix'
* mm/mediawiki-dumb-push-fix: git-remote-mediawiki: no need to update private ref in non-dumb push git-remote-mediawiki: use no-private-update capability on dumb push transport-helper: add no-private-update capability git-remote-mediawiki: add test and check Makefile targets
This commit is contained in:
commit
100ce1c543
@ -120,6 +120,11 @@ connecting (see the 'connect' command under COMMANDS).
|
|||||||
When choosing between 'push' and 'export', Git prefers 'push'.
|
When choosing between 'push' and 'export', Git prefers 'push'.
|
||||||
Other frontends may have some other order of preference.
|
Other frontends may have some other order of preference.
|
||||||
|
|
||||||
|
'no-private-update'::
|
||||||
|
When using the 'refspec' capability, git normally updates the
|
||||||
|
private ref on successful push. This update is disabled when
|
||||||
|
the remote-helper declares the capability 'no-private-update'.
|
||||||
|
|
||||||
|
|
||||||
Capabilities for Fetching
|
Capabilities for Fetching
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -24,6 +24,11 @@ INSTLIBDIR=$(shell $(MAKE) -C $(GIT_ROOT_DIR)/perl \
|
|||||||
|
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
|
test: all
|
||||||
|
$(MAKE) -C t
|
||||||
|
|
||||||
|
check: perlcritic test
|
||||||
|
|
||||||
install_pm:
|
install_pm:
|
||||||
install $(GIT_MEDIAWIKI_PM) $(INSTLIBDIR)/$(GIT_MEDIAWIKI_PM)
|
install $(GIT_MEDIAWIKI_PM) $(INSTLIBDIR)/$(GIT_MEDIAWIKI_PM)
|
||||||
|
|
||||||
@ -41,4 +46,7 @@ clean:
|
|||||||
rm $(INSTLIBDIR)/$(GIT_MEDIAWIKI_PM)
|
rm $(INSTLIBDIR)/$(GIT_MEDIAWIKI_PM)
|
||||||
|
|
||||||
perlcritic:
|
perlcritic:
|
||||||
perlcritic -2 *.perl
|
perlcritic -5 $(SCRIPT_PERL)
|
||||||
|
-perlcritic -2 $(SCRIPT_PERL)
|
||||||
|
|
||||||
|
.PHONY: all test check install_pm install clean perlcritic
|
||||||
|
@ -590,6 +590,9 @@ sub mw_capabilities {
|
|||||||
print {*STDOUT} "import\n";
|
print {*STDOUT} "import\n";
|
||||||
print {*STDOUT} "list\n";
|
print {*STDOUT} "list\n";
|
||||||
print {*STDOUT} "push\n";
|
print {*STDOUT} "push\n";
|
||||||
|
if ($dumb_push) {
|
||||||
|
print {*STDOUT} "no-private-update\n";
|
||||||
|
}
|
||||||
print {*STDOUT} "\n";
|
print {*STDOUT} "\n";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1211,7 +1214,6 @@ sub mw_push_revision {
|
|||||||
}
|
}
|
||||||
if (!$dumb_push) {
|
if (!$dumb_push) {
|
||||||
run_git(qq(notes --ref=${remotename}/mediawiki add -f -m "mediawiki_revision: ${mw_revision}" ${sha1_commit}));
|
run_git(qq(notes --ref=${remotename}/mediawiki add -f -m "mediawiki_revision: ${mw_revision}" ${sha1_commit}));
|
||||||
run_git(qq(update-ref -m "Git-MediaWiki push" refs/mediawiki/${remotename}/master ${sha1_commit} ${sha1_child}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ do
|
|||||||
echo "*export-marks $gitmarks"
|
echo "*export-marks $gitmarks"
|
||||||
fi
|
fi
|
||||||
test -n "$GIT_REMOTE_TESTGIT_SIGNED_TAGS" && echo "signed-tags"
|
test -n "$GIT_REMOTE_TESTGIT_SIGNED_TAGS" && echo "signed-tags"
|
||||||
|
test -n "$GIT_REMOTE_TESTGIT_NO_PRIVATE_UPDATE" && echo "no-private-update"
|
||||||
echo
|
echo
|
||||||
;;
|
;;
|
||||||
list)
|
list)
|
||||||
|
@ -182,6 +182,17 @@ test_expect_success 'push update refs' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'push update refs disabled by no-private-update' '
|
||||||
|
(cd local &&
|
||||||
|
echo more-update >>file &&
|
||||||
|
git commit -a -m more-update &&
|
||||||
|
git rev-parse --verify testgit/origin/heads/update >expect &&
|
||||||
|
GIT_REMOTE_TESTGIT_NO_PRIVATE_UPDATE=t git push origin update &&
|
||||||
|
git rev-parse --verify testgit/origin/heads/update >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'push update refs failure' '
|
test_expect_success 'push update refs failure' '
|
||||||
(cd local &&
|
(cd local &&
|
||||||
git checkout update &&
|
git checkout update &&
|
||||||
|
@ -28,7 +28,8 @@ struct helper_data {
|
|||||||
connect : 1,
|
connect : 1,
|
||||||
signed_tags : 1,
|
signed_tags : 1,
|
||||||
check_connectivity : 1,
|
check_connectivity : 1,
|
||||||
no_disconnect_req : 1;
|
no_disconnect_req : 1,
|
||||||
|
no_private_update : 1;
|
||||||
char *export_marks;
|
char *export_marks;
|
||||||
char *import_marks;
|
char *import_marks;
|
||||||
/* These go from remote name (as in "list") to private name */
|
/* These go from remote name (as in "list") to private name */
|
||||||
@ -208,6 +209,8 @@ static struct child_process *get_helper(struct transport *transport)
|
|||||||
strbuf_addstr(&arg, "--import-marks=");
|
strbuf_addstr(&arg, "--import-marks=");
|
||||||
strbuf_addstr(&arg, capname + strlen("import-marks "));
|
strbuf_addstr(&arg, capname + strlen("import-marks "));
|
||||||
data->import_marks = strbuf_detach(&arg, NULL);
|
data->import_marks = strbuf_detach(&arg, NULL);
|
||||||
|
} else if (!prefixcmp(capname, "no-private-update")) {
|
||||||
|
data->no_private_update = 1;
|
||||||
} else if (mandatory) {
|
} else if (mandatory) {
|
||||||
die("Unknown mandatory capability %s. This remote "
|
die("Unknown mandatory capability %s. This remote "
|
||||||
"helper probably needs newer version of Git.",
|
"helper probably needs newer version of Git.",
|
||||||
@ -738,7 +741,7 @@ static void push_update_refs_status(struct helper_data *data,
|
|||||||
if (push_update_ref_status(&buf, &ref, remote_refs))
|
if (push_update_ref_status(&buf, &ref, remote_refs))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!data->refspecs)
|
if (!data->refspecs || data->no_private_update)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* propagate back the update to the remote namespace */
|
/* propagate back the update to the remote namespace */
|
||||||
|
Loading…
Reference in New Issue
Block a user