Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gitolite for openSUSE:Factory 
checked in at 2026-09-14 16:21:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gitolite (Old)
 and      /work/SRC/openSUSE:Factory/.gitolite.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gitolite"

Mon Sep 14 16:21:21 2026 rev:15 rq:1377643 version:3.6.15

Changes:
--------
--- /work/SRC/openSUSE:Factory/gitolite/gitolite.changes        2026-03-18 
16:51:32.567636532 +0100
+++ /work/SRC/openSUSE:Factory/.gitolite.new.1265/gitolite.changes      
2026-09-14 16:21:23.059052754 +0200
@@ -1,0 +2,7 @@
+Sun Sep 13 08:16:57 UTC 2026 - Martin Pluskal <[email protected]>
+
+- update to 3.6.15:
+  * allow passing permission and ref to stdin using `access`
+    in batch mode
+
+-------------------------------------------------------------------

Old:
----
  gitolite-3.6.14.tar.gz

New:
----
  gitolite-3.6.15.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gitolite.spec ++++++
--- /var/tmp/diff_new_pack.BuKtA0/_old  2026-09-14 16:21:24.678120789 +0200
+++ /var/tmp/diff_new_pack.BuKtA0/_new  2026-09-14 16:21:24.680120873 +0200
@@ -19,25 +19,24 @@
 %define         gitolite_homedir    /srv/gitolite
 %define         git_user            git
 Name:           gitolite
-Version:        3.6.14
+Version:        3.6.15
 Release:        0
 Summary:        Server for git directory version tracker
 License:        GPL-2.0-or-later
-Group:          Development/Tools/Version Control
-URL:            http://gitolite.com
+URL:            https://gitolite.com
 Source0:        
https://github.com/sitaramc/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
 Source11:       README.SUSE
-Provides:       group(%{git_user})
-Provides:       user(%{git_user})
 BuildRequires:  git
 Requires:       git
 Conflicts:      gitosis
+Provides:       group(%{git_user})
+Provides:       user(%{git_user})
 BuildArch:      noarch
+%{perl_requires}
 %if 0%{?suse_version} >= 1330
-Requires(pre):  user(wwwrun)
 Requires(pre):  user(nginx)
+Requires(pre):  user(wwwrun)
 %endif
-%{perl_requires}
 
 %description
 Gitolite is an access control layer on top of git, which allows access control

++++++ gitolite-3.6.14.tar.gz -> gitolite-3.6.15.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/CHANGELOG 
new/gitolite-3.6.15/CHANGELOG
--- old/gitolite-3.6.14/CHANGELOG       2025-07-18 10:44:16.000000000 +0200
+++ new/gitolite-3.6.15/CHANGELOG       2026-08-08 11:23:35.000000000 +0200
@@ -1,3 +1,9 @@
+2026-08-08  v3.6.15 only one major change:
+
+                    allow passing permission and ref to stdin using `access` 
in batch mode
+                    (brief text added to `gitolite access --help`; more 
details in
+                    src/commands/access script)
+
 2025-07-18  v3.6.14 only one important fix:
 
                     detect HEAD name in admin repo (don't require it be 
"master")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/src/commands/access 
new/gitolite-3.6.15/src/commands/access
--- old/gitolite-3.6.14/src/commands/access     2025-07-18 10:44:16.000000000 
+0200
+++ new/gitolite-3.6.15/src/commands/access     2026-08-08 11:23:35.000000000 
+0200
@@ -9,6 +9,20 @@
 
 our ( $q, $s, $h );    # quiet, show, help
 
+$|++;       # useful when STDOUT is a pipe
+# Additional documentation on the pipe mode.
+# 1.  "access" always had a pipe mode, but only for repo and user, not the
+#     "perm" and "ref" fields
+# 2.  What this enhancement does is allow all 4 fields to be sent in from
+#     STDIN.
+# 3.  The new "t/accesspipe.t" test script exercises both the 3-argument
+#     (repo, user, perm; with ref left as "any") and the 4-argument modes.
+# 4.  One big caveat about using a possibly long-lived "gitolite access"
+#     command serving responses like this is that if the access rules change,
+#     access may not pick up the changes.  If you're doing this you will need
+#     to have a way to restart your script every time gitolite-admin gets
+#     pushed, or a new wild repo is created, to be safe.
+
 =for usage
 Usage:  gitolite access [-q|-s] <repo> <user> <perm> <ref>
 
