Az otthoni munkáim során is szükség van verziókövető rendszerre a fejlesztéseknél. A legkézenfekvőbb megoldás, hogy a már amúgy is használatban lévő NAS-omra telepítek egyet, hiszen azt bármelyik gépről elérem, a RAID miatt biztonságban vannak a dolgaim rajta és amúgy is… miért a lokális gépemre telepíteném?!
A következő kérdés ugyebár az, hogy mégis melyik rendszert használjam? A két legmarkánsabb képviselője a mezőnynek a Git és az SVN. Tapasztalatok végett mindkettőt telepítettem, de most egyelőre csak az előbbiről írok. A munkahelyemen is ezt használjuk, tökéletesen meg vagyunk vele elégedve. Teszi a dolgát, jól kezelhetően a branch-ek, jól működik a merge-ölés, stb. Mivel a cégnél Windows-os környezetben dolgozunk, így a Git előtt TFS-t használtunk, de az maga volt a fájdalom. Azóta amióta átmigráltuk az összes project-ünket, senki sem nyavajog (annyit). :)
No de lássuk is akkor a telepítést. Előre szólok, hogy nagyon egyszerű lesz! :) Előfeltétel, hogy a NAS-unk okosítva legyen, tehát legyen rajta a Bootstrap és az ipkg. Ha ez még nincsen meg, akkor itt a how-to hozzá. Én egy DS411-es kütyün dolgozom (DSM 3.2 van rajta, bár ez jelenleg nem releváns).
Lépjünk be SSH-n a NAS-ra root felhasználóként vagy ha van normál felhasználó nevünk, akkor azzal. Abban az esetben, ha normál felhasználóval léptünk be, váltsuk át a környezetet root-ra:
sudo su -
Git felhasználó létrehozása
Első lépésként létre kell hoznunk egy felhasználót, amivel a Git szervert fogjuk tudni használni. Ez kétféleképpen történhet. Vagy a grafikus admin felületen hozzuk létre vagy konzolról. Én most csak a konzolos verziót írom le, mivel a további lépések is mind itt fognak történni. A grafikus felület next-next-finish procedúrája amúgy sem nagy kihívás. ;)
Tehát hozzuk létre a felhasználót, melynek a neve git és nincsen jelszava:
synouser -add git '' "GIT user" 0 '' 0
Ez után az /etc/passwd file-t kell szerkeszteni (a user UID-je a rendszertől függ, hogy mit adott neki. A soron következő érték.), hogy a felhasználóhoz tartozó shell a /bin/sh legyen:
git:x:1026:100::/volume1/home/git:/bin/sh
Az SSH környezet beállítása Git használthoz
Az /etc/ssh/sshd_config file szerkesztése következik. Ahhoz, hogy publikus RSA kulcsos autentikációt tudjunk használni a kliens oldalról való bejelentkezéshez, a következő sorok szükségesek a file-ban:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
Ahhoz, hogy jelszó nélkül is képes legyen bejelentkezni SSH-n, ez a sor szükséges:
PermitEmptyPasswords yes
Végül pedig a környezeti beállításokat is felvehesse:
PermitUserEnvironment yes
Bizonyosodjunk meg, hogy a fenti négy sor szerepel a file-ban, majd mentsük el és lépjünk ki.
Ezek után indítsuk újra az SSH service-ünket:
/usr/syno/etc/rc.d/S95sshd.sh restart
Majd lépjünk vissza. Abban az esetben, ha elérhetetlenné válik a NAS SSH-n, nem kell pánikba esni! :) Sokszor előfordul, hogy a restart funkció csak a stop részt valósítja meg, de a startot már nem hajtja végre. Ebben az esetben a grafikus admin felületen engedélyezzük újra (Control Panel – Terminal – Enable SSH service).
Git szerver telepítése
Csak a biztonság kedvéért futtasunk le egy ipkg frissítést
ipkg update ipkg upgrade
Ezután megtörténhet a tényleges install
ipkg install git
Készítsünk el pár symbolic link-et a git állományokra:
cd /usr/bin ln -s /opt/bin/git* .
Amennyiben ezt az utóbbi lépést nem tennénk meg, akkor a repo klónozásakor az alábbi hibaüzenetet kapnánk:
sh: git-upload-pack: not found fatal: The remote end hung up unexpectedly
Git repository létrehozása
Lépjünk be egy másik konzolon a NAS-ra, de most az új, git nevű user-rel (Jelszó ugyebár nem kell, hiszen nincs). Hozzuk létre magát a Git repo-k főkönyvtárát, illetve benne egy test nevű első repo-t.
mkdir -p /volume1/git/test
Lépjünk bele és készítsük el az üres, csupasz repo-t:
cd /volume1/git/test git init --bare
A következő üzenetet kell visszakapnunk:
[Initialized empty Git repository in /volume1/git/test/]
Ha ez megtörtént, akkor gratulálok, készen vagyunk a szerver telepítésével! :) A következő post a kliens oldali beállításokról fog szólni. Az is érdekel? Kattints!