Instalar/configurar un servidor Git + interfaz web
¡Hola a todos! Ya que me encuentro haciendo un proyecto para la Universidad, he decidido esta vez probar Git y dejar a un lado mi querido Subversion. Git es básicamente un sistema de control de versiones, creado por Linus Torvalds, y es usado en proyectos grandes como el Kernel de Linux. Así que he preparado una pequeña guía de instalación y configuración de Git, además de la interfaz web del mismo, lo cual nos permite ver los cambios del proyecto de una manera más amena.
Para este mini proyecto he instalado el servidor en una máquina virtual corriendo Debian 5. El motivo de dejar mi Gentoo por un rato es porque ya es de madrugada y necesitaba que la instalación fuera más rápida; además no me gusta instalar cosas que más adelante no necesitaré: para eso está la virtualización. ¡Basta de rodeos, vamos al grano!
Instalando los paquetes necesarios
Instalaremos Apache2, la base de git y los módulos web de git (y el server de ssh para que los clientes se conecten):
Ahora creamos los directorios /var/cache/git (el repositorio git) y /var/www/git para el gitweb.cgi:
# [ -d "/var/cache/git" ] || sudo mkdir /var/cache/git
En nuestro ejemplo, el directorio raiz del apache es /var/www; ahora debemos crear un archivo de configuración de Apache para el git:
Ponemos lo siguiente adentro:
<Directory /var/www/git> Allow from all AllowOverride all Order allow,deny Options ExecCGI <Files gitweb.cgi> SetHandler cgi-script </Files> </Directory> DirectoryIndex gitweb.cgi SetEnv GITWEB_CONFIG /etc/gitweb.conf
Ahora movemos los archivos gitweb.cgi, .png y .css de git a /var/www/git:
# mv -v /usr/lib/cgi-bin/gitweb.cgi /var/www/git
Debemos ahora hacer un par de cambios en el archivo /etc/gitweb.conf debido a los archivos que movimos:
$projectroot = '/var/cache/git/'; $git_temp = "/tmp"; #$home_link = $my_uri || "/"; $home_text = "indextext.html"; $projects_list = $projectroot; $stylesheet = "/git/gitweb.css"; $logo = "/git/git-logo.png"; $favicon = "/git/git-favicon.png";
Recargamos la configuración del apache:
Iniciando un proyecto en Git
Creamos la carpeta del proyecto…
# mkdir proyecto.git
# cd proyecto.git
Iniciamos un repositorio para nuestro nuevo proyecto y lo configuramos de acuerdo a nuestras necesidades:
# echo “Una breve descripcion del proyecto” > .git/description
# git config –global user.name “Tu nombre”
# git config –global user.email “tu@correo.com”
# git commit -a
Para marcar un repositorio como exportado se usa el archivo git-daemon-export-ok:
# touch .git/git-daemon-export-ok
Para iniciar el servicio de Git que ejecuta un servidor para hacer público nuestro repositorio, ejecutamos el siguiente comando (no debe haber un slash después de la ruta del repositorio):
Ahora el repositorio se encuentra corriendo en el puerto 9418 de nuestro computador. Por último, le daremos permisos de escritura a un usuario que no sea root, de tal manera que con dicho usuario se puedan hacer cambios remotos en el repositorio:
# passwd usuariogit
# chown -Rv usuariogit:usuariogit /var/cache/git/proyecto.git
Acceder al repositorio
Para descargar el repositorio de la manera convencional, basta con ejecutar el comando:
O lo puedes acceder vía web; en mi caso el servidor está en la dirección 192.168.0.5, entonces basta con visitar http://192.168.0.5/git/:

Fuentes y enlaces interesantes
9 Comentarios | deja el tuyo





Muy buena entrada
Nosotros en principio usabamos gitosis [1] para el control de acceso de nuetros repos.
Ahora nos hemos montado una instancia de gitorius [2] que funciona bastante bien
Un saludo y gracias!
[1] http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
[2] http://gitorious.org/gitorious
cuando pongo:
echo “Una breve descripcion del proyecto” > .git/description
me sale:
bash: .git/description: Permission denied
por que? como lo arreglo?
Hola, cuando intento hacer público el repositorio, me da error, creo que debe ser que tengo el puerto del apache cambiado para 5800, si alguien tiene una idea de solucionarlo sin necesidad de quitar mi puerto 5800 se lo agradecería mucho.
Saludos
Hola
Sabes como puedo conectarme desde un cliente svn (tibco designer) a un repositorio git
Muchas gracias y un saludo
No sé, pero supongo que no se puede… después de todo si es un cliente de SVN, está diseñado para acceder repositorios SVN, ¿no?
Es lógico lo que dices, pero por ejemplo para cvs hay una opción de emulación en el servidor git.
De todas formas gracias
Seguí casi toda tu guía (Entre otras cosas, dejé todo en su lugar predeterminado. Así que no toda…)
El punto es que cuando hacía el git push me daba un error de lo más extenso, que resumí en el hecho que no me dejaba escribir en la rama (Y yo empezando y sin entender la gran onda…)
Lo arreglé con un
git config receive.denyCurrentBranch warn
en el servidor
Y cada vez que mando algo desde otra compu con el git push, tengo que hacer
git reset –hard
Pues no se que onda, la verdad me gusta trabajar de más, sólo era algo que quería mencionar.
Ah, y empecé mi propio post http://apuntestuxianos.blogspot.com/2012/03/git-es-basicamente-un-sistema-de.html. Sí no te gusta la publicidad gratuita no hay problema, sólo borrála que no me enojo.