@@ -22,22 +36,26 @@
   - ref:  defauts to 'any'.  See notes below
 
 Notes:
-  - ref: something like 'master', or 'refs/tags/v1.0', or even a VREF if you
+-   ref: something like 'master', or 'refs/tags/v1.0', or even a VREF if you
     know what they look like.
 
     The 'any' ref is special -- it ignores deny rules, thus simulating
     gitolite's behaviour during the pre-git access check (see 'deny-rules'
     section in rules.html for details).
 
-  - batch mode: see src/triggers/post-compile/update-git-daemon-access-list
+-   batch mode: see src/triggers/post-compile/update-git-daemon-access-list
     for a good example that shows how to test several repos in one invocation.
     This is orders of magnitude faster than running the command multiple
     times; you'll notice if you have more than a hundred or so repos.
 
-  - '-s' shows the rules (conf file name, line number, and rule) that were
+    -   update on batch mode, v3.6.15: batch mode now allows all 4 parameters
+        to be sent in via STDIN, but please see source (src/commands/access)
+        for more details and caveats.
+
+-   '-s' shows the rules (conf file name, line number, and rule) that were
     considered and how they fared.
 
-  - you can also test the ability to create wild repos if you set GL_USER to
+-   you can also test the ability to create wild repos if you set GL_USER to
     the username and use ^C as the permission to check for.
 =cut
 
@@ -49,13 +67,16 @@
 # default ref is 'any'
 $ref ||= 'any';
 # fq the ref if needed
-$ref =~ s(^)(refs/heads/) if $ref and $ref ne 'any' and $ref !~ 
m(^(refs|VREF)/);
-_die "invalid perm" if not( $aa and $aa =~ /^(R|W|\+|C|D|M|\^C)$/ );
-_die "invalid ref name" if not( $ref and $ref =~ $REF_OR_FILENAME_PATT );
+if (not $ref eq '%') {
+    $ref = checkref( $ref );
+}
+if (not $aa eq '%') {
+    _die "invalid perm" if not( $aa and $aa =~ /^(R|W|\+|C|D|M|\^C)$/ );
+}
 
 my $ret = '';
 
