<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Je to divočina &#187; Linux</title>
	<atom:link href="http://blog.urbasek.cz/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.urbasek.cz</link>
	<description>Práce na volné noze je divočina! Na tomto blogu publikuji zápisky ze svého safari. Ve zbývajícím čase programuji aplikace pro iPhone.</description>
	<lastBuildDate>Fri, 29 Nov 2013 15:44:55 +0000</lastBuildDate>
	<language>cs-CZ</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>Instalace git serveru na ubuntu</title>
		<link>http://blog.urbasek.cz/instalace-git-serveru-na-ubuntu/</link>
		<comments>http://blog.urbasek.cz/instalace-git-serveru-na-ubuntu/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 10:42:12 +0000</pubDate>
		<dc:creator><![CDATA[JIří Urbášek]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.urbasek.cz/?p=100</guid>
		<description><![CDATA[Věřím, že většina z nás se už v praxi setkala s nějakým systémem pro správu repozitářů. Takovéto systémy jsou velmi výhodné jak pro týmy lidí pracujících dohromady, tak i pro jednotlivce. Získáte jednodouchou možnost vrátit se k dřívejším verzím svého programu (pokud třeba něco pokazíte, je mnohdy lepší vrátit se zpět, než napravovat vzniklé chyby)....<br /><a class="more-link" href="http://blog.urbasek.cz/instalace-git-serveru-na-ubuntu/">Continue reading &#187;</a>]]></description>
				<content:encoded><![CDATA[<p>Věřím, že většina z nás se už v praxi setkala s nějakým systémem pro správu repozitářů. Takovéto systémy jsou velmi výhodné jak pro týmy lidí pracujících dohromady, tak i pro jednotlivce. Získáte jednodouchou možnost vrátit se k dřívejším verzím svého programu (pokud třeba něco pokazíte, je mnohdy lepší vrátit se zpět, než napravovat vzniklé chyby). Já jsem zvolil <a title="Git - Fast Version Control System" href="http://git-scm.com/">git</a> a díky vlastnímu linux serveru si mohu vytvářet vlastní repozitáře, které jsou umístěny mimo můj počítač, tudíž je to i jakási záloha mé práce.</p>
<p>V tomto článku nastítím, jak probíhá instalace git serveru a vytváření vlastních repozitářů.<span id="more-100"></span></p>
<h2>Instalace git serveru</h2>
<p>Nejprve na linuxovém serveru nainstalujeme gitosis &#8211; software pro hostování git repozitářů. K tomu budeme potřebovat git a python, abychom mohli zdrojové kódy pomocí gitu stáhnout a pomocí pythonu je nainstalovat.</p>
<p>(Git nainstalujeme příkazem: <code>sudo apt-get install git-core</code>)</p>
<p>Stáhneme tedy nejnovější verzi gitosis</p>
<pre lang="objc">git clone git://eagain.net/gitosis.git</pre>
<p>a nainstalujeme jej:</p>
<pre lang="objc">cd gitosis
sudo python setup.py install</pre>
<p>Pokud při instalaci dostaneme chybu:</p>
<pre lang="objc">Traceback (most recent call last):
File "setup.py", line 2, in
from setuptools import setup, find_packages
ImportError: No module named setuptools</pre>
<p>je třeba doinstalovat ještě python setuptools: <code>sudo apt-get install python-setuptools</code></p>
<h2>Vytvoření uživatele git</h2>
<p>Nyní je potřeba vytvořit uživatele, který se o repozitáře bude starat. Přidáme tedy uživatele <code>git</code>, který bude mít domovský adresář ve <code>/var/git</code>.</p>
<pre lang="objc">sudo adduser \
    --system \
    --shell /bin/sh \
    --gecos 'git version control' \
    --group \
    --disabled-password \
--home /var/git \
git</pre>
<h2>Zinicializování uložiště pro repozitáře</h2>
<p>Pro read-write přístup do repozitářů přes ssh potřebujeme ověření pomocí RSA klíče. Vytvoříme si tedy svůj klíč na domácím počítači a nahrajeme jej na server, kde běží gitosis. Pomocí tohoto klíče následně zinicializujeme základní uložiště pro naše budoucí repozitáře.</p>
<pre lang="objc">ssh-keygen -t rsa</pre>
<p>Klíč se vytvoří v adresáři <code>~/.ssh/id_rsa.pub</code>, zkopírujeme jej (ale musí zůstat i v <code>.ssh/</code>) například pomocí scp na git server a uložíme jako <code>/tmp/id_rsa.pub</code></p>
<p>A zinicializujeme repozitáře:</p>
<pre lang="objc">sudo -H -u git gitosis-init</pre>
<p>při úspěchu dostaneme výpis podobný následujícímu:</p>
<pre lang="objc">Initialized empty Git repository in /var/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /var/git/repositories/gitosis-admin.git/</pre>
<p>Nyní je vše připraveno a můžeme začít přidávat nové repozitáře a k nim jejich uživatele.</p>
<p>Ještě se ujistíme, že post-update hook má práva na spouštění, pokud ne, přidáme tyto práva příkazem:</p>
<pre lang="objc">sudo chmod a+x /var/git/repositories/gitosis-admin.git/hooks/post-update</pre>
<h2>Vytváření vlastních repozitářů</h2>
<p>Nyní se můžeme odhlásit z SSH přistupu a náš repozitářový server ovládat vzdáleně. Jediné, co je potřeba, je stáhnout <code>gitosis-admin</code> repozitář, který se vytvořil při inicializaci. Předpokládejme, že náš server běží na IP adrese 192.168.0.100:</p>
<pre lang="objc">git clone git@192.168.0.100:gitosis-admin.git</pre>
<p>V repozitáři je soubor <code>gitosis.conf</code> sloužící ke konfiguraci repozitářů, uživatelů a spousty dalšího. A složka <code>keydir</code>, kde jsou rsa klíče pro uživatele mající přístup k repozitářům. V současné době je zde jediný klíč a to ten, který jsme o pár řádků výše vygenerovali.</p>
<p>Pro přidání repozitáře si vytvoříme novou skupinu (foo), definujeme názvy repozitářů patřící do skupiny (položka writable) a uživatele, mající přístup ke všem repozitářům této skupiny (members).</p>
<pre lang="objc">[group foo]
writable = foorepo
members = ibru</pre>
<p>Nyní je náš git server připraven pro repozitář s názvem <code>foorepo</code>. Vytvoříme tedy na našem lokálním počítači složku nebo můžeme přejít do složky s existujícími zdrojovými (nebo jakýmikoliv jinými) kódy. Nový repozitář vytvoříme sérií přikazů:</p>
<pre lang="objc">cd path/to/sources
git init
git remote add origin git@192.168.0.100:foorepo.git
# uděláme úpravy
git add .
git commit -a -m "inicializace repozitare"
git push origin master:refs/heads/master</pre>
<p>Nyní je repozitář zcela hotov a můžeme k němu přistoupit pomocí</p>
<pre lang="objc">git clone git@192.168.0.100:foorepo.git</pre>
<h2>Přidávání uživatelů</h2>
<p>Přidat nové uživatele je velmi jednoduché, stačí v konfiguračním souboru pro danou skupinu přidat jméno do řádku s &#8222;members = …&#8220; a do adresáře <code>keydir</code> přidat klíč vygenerovaný na počítači nového uživatele. Název souboru s klíčem je &lt;jméno&gt;.pub. Uživatel však svůj vygenerovaný klíč musí nechat i ve složce <code>~/.ssh/</code>.</p>
<p>Můžeme tedy například přidat uživatele <em>petr</em>, který bude mít také právo přistupovat k repozitářům ve skupině <em>foo</em>:</p>
<pre lang="objc">[group foo]
writable = foorepo
members = ibru petr</pre>
<p>a zkopírujeme klíč <code>petr.pub</code> do adresáře <code>keydir</code></p>
<p>Nyní všechny změny commitneme na server:</p>
<pre lang="objc">git add keydir/petr.pub
git commit -a -m "pridani uzivatele petr do skupiny foo"
git push</pre>
<p>Od této chvíle by užvatel petr měl být schopen ze svého počítače stáhnout repozitáře pomocí:</p>
<pre lang="objc">git clone git@192.168.0.100:foorepo.git</pre>
<h2>Další užitečná nastavení</h2>
<p>V git serveru je možné nastavit ještě spoustu dalších možností. Jako například povolení read-only stáhnutí repozitářů i uživatelům, kteří nemají své rsa klíče na serveru. Případně webové rozhraní pro repozitáře. Toto nastavení už můj článek nezahrnuje, pro zájemce mohu dodporučit následující zdroje:</p>
<ul>
<li><a title="gitosis readme" href="http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=README.rst;hb=master">gitosis readme</a> &#8211; sekce git-daemon a gitweb</li>
<li><a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">Hosting Git repositories, The Easy (and Secure) Way</a> &#8211; zde jsem čerpal já hlavní inspiraci pro tento článek</li>
</ul>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://blog.urbasek.cz/instalace-git-serveru-na-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
