Note: this wiki is no longer maintained. If you have any questions related to this wiki, please post them on the CrunchBang forums.

Translations of this page?:

WIKI-ES VARIOUS Revisión Controlada del Directorio Home utilizando Git

Puede usar otros sistemas de revisión controlada pero éste ha sido probado con git.

¿Porqué rastrear tu directorio home?

Si tiene varias computadoras con configuraciones idénticas o si tiende a borrar documentos importantes, entonces utilizar git podría ayudarlo. Puede configurar un repositorio con todas sus configuraciones, las cuales podrán ser compartidas con múltiples computadoras y así poder seguirle la huella, por ejemplo, a la edición de documentos importantes.

¿Porqué Git?

Comencé a probar un par de Sistemas de revisión controlada para seguirle la pista a mi directorio home.
bazaar, svn y git, son todos sencillos de usar, pero uno de los factores decisivos para mi, fue el tamaño de los respositorios de git después de re-empaquetar, fue mucho más pequeño que los otros. Los comandos para todos son similares, así que en mi opinión, se trata de una cuestión de preferencia personal y familiaridad.

Prerrequisitos

Necesita tener git instalado:

sudo apt-get install git

y eso es todo.

Configuración

Primero, necesita inciar el directorio como repositorio.
Está guía estará usando su directorio home, pero puede rastrear cualquier directorio que desee.

git init

Esto creará un directorio .git en su directorio home.
Si se salta o equivoca en algún paso, puede borrar este directorio y comenzar de nuevo.
Luego, necesitará decidir de que manera desea rastrear, no recomiendo rastrear archivos grandes que no cambien a menudo.
Para establecer que archivos y directorios serán excluidos de git, edite ~/.git/info/exclude aquí esta el mío:

# git-ls-files --others --exclude-from=.git/info/exclude
# Las lineas que comienzan con '#' son comentarios.
# Para un proyecto mayormente en C, el siguiente podría ser un buen conjunto 
# de patrones de exclusion (des-comentelos si desea usarlos):
# *.[oa]
*~
tmp
Cache
videos
music
downloads

Agregando Archivos

Ahora que ha establecido sus exclusiones, puede agregar todos sus archivos que serán rastreados.
Asegúrese de que aún está en su directorio home, entonces:

git add .

Esto agregará todos los archivos en su directorio home que no hayan sido excluidos.
También puede rastrear solamente archivos específicos que quiera agregándolos individualmente, en lugar de usar “git add”.
Yo quise rastrear todos los archivos sólo por si acaso.

Subiendo Archivos al Repositorio - Committing

Ahora que sus archivos están agregados, los puede ingresar a su repositorio.

git commit -m "first sync"

La -m establece un mensaje para la sincronización, puede ser lo que quiera que le ayude a seguir la huella de aquello que está sincronizando. Yo establecí el mensaje a “auto sync” para sincronizaciones automáticas y para cualquier archivo que esté por cambiar establecí el de sincronización manual. Ahora tiene una copia inicial de todos sus archivos en su directorio home.

Siguiendo la huella a los Cambios

Ahora puede rastrear manualmente los cambios cuando está por hacer modificaciones a un archivo de configuración o editar un documento importante.
Desde su directorio home haga otro:

git add .
git commit -m "your message"

Si algo sale mal, puede revertir los cambios. Si quiere rastrear automáticamente sus cambios, puede configurar una tarea “cron” (cada determinado tiempo) con un script de shell para agregar y subir al repositorio (committ). Yo deseaba tener notificación de cuando una subida al respositorio estuviera ocurriendo, de manera que no fuera a apagar la computadora a mitad de la subida, así que escribí un script python.
Este script está en dos partes, debido a que la tarea cron no tiene la dirección de sesión dbus que es necesaria para las notificaciones. Aquí está la primera parte que corrí durante el inicio (póngalo en su archivo de auto-arranque), éste guarda sus direcciones de sesión de dbus a un archivo en la carpeta tmp.

#!/usr/bin/env python

import os
path = "/tmp/"
dbus = open(path + "dbus", "w")
dbus.write(os.environ["DBUS_SESSION_BUS_ADDRESS"])

Asegúrese que después de guardar el script, lo haga ejecutable (puede nombrarlo como usted quiera):

chmod +x thescript.py

La segunda parte es ejecutada por cron para que realmente haga las subidas a repositorio (committs):

#!/usr/bin/env python

import os,pynotify

dbus = open("/tmp/dbus").read()
os.environ["DBUS_SESSION_BUS_ADDRESS"] = dbus

pynotify.init("Git")
n = pynotify.Notification("Git sync started")
n.show()

os.chdir(os.environ["HOME"])
os.popen("git add .")
os.popen("git commit -m 'auto sync'")

n = pynotify.Notification("Git sync finished")
n.show()

Haga ejecutable chmod +x éste script también. Ahora que tiene las dos partes, puede configurar la tarea cron, yo tengo la mía corriendo cada media hora, usted puede correrla más o menos frecuentemente, dependiendo de sus necesidades.

crontab -e

Ahora agregará una línea similar a esto:

0,30 *  * * * /home/eric/scripts/git_home.py

Cambiando la ruta adónde guardó el segundo script.
Si todo salió bien, ahora deberá recibir una notificación a la media hora diciéndole cuando comienza y termina la sincronización con git.

Mantenimiento

El repositorio crecerá con el tiempo, la mejor manera para hacerlo fácil, es re-empaquetar su archivo. Esto reducirá el tamaño de su archivo.
Desde su directorio home, o el directorio que haya decidido rastrear, corra:

git repack -a -d

si quiere ver las diferencias que hace, antes y después del re-empaquetado puede correr:

du -sh .git

Puede establecer esto como una tarea cron también si así lo desea, para que le notifique de un re-empaquetamiento y cuánto espacio fue usado.
(Aún no lo he hecho, pero lo agregaré al script en el futuro)

Revirtiendo los cambios

Si quiere restaurar el archivo entero a una versión anterior puede correr:

git checkout

Esto lo regresará a la última versión aprobada. Si hay una versión más vieja a la que quiera regresar, entonces haga esto:

git checkout revisionnumber

si sólo desea regresar a un archivo específico, entonces debe hacer esto:

git checkout filename

Eso debería ser suficiente información para iniciarlo con el rastreo de cambios a su directorio home.


 
esp/revision_controlada_del_directorio_home_usando_git.txt · Last modified: 2012/05/24 10:16 by machinebacon
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported

Powered by DokuWiki. Hosted by Linode.
Copyright © 2010 CrunchBang Linux.
Proudly powered by Debian GNU/Linux.
Debian is a registered trademark of Software in the Public Interest, Inc.