-if ( $repo ne '%' and $user ne '%' ) {
+if ( $repo ne '%' and $user ne '%' and $aa ne '%' and $ref ne '%' ) {
     # single repo, single user; no STDIN
     $ret = access( $repo, $user, adjust_aa($repo, $aa), $ref );
 
@@ -75,6 +96,8 @@
 
 $repo = '' if $repo eq '%';
 $user = '' if $user eq '%';
+$aa = '' if $aa eq '%';
+$ref = '' if $ref eq '%';
 
 _die "'-q' and '-s' meaningless in pipe mode" if $q or $s;
 @ARGV = ();
@@ -82,8 +105,14 @@
     my @in = split;
     my $r  = $repo || shift @in;
     my $u  = $user || shift @in;
-    $ret = access( $r, $u, adjust_aa($r, $aa), $ref );
-    print "$r\t$u\t$ret\n";
+    my $a  = $aa   || shift @in;
+    my $rf = $ref  || checkref( shift @in );
+    $ret = access( $r, $u, adjust_aa($r, $a), $rf );
+    if ( $aa and $ref ) {
+        print "$r\t$u\t$ret\n";
+    } else {
+        print "$r\t$u\t$a\t$rf\t$ret\n";
+    }
 }
 
 sub adjust_aa {
@@ -94,6 +123,13 @@
     return $aa;
 }
 
+sub checkref {
+    my $ref = shift;
+    $ref =~ s(^)(refs/heads/) if $ref and $ref ne 'any' and $ref !~ 
m(^(refs|VREF)/);
+    _die "invalid ref name" if not( $ref and $ref =~ $REF_OR_FILENAME_PATT );
+    return $ref
+}
+
 sub show {
     my $ret = shift;
     die "repo already exists; ^C won't work\n" if $ret =~ /DENIED by 
existence/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/src/gitolite 
new/gitolite-3.6.15/src/gitolite
--- old/gitolite-3.6.14/src/gitolite    2025-07-18 10:44:16.000000000 +0200
+++ new/gitolite-3.6.15/src/gitolite    2026-08-08 11:23:35.000000000 +0200
@@ -21,14 +21,9 @@
     list-memberships            list all groups a name is a member of
     list-members                list all members of a group
 
-Warnings:
-  - list-users is disk bound and could take a while on sites with 1000s of 
repos
-  - list-memberships does not check if the name is known; unknown names come
-    back with 2 answers: the name itself and '@all'
-
 In addition, running 'gitolite help' should give you a list of custom commands
 available.  They may or may not respond to '-h', depending on how they were
-written.
+written, but it's worth a try, at least the first time you use a command.
 =cut
 
 # ----------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/src/lib/Gitolite/Hooks/Update.pm 
new/gitolite-3.6.15/src/lib/Gitolite/Hooks/Update.pm
--- old/gitolite-3.6.14/src/lib/Gitolite/Hooks/Update.pm        2025-07-18 
10:44:16.000000000 +0200
+++ new/gitolite-3.6.15/src/lib/Gitolite/Hooks/Update.pm        2026-08-08 
11:23:35.000000000 +0200
@@ -115,25 +115,33 @@
     my ( $ref, $oldsha, $newsha ) = @_;
     my ( $oldtree, $newtree, $aa );
 
+    my $sha256 = 0;
+    my $zeroes = '0' x 40;
     # this is special to git -- the hash of an empty tree
     my $empty = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
-    $oldtree = $oldsha eq '0' x 40 ? $empty : $oldsha;
-    $newtree = $newsha eq '0' x 40 ? $empty : $newsha;
+    if (length($oldsha) == 64) {
+        $sha256 = 1;
+        $zeroes = '0' x 64;
+        $empty = 
'6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321';
+    }
 
-    my $merge_base = '0' x 40;
+    $oldtree = $oldsha eq $zeroes ? $empty : $oldsha;
+    $newtree = $newsha eq $zeroes ? $empty : $newsha;
+
+    my $merge_base = $zeroes;
     # for branch create or delete, merge_base stays at '0'x40
     chomp( $merge_base = `git merge-base $oldsha $newsha` )
-      unless $oldsha eq '0' x 40
-      or $newsha eq '0' x 40;
+      unless $oldsha eq $zeroes
+      or $newsha eq $zeroes;
 
     $aa = 'W';
     # tag rewrite
-    $aa = '+' if $ref =~ m(refs/tags/) and $oldsha ne ( '0' x 40 );
+    $aa = '+' if $ref =~ m(refs/tags/) and $oldsha ne ( $zeroes );
     # non-ff push to ref (including ref delete)
     $aa = '+' if $oldsha ne $merge_base;
 
-    $aa = 'D' if ( option( $ENV{GL_REPO}, 'DELETE_IS_D' ) ) and $newsha eq '0' 
x 40;
-    $aa = 'C' if ( option( $ENV{GL_REPO}, 'CREATE_IS_C' ) ) and $oldsha eq '0' 
x 40;
+    $aa = 'D' if ( option( $ENV{GL_REPO}, 'DELETE_IS_D' ) ) and $newsha eq 
$zeroes;
+    $aa = 'C' if ( option( $ENV{GL_REPO}, 'CREATE_IS_C' ) ) and $oldsha eq 
$zeroes;
 
     # and now "M" commits.  All the other accesses (W, +, C, D) were mutually
     # exclusive in some sense.  Sure a W could be a C or a + could be a D but
@@ -144,7 +152,7 @@
     # effect and this push contains a merge inside)
 
     if ( option( $ENV{GL_REPO}, 'MERGE_CHECK' ) ) {
-        if ( $oldsha eq '0' x 40 or $newsha eq '0' x 40 ) {
+        if ( $oldsha eq $zeroes or $newsha eq $zeroes ) {
             _warn "ref create/delete ignored for purposes of merge-check\n";
         } else {
             $aa .= 'M' if `git rev-list -n 1 --merges $oldsha..$newsha` =~ /./;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/access.t 
new/gitolite-3.6.15/t/access.t
--- old/gitolite-3.6.14/t/access.t      2025-07-18 10:44:16.000000000 +0200
+++ new/gitolite-3.6.15/t/access.t      2026-08-08 11:23:35.000000000 +0200
@@ -215,7 +215,7 @@
 
 ';
 
-try "ADMIN_PUSH set4; !/FATAL/" or die text();
+try "ADMIN_PUSH set5; !/FATAL/" or die text();
 
 try "
     gitolite access foo u1 +;           !ok
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/accesspipe-prep.t 
new/gitolite-3.6.15/t/accesspipe-prep.t
--- old/gitolite-3.6.14/t/accesspipe-prep.t     1970-01-01 01:00:00.000000000 
+0100
+++ new/gitolite-3.6.15/t/accesspipe-prep.t     2026-08-08 11:23:35.000000000 
+0200
@@ -0,0 +1,81 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# this is hardcoded; change it if needed
+use lib "src/lib";
+use Gitolite::Test;
+
+# test 'gitolite access'
+# ----------------------------------------------------------------------
+
+try "plan 32";
+
+confreset;confadd '
+    @admins     =   admin dev1
+    repo gitolite-admin
+        RW+     =   admin
+
+    @g1 = u1
+    @g2 = u2
+    @g3 = u3
+    @gaa = aa
+    repo @gaa
+        RW+                 =   @g1
+        RW                  =   @g2
+        RW+     master      =   @g3
+        RW      master      =   u4
+        -       master      =   u5
+        RW+     dev         =   u5
+        RW                  =   u5
+';
+
+try "ADMIN_PUSH set2; !/FATAL/" or die text();
+
+confadd '
+    @admins     =   admin dev1
+    repo gitolite-admin
+        RW+     =   admin
+
+    @gr1 = r1
+    repo @gr1
+        RW  refs/heads/v[0-9]   = u1
+        RW  refs/heads          = tester
+
+    @gr2 = r2
+    repo @gr2
+        RW  refs/heads/v[0-9]   = u1
+        -   refs/heads/v[0-9]   = tester
+        RW  refs/heads          = tester
+';
+
+try "ADMIN_PUSH set3; !/FATAL/" or die text();
+
+confadd '
+    repo @all
+        R   =   gitweb
+
+    repo c0
+        RW+ =   @all
+    repo c1
+        RWC =   u1
+        RW+ =   @all
+';
+
+try "ADMIN_PUSH set4; !/FATAL/" or die text();
+
+confadd '
+    repo foo
+        R   =   u1
+        RW  =   u2
+        RW+ =   u3
+
+    repo bar
+        R   =   u1
+        RW  =   u2
+        RW+ =   u3
+        RW+CDM  =   u6
+
+';
+
+try "ADMIN_PUSH set5; !/FATAL/" or die text();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/accesspipe.in1 
new/gitolite-3.6.15/t/accesspipe.in1
--- old/gitolite-3.6.14/t/accesspipe.in1        1970-01-01 01:00:00.000000000 
+0100
+++ new/gitolite-3.6.15/t/accesspipe.in1        2026-08-08 11:23:35.000000000 
+0200
@@ -0,0 +1,39 @@
+@gaa @g1 + any
+aa @g1 + refs/heads/master
+@gaa @g1 + refs/heads/next
+@gaa @g1 W refs/heads/next
+@gaa u1 + refs/heads/dev
+@gaa u1 + refs/heads/next
+aa u1 W refs/heads/next
+@gaa @g2 + refs/heads/master
+@gaa @g2 + refs/heads/next
+aa @g2 W refs/heads/master
+aa u2 + any
+@gaa u2 + refs/heads/master
+@gaa u2 W refs/heads/master
+@gaa @g3 + refs/heads/master
+@gaa @g3 W refs/heads/next
+@gaa @g3 W refs/heads/dev
+aa u3 + refs/heads/dev
+aa u3 + refs/heads/next
+@gaa u4 + refs/heads/master
+@gaa u4 W refs/heads/master
+aa u4 + refs/heads/next
+@gaa u4 W refs/heads/next
+@gaa u5 R any
+aa u5 R any
+@gaa u5 + refs/heads/dev
+@gaa u5 + refs/heads/master
+aa u5 + refs/heads/next
+@gaa u5 R refs/heads/dev
+@gaa u5 R refs/heads/master
+@gaa u5 R refs/heads/next
+aa u5 W refs/heads/dev
+aa u5 W refs/heads/master
+@gaa u5 W refs/heads/next
+
+@gr2 tester W refs/heads/v1
+@gr1 tester W refs/heads/v1
+r1 tester W refs/heads/v1
+r2 tester W refs/heads/v1
+r2 tester W refs/heads/va
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/accesspipe.in2 
new/gitolite-3.6.15/t/accesspipe.in2
--- old/gitolite-3.6.14/t/accesspipe.in2        1970-01-01 01:00:00.000000000 
+0100
+++ new/gitolite-3.6.15/t/accesspipe.in2        2026-08-08 11:23:35.000000000 
+0200
@@ -0,0 +1,41 @@
+c0  u1 +
+c0  u1 C
+c0  u2 +
+c0  u2 C
+c1  u1 +
+c1  u1 C
+c1  u2 +
+c1  u2 C
+
+foo u1 +
+foo u2 +
+foo u3 +
+foo u1 C
+foo u2 C
+foo u3 C
+foo u1 D
+foo u2 D
+foo u3 D
+foo u1 M
+foo u2 M
+foo u3 M
+
+bar u1 +
+bar u2 +
+bar u3 +
+bar u1 C
+bar u2 C
+bar u3 C
+bar u1 D
+bar u2 D
+bar u3 D
+bar u1 M
+bar u2 M
+bar u3 M
+
+bar u6 R
+bar u6 W
+bar u6 +
+bar u6 C
+bar u6 D
+bar u6 M
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/accesspipe.ref 
new/gitolite-3.6.15/t/accesspipe.ref
--- old/gitolite-3.6.14/t/accesspipe.ref        1970-01-01 01:00:00.000000000 
+0100
+++ new/gitolite-3.6.15/t/accesspipe.ref        2026-08-08 11:23:35.000000000 
+0200
@@ -0,0 +1,76 @@
+@gaa   @g1     +       any     refs/.*
+aa     @g1     +       refs/heads/master       refs/.*
+@gaa   @g1     +       refs/heads/next refs/.*
+@gaa   @g1     W       refs/heads/next refs/.*
+@gaa   u1      +       refs/heads/dev  refs/.*
+@gaa   u1      +       refs/heads/next refs/.*
+aa     u1      W       refs/heads/next refs/.*
+@gaa   @g2     +       refs/heads/master       + refs/heads/master @gaa @g2 
DENIED by fallthru
+@gaa   @g2     +       refs/heads/next + refs/heads/next @gaa @g2 DENIED by 
fallthru
+aa     @g2     W       refs/heads/master       refs/.*
+aa     u2      +       any     + any aa u2 DENIED by fallthru
+@gaa   u2      +       refs/heads/master       + refs/heads/master @gaa u2 
DENIED by fallthru
+@gaa   u2      W       refs/heads/master       refs/.*
+@gaa   @g3     +       refs/heads/master       refs/heads/master
+@gaa   @g3     W       refs/heads/next W refs/heads/next @gaa @g3 DENIED by 
fallthru
+@gaa   @g3     W       refs/heads/dev  W refs/heads/dev @gaa @g3 DENIED by 
fallthru
+aa     u3      +       refs/heads/dev  + refs/heads/dev aa u3 DENIED by 
fallthru
+aa     u3      +       refs/heads/next + refs/heads/next aa u3 DENIED by 
fallthru
+@gaa   u4      +       refs/heads/master       + refs/heads/master @gaa u4 
DENIED by fallthru
+@gaa   u4      W       refs/heads/master       refs/heads/master
+aa     u4      +       refs/heads/next + refs/heads/next aa u4 DENIED by 
fallthru
+@gaa   u4      W       refs/heads/next W refs/heads/next @gaa u4 DENIED by 
fallthru
+@gaa   u5      R       any     refs/heads/dev
+aa     u5      R       any     refs/heads/dev
+@gaa   u5      +       refs/heads/dev  refs/heads/dev
+@gaa   u5      +       refs/heads/master       + refs/heads/master @gaa u5 
DENIED by refs/heads/master
+aa     u5      +       refs/heads/next + refs/heads/next aa u5 DENIED by 
fallthru
+@gaa   u5      R       refs/heads/dev  refs/heads/dev
+@gaa   u5      R       refs/heads/master       R refs/heads/master @gaa u5 
DENIED by refs/heads/master
+@gaa   u5      R       refs/heads/next refs/.*
+aa     u5      W       refs/heads/dev  refs/heads/dev
+aa     u5      W       refs/heads/master       W refs/heads/master aa u5 
DENIED by refs/heads/master
+@gaa   u5      W       refs/heads/next refs/.*
+@gr2   tester  W       refs/heads/v1   W refs/heads/v1 @gr2 tester DENIED by 
refs/heads/v[0-9]
+@gr1   tester  W       refs/heads/v1   refs/heads
+r1     tester  W       refs/heads/v1   refs/heads
+r2     tester  W       refs/heads/v1   W refs/heads/v1 r2 tester DENIED by 
refs/heads/v[0-9]
+r2     tester  W       refs/heads/va   refs/heads
+c0     u1      +       any     refs/.*
+c0     u1      C       any     refs/.*
+c0     u2      +       any     refs/.*
+c0     u2      C       any     refs/.*
+c1     u1      +       any     refs/.*
+c1     u1      C       any     refs/.*
+c1     u2      +       any     refs/.*
+c1     u2      C       any     C any c1 u2 DENIED by fallthru
+foo    u1      +       any     + any foo u1 DENIED by fallthru
+foo    u2      +       any     + any foo u2 DENIED by fallthru
+foo    u3      +       any     refs/.*
+foo    u1      C       any     W any foo u1 DENIED by fallthru
+foo    u2      C       any     refs/.*
+foo    u3      C       any     refs/.*
+foo    u1      D       any     + any foo u1 DENIED by fallthru
+foo    u2      D       any     + any foo u2 DENIED by fallthru
+foo    u3      D       any     refs/.*
+foo    u1      M       any     W any foo u1 DENIED by fallthru
+foo    u2      M       any     refs/.*
+foo    u3      M       any     refs/.*
+bar    u1      +       any     + any bar u1 DENIED by fallthru
+bar    u2      +       any     + any bar u2 DENIED by fallthru
+bar    u3      +       any     refs/.*
+bar    u1      C       any     C any bar u1 DENIED by fallthru
+bar    u2      C       any     C any bar u2 DENIED by fallthru
+bar    u3      C       any     C any bar u3 DENIED by fallthru
+bar    u1      D       any     D any bar u1 DENIED by fallthru
+bar    u2      D       any     D any bar u2 DENIED by fallthru
+bar    u3      D       any     D any bar u3 DENIED by fallthru
+bar    u1      M       any     M any bar u1 DENIED by fallthru
+bar    u2      M       any     M any bar u2 DENIED by fallthru
+bar    u3      M       any     M any bar u3 DENIED by fallthru
+bar    u6      R       any     refs/.*
+bar    u6      W       any     refs/.*
+bar    u6      +       any     refs/.*
+bar    u6      C       any     refs/.*
+bar    u6      D       any     refs/.*
+bar    u6      M       any     refs/.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/accesspipe.t 
new/gitolite-3.6.15/t/accesspipe.t
--- old/gitolite-3.6.14/t/accesspipe.t  1970-01-01 01:00:00.000000000 +0100
+++ new/gitolite-3.6.15/t/accesspipe.t  2026-08-08 11:23:35.000000000 +0200
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# this needs to be run right after t/access.t because we're using the conf
+# used in the last step of that test.
+
+# ----------------------------------------------------------------------
+# setup the reference output
+
+# ----------------------------------------------------------------------
+# print plan
+
+echo 1..76
+
+# ----------------------------------------------------------------------
+# run the test
+
+count=0
+
+pipein() {
+    cat $1 | while read i; do
+        [[ -n "$i" ]] || continue
+        echo "$i"
+        sleep 0.05
+    done | gitolite access % % % $2 | while read o; do
+        echo "$o"
+    done | while read result; do
+        (( count += 1 ))
+        ref=$(sed -ne $count"p" < t/accesspipe.ref)
+        if test "$result" = "$ref"; then
+            echo "ok ($count)"
+        else
+            echo "not ok ($count)"
+            # echo "expected: $ref" >&2
+            # echo "  actual: $result" >&2
+            # echo >&2
+        fi
+    done
+}
+
+# the 4-arguments-per-line-of-STDIN mode first
+pipein t/accesspipe.in1 %
+
+# the updated counter is deep inside a loop, and we want both the "in1" and
+# "in2" to look like one seamless input.
+count=38
+
+# now the 3-arguments-per-line mode
+pipein t/accesspipe.in2 any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gitolite-3.6.14/t/basic.t 
new/gitolite-3.6.15/t/basic.t
--- old/gitolite-3.6.14/t/basic.t       2025-07-18 10:44:16.000000000 +0200
+++ new/gitolite-3.6.15/t/basic.t       2026-08-08 11:23:35.000000000 +0200
@@ -211,7 +211,7 @@
     PUSH u5 +foo^:foo
                                 !ok;    gsh
                                         reject
-                                        /remote: FATAL: \\+ refs/heads/foo aa 
u5 DENIED by fallthru/
+                                        /FATAL: \\+ refs/heads/foo aa u5 
DENIED by fallthru/
 
     # u5 push foo ok
     git checkout foo

Reply via email to