Publicado en Git, Linux, Script, Subversion el 6 de April, 2010 por Fran. (5 comentarios)
Hace unos días tuve que convertir un repositorio de subversion a un repositorio de Git. Después de buscar un poco por Google, encontré la manera de hacerlo en una web del wiki de Debian sobre cómo configurar Git en su web de proyectos Alioth.
Antes de nada, hay que crear un archivo con los nombres de los desarrolladores que han usado el repositorio de subversion, el archivo tendrá el siguiente formato:
pepe = Pepe Garcia <pepe@garcia.es>
juan = Juan Gonzalez <juan@gonzalez.es>
Los nombres de los desarrolladores del repositorio de subversion se pueden conseguir ejecutando:
$ svn log "svn://REPOSITORIO-SVN/" | awk -F'|' '/^r[0-9]+/ { print $2 }' | sort -u
Este archivo se debe guardar como «authors.txt» para que mi script lo localice, aunque no sería muy difícil cambiar mi script para que se le pase la ruta como pará.
Mi script «svn2git.sh»
Este script se descarga el repositorio indicado (usando git-svn) y convierte y/o borra todos los datos relativos a subversion, como las ramas, los tags, …
#!/bin/sh
# Converts a subversion repository to a Git one.
# git-svn must be installed.
if [ $# -lt 2 ]; then
echo "Usage: $0 SVN-REPOSITORY LOCAL-PATH"
exit 1
fi
git svn clone $1 --stdlayout --authors-file=authors.txt --no-metadata $2
cd $2 > /dev/null
for t in `git branch -r | grep 'tags/' | sed s_tags/__`; do
git tag $t tags/$t^
git branch -d -r tags/$t
done
git branch -d -r trunk
git config --remove-section svn-remote.svn
rm -fr .git/svn .git/{logs/,}refs/remotes/tags/
cd - > /dev/null
exit 0
Publicado en Linux, Script el 10 de July, 2009 por Fran. (Sin comentarios)
El título no es muy claro, lo sé, pero no podía resumir lo que voy a explicar en algo tan corto.
Básicamente, a este script se le pasa una lista de directorios junto a un alias (o seudónimo) bajo el que se guardarán en el archivo que contenga el backup. Esto sirve:
- Para que en el archivo del backup no se guarden las rutas absolutas de los directorios guardados.
- Para no tener que realizar una copia local (duplicando el tamaño ocupado durante la realización del backup) de los archivos contenidos en los directorios a copiar en un directorio temporal.
- Para poder guardar los directorios con el nombre que se quiera dentro del archivo del backup.
Script
Este script está preparado para que lo ejecute cron con permisos de root y así poder copiar partes del sistema a las que otro usuario no podría acceder.
Si queréis que funcione con un usuario normal, sólo hace falta que eliminéis el if que está detrás del comentario # Check if the script is being run as root.
Los directorios a copiar se guardan en la variable DIRS separados por un espacio y con el formato alias:/ruta/al/directorio.
#!/bin/bash
# This script makes backups of a list of directories.
# It must be executed by root.
# Backup data
DIRS="images:/home/user/images/ code:/home/user/projects/ docs:/home/user/docs"
TMP_DIR=`mktemp -d`
BACK_FILE="/mnt/backup/`hostname --fqdn`_`date "+%Y-%m-%d"`.tar.gz"
TAR=$(which tar)
# Check if the script is being run as root
if [ "$UID" -ne "0" ]; then
echo "This script must be run as root!"
exit -1
fi
# Logging backup
echo "[`date "+%Y-%m-%d"`] Starting backup"
# Create symbolic links
for dir in $DIRS
do
SYM_DIR=${dir%:*}
TARGET_DIR=${dir#*:}
ln -s $TARGET_DIR $TMP_DIR/$SYM_DIR
done
# Create backup
cd $TMP_DIR > /dev/null
$TAR -chzf $BACK_FILE *
# Backup failed
if [ $? != 0 ]; then
cd - > /dev/null
rm -fR $TMP_DIR > /dev/null
echo "[`date "+%Y-%m-%d"`] Backup failed."
exit -1
fi
# Backup created
cd - > /dev/null
rm -fR $TMP_DIR > /dev/null
echo "[`date "+%Y-%m-%d"`] Backup done!"
exit 0
Publicado en Linux, Script el 12 de April, 2008 por Fran. (1 comentario)
La verdad es que nunca le he visto sentido a Twitter, es algo similar a los mensajes SMS, pudiendo mandar un e-mail o escribir en un blog, ¿por qué escribir en un sitio que te limita a 140 caracteres el mensaje? Ni idea.
La cosa es que esta semana surgió un post en el planeta de GNOME que promovía un reto para hacer scripts de Linux que cupiesen en mensajes de Twitter, a los pocos días ya había diez scripts que hacían diversas cosas.
Yo me quedo con el decodificador de código MORSE, toda una flipada. Al final este post tampoco es que diga mucho, pero me gustó la idea y el uso que le dieron a los 140 caracteres de Twitter, al que por primera vez le vi un uso práctico.