sábado, 22 de enero de 2011

Crear un backup de un repositorio en subversión y restaurarlo

1) Crear un backup
Para crear un backup ejecutaremos el siguiente comando:
svnadmin dump <ruta_del_repositorio> > <ruta_y_nombre_del_archivo_backup>
Ejemplo:
svnadmin dump C:\svn_repository\repositorio > c:/copia-repositorio
esto generara un archivo en copia-repositorio en el disco C:

2) Resturar un backup
Para restaurar el backup recientemente generado primero crearemos otro repositorio para no cambiar el actual:
svnadmin create  C:\svn_repository\repositorio2
Luego ejecutaremos la restauración:
svnadmin load <ruta_del_repositorio> < <ruta_y_nombre_del_archivo_backup>
Ejemplo:
svnadmin load C:\svn_repository\repositorio2 <  c:/copia-repositorio
Exiten mas opciones para svnadmin dump:
por ejemplo
svnadmin dump --deltas /repo |bzip2 |tee dump.bz2 | md5sum >dump.md5

Configurar Subversión en Windows con autentificación y permisos de usuarios y grupos

Lo primero instalar subversión, una buena opción es CollabNet Subversion Edge de licencia GPL o también pueden instalar TortoiseSVN que viene integrado al explorador de Windows para hacer click derecho y crear repositorios en este post explicare la instalcion de CollabNet

Primero descargar la ultima versión de collabnet para Windows desde la siguiente URL http://www.open.collab.net/downloads/subversion/ necesitaran registrarse pero el registro es rápido, después de todo no hay mejor opción que bajarse software del proveedor oficial.

En la instalación la mayoría de cosas son siguiente y siguiente, destacando la carpeta raíz para los repositorio por defecto "C:/svn_repository" aquí se crearan los repositorios esta carpeta es modificable después en el archivo de configuracion de apache "httpd.conf"

Una vez instalado y corriendo
1)Crear un repositorio con el siguiente comando
svnadmin create C:/svn_ repository/repositorio1
la url q apache asigna a este repositorio es http:/localhost/svn/repositorio
fíjense q es localhost/ sin el puerto asumiendo que pusieron el puerto 80.
Porque svn si la carpeta se llama svn_repository la explicación esta en el archivo "httpd.conf" ubicado en
C:\Archivos de programa\CollabNet\Subversion Server\httpd\conf
Al final del archivo
Tendrá este contenido por defecto:
<Location /svn>
DAV svn
SVNParentPath C:\svn_repository

</Location>
Como se ve toma como carpeta base C:\svn_repository
Y le añade el prefijo svn es decir C:\svn_repository es equivalente a http://localhost/svn por consiguiente http://localhost/svn/repositorio1 es equivalente a C:\svn_repository\repositorio1

2)Configurar usuarios ( autentificación )
Modificar  el archivo httpd.conf ubicado en C:\Archivos de programa\CollabNet\Subversion Server\httpd\conf
Reemplace lo siguiente :

<Location /svn>
DAV svn
SVNParentPath C:\svn_repository
</Location>
Por:
<Location /svn>
DAV svn
SVNParentPath C:\svn_repository

# Autenticación básica.
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile D:/usuarios.txt

#-----------------------------------------------------------
#Descomentar lo siguiente si quieren que los demas vean su proyecto, 
#lo bajen pero para modificarlo necesiten identificarse

    #<LimitExcept GET PROPFIND OPTIONS REPORT>
    #    Require valid-user
    #</LimitExcept>
#-----------------------------------------------------------

#Lo siguiente bloquea el acceso a lectura y escritura de
#usuarios no identificados 
  Require valid-user
#-----------------------------------------------------------

</Location>
Donde el archive D:/usuarios.txt contiene los usuarios y password encriptados con el es un algoritmo de reducción criptográfico MD5
Una alternativa a usar SVNParentPath es usar SVNPath con la diferencia que:
SVNPath : es para un solo repositorio
SVNParentPath : es para varios repositorios 
3) Crear un usuario 
Para crear un usuario hay que entrar a consola ( inicio /ejecutar /escribir cmd (enter)
Ubicarse en la carpeta bien de Collabnet :
cd C:\Archivos de programa\CollabNet\Subversion Server\httpd\bin
Y crear un usuario con el siguiente comando:
htpasswd -bc d:\usuarios.txt <usuario> <contraseña>  
donde en el -bc: la b es para crear el archivo y la c es para crear el usuario ( si no se especifica la contraseña se le pedirá que la ingrese dos veces y se visualizara con ***)
para ingrear el segundo usuario seria:
htpasswd -m d:\usuarios.txt <usuario>  
-m se usa para ingresar el segundo usuario ( el 3ro,4to ... es decir mas de un usuario ) o modificar la contraseña de uno ya existente, luego de escribir esta sentencia y presionar enter se le pedirá que ingrese la contraseña
Un ejemplo
C:\Archivos de programa\CollabNet\Subversion Server\httpd\bin>htpasswd -bc d:\usuarios.txt erik pass
Automatically using MD5 format.
Adding password for user erik

Con esto ya podrán acceder desde eclipse al repositorio con la siguiente url http://127.0.0.1/svn/repositorio1 y subir un proyecto o hacerlo manualmente desde consola.


4) Configurando grupos de usuarios y permisos por usuario y por grupo  
Lo siguiente sera agregar un archivo para configurar grupos y premisos, por ejemplo edite el archivo de repositorio1 aunque puede estar donde se desee y tener cualquier otro nombre y extensión

