From 1c590e633f02f5bb908f6fe27e17f78655d98815 Mon Sep 17 00:00:00 2001 From: Sitaram Chamarty Date: Thu, 22 Mar 2012 06:17:34 +0530 Subject: [PATCH] run compat checks when old rc found (also removed legacy-delegation sugar script) --- src/Gitolite/Compat.pm | 60 +++++++++++++++++++++ src/Gitolite/Rc.pm | 9 +++- src/syntactic-sugar/legacy-delegation-abort | 26 --------- t/deleg-1.t | 3 +- t/deleg-2.t | 5 +- 5 files changed, 69 insertions(+), 34 deletions(-) create mode 100644 src/Gitolite/Compat.pm delete mode 100755 src/syntactic-sugar/legacy-delegation-abort diff --git a/src/Gitolite/Compat.pm b/src/Gitolite/Compat.pm new file mode 100644 index 0000000..cd69768 --- /dev/null +++ b/src/Gitolite/Compat.pm @@ -0,0 +1,60 @@ +#!/usr/bin/perl + +# a quick and dirty program to warn about compatibilities issues in your +# current gitolite 2 setup, with the new one. + +@EXPORT = qw( +); + +use Exporter 'import'; + +use lib $ENV{GL_BINDIR}; +use Gitolite::Common; + +my $header_printed = 0; + +my $glrc = "$ENV{HOME}/.gitolite.rc"; +do "$glrc"; +if (defined($GL_ADMINDIR)) { + check_compat(); + if ($header_printed) { + say2 "Please read the documentation for additional details on migrating.\n\n" + } else { + say2 " +It looks like there were no real issues found, but you should still read the +documentation for additional details on migrating. + +"; + } +} + +sub check_compat { + chdir($GL_ADMINDIR) or die "FATAL: could not chdir to $GL_ADMINDIR\n"; + + my $conf = `find . -name "*.conf" | xargs cat`; + + g2warn("MUST fix", "fallthru in NAME rules; this affects user's push rights") + if $conf =~ m(NAME/); + + g2warn("MUST fix", "subconf command in admin repo; this affects conf compilation") + if $conf =~ m(NAME/conf/fragments); +} + +sub header { + return if $header_printed; + $header_printed++; + + say2 " + The following is a list of compat issues found, if any. Please see the + compatibility with gitolite 2' section of the documentation for additional + details on each issue found.\n"; +} + +sub g2warn { + my ($cat, $msg) = @_; + header(); + say2 "$cat: $msg\n"; +} + +1; + diff --git a/src/Gitolite/Rc.pm b/src/Gitolite/Rc.pm index ad2de11..12b8c23 100644 --- a/src/Gitolite/Rc.pm +++ b/src/Gitolite/Rc.pm @@ -57,7 +57,13 @@ my $current_data_version = "3.0"; my $rc = glrc('filename'); do $rc if -r $rc; -_die "$rc seems to be for older gitolite" if defined($GL_ADMINDIR); +if (defined($GL_ADMINDIR)) { + say2 ""; + say2 "FATAL: $rc seems to be for older gitolite; checking compat"; + require Gitolite::Compat; + + exit 1; +} # let values specified in rc file override our internal ones @rc{ keys %RC } = values %RC; @@ -246,7 +252,6 @@ __DATA__ SYNTACTIC_SUGAR => [ # 'continuation-lines', - 'legacy-delegation-abort', ], # comment out or uncomment as needed diff --git a/src/syntactic-sugar/legacy-delegation-abort b/src/syntactic-sugar/legacy-delegation-abort deleted file mode 100755 index 1625632..0000000 --- a/src/syntactic-sugar/legacy-delegation-abort +++ /dev/null @@ -1,26 +0,0 @@ -# vim: syn=perl: - -# "sugar script" (syntactic sugar helper) for gitolite3 - -# Aborts if you appear to be using legacy delegation. - -# Note: you cannot fix this using sugar; subconf processing has already -# happened by the time it gets to this point. - -# TODO: supply doc keyword, and that doc should tell people to add this to the -# end of the main conf file: - -# repo gitolite-admin -# - NAME/ = @all -# subconf "fragments/*.conf" - -sub sugar_script { - Gitolite::Common::trace( 2, "running 'legacy-delegation-warn' sugar script..." ); - my $lines = shift; - - my $text = join("\n", @$lines); - if ($text =~ m(NAME/conf/fragments/) and $text !~ /^subconf /m) { - die "\t**** ABORT ****\nYou may be using legacy delegation; see docs\n"; - } - return $lines; -} diff --git a/t/deleg-1.t b/t/deleg-1.t index bf47d4a..b969543 100755 --- a/t/deleg-1.t +++ b/t/deleg-1.t @@ -9,7 +9,7 @@ use Gitolite::Test; # delegation tests -- part 1 # ---------------------------------------------------------------------- -try "plan 55"; +try "plan 53"; try " DEF SP_1 = git add conf ; ok; git commit -m %1; ok; /master.* %1/ @@ -33,7 +33,6 @@ confreset;confadd ' subconf "fragments/*.conf" '; try "ADMIN_PUSH set1; !/FATAL/" or die text(); -try "/ABORT/; /legacy delegation/"; mkdir "conf/fragments"; put "conf/fragments/u1r.conf", ' diff --git a/t/deleg-2.t b/t/deleg-2.t index 8c5a400..54f5156 100755 --- a/t/deleg-2.t +++ b/t/deleg-2.t @@ -9,7 +9,7 @@ use Gitolite::Test; # delegation tests -- part 2 # ---------------------------------------------------------------------- -try "plan 56"; +try "plan 54"; try " DEF SP_1 = git add conf ; ok; git commit -m %1; ok; /master.* %1/ @@ -35,9 +35,6 @@ confreset;confadd ' '; try "ADMIN_PUSH set1; !/FATAL/" or die text(); -try " - /ABORT/; /legacy delegation/ -"; try "mkdir -p conf/fragments; ok";