Tartalomjegyzék
Git szerver
- Szerző: Sallai András
- Copyright © Sallai András, 2014, 2015, 2020
- Licenc: GNU Free Documentation License 1.3
- Web: https://szit.hu
Telepítés
A szerveren
apt-get install git apt-get install openssh-server
adduser git mkdir /home/git/projekt.git cd /home/git/projekt.git git init --bare
Egy üres tárolót hozunk létre (--bare kapcsoló; man git-remote).
Vagy egy adott felhasználó ha belép, akkor így dolgozhat:
mkdir -p ~/repo/projekt1.git cd ~/repo/projekt1.git git init --bare
A --bare hatására a helyi könyvtár lesz tároló és nem keletkezik egy .git nevű könyvtár.
Webes felület telepítése
apt install gitweb cp /etc/gitweb.conf /etc/gitweb.conf.eredeti sed -i s/\\/var\\/cache/\\/home/ /etc/gitweb.conf a2enmod cgi
A webes felület elérése:
lynx http://servercim/gitweb
A kliens gépen teszt projekt
cd projektem git init git add . git commit -m 'kezdo commit' git remote add origin git@gitserver:/home/git/projekt.git git push origin master
A „gitserver” helyett természetesen lehet IP címet is írni.
Automatikus bejelentkezés
su - git mkdir .ssh && chmod 700 .ssh touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Kulcs létrehozása:
ssh-keygen -t rsa
Az authorized_keys állományba fel kell venni a publikus kulcsokat.
Tegyük fel, hogy a /tmp könyvtárban vannak a felhasználók publikus kulcsai. Ekkor:
cat /tmp/id_rsa.joska.pub >> ~/.ssh/authorized_keys cat /tmp/id_rsa.mari.pub >> ~/.ssh/authorized_keys cat /tmp/id_rsa.kait.pub >> ~/.ssh/authorized_keys
Közös tároló SSH hozzáféréshez
A közös munka másként is megoldható.
A közös munkához közös könyvtár szükséges. A közös könyvtárhoz lehet csoportos unix hozzáférés. A következő példában készítünk egy „fejlesztes” nevű csoportot. Létrehozunk számára a /home könyvtárban egy „fejlesztes” nevű könyvtárat, abban egy projekt1.git könyvtárat. Létrehozunk egy „joska” nevű felhasználót. A „joska” nevű felhasználót betesszük a „fejlesztes” csoportba. Létrehozunk a „projekt1.git” könyvtárban egy Git tárolót. Ezek után a „projekt1.git” könyvtár és tartalmát átadom a „fejlesztes” csoportnak rekurzívan. A „projektek1.git” könyvtár és tartalmának beállítok rekurzívan írási jogot a csoport számára.
addgroup fejlesztes mkdir -p /home/fejlesztes/projekt1.git adduser joska adduser joska fejlesztes cd /home/fejlesztes/projekt1.git git init --bare chgrp -R fejlesztes /home/fejlesztes/projekt1.git chmod -R g+w /home/fejlesztes/projekt1.git
Innen kezdve, akit felveszek a „fejlesztes” csoportba, azok tudnak feltölteni a projektbe. Az itt bemutatott módszer nem az egyetlen megvalósítható megoldás.
A közös hozzáférés --share kapcsolóval
Készítsünk két szerveroldali tárolót, s1-t és s2-t. Az s1-t egy --bare kapcsolóval készítjük elő, az s2-t a --bare és a --shared kapcsolóval.
$ mkdir server $ cd server/ $ ls $ mkdir s1 $ cd s1 $ git init --bare Initialized empty Git repository in /home/janos/dev/git/server/s1/ $ cd .. $ mkdir s2 $ cd s2 $ git init --bare --shared Initialized empty shared Git repository in /home/janos/dev/git/server/s2/ $ cd ..
Nézzük meg mi a különbség a két tároló között:
$ ls -l s1 s2 s1: összesen 32 drwxr-xr-x 2 janos janos 4096 szept 19 12:13 branches -rw-r--r-- 1 janos janos 66 szept 19 12:13 config -rw-r--r-- 1 janos janos 73 szept 19 12:13 description -rw-r--r-- 1 janos janos 23 szept 19 12:13 HEAD drwxr-xr-x 2 janos janos 4096 szept 19 12:13 hooks drwxr-xr-x 2 janos janos 4096 szept 19 12:13 info drwxr-xr-x 4 janos janos 4096 szept 19 12:13 objects drwxr-xr-x 4 janos janos 4096 szept 19 12:13 refs s2: összesen 32 drwxrwsr-x 2 janos janos 4096 szept 19 12:13 branches -rw-rw-r-- 1 janos janos 126 szept 19 12:13 config -rw-rw-r-- 1 janos janos 73 szept 19 12:13 description -rw-rw-r-- 1 janos janos 23 szept 19 12:13 HEAD drwxrwsr-x 2 janos janos 4096 szept 19 12:13 hooks drwxrwsr-x 2 janos janos 4096 szept 19 12:13 info drwxrwsr-x 4 janos janos 4096 szept 19 12:13 objects drwxrwsr-x 4 janos janos 4096 szept 19 12:13 refs $
Az s2 tároló csoport szinten kapott ws bitet.
Gitweb a felhasználók számára
Tegyük fel, hogy egy szerveren van három felhasználó: joska, janos, mari. Mindhárom felhasználó a saját könyvtárában hozza létre az egyes projektjei számára a git tárolókat. Jóska például:
mkdir /home/joska/projekt1.git mkdir /home/joska/projekt2.git
A rendszerben a közös projektek a /home/git/ könyvtárban vannak. Értelemszerűen ez a könyvtár van megjelölve a Gitweb számára, mint weboldalon kiszolgáltatandó projektek könyvtár. Ha Jóska felhasználó projektjeit is szeretnénk kiszolgálni, akkor hozzuk létre a következő linket:
ln -s /home/joska/ /home/git/joska
Innentől kezdve az ő projektjei is megjelennek a webhelyen.
Tegyük fel, hogy Jóska nem szeretné az összes projektéjt a webes felületen közzé tenni. Ekkor készít egy public_git könyvtárat:
mkdir /home/joska/public_git
A public_git könyvtárat linkeljük. A link létrehozása ezek után:
ln -s /home/joska/ /home/git/joska/public_git