Git auf dem Server: Unterschied zwischen den Versionen

Aus Vokabulabor
Zur Navigation springen Zur Suche springen
Zeile 10: Zeile 10:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt install git
apt install git
adduser --system git --shell /usr/bin/git-shell
adduser --system git --quiet --disabled-password --shell /usr/bin/git-shell
REPO=/home/git/repo
REPO=/home/git/repo
mkdir -p $REPO
mkdir -p $REPO

Version vom 22. Februar 2024, 06:37 Uhr

Links

Zielsetzung

Es soll ein Server so hergerichtet werden, dass dort einfach auf zentrale Git-Repositories zugegregriffen werden kann.

Installation

apt install git
adduser --system git --quiet --disabled-password --shell /usr/bin/git-shell
REPO=/home/git/repo
mkdir -p $REPO
chown -R git:git $REPO
sudo -u git mkdir /home/git/.ssh
chmod 0700 /home/git/.ssh
touch /home/git/.ssh authorized_keys
chmod 0600 authorized_keys

Konfiguration

  • Wir verwenden hier das SSH-Protokoll zum Zugriff: Benutzer haben Lese- und Schreibzugriff auf die Repositories.
  • Eine Alternative zum anonymen Lesezugriff ist das Git-Protokoll: https://git-scm.com/book/de/v2/Git-auf-dem-Server-Die-Protokolle
  • Jeder Benutzer, der einen Zugang zu den Repositories haben darf, muss seinen Öffentlichen Schlüssel schicken.
  • Dieser öffentliche Schlüssel wird in die Datei /home/git/.ssh/authorized_keys eingetragen:
ssh-rsa AAAAB3Nza...x88AEZIj adam@pluto
ssh-rsa BDEa273AX...KrkwlWeF berta@missisouri

Einrichten eines Repositories

  • Es soll ein Repository für Projekt taskx eingerichtet werden
  • Auf dem Server:
PROJ=taskx
REPO=/home/git/repo/$PROJ.git
mkdir -p $REPO
cd $REPO
git init --bare
chown -R git:git -R .
# Für das Git-Protokoll:
touch git-daemon-export-ok
# für gitweb:
echo "Short project's description" >description
chown -R git:git -R .
sudo -u git git symbolic-ref HEAD refs/heads/main

Verbindung zu entferntem Repository

Auf dem lokalen Rechner:

PROJ=taskx
DOMAIN=git.hamatoma.de
git remote add origin ssh://git@$DOMAIN:/home/git/repo/$PROJ.git
git push --set-upstream origin main
oder
git push --set-upstream origin master