{"id":45,"date":"2013-10-11T12:10:00","date_gmt":"2013-10-11T12:10:00","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/2013\/10\/11\/seguimos-completando-el-servidor-git\/"},"modified":"2017-01-24T09:52:37","modified_gmt":"2017-01-24T09:52:37","slug":"seguimos-completando-el-servidor-git","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2013\/10\/11\/seguimos-completando-el-servidor-git\/","title":{"rendered":"Seguimos completando el servidor git &#8230;"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"mt-image-left\" style=\"float: left; margin: 0 20px 20px 0;\" src=\"https:\/\/esferas.org\/mt\/msqlu\/assets_c\/2013\/10\/git-logo-cc-by-300x300-miniatura-100xauto-78.png\" alt=\"Imagen miniatura para git-logo-cc-by-300x300.png\" width=\"100\" height=\"100\" \/>&#8230; para que parezca profesional del todo.<\/p>\n<p><!--more--><\/p>\n<h3>M\u00e1s ajustes en el repositorio<\/h3>\n<p>Adem\u00e1s de asegurarme de que todos los repositorios son del tipo <em>sin carpeta de trabajo<\/em> he procedido a renombrarlos siguiendo la costumbre y les he a\u00f1adido la extensi\u00f3n <em>.git<\/em> al nombre.<\/p>\n<p>Otra caracter\u00edstica m\u00e1s que he a\u00f1adido han sido dos herramientas tomadas del art\u00edculo de <a href=\"http:\/\/planzero.org\/blog\/2012\/10\/24\/hosting_an_admin-friendly_git_server_with_git-shell\">Plan Zero<\/a> y que permiten crear c\u00f3modamente un repositorio y a\u00f1adir una clave de acceso\u00a0 al cuenta del repositorio.<\/p>\n<p>Animado por la sencillez del dise\u00f1o me he lanzado y he creado un peque\u00f1o script que permite cambiar la descripci\u00f3n del repositorio c\u00f3modamente.<\/p>\n<pre class=\"\">$ ssh git@venexma.net description empresa-network\r\nCurrent description: \r\nUnnamed repository; edit this file 'description' to name the repository.\r\nEnter the new description:\r\nConfiguraci\u00f3n de servicios de red auxiliares\r\nDescription updated<\/pre>\n<p>El script es muy sencillo:<\/p>\n<pre class=\"lang:sh decode:true\">#!\/bin\/sh\r\n# If no project name is given\r\nif [ $# -eq 0 ]\r\nthen\r\n   # Display usage and stop\r\n   echo \"Usage: description &lt;project.git&gt;\"\r\n   exit 1\r\nelse\r\n   REPO=$1.git\r\nfi\r\n\r\nif [ ! -d \"$REPO\" ]; then\r\necho \"Repository $REPO not found\"\r\nexit 1\r\nelse\r\necho \"Current description: \"\r\ncat $REPO\/description\r\nfi\r\n# Read the description\r\necho \"Enter the new description:\"\r\nread desc\r\nif [ -z \"$desc\" ]; then\r\necho \"Description not changed !\"\r\nelse\r\necho $desc &gt; $REPO\/description\r\necho \"Description updated\"\r\nfi\r\nexit 0<\/pre>\n<h3>Acceso v\u00eda web<\/h3>\n<p>En la empresa el c\u00f3digo est\u00e1 organizado en un servidor web virtual llamado <strong>code.empresa.com<\/strong> y el acceso a los distintos repositorios se realiza v\u00eda URL:<\/p>\n<ul>\n<li><em>http:\/\/code.empresa.com\/debian<\/em> es el repositorio de paquetes Debian<\/li>\n<li><em>http:\/\/code.empresa.com\/git<\/em> es el repositorio git<\/li>\n<\/ul>\n<p>As\u00ed que la configuraci\u00f3n de Apache es bastante sencilla:<\/p>\n<pre class=\"lang:apache decode:true\">Alias \/git \/var\/lib\/git\r\n\r\n&lt;Directory \/var\/lib\/git&gt;\r\n        Options AllowOverride\r\n        Order allow, deny\r\n        Allow from all\r\n&lt;\/Directory&gt;<\/pre>\n<p>Por lo que para clonar un repositorio con las tipograf\u00edas de la empresa -por ejemplo- es suficiente con<\/p>\n<pre>$ git clone http:\/\/code.empresa.com\/git\/empresa-fonts.git<\/pre>\n<p>Pero, eso s\u00ed, es necesario completar antes algunos detalles en cada repositorio. El primero de ellos es asegurarse de que existe un programa dentro del directorio <a href=\"http:\/\/git-scm.com\/book\/es\/Personalizando-Git-Puntos-de-enganche-Git\"><em>hooks<\/em><\/a> de cada repositorio que lance a su vez al programa <em>git update-server-info<\/em> tras cada actualizaci\u00f3n. El segundo detalle es asegurarse de que al menos \u00e9ste proceso se ha ejecutado una vez para que los datos est\u00e9n preparados.<\/p>\n<p>Respecto a la seguridad debo decir que este acceso es s\u00f3lo para la intranet. Desde el punto de vista exterior es necesario identificarse antes.<\/p>\n<h3>Un paso m\u00e1s all\u00e1<\/h3>\n<p>La <a href=\"http:\/\/git-scm.com\/book\">gu\u00eda<\/a> mencionada en el <a href=\"https:\/\/esferas.org\/msqlu\/2013\/10\/11\/creando-un-servidor-git\/\">art\u00edculo anterior<\/a> explica como configurar <em>gitosis y<\/em> <em>gitweb<\/em>. El primero facilita el mantenimiento de usuarios con permisos de escritura y lectura a los diferentes repositorios empleando \u00e9l mismo otro repositorio de administraci\u00f3n. El segundo sirve para dar una fachada agradable de los repositorios empleando un navegador web para recorrerlos.<\/p>\n<p><em>gitosis<\/em> no me sirve de nada al estar m\u00e1s s\u00f3lo que la una as\u00ed que me he lanzado a instalar y configurar <em>gitweb<\/em> y el resultado es bastante bueno. He limitado los repositorios visibles a los que creo que pueden ser interesantes y he dejado pendiente instalarme uno en mi propio servidor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; para que parezca profesional del todo.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[75,73],"class_list":["post-45","post","type-post","status-publish","format-standard","hentry","category-software","tag-apache","tag-git"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/45","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}