Content-Disposition: inline; filename="6d0a8bd712b664769b18a5deae743f97bafc141f..f1b90f46724539d5384bcd8c2be92aafc650bc85.patch"
Last-Modified: Thu, 07 May 2026 19:09:55 GMT
Expires: Sun, 04 May 2036 19:09:55 GMT

From f1b90f46724539d5384bcd8c2be92aafc650bc85 Mon Sep 17 00:00:00 2001
From: Nicolas Vigier <boklm@mars-attacks.org>
Date: Sun, 22 Sep 2013 01:01:25 +0200
Subject: Allow non-ldap group definitions

---
 NEWS           |  1 +
 README         | 17 +++++++++++++----
 lib/MGA/Git.pm | 13 +++++++++++--
 3 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/NEWS b/NEWS
index 58bcbe6..2d0d3ec 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,5 @@
 - soft_repo.gl: Put maintainer nick in square brackets
+- allow non-ldap group definitions
 
 Version 0.10
 
diff --git a/README b/README
index ed9060c..13c0368 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ How it works
 
 mgagit takes :
  - an ldap directory containing groups, and users with ssh keys
- - repositories definitions
+ - repositories and non-ldap groups definitions
 
 And generate the corresponding gitolite configuration and keys directory.
 
@@ -77,12 +77,21 @@ The following configuration options are available :
         directory containing repos definitions (see repos_config)
 
  repos_config:
-        list of repos definition directories. Use something like
-        this to include a directory containing repos definitions :
+        list of repos and / or group definition directories. Use
+        something like this to include a directory containing repos or
+        groups definitions :
 
     prefix:
-        prefix in the repos tree
+        prefix in the repos tree. In case of git_url or include_dir,
+        this is also used to indicate that the included directory
+        defines repos (*.repo files).
    
+    group_prefix:
+        This value is prefixed to the defined group names. This is also
+        used to indicate that the included directory can contain groups
+        definitions (*.group files). If you don't want to have a prefix,
+        but still want to define groups, set an empty string.
+
     git_url:
         url of a git repository containing definitions, that will be
         cloned and pulled, in 'repodef_dir'
diff --git a/lib/MGA/Git.pm b/lib/MGA/Git.pm
index c46dc4e..f87e9af 100644
--- a/lib/MGA/Git.pm
+++ b/lib/MGA/Git.pm
@@ -35,15 +35,24 @@ sub load_gitrepos_dir {
         if (-d "$infos->{include_dir}/$file") {
             next if $file =~ m/^\./;
             my %i = %$infos;
-            $i{prefix} .= '/' . $file;
+            $i{prefix} .= '/' . $file if $i{prefix};
             $i{include_dir} .= '/' . $file;
             load_gitrepos_dir($r, \%i);
-        } elsif ($file =~ m/(.+)\.repo$/) {
+        } elsif ($file =~ m/(.+)\.repo$/ && $infos->{prefix}) {
             my $bname = $1;
             my $name = "$infos->{prefix}/$bname";
             $r->{repos}{$name} = LoadFile("$infos->{include_dir}/$file");
             $r->{repos}{$name}{name} = $bname;
             @{$r->{repos}{$name}}{keys %$infos} = values %$infos;
+        } elsif ($file =~ m/(.+)\.group$/ && exists $infos->{group_prefix}) {
+            my $bname = $1;
+            my $name = $infos->{group_prefix} . $bname;
+            if (exists $r->{groups}{$name}) {
+                print STDERR "Warning: Redifinition of $name group.\n";
+                next;
+            }
+            $r->{groups}{$name} = [ read_file("$infos->{include_dir}/$file") ];
+            chomp @{$r->{groups}{$name}};
         }
     }
     closedir $dh;
-- 
cgit v1.2.1

e</a>/<a href='/web/forums/commit/phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7'>drakx</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='0afd410ae7917eefe4750fbe8f0878f92a4063b7'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>3D-I &lt;480857+3D-I@users.noreply.github.com&gt;</td><td class='right'>2019-12-23 21:36:13 +0100</td></tr>
<tr><th>committer</th><td>3D-I &lt;480857+3D-I@users.noreply.github.com&gt;</td><td class='right'>2019-12-23 21:36:13 +0100</td></tr>
<tr><th>commit</th><td colspan='2' class='sha1'><a href='/web/forums/commit/phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7'>0afd410ae7917eefe4750fbe8f0878f92a4063b7</a> (<a href='/web/forums/patch/phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='sha1'><a href='/web/forums/tree/?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7'>fbe30e0b2658dd93edd0b1d97b0ca20249adfd5d</a> /<a href='/web/forums/tree/phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7'>phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx</a></td></tr>
<tr><th>parent</th><td colspan='2' class='sha1'><a href='/web/forums/commit/phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx?id=1a9ab15f26e95c73e8ea94b866a97ee314b2b37e'>1a9ab15f26e95c73e8ea94b866a97ee314b2b37e</a> (<a href='/web/forums/diff/phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7&amp;id2=1a9ab15f26e95c73e8ea94b866a97ee314b2b37e'>diff</a>)</td></tr><tr><th>download</th><td colspan='2' class='sha1'><a href='/web/forums/snapshot/forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar'>forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar</a><br/><a href='/web/forums/snapshot/forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar.gz'>forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar.gz</a><br/><a href='/web/forums/snapshot/forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar.bz2'>forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar.bz2</a><br/><a href='/web/forums/snapshot/forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar.xz'>forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.tar.xz</a><br/><a href='/web/forums/snapshot/forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.zip'>forums-0afd410ae7917eefe4750fbe8f0878f92a4063b7.zip</a><br/></td></tr></table>
<div class='commit-subject'>[ticket/15902] Out of range error with Sphinx search</div><div class='commit-msg'>The reporter he's waiting this fix to be in the core.
I created this PR based on trusting his report.
I can't test it.

PHPBB3-15902
</div><div class='diffstat-header'><a href='/web/forums/diff/?id=0afd410ae7917eefe4750fbe8f0878f92a4063b7'>Diffstat</a> (limited to 'phpBB/phpbb/install/ssh:/git@git.mageia.org/software/drakx')</div><table summary='diffstat' class='diffstat'></table><div class='diffstat-summary'>0 files changed, 0 insertions, 0 deletions</div><table summary='diff' class='diff'><tr><td></td></tr></table></div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.1</a> (<a href='https://git-scm.com/'>git 2.21.0</a>) at 2026-05-07 19:09:55 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
