Git es un sistema de control de versiones distribuido cuyo objetivo es el de permitir mantener una gran cantidad de código a una gran cantidad de programadores eficientemente. Git se caracteriza principalmente por los siguientes aspectos:
La primera gran diferencia de Git con respecto a otros sistemas de control de versiones es la forma que tiene de manejar los cambios en los ficheros. Mientras que otros scv’s almacenan los archivos originales, conservando una lista de los cambios realizados a dichos archivos en cada versión, Git guarda una “foto” (snapshot) del estado de cada archivo en un momento concreto. Si uno de los archivos no ha cambiado no crea una nueva copia del mismo, simplemente crea una referencia al archivo original.
La segunda es la eficiencia. Git se basa en que cada programador almacena una copia completa del repositorio en su máquina de forma local, incluido el historial de cambios. Esto implica que muchas de las operaciones realizadas sobre el código fuente no tienen lugar en la red, permitiendo que la velocidad de proceso dependa únicamente de los recursos locales.
INSTALACION
Primero instalaremos los paquetes que necesitamos de la siguiente forma:
apt-get install apache2 git-core gitweb openssh-server
CONFIGURACION
Una vez hemos instalado los paquetes, deberemos realizar los siguientes pasos:
En primer lugar crearemos un directorio donde vamos a almacenar nuestro repositorio y otro donde almacenaremos GitWeb:
mkdir /var/cache/git
mkdir /var/www/git
Luego modificaremos la configuración de GitWeb que es la utilidad que nos proporcionará un acceso vía web al repositorio.
Para modificar su configuración deberemos hacer lo siguiente:
nano /etc/apache2/conf.d/gitweb
Y le insertaremos el siguiente contenido:
<Directory /var/www/git>
Allow from all
AllowOverride all
Order allow,deny
Options +ExecCGI
<Files gitweb.cgi>
AddHandler cgi-script .cgi
</Files>
DirectoryIndex gitweb.cgi
SetEnv GITWEB_CONFIG /etc/gitweb.conf
RewriteEngine on
RewriteRule ^([^.]+\.git.*)$ /git/gitweb.cgi/$0 [L,PT]
</Directory>
Una vez modificada la configuración, deberemos mover todo el contenido de donde se encuentra GitWeb al directorio que hemos creado, para ello haremos lo siguiente:
cp -R /usr/share/gitweb/* /var/www/git
Luego deberemos editar el siguiente fichero:
nano /etc/gitweb.conf
Y lo dejaremos así:
$projectroot = "/var/cache/git";
$git_temp = "/tmp";
$home_link = "/git";
$home_text = "indextext.html";
$projects_list = $projectroot;
@stylesheets = ("/git/static/gitweb.css");
$javascript = "/git/static/gitweb.js";
$logo = "/git/static/git-logo.png";
$favicon = "/git/static/git-favicon.png";
Habilitamos el módulo RewriteEngine:
a2enmod rewrite
Y por último reiniciamos apache2:
service apache2 restart
CREAR NUEVO PROYECTO GIT
Para iniciar nuestro proyecto, en primer lugar deberemos crear el directorio del proyecto en /var/cache/git:
mkdir /var/cache/git/proyectoDavid.git
Entramos en el directorio:
cd /var/cache/git/proyectoDavid.git
Y ejecutamos los siguientes comandos para iniciar el proyecto:
git init
echo "Descripción del proyecto" > .git/description
git config –global user.name "Tu nombre"
git config –global user.email "tu@correo.com"
git commit -a
Ahora marcaremos el repositorio como exportado (deberemos estar en el directorio del proyecto):
touch .git/git-daemon-export-ok
INICIAR SERVICIO GIT
Y por último, para poner en funcionamiento el servicio Git, deberemos ejecutar el siguiente comando:
git daemon –base-path=/var/cache/git/ --detach --syslog --export-all
Ahora nuestro repositorio está en el puerto 9418, y le daremos permisos a un usuario diferente de root, en este caso al usuario david:
chown -Rv david:david /var/cache/git/proyectoDavid.git
ACTUALIZAR Y AGREGAR FICHEROS AL PROYECTO EN EL SERVIDOR
Para agregar nuevos ficheros al proyecto deberemos guardarlos en el directorio del proyecto y ejecutar el siguiente comando:
git add nombreFichero
O
git add . → Para agregarlos todos de una vez
Y para guardar los cambios deberemos ejecutar el siguiente comando:
git commit -m "Descripción de la modificación"
CAPTURAS
En la página principal se nos mostrará una lista de los proyectos que hay, su descripción, su propietario y el tiempo que ha pasado desde su última modificación:
Si entramos en uno de los proyectos, se nos mostrarán las modificaciones que se han realizado en él, así como quién a realizado dicha modificación y una breve descripción de esta:
Con la opción snapshot que se encuentra al final de la línea de la modificación, podremos descargarnos el fichero modificado.
Y con la opción commitdiff podremos ver que se ha modificado exactamente, tanto lo que se ha añadido (verde) como lo que se ha eliminado (rojo):
ENLACES
Web oficial: http://git-scm.com/
Documentación oficial: http://git-scm.com/documentation
Comandos Git: http://www.polinux.upv.es/drupal/node/1062
GitHub (servicio donde alojar tus repositorios Git): https://github.com/