Extract Git classes from git-svn (6/10) (was Re: Fix git-svn tests for SVN 1.7.5.)
From: Michael G Schwern <hidden>
Date: 2016-06-15 22:54:16
Subsystem:
the rest · Maintainer:
Linus Torvalds
From cb1a73929da15e87fa3dcc41c4cfa9ca592081fa Mon Sep 17 00:00:00 2001
From: "Michael G. Schwern" <redacted> Date: Thu, 12 Jul 2012 17:14:24 -0700 Subject: [PATCH 07/11] Fix Git::SVN::Migration after its move. Also... * eliminate the big "import all the Git command functions" loop, nothing needs it any more * only load Git::SVN::Migration if we need it --- git-svn.perl | 28 +++++++++++++++------------- perl/Git/SVN/Migration.pm | 16 +++++++++++++++- perl/Makefile | 1 + t/Git-SVN/00compile.t | 3 ++- 4 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index f2bf759..8b8607d 100755
--- a/git-svn.perl
+++ b/git-svn.perl@@ -11,7 +11,6 @@ $AUTHOR = 'Eric Wong <normalperson@yhbt.net>'; $VERSION = '@@GIT_VERSION@@'; use Git::SVN; -use Git::SVN::Log; use Git::SVN::Utils qw(fatal can_compress);
@@ -77,24 +76,26 @@ use File::Spec; use File::Find; use Getopt::Long qw/:config gnu_getopt no_ignore_case auto_abbrev/; use IPC::Open3; -use Git; + +use Git qw( + git_cmd_try + command + command_oneline + command_noisy + command_output_pipe + command_close_pipe + command_bidi_pipe + command_close_bidi_pipe +); + use Git::SVN::Editor qw//; use Git::SVN::Fetcher qw//; -use Git::SVN::Ra qw//; +use Git::SVN::Log; use Git::SVN::Prompt qw//; +use Git::SVN::Ra qw//; use Memoize; # core since 5.8.0, Jul 2002 BEGIN { - # import functions from Git into our packages, en masse - no strict 'refs'; - foreach (qw/command command_oneline command_noisy command_output_pipe - command_input_pipe command_close_pipe - command_bidi_pipe command_close_bidi_pipe/) { - for my $package ( qw(Git::SVN::Migration), - __PACKAGE__) { - *{"${package}::$_"} = \&{"Git::$_"}; - } - } Memoize::memoize 'Git::config'; Memoize::memoize 'Git::config_bool'; }
@@ -365,6 +366,7 @@ if (defined $_authors_prog) { } unless ($cmd =~ /^(?:clone|init|multi-init|commit-diff)$/) { + require Git::SVN::Migration; Git::SVN::Migration::migration_check(); } Git::SVN::init_vars();
diff --git a/perl/Git/SVN/Migration.pm b/perl/Git/SVN/Migration.pm
index 082a788..b17fe00 100644
--- a/perl/Git/SVN/Migration.pm
+++ b/perl/Git/SVN/Migration.pm@@ -32,12 +32,22 @@ package Git::SVN::Migration; # rebuilding the .rev_db. Rebuilding the rev_db is not # possible if noMetadata or useSvmProps are set; but should # be no problem for users that use the (sensible) defaults. + use strict; use warnings; + use Carp qw/croak/; use File::Path qw/mkpath/; use File::Basename qw/dirname basename/; -use vars qw/$_minimize/; + +our $_minimize; + +use Git qw( + command + command_noisy + command_output_pipe + command_close_pipe +); sub migrate_from_v0 { my $git_dir = $ENV{GIT_DIR};
@@ -146,6 +156,7 @@ sub migrate_from_v2 { read_old_urls(\%l_map, '', "$ENV{GIT_DIR}/svn"); my $migrated = 0; + require Git::SVN; foreach my $ref_id (sort keys %l_map) { eval { Git::SVN->init($l_map{$ref_id}, '', undef, $ref_id) }; if ($@) {
@@ -157,6 +168,9 @@ sub migrate_from_v2 { } sub minimize_connections { + require Git::SVN; + require Git::SVN::Ra; + my $r = Git::SVN::read_all_remotes(); my $new_urls = {}; my $root_repos = {};
diff --git a/perl/Makefile b/perl/Makefile
index 2a4ca57..d6a0e84 100644
--- a/perl/Makefile
+++ b/perl/Makefile@@ -31,6 +31,7 @@ modules += Git/SVN/Memoize/YAML modules += Git/SVN/Fetcher modules += Git/SVN/Editor modules += Git/SVN/Log +modules += Git/SVN/Migration modules += Git/SVN/Prompt modules += Git/SVN/Ra modules += Git/SVN/Utils
diff --git a/t/Git-SVN/00compile.t b/t/Git-SVN/00compile.t
index 37626f4..1307b65 100644
--- a/t/Git-SVN/00compile.t
+++ b/t/Git-SVN/00compile.t@@ -3,9 +3,10 @@ use strict; use warnings; -use Test::More tests => 4; +use Test::More tests => 5; require_ok 'Git::SVN'; require_ok 'Git::SVN::Utils'; require_ok 'Git::SVN::Ra'; require_ok 'Git::SVN::Log'; +require_ok 'Git::SVN::Migration';
--
1.7.11.1