Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:git_szerver

< Linux

Git szerver

  • Szerző: Sallai András
  • Copyright © Sallai András, 2014, 2015
  • Licenc: GNU Free Documentation License 1.3

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-get 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.

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

Felhasznált források

oktatas/linux/git_szerver.txt · Utolsó módosítás: 2019/08/16 22:35 szerkesztette: admin