Nimbin[12]?Web & Tools / Git-Server / commits / 49f745a

Git-Server git · main

gitsync + this read-only git browser

git php bash apache self-hosted · first commit 2026-10-05 · last commit 2026-10-06 (3 days ago) · synced 3 days ago

PHP 77.1% CSS 11.4% Markdown 8.6% Makefile 2.9%
git clone https://git.christianimmanuel.de/web-tools/Git-Server.gitwget https://git.christianimmanuel.de/web-tools/Git-Server/archive/Git-Server.tar.gz

Fix git clone bug

Christian Immanuel · 2026-10-05 10:39 · 49f745a0151a3b18ce22cae38c8fe2f9577a1cea

 apache/git.christianimmanuel.de-common.conf | 10 +++++-----
 gitsync                                     |  2 +-
 web/index.php                               |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/apache/git.christianimmanuel.de-common.conf b/apache/git.christianimmanuel.de-common.conf
index e3272d9..5293f88 100644
--- a/apache/git.christianimmanuel.de-common.conf
+++ b/apache/git.christianimmanuel.de-common.conf
@@ -4,18 +4,18 @@
 
 DocumentRoot /var/www/html/git.christianimmanuel.de
 
-# --- clone via smart HTTP (read-only: no receive-pack is exposed) ---
+# --- clone via smart HTTP (read-only: no receive-pack is exposed), with or without .git ---
 SetEnv GIT_PROJECT_ROOT /var/www/html/git.christianimmanuel.de/repos
 SetEnv GIT_HTTP_EXPORT_ALL 1
 SetEnv GIT_CONFIG_COUNT 1
 SetEnv GIT_CONFIG_KEY_0 safe.directory
 SetEnv GIT_CONFIG_VALUE_0 *
 ScriptAliasMatch \
-    "(?x)^/([^/]+/[^/]+\.git/(HEAD|info/refs|objects/(info/[^/]+|[0-9a-f]{2}/[0-9a-f]{38,62}|pack/pack-[0-9a-f]{40,64}\.(pack|idx))|git-upload-pack))$" \
-    /usr/lib/git-core/git-http-backend/$1
+    "(?x)^/([^/]+/[^/]+?)(?:\.git)?/(HEAD|info/refs|objects/(info/[^/]+|[0-9a-f]{2}/[0-9a-f]{38,62}|pack/pack-[0-9a-f]{40,64}\.(pack|idx))|git-upload-pack)$" \
+    /usr/lib/git-core/git-http-backend/$1.git/$2
 ScriptAliasMatch \
-    "(?x)^/private/([^/]+/[^/]+\.git/(HEAD|info/refs|objects/(info/[^/]+|[0-9a-f]{2}/[0-9a-f]{38,62}|pack/pack-[0-9a-f]{40,64}\.(pack|idx))|git-upload-pack))$" \
-    /usr/lib/git-core/git-http-backend/.private/$1
+    "(?x)^/private/([^/]+/[^/]+?)(?:\.git)?/(HEAD|info/refs|objects/(info/[^/]+|[0-9a-f]{2}/[0-9a-f]{38,62}|pack/pack-[0-9a-f]{40,64}\.(pack|idx))|git-upload-pack)$" \
+    /usr/lib/git-core/git-http-backend/.private/$1.git/$2
 
 <Directory /usr/lib/git-core>
     Options +ExecCGI
diff --git a/gitsync b/gitsync
index 202613b..2dd4d62 100755
--- a/gitsync
+++ b/gitsync
@@ -3,7 +3,7 @@
 # 100% Vibecode but tested.
 set -eu
 
-VERSION="1.9.2"
+VERSION="1.9.3"
 CONF="${GITSYNC_CONF:-$HOME/.config/gitsync/gitsync.conf}"
 STAGE="${GITSYNC_STAGE:-$HOME/.cache/gitsync}"
 DRYRUN=0 LOCAL=0 VERBOSE=0 FORCE=0 LIST=0 QUIET=0 SSH_KEY=""
diff --git a/web/index.php b/web/index.php
index 2528418..74aa30d 100644
--- a/web/index.php
+++ b/web/index.php
@@ -1,7 +1,7 @@
 <?php
 declare(strict_types=1);
 /* git.christianimmanuel.de - read-only git browser. 100% Vibecode but tested. Works in lynx. */
-const VERSION = '1.9.2';
+const VERSION = '1.9.3';
 const SITE = 'Nimbin[12]?';
 const LEGAL = 'https://christianimmanuel.de';
 $ROOT   = __DIR__ . '/repos';