Hospedaje de repositorios Git en DreamHost

Por leprosys en 3/31/2009 ,
Debo de decir que pegue una gran nanciada encontrando como lograr hacer funcionar gitweb y encontrar una solución más que sencilla por lo demás todo es fácil.

Lo primero es instalar git en el host de DreamHost, y git tienes que tenerlo instalado en tu sistema local, así que nos logueamos al host:
ssh nombreusuario@hostname.com


1. Instalar git:
$ mkdir ~/src
$ wget http://www.kernel.org/pub/software/scm/git/git-1.6.2.1.tar.gz
$ tar xvzf git-1.6.2.1.tar.gz
$ cd git-1.6.2.1
$ ./configure --prefix=/home/<usuario>/packages NO_CURL=1 NO_MMAP=1
$ make
$ make install

Nota: busca una nueva versión mas actualizada si existe en kernel.org de git para instalarla.

En la configuración existen parámetros como NO_MMAP=1 que es necesario para saltar procesos de política de DH que matan procesos de git. Git normalmente crea dos archivos mapas en la memoria de 250MB, DH matara a Git porque consume más de 500MB de memoria.
NO_CURL=1 este parámetro sirve para deshabilitar de opción de atracción de lugares remotos, si necesitas esta funcionalidad, entonces también tendrá que descargar, compilar e instalar libcurl.

Hay que modificar ~/.bash_profile y ~/.bashrc.
Primero en ~/.bash_profile borraremos todo y pondremos:
. $HOME/.bashrc

En ~/.bashrc añadimos esta linea y después la ejecutamos en la terminal:
export PATH=$HOME/packages/bin:$PATH

Ahora veremos que tenemos la versión de git que hemos instalado y no la que trae DH:
git --version

2. Crear el repositorio.

Ahora creamos la carpeta de nuestro proyecto, y haremos algunas cosas dentro:
mkdir -p ~/hostname.com/<ruta>/nombre-proyecto.git
cd !$
git --bare init-db

Dejamos el host y en nuestra PC hacemos lo siguiente:
$ mkdir nombre-proyecto
$ cd !$
$ git init
$ git remote add origin ssh://nombreusuari@<maquina>.dreamhost.com/home/<usuario>/<ruta>/nombre-proyecto.git
$ touch README
$ git add .
$ git commit -m "Initial Commit"
$ git push origin master

Y si todo se realizo sin errores, ya tenemos nuestro host con git.

3. Usar gitweb (0pcional).

Esta es la interfaz web para ver nuestros repositorios así como el estilo kernel.org.
Primero nos vamos a nuestro directorio que creamos en DH para los repositorios y ahí:

$ cp ~/src/git-1.6.2.1/gitweb/git* .
$ rm gitweb.perl
$ chmod 755 gitweb.cgi


Es buena idea crear un archivo de cofiruración:
$ touch gitweb_config.perl
$ vim gitweb_config.perl

Y en el archivo gitweb_config.perl poner:
# where is the git binary?
$GIT = "/home/<usuario>/packages/bin/git";

# where are our git project repositories?
$projectroot = "/home/<usuario>/hostname.com/git";

# what do we call our projects in the gitweb UI?
$home_link_str = "My Git Projects"

# where are the files we need for gitweb to display?
@stylesheets = ("gitweb.css");
$logo = "git-logo.png";
$favicon = "git-favicon.png";

# what do we call this site?
$site_name = "My Personal Git Repositories";

Ahora necesitamos decirle a apache acerca de CGI, para ello créanos el archivo .htaccess con el siguiente contenido:
Options +ExecCGI
RewriteEngine On
RewriteRule ^$ gitweb.cgi
RewriteRule ^([?].*)$ gitweb.cgi$1

Ahora ya tenemos nuestra interfaz:
http://ejemplo.com/git

Puedes proteger tus repositorios si no quieres que todo el mundo entre, de la siguiente manera con el archivo .htaccess tiene que tener de contenido:

AuthType Basic
AuthName "Private Git Repository Access"
AuthUserFile /home/<usuario>/.htpasswd
Require valid-user

Esto supone que tienes un archivo .htpasswd que no se tratara en este turorial.

Error que me dio fue: “404 - No projects found” el cual hay que tratar con el archivo gitweb.cgi en la línea:
our $projectroot = "/home/<usuario>/hostname.com/git";
Ponemos la adecuada y eso es todo.


Fuentes:
tail -f development.log
Oscar Del Ben

Back Top