Skip to content

Instalación y configuración del Servidor y Cliente Git bajo ssh

marzo 23, 2009

Git es uno de los mejores versionadores distribuidos, si usas github pero quieres tener tu propio repositorio en tu casa o trabajo entonces esta es una simple solucion, que no te toma mas de unos minutos, esta misma configuracion la he probado en dreamhost y funciona de la misma manera, de echo deberia funcionar en cualquier host que tengas. Si quieres ademas poder publicarlo mediante http, entonces una muy buena opcion gitweb.  Gitosis es tambien otra opcion que tienes, que es muy parecido pero para algun proyecto simple creo que esto es suficiente.

1. Configuración del Servidor git

 

El único requisito es tener instalado git:

 

$ sudo apt-get install git-core

 

nota: El servidor esta configurado e instalado en django-server que tiene la IP 192.168.0.139, el usuario es django-server con password *****.

 

2. Configuración del Cliente git

 

Primero debemos generar el conjunto de llaves RSA:

 

$ ssh-keygen -t rsa

 

Luego debemos registrar nuestra llave publica en el servidor, dentro de las llaves autorizadas de ssh, como sigue:

 

$  cat .ssh/id_rsa.pub | ssh django-server@192.168.0.139 ‘cat >> .ssh/authorized_keys’

 

En caso de no tener git instalarlo:

 

$ sudo apt-get install git-core

 

Crear el archivo initrepo con el siguiente contenido:

 

$ vim initrepo

 

DOMAIN=django-server@192.168.0.139

ssh $DOMAIN ‘mkdir -p ~/git/’$1′.git && cd ~/git/’$1′.git && git –bare init’

mkdir $1

cd $1

git init

git remote add origin ssh://$DOMAIN/~/git/$1.git

touch .gitignore

git add .

git commit -m ‘Created new repo’

git push origin master

echo “

http://master

  remote = origin

  merge = refs/heads/master” >>.git/config

echo “Your new git repo ‘$1’ is ready and initialized at $DOMAIN/~/git/$1.git”

 

Asignarle los permisos:

 

$ sudo chmod a+x initrepo

 

Para iniciar un repositorio nuevo en la maquina remota solo es necesario ejecutar initrepo y pasarle como parámetro el nombre del repositorio:

 

$ ./initrepo test01

 

Inmediatamente veras una salida como esta:

 

Reinitialized existing Git repository in /home/django-server/git/test01.git/

mkdir: cannot create directory `test01′: File exists

Initialized empty Git repository in .git/

Created initial commit cccf28a: Created new repo

 0 files changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 .gitignore

Counting objects: 3, done.

Writing objects: 100% (3/3), 219 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

To ssh://django-server@192.168.0.139/~/git/test01.git

 * [new branch]      master -> master

Your new git repo ‘test01’ is ready and initialized at django-server@192.168.0.139/~/git/test01.git

 

Veras que en tu propia maquina tendrás la carpeta test01, ingresa y ya puedes empezar a hacer cambios y propagarlos en el servidor haciendo git push.

 

3. Obtener una copia de un repositorio remoto git y trabajar sobre el mismo

 

Para poder obtener una copia de un repositorio remoto primero deberá registrar su llave publica en el servidor remoto.

 

git clone ssh://django-server@192.168.0.139/~/git/test01.git

 

Luego puedes hacer cambios y replicarlos en el repositorio remoto con git push.

 

Referencias:

 

http://autopragmatic.com/2008/01/26/hosting-a-git-repository-on-dreamhost/

http://casperfabricius.com/site/2008/09/21/keeping-git-repositories-on-dreamhost-using-ssh/

http://madduck.net/blog/2007.07.11:publishing-git-repositories/

http://batterypowered.wordpress.com/2008/07/04/deploying-a-git-repository-server-in-ubuntu/

http://www.urbanpuddle.com/articles/2008/07/11/installing-git-on-a-server-ubuntu-or-debian

http://mechanicalrobotfish.com/posts/119-installing-git-server-using-gitosis

Anuncios
2 comentarios leave one →
  1. marzo 25, 2009 6:11 pm

    Saludos Sergio, muy interesante tu artículo, actualmente estoy trabajando en un proyecto que accedemos varios usuarios al mismo repositorio por ssh y quiero hacerte unas preguntas.

    Como puedo ver los branches en el servidor???
    Como puedo ver la ultima version comitada en el servidor??

    Se que exite el gitweb que es un comando que te presenta el repositorio via http, pero quisiera poder responder las preguntas que te hice con algun comando.
    Saludos

    • sergio escario permalink
      enero 20, 2010 8:34 am

      CREAR UN SERVIDOR GIT CON INTERFAZ GRAFICA WWW
      Hola, debes de instalar en el servidor los siguientes paquetes:

      aptitude install apache2 git-core gitweb
      Crear los directorios de tu servidor git, por ejemplo:
      mkdir /var/www/git
      mkdir /var/cache/git
      Crear el siguiente archivo:
      vi /etc/apache2/conf.d/git
      Introduce ésto dentro:

      Allow from all
      AllowOverride all
      Order allow,deny
      Options ExecCGI

      SetHandler cgi-script

      DirectoryIndex gitweb.cgi
      SetEnv GITWEB_CONFIG /etc/gitweb.conf

      Mueve o copia los siguientes archivos:
      mv -v /usr/share/gitweb/* /var/www/git
      mv -v /usr/lib/cgi-bin/gitweb.cgi /var/www/git

      Crea y edita lo siguiente:
      vi /etc/gitweb.conf
      $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”;

      Reinicia el apache:
      /etc/init.d/apache2 reload

      Crea tu primer repositorio git:
      cd /var/cache/git/
      mkdir MiPrimerRepositorio
      cd MiPrimerRepositorio
      git init
      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
      cd /var/cache/git/MiPrimerRepositorio
      touch .git/git-daemon-export-ok
      git daemon –base-path=/var/cache/git –detach –syslog –export-all
      adduser tusuario
      passwd ******
      chown -Rv tusuario:tusuario /var/cache/git/MiPrimerRepositorio

      YA PUEDES ACCEDER AL REPOSITORIO WEB
      http://TUDOMINIOoIP/git/

      Suerte, un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: