From e97050ff8c5fc45e15b899a3f7445594f9daeba9 Mon Sep 17 00:00:00 2001 From: "Andreas K. Hüttel" Date: Sun, 17 Jan 2016 00:16:06 +0100 Subject: dev-vcs/git: Conditionally add patches that improve MediaWiki cloning Package-Manager: portage-2.2.26 --- .../git/files/git-2.7.0-mediawiki-namespaces.patch | 97 ++++++++++++++++++++++ .../git/files/git-2.7.0-mediawiki-subpages.patch | 48 +++++++++++ 2 files changed, 145 insertions(+) create mode 100644 dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch create mode 100644 dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch (limited to 'dev-vcs/git/files') diff --git a/dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch b/dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch new file mode 100644 index 000000000000..72ab2126fa9c --- /dev/null +++ b/dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch @@ -0,0 +1,97 @@ +source: +https://gist.github.com/anarcat/f821fa285c6b8b6b16a5 +https://github.com/moy/Git-Mediawiki/issues/10 + + +From 147224cfe6143c44b16aec0bb6d6a506a6b96ced Mon Sep 17 00:00:00 2001 +From: Kevin +Date: Fri, 28 Aug 2015 15:53:37 -0500 +Subject: [PATCH] Add namespace support to git-mediawiki + +Signed-off-by: Kevin +--- + contrib/mw-to-git/git-remote-mediawiki.perl | 34 +++++++++++++++++++++++++++-- + 1 file changed, 32 insertions(+), 2 deletions(-) + +diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl +index 8dd74a9..662a5b5 100755 +--- a/contrib/mw-to-git/git-remote-mediawiki.perl ++++ b/contrib/mw-to-git/git-remote-mediawiki.perl +@@ -17,6 +17,7 @@ use Git; + use Git::Mediawiki qw(clean_filename smudge_filename connect_maybe + EMPTY HTTP_CODE_OK); + use DateTime::Format::ISO8601; ++use Scalar::Util; + use warnings; + + # By default, use UTF-8 to communicate with Git and the user +@@ -63,6 +64,10 @@ chomp(@tracked_pages); + my @tracked_categories = split(/[ \n]/, run_git("config --get-all remote.${remotename}.categories")); + chomp(@tracked_categories); + ++# Just like @tracked_categories, but for MediaWiki namespaces. ++my @tracked_namespaces = split(/[ \n]/, run_git("config --get-all remote.${remotename}.namespaces")); ++chomp(@tracked_namespaces); ++ + # Import media files on pull + my $import_media = run_git("config --get --bool remote.${remotename}.mediaimport"); + chomp($import_media); +@@ -256,6 +261,23 @@ sub get_mw_tracked_categories { + return; + } + ++sub get_mw_tracked_namespaces { ++ my $pages = shift; ++ foreach my $local_namespace (@tracked_namespaces) { ++ my $mw_pages = $mediawiki->list( { ++ action => 'query', ++ list => 'allpages', ++ apnamespace => get_mw_namespace_id($local_namespace), ++ aplimit => 'max' } ) ++ || die $mediawiki->{error}->{code} . ': ' ++ . $mediawiki->{error}->{details} . "\n"; ++ foreach my $page (@{$mw_pages}) { ++ $pages->{$page->{title}} = $page; ++ } ++ } ++ return; ++} ++ + sub get_mw_all_pages { + my $pages = shift; + # No user-provided list, get the list of pages from the API. +@@ -319,6 +341,10 @@ sub get_mw_pages { + $user_defined = 1; + get_mw_tracked_categories(\%pages); + } ++ if (@tracked_namespaces) { ++ $user_defined = 1; ++ get_mw_tracked_namespaces(\%pages); ++ } + if (!$user_defined) { + get_mw_all_pages(\%pages); + } +@@ -1263,7 +1289,6 @@ my %cached_mw_namespace_id; + sub get_mw_namespace_id { + $mediawiki = connect_maybe($mediawiki, $remotename, $url); + my $name = shift; +- + if (!exists $namespace_id{$name}) { + # Look at configuration file, if the record for that namespace is + # already cached. Namespaces are stored in form: +@@ -1331,7 +1356,12 @@ sub get_mw_namespace_id { + sub get_mw_namespace_id_for_page { + my $namespace = shift; + if ($namespace =~ /^([^:]*):/) { +- return get_mw_namespace_id($namespace); ++ my ($ns, $id) = split(/:/, $namespace); ++ if (Scalar::Util::looks_like_number($id)) { ++ return get_mw_namespace_id($ns); ++ } else{ ++ return ++ } + } else { + return; + } +-- +2.5.0 diff --git a/dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch b/dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch new file mode 100644 index 000000000000..c798a894d3f8 --- /dev/null +++ b/dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch @@ -0,0 +1,48 @@ +From 2593304723c6def159c10b9060dafa78a775a057 Mon Sep 17 00:00:00 2001 +From: Lyubomyr Shaydariv +Date: Fri, 11 Sep 2015 00:41:17 +0300 +Subject: [PATCH] git-remote-mediawiki: support subpages as subdirectories + +This is a fix for https://github.com/moy/Git-Mediawiki/issues/22 +The subdirectories option is enabled using -c remote.origin.subpageDirs=true +during the cloning and it is not recommended to be modified in or +removed from .git/config after the cloning. +--- + contrib/mw-to-git/git-remote-mediawiki.perl | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl +index 8dd74a9..f3624be 100755 +--- a/contrib/mw-to-git/git-remote-mediawiki.perl ++++ b/contrib/mw-to-git/git-remote-mediawiki.perl +@@ -63,6 +63,11 @@ + my @tracked_categories = split(/[ \n]/, run_git("config --get-all remote.${remotename}.categories")); + chomp(@tracked_categories); + ++# Use subdirectories for subpages ++my $use_subpage_dirs = run_git("config --get --bool remote.${remotename}.subpageDirs"); ++chomp($use_subpage_dirs); ++$use_subpage_dirs = ($use_subpage_dirs eq 'true'); ++ + # Import media files on pull + my $import_media = run_git("config --get --bool remote.${remotename}.mediaimport"); + chomp($import_media); +@@ -689,6 +694,9 @@ sub fe_escape_path { + $path =~ s/\\/\\\\/g; + $path =~ s/"/\\"/g; + $path =~ s/\n/\\n/g; ++ if ($use_subpage_dirs) { ++ $path =~ s/%2F/\//g; ++ } + return qq("${path}"); + } + +@@ -927,7 +935,7 @@ sub mw_import_revids { + # If this is a revision of the media page for new version + # of a file do one common commit for both file and media page. + # Else do commit only for that page. +- print {*STDERR} "${n}/", scalar(@{$revision_ids}), ": Revision #$rev->{revid} of $commit{title}\n"; ++ print {*STDERR} "${n}/", scalar(@{$revision_ids}), ": Revision #$rev->{revid} of ", fe_escape_path($commit{title}), "\n"; + import_file_revision(\%commit, ($fetch_from == 1), $n_actual, \%mediafile); + } + -- cgit v1.2.3-65-gdbad