C:/svn_ repository/repositorio1/authz.conf

Aqui el contenido del archivo

[groups]
administradores= erik
otro= prueba

[/]
@administradores = rw
prueba= r
Esta configuración  nos dice que:

  • El grupo "administradores" tendrá los permisos r= lectura (read) y w = escritura (write)
  • El usuario "prueba" tendrá el permiso de solo lectura.

Todo esto sobre la raiz "[ / ]" es decir todo el subarbol de carpetas que esten debajo de la raiz /, en nuestro caso cualquier carpeta que este debajo de repositorio1.
También se puede añadir configuraciones para una carpeta especifica, ejemplo:

[/trunk]
@otro= rw
[/branch]
prueba = rw

Observación: cualquier otro usuario no tendrá ningún permiso
Finalmente falta enlazar este archivo de permisos con el repositorio, para esto editamos el archivo "httpd.conf" ubicado en
C:\Archivos de programa\CollabNet\Subversion Server\httpd\conf
Agregamos debajo de AuthUserFile :
AuthzSVNAccessFile C:/svn_repository/repositorio1/conf/authz.conf
Quedaria asi:
<Location /svn>
DAV svn
SVNParentPath C:\svn_repository

# Autenticación básica.
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile D:/usuarios.txt
AuthzSVNAccessFile C:/svn_repository/repositorio1/conf/authz.conf

#-----------------------------------------------------------
#Descomentar lo siguiente si quieren que los demas vean su proyecto, 
#lo bajen pero para modificarlo necesiten identificarse
    #<LimitExcept GET PROPFIND OPTIONS REPORT>
    #    Require valid-user
    #</LimitExcept>
#-----------------------------------------------------------
#Lo siguiente bloquea el acceso a lectura y escritura de
#usuarios no identificados 
  Require valid-user
#-----------------------------------------------------------
</Location>

miércoles, 19 de enero de 2011

Iniciar Sesion en el portal de Topcert




 :  
                                      
                                          





Características de la Programacion Extrema

Programacion Extrema aquello que lleva las cosas buenas al extremo
"Aquellas cosas que son buenas hay que llevarlas al extremo"
He aqui lo que llevo al extremo:
  • La revision de cogido es buena hay que programar en pares
  • El diseño es bueno debemos refactorizar el codigo ( reutilizando, reagrupando, organizando...)
  • Las pruebas y test son buenas, pruebas unitarias y TDD(Desarrollo dirigido por tests)
  • Combinar el codigo es muy bueno pues usemos integracion continua (Subversion y Hudson -> mientras mas pruebas AUTOMATIZADAS tengamos mejor sera la integracion continua)
  • La participacion del cliente es buena, hagamos que el cliente sea un integrante de nuestro equipo
  • Entregar versiones es bueno entonces nuestro desarrollo tiene que ser iterativo e incremental ( relacionado a Scrum -> los sprints)
  • Lo simple es apreciado y facil de entender -> simplicidad

Ejecutar script desde ssh y cerrar la ventana actual

Recientemente tenia que ejecutar un script .sh el cual ejecutaba el archivo run.sh de jboss y levantaba el servidor en consola mostrando todos los detalles entonces cerrar la ventana era equivalente a detener el servidor ( lo mismo que teclear Ctrl+C en consola)
La solución que me funciono fue simple entrar normalmente por ssh y ejecutar el script.sh de la siguiente forma:
./script.sh &
o también de esta otra forma
sh script.sh &
Luego no cerrar la ventana sino teclear
Ctrl+D
, otra alternativa es escribir
exit

Desaparecerá la ventana y el tarea ejecutada con el script.sh no sera detenida porque no han cerrado la sesión, la sesión que si cerraban cuando cerraban la ventana donde ejecutaban el script.

Lo que se tiene que aprender cuando alguien no ejecuta un script.sh :D que debia ejecutar