{"id":19,"date":"2009-07-04T14:47:00","date_gmt":"2009-07-04T14:47:00","guid":{"rendered":"http:\/\/www.vcrini.com\/impressioni\/?p=19"},"modified":"2009-07-04T14:47:00","modified_gmt":"2009-07-04T14:47:00","slug":"git-e-gitosis","status":"publish","type":"post","link":"https:\/\/www.vcrini.com\/impressioni\/?p=19","title":{"rendered":"Git e Gitosis"},"content":{"rendered":"<p>Ecco come creare un repository <span style=\"font-weight: bold;\">git<\/span> e condividerlo con <span style=\"font-weight: bold;\">gitosis<\/span> su ubuntu 9.04.<\/p>\n<p>Installare git<\/p>\n<p><span style=\"font-family: verdana; font-style: italic;\"><\/span><\/p>\n<blockquote><p><span style=\"font-family: verdana; font-style: italic;\">sudo apt-get install git-core<\/span><span style=\"font-family: verdana;\"> <\/span><code style=\"font-family: verdana; font-style: italic;\">python-setuptools<\/code> <\/p><\/blockquote>\n<p>Installare gitosis<\/p>\n<blockquote style=\"font-family: verdana;\"><p><span style=\"font-style: italic;\">cd \/tmp<\/span><br \/><span style=\"font-style: italic;\">    git clone git:\/\/eagain.net\/gitosis.git<\/span><\/p>\n<p><span style=\"font-style: italic;\">    cd gitosis<\/span><br \/><span style=\"font-style: italic;\">python setup.py install<\/p>\n<p><\/span><\/p><\/blockquote>\n<p>Gitosis \u00e8 un modo &#8220;semplificato&#8221; &#8211; si fa per dire &#8211; per gestire gli accessi al repository git e consiste nel modificare un file di configurazione con una serie di autorizzazioni e di chiavi pubbliche ssh associata ad ogni utente.<\/p>\n<p>Prima di poter utilizzare gitosis va creato un utente ad hoc e configurato come amministratore di gitosis. L&#8217;utente che andiamo a creare molto originariamente si chiamer\u00e0 <span style=\"font-weight: bold;\">git<\/span>.<\/p>\n<pre><code><\/code><br \/><blockquote>sudo adduser \\<br \/>--system \\<br \/>--shell \/bin\/sh \\<br \/>--gecos 'git version control' \\<br \/>--group \\<br \/>--disabled-password \\<br \/>--home \/home\/git \\<br \/>git<\/blockquote><\/pre>\n<p>l&#8217;utente appena creato avr\u00e0 come unico compito di &#8220;ospitare&#8221; il repository e di far girare <span style=\"font-style: italic;\">gitosis<\/span>. Quindi i repository saranno almeno due<\/p>\n<ul>\n<li>il repository in cui vogliamo mettere i nostri dati da versionare (pu\u00f2 essere pi\u00f9 di uno)<\/li>\n<li>il repository amministrativo di gitosis che si chiama <span style=\"font-style: italic;\">gitosis-admin<\/span><\/li>\n<\/ul>\n<p>a questo punto bisogna fornire l&#8217;accesso al repository amministrativo ad un utente del sistema utilizzato per sviluppare (chiamiamolo <span style=\"font-style: italic;\">valerio<\/span>)<br \/>occorre quindi recuperare la chiave pubblica dell&#8217;utente <span style=\"font-style: italic;\">valerio  <\/span>da ~\/.ssh\/id_rsa.pub ma se non \u00e8 presente va creata con<\/p>\n<pre><code><br \/><\/code><br \/><blockquote>ssh-keygen -t rsa<\/blockquote><\/pre>\n<p>e importata nel repository amministrativo gitosis-admin con<\/p>\n<pre><code><\/code><br \/><blockquote>sudo -H -u git gitosis-init &lt; ~\/.ssh\/id_rsa.pub <\/blockquote><\/pre>\n<p>il quale confermer\u00e0 con un<\/p>\n<pre><code><\/code><br \/><blockquote>Initialized empty Git repository in .\/<br \/>Initialized empty Git repository in .\/<\/blockquote><\/pre>\n<p>si lo dir\u00e0 2 volte.<\/p>\n<p>Bisogna aggiornare alcuni permessi poich\u00e8 gitosis li imposta in maniera non corretta<\/p>\n<pre><code><\/code><br \/><blockquote>sudo chmod 755 \/home\/git\/repositories\/gitosis-admin.git\/hooks\/post-update<\/blockquote><\/pre>\n<p>A questo punto il repository amministrativo \u00e8 pronto e lo si pu\u00f2 accedere ovviamente utilizzando git con<\/p>\n<blockquote><p>git clone git@localhost:gitosis-admin.git<\/p><\/blockquote>\n<p>verr\u00e0 creata una sandbox con il file e la directory<\/p>\n<p><\/p>\n<blockquote><p>-rw-r&#8211;r&#8211; 1 valerio valerio 142 2009-07-04 17:31 gitosis.conf<br \/>drwxr-xr-x 2 valerio valerio  80 2009-07-04 17:31 keydir<\/p><\/blockquote>\n<p>gitosis.conf contiene la configurazione degli utenti mentre keydir contiene le chiavi pubbliche di tutti gli utenti (compresa gi\u00e0 quella di <span style=\"font-style: italic;\">valerio<\/span> che \u00e8 stata passata precedentemente con il comando <code>sudo -H -u git gitosis-init &lt; ~\/.ssh\/id_rsa.pub <\/code>)<\/p>\n<p>gitosis.conf contiene le seguenti voci<\/p>\n<p>[gitosis]<\/p>\n<p>[group gitosis-admin]<br \/>writable = gitosis-admin<br \/>members = valerio@ken<\/p>\n<p>il che significa che attualmente il repository <span style=\"font-style: italic;\">gitosis-admin<\/span> \u00e8 accedibile da valerio dalla macchina ken utilizzando la chiave pubblica valerio@ken che \u00e8  in<\/p>\n<blockquote><p>ls -l keydir\/<br \/>-rw-r&#8211;r&#8211; 1 valerio valerio 393 2009-07-04 17:31 valerio@ken.pub<\/p><\/blockquote>\n<p>A questo punto l&#8217;installazione \u00e8 conclusa anche se ovviamente dovrebbero essere aggiunti i repository su cui si vuole versionare il proprio codice. Supponendo di voler creare un repository chiamato <span style=\"font-weight: bold;\">personale<\/span> gitosis.conf assumer\u00e0 l&#8217;aspetto<\/p>\n<p>[gitosis]<\/p>\n<p>[group gitosis-admin]<br \/>writable = gitosis-admin<br \/>members = valerio@ken<\/p>\n<p>[group team]<br \/>writable = personale<br \/>members = valerio@ken<\/p>\n<p>dopodich\u00e8 va fatto il commit ed il push di queste modifiche<\/p>\n<blockquote><p>git commit  -m &#8220;new personal repository&#8221; -a<br \/>git push<\/p><\/blockquote>\n<p>a questo punto l&#8217;utente valerio@ken \u00e8 in grado di creare il repository personale con<\/p>\n<blockquote><p>cd \/tmp<br \/>mkdir personale<br \/>cd personale\/<br \/>git init<br \/>git remote add origin git@localhost:personale.git<br \/>echo &#8220;il mattino ha l&#8217;oro in bocca&#8221; &gt; readme.txt<br \/>git add readme.txt<br \/>git commit -m &#8220;primo file&#8221;<br \/>git push origin master<\/p><\/blockquote>\n<p>e il repository <span style=\"font-style: italic;\">personale<\/span> adesso \u00e8 accessibile con<\/p>\n<blockquote><p>git clone git@localhost:personale.git<\/p><\/blockquote>\n<p><span style=\"font-weight: bold;\">Utenti multipli<\/p>\n<p><\/span>Ovviamente \u00e8 possibile utilizzare utenti multipli per un singolo repository aggiungendo vari utenti alla configurazione<br \/>[group team]<br \/>writable = personale<br \/>members  = vcrini@vcrini-laptop valerio@ken<\/p>\n<p>qui il repository mysite \u00e8 scrivibile da vcrini e valerio. In <span style=\"font-weight: bold;\">keydir<\/span> va copiata a mano la chiave pubblica <span style=\"font-weight: bold;\">vcrini@vcrini-laptop.pub<\/p>\n<p>Volete debuggare?<\/p>\n<p><span style=\"font-weight: bold;\"><span style=\"font-weight: bold;\"><span style=\"font-weight: bold;\"><\/span><\/span><\/span><br \/><\/span> Aggiungere  &#8220;loglevel = DEBUG&#8221;  proprio sotto la voce  [gitosis] e fate attenzione agli spazi altrimenti non funziona.<\/p>\n<p>[gitosis]<br \/>loglevel = DEBUG<\/p>\n<p>[group gitosis-admin]<br \/>writable = gitosis-admin<br \/>&#8230;<\/p>\n<p><b>Maggiori informazioni?<\/b><br \/>C&#8217;\u00e8 un ottimo tutorial su Git <a href=\"http:\/\/excess.org\/article\/2008\/07\/ogre-git-tutorial\/\">qui<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ecco come creare un repository git e condividerlo con gitosis su ubuntu 9.04. Installare git sudo apt-get install git-core python-setuptools Installare gitosis cd \/tmp git clone git:\/\/eagain.net\/gitosis.git cd gitosispython setup.py install Gitosis \u00e8 un modo &#8220;semplificato&#8221; &#8211; si fa per &hellip; <a href=\"https:\/\/www.vcrini.com\/impressioni\/?p=19\">Continua a leggere<span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[31,32],"tags":[],"_links":{"self":[{"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=\/wp\/v2\/posts\/19"}],"collection":[{"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19"}],"version-history":[{"count":0,"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=\/wp\/v2\/posts\/19\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vcrini.com\/impressioni\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}