git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC/PATCH] git-remote-mediawiki: reset private ref after non-dumb push

From
Matthieu Moy <matthieu.moy@imag.fr>
Date
Aug 13, 2013, 13:31 UTC
Message-ID
<1376400700-8863-1-git-send-email-Matthieu.Moy@imag.fr>

Git-mediawiki's "dumb push" sends the local revisions to the remote wiki, but does not update the local metadata to reflect the push (hence, the next pull will have to re-import the exported revisions).

The previous implementation was simply omitting the update to the private ref after a dumb push. This was broken by 664059fb62 (Felipe Contreras, Apr 17 2013, transport-helper: update remote helper namespace), which does an automatic update of the private ref (not just the remote-tracking) on push.

This patch fixes git-remote-mediawiki to reset the private ref after the push is completed, cancelling the automatic update triggered by 664059fb62.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
Felipe: Is this the right fix for git-remote-mediawiki? Any better idea?
Thanks,
 contrib/mw-to-git/git-remote-mediawiki.perl | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl
index f8d7d2c..13919ad 100755
--- a/contrib/mw-to-git/git-remote-mediawiki.perl
+++ b/contrib/mw-to-git/git-remote-mediawiki.perl
@@ -53,6 +53,7 @@ if (@ARGV != 2) {
 
 my $remotename = $ARGV[0];
 my $url = $ARGV[1];
+my $reset_private_ref_to = undef;
 
 # Accept both space-separated and multiple keys in config file.
 # Spaces should be written as _ anyway because we'll use chomp.
@@ -161,6 +162,9 @@ sub parse_command {
 	my ($line) = @_;
 	my @cmd = split(/ /, $line);
 	if (!defined $cmd[0]) {
+		if ($reset_private_ref_to) {
+			run_git("update-ref -m \"Git-MediaWiki non-dumb push\" refs/mediawiki/$remotename/master $reset_private_ref_to");
+		}
 		return 0;
 	}
 	if ($cmd[0] eq 'capabilities') {
@@ -1209,9 +1213,10 @@ sub mw_push_revision {
 				die("Unknown error from mw_push_file()\n");
 			}
 		}
-		if (!$dumb_push) {
+		if ($dumb_push) {
+			$reset_private_ref_to = $remoteorigin_sha1;
+		} else {
 			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}));
 		}
 	}
 
-- 
1.8.2.1.349.ge888d28.dirty
Next: Felipe Contreras
Message 1 of 28 in “git-remote-mediawiki: reset private ref after non-dumb push”
  1. git-remote-mediawiki: reset private ref after non-dumb pushMatthieu Moy, Aug 13, 2013
  2. Felipe ContrerasAug 21, 2013
  3. Matthieu MoyAug 21, 2013
  4. Felipe ContrerasAug 22, 2013
  5. Matthieu MoyAug 23, 2013
  6. Felipe ContrerasAug 23, 2013
  7. Matthieu MoyAug 24, 2013
  8. Junio C HamanoAug 25, 2013
  9. Matthieu MoyAug 26, 2013
  10. Matthieu MoyAug 26, 2013
  11. Felipe ContrerasAug 26, 2013
  12. Matthieu MoyAug 27, 2013
  13. 1/4 git-remote-mediawiki: add test and check Makefile targetsMatthieu Moy, Aug 29, 2013
  14. 2/4 transport-helper: add dont-update-private capabilityMatthieu Moy, Aug 29, 2013
  15. Felipe ContrerasAug 29, 2013
  16. 1/4 git-remote-mediawiki: add test and check Makefile targetsMatthieu Moy, Sep 2, 2013
  17. 2/4 transport-helper: add no-private-update capabilityMatthieu Moy, Sep 2, 2013
  18. Felipe ContrerasSep 2, 2013
  19. 2/4 transport-helper: add dont-update-private capabilityMatthieu Moy, Sep 2, 2013
  20. 2/4 transport-helper: add no-private-update capabilityMatthieu Moy, Sep 3, 2013
  21. 3/4 git-remote-mediawiki: use no-private-update capability on dumb pushMatthieu Moy, Sep 2, 2013
  22. 4/4 git-remote-mediawiki: no need to update private ref in non-dumb pushMatthieu Moy, Sep 2, 2013
  23. 3/4 git-remote-mediawiki: use dont-update-private capability on dumb pushMatthieu Moy, Aug 29, 2013
  24. Junio C HamanoAug 29, 2013
  25. 4/4 git-remote-mediawiki: no need to update private ref in non-dumb pushMatthieu Moy, Aug 29, 2013
  26. Junio C HamanoAug 29, 2013
  27. Junio C HamanoAug 26, 2013
  28. Matthieu MoyAug 27, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.