summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2016-01-17 00:16:06 +0100
committerAndreas K. Hüttel <dilfridge@gentoo.org>2016-01-17 00:16:46 +0100
commite97050ff8c5fc45e15b899a3f7445594f9daeba9 (patch)
tree9a5f3c8de521c646592299c1d356b05d9dec08a0 /dev-vcs/git/files
parentdev-perl/Finance-Quote: Version bump (diff)
downloadgentoo-e97050ff8c5fc45e15b899a3f7445594f9daeba9.tar.gz
gentoo-e97050ff8c5fc45e15b899a3f7445594f9daeba9.tar.bz2
gentoo-e97050ff8c5fc45e15b899a3f7445594f9daeba9.zip
dev-vcs/git: Conditionally add patches that improve MediaWiki cloning
Package-Manager: portage-2.2.26
Diffstat (limited to 'dev-vcs/git/files')
-rw-r--r--dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch97
-rw-r--r--dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch48
2 files changed, 145 insertions, 0 deletions
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 <kevin@ki-ai.org>
+Date: Fri, 28 Aug 2015 15:53:37 -0500
+Subject: [PATCH] Add namespace support to git-mediawiki
+
+Signed-off-by: Kevin <kevin@ki-ai.org>
+---
+ 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 <lyubomyr-shaydariv@users.noreply.github.com>
+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);
+ }
+