Git Server lokal im Netz als File Share

Wenn man keinen richtigen Server genehmigt bekommt, erlaubt Git den folgenden Notbehelf, indem ein Netzwerkverzeichnis für Git als Repository- Server eingerichtet wird.

Das geht folgendermassen 1):

Auf dem Netzwerkdrive wird ein „Bare“- Repository angelegt:

mkdir Repository.git
cd Repository.git
git init --bare

das lokale Arbeitsverzeichnis wird ganz normal als git repository aktiviert

git init
git add .
git commit -m "Initial commit."

Im Repository wird die Datei hooks/post-receive angegelegt, damit jeder Commit eine Spiegelung der aktuellen Daten in ein anderes Verzeichnis auslöst, wo dann die Allgemeinheit in Ermangelung eines richtigen Servers die Daten zumindest lesen kann.

post-receive
#!/bin/sh
echo "Executing post-receive script. (Located in the --bare repo's hooks folder.)"
 
# Instructions:
# Put this file into your .git/hooks folder and set as executable 
 
#- for Windows (attrib +x pre-commit)
#- for ubuntu (chmod +x pre-commit)
 
 
DEPLOYDIR=/k/Konstruktion/Neue_Projekt_Struktur-READ_ONLY/Projekt/Modelljahr/EL # The place to deploy to.
BRANCH="main"
 
read oldrev newrev ref
 
# Only auto-deploy (checkout) the $BRANCH specified above.
if [[ $ref = refs/heads/$BRANCH ]];
then
  echo "Branch $ref received. Deploying ${BRANCH} branch to \"$DEPLOYDIR\" folder."
  git --work-tree=$DEPLOYDIR checkout -f
  git log -n 10 --name-status  > $DEPLOYDIR/top_commit.txt
  echo "Done."
else
     echo "Branch $ref received. Doing nothing: only the ${BRANCH} branch may be auto-deployed to the \"$DEPLOYDIR\" folder."
fi

Das Ziel- Verzeichnis muss auch existieren!

mkdir -p /k/Konstruktion/Neue_Projekt_Struktur-READ_ONLY/Projekt/Modelljahr/EL

Das Netzwerklaufwerk als remote einrichten, dabei darauf achten, dass man nicht aus Versehen im (Unix-) Git Bash Fenster versucht, einen Windows- Share Drive einzutragen, sondern an dieser Stelle dann wirklich auch den Betriebssystem- Nativen Git CLient verwenden

git remote add origin K:\Konstruktion\Neue_Projekt_Struktur-DO_NOT_TOUCH-GIT_INTERNAL\Projekt\Modelljahr\EL.git

und wenn das alles fertig ist, kann man den ersten Datentransfer wagen.

git push --set-upstream origin main

ab jetzt kann man lokal ganz normal arbeiten und findet den aktuellen Repository- Stand im Neue_Projekt_Struktur-READ_ONLY.. Verzeichnis als Lese- Kopie.