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'.
|
||||
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
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -24,6 +24,11 @@ INSTLIBDIR=$(shell $(MAKE) -C $(GIT_ROOT_DIR)/perl \
|
||||
|
||||
all: build
|
||||
|
||||
test: all
|
||||
$(MAKE) -C t
|
||||
|
||||
check: perlcritic test
|
||||
|
||||
install_pm:
|
||||
install $(GIT_MEDIAWIKI_PM) $(INSTLIBDIR)/$(GIT_MEDIAWIKI_PM)
|
||||
|
||||
@ -41,4 +46,7 @@ clean:
|
||||
rm $(INSTLIBDIR)/$(GIT_MEDIAWIKI_PM)
|
||||
|
||||
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} "list\n";
|
||||
print {*STDOUT} "push\n";
|
||||
if ($dumb_push) {
|
||||
print {*STDOUT} "no-private-update\n";
|
||||
}
|
||||
print {*STDOUT} "\n";
|
||||
return;
|
||||
}
|
||||
@ -1211,7 +1214,6 @@ sub mw_push_revision {
|
||||
}
|
||||
if (!$dumb_push) {
|
||||
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"
|
||||
fi
|
||||
test -n "$GIT_REMOTE_TESTGIT_SIGNED_TAGS" && echo "signed-tags"
|
||||
test -n "$GIT_REMOTE_TESTGIT_NO_PRIVATE_UPDATE" && echo "no-private-update"
|
||||
echo
|
||||
;;
|
||||
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' '
|
||||
(cd local &&
|
||||
git checkout update &&
|
||||
|
@ -28,7 +28,8 @@ struct helper_data {
|
||||
connect : 1,
|
||||
signed_tags : 1,
|
||||
check_connectivity : 1,
|
||||
no_disconnect_req : 1;
|
||||
no_disconnect_req : 1,
|
||||
no_private_update : 1;
|
||||
char *export_marks;
|
||||
char *import_marks;
|
||||
/* 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, capname + strlen("import-marks "));
|
||||
data->import_marks = strbuf_detach(&arg, NULL);
|
||||
} else if (!prefixcmp(capname, "no-private-update")) {
|
||||
data->no_private_update = 1;
|
||||
} else if (mandatory) {
|
||||
die("Unknown mandatory capability %s. This remote "
|
||||
"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))
|
||||
continue;
|
||||
|
||||
if (!data->refspecs)
|
||||
if (!data->refspecs || data->no_private_update)
|
||||
continue;
|
||||
|
||||
/* propagate back the update to the remote namespace */
|
||||
|
Loading…
Reference in New Issue
Block a user