Mostrando entradas con la etiqueta cvs. Mostrar todas las entradas
Mostrando entradas con la etiqueta cvs. Mostrar todas las entradas
0

Instalación de CVS en SuSE 10 Enterprise Edition

Posted by Jose Luis Manrique on 15:23 in , ,
Hace poco tuve que realizar una instalación de cvs en un servidor que tenia SuSE 10 Enterprise Edition. La configuración de este servicio ya la había realizando antes en Ubuntu así que procedí a realizar los mismos pasos, los cuales son:
  1. Creación del grupo y usuario para la ejecución del servicio.
  2. Creación de las carpetas.
  3. Verificación de los paquetes cvs y xinetd.
  4. Inicialización del repositorio.
  5. Configuración del servicio en xinedt.
Para realizar todas estas actividades requerimos tener acceso al usuario root del servidor, por lo tanto nuestra primera accion sera:
$su root
Una vez ingresada la contraseña, procedemos a la creación del grupo y usuario, para esto utilizamos los comandos "useradd" y "groupadd" los cuales son usados para crear usuarios y grupos respectivamente. Estos comandos los ejecutamos de la siguiente forma:
$groupadd cvs
$useradd -d /home/admincvs -g cvs -m admincvs
Como pueden apreciar en la ultima linea se creó un usuario pero en ningún momento le asignamos una contraseña, para realizar esta tarea utilizamos el comando "passwd" para esto utilizamos la siguientes linea:
$echo {ingresar password} > pw
$cat pw | passwd --stdin admincvs 
Con el usuario listo para ser usado procedemos a crear la carpeta donde vamos a ubicar nuestro repositorio, para esto ejecutamos la siguiente linea:
$mkdir -p /var/repositorios/proyecto
Utilizamos la opción "-p" para que se fuerze a la creación de las carpetas que no estén creadas. Una vez finalizado procedemos a revisar si los paquetes cvs y xinetd se encuentran instalados para eso verificamos en el yast que estos programas se encuentren instalados de no estarlo procedemos a buscarlos e instalarlos. En la figura se muestra una pantalla del yast2 (manejador de paquetes) en la cual se va a agregar el xinetd. El siguiente paso es inicializar nuestro repositorio por lo cual creamos una variable de entorno en la cual vamos a almacenar la ruta de nuestro repositorio (solo para la consola que se esta usando) llamada CVSROOT ejecutando el siguiente comando:
$export CVSROOT=/var/repositorios/proyecto
Seguido de eso ejecutamos el comando de inicialización y cambiamos el usuario de los archivos creados por el proceso anterior:
$cvs init
$chown -R admincvs:cvs /var/repositorios/proyecto
El programa "cvs" tomará la variable CVSROOT y procederá a iniciar el repositorio creando una carpeta con el mismo nombre dentro de la ruta indicada. Dentro de esta carpeta se deberá crear un archivo llamado passwd que contendrá todos los usuarios que usarán en repositorio, estos deben ser ingresados de la siguiente forma {usuario}:{password_encriptado}:{usuario_sistema} donde usuario_sistema es le usuario que creamos anteriormente, todos los archivos que se van a crear en el repositorio serán usando este usuario. Como se puede apreciar el password ingresado debe estar cifrado para realizar la encriptación del mismo se debe de ejecutar el siguiente script (en Perl):
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";
Este se encargará de cifrar la contraseña para ejecutarlo correctamente el archivo en el cual se almacene debe tener permisos de ejecución y lectura (como mínimo) y pasar como argumento el valor a encriptar. Como último paso de nuestra configuración se deberá configurar el xinetd para que nuestro repositorio pueda ser visible para los demás. Para esto creamos el archivo "cvspserver" en la ruta /etc/xinetd.d/ y le ponemos el siguiente contenido:
#Inicio de configuracion cvspserver
service cvspserver{
       port           = 2401
       socket_type    = stream
       protocol       = tcp
       wait           = no
       user           = admincvs #El usuario que creamos
       passenv        = PATH
       server         = /usr/bin/cvs #Ubicacion del programa
       server_args    = -f --allow-root=/var/repositorios/proyecto pserver
}
#Fin de configuracion cvspserver
Finalmente reiniciamos el servicio del xinetd utilizando el siguiente comando:
$/etc/rc.d/xinetd.d/xinetd reload
Y tenemos listo nuestro repositorio con todo lo necesario para que varios usuario se puedan conectar subir sus versiones y descargar las de los demás.

1

Escogiendo un manejador de versiones

Posted by Jose Luis Manrique on 15:43 in , ,
En la empresa en la que trabajo manejamos muchos proyectos y cada proyecto con diversas personas las cuales agregan funcionalidades al sistema o reparan errores del mismo.
Desde ese punto de vista el control del código fuente debe ser manejado por algún sistema el cual sea capaz de administrarlo y ayudarnos a controlar el cambio de nuestro producto. Es ahí donde entran los sistemas de control de versiones. Es por medio de estos que podemos tener un mayor control de nuestro código, saber cual es la ultima versión en desarrollo, quien fue el que hizo los cambios, ver las diferencias entre versiones, etc.
Si buscamos en la web podemos encontrar mucho software para el manejo de código solo por resaltar algunos tenemos:
Para no entrar a mucho detalle que puede ser innecesario voy a comentar un poco sobre cada uno de los sistemas.

La primera vez que use uno de estos sistemas fue cuando aun era practicante y no tenia ni la mas mínima idea de como programar en J2EE(si aun se usaba eso) a pesar de todo eso usé el Clear Case es mas aun recuerdo cuando hice mi primer check out del repositorio, lo que recuerdo es que tenia una muy buena integración con la suite office puesto que uno podia ver las diferencias de los documentos de word o excel a nivel de edición. Ahora si quisera usar este software tendría que irme por dos caminos el comprar la versión para linux o buscar en rapidshare a ver si alguien dejo el instalador. Un punto menos para esta herramienta puesto que actualmente no puedo costearme dicho software.

Viendo las otras opciones tenemos al CVS que también nos ayuda a manejar nuestro código, dentro de sus principales ventajas es que posee una implementación de codigo abierto y gratuito lo cual busco. Ahora ya que cumple uno de mis principales requisitos vemos otras de sus características, entre una de ellas tenemos el manejo de versiones de archivos de texto, uso de ramas, agregar comentarios, etc pero también tenemos sus desventajas entre ellas tenemos que es lento para realizar commits, no trabaja de muy buena forma los archivos binarios y no posee un muy buen manejo de las ramas lo cual puede ser critico en el caso de que hayan varias versiones en paralelo. Si bien se acerco mucho a lo que requiero no llena por completo mis necesidades.

Continuando con la revisión tenemos al SVN o Subversión el cual vendría a ser una versión mejorada del CVS (aunque prefiero decir una evolución natural) este usa como motor de almacenamiento una base de datos Berkeley este puede guardar historia no solo de los archivos sino también de las carpetas cosa que no posee el CVS, además posee un buen manejo de las ramificaciones y en cuanto a la velocidad del commit es mucho mas rápido. Aparentemente este puede ser el candidato adecuado.
Ya para cerrar esta discusión hablaré un poco sobre GIT, una de sus mejores características es que esta mejorado para el desarrollo de aplicaciones donde los programadores se encuentran en diferentes ubicaciones geográficas. Este sistema es usado para el manejo del código del Kernel de Linux entre otros. Tiene un manejo del código y binarios mejor desarrollado que el SVN y las ramificaciones son mejor trabajadas. Este sistema puede tener todo lo que necesito pero hay un factor muy importante a tomar en cuenta al momento de escoger un sistema es que este se acomode a tus necesidades y por el momento no tengo los suficientes argumentos para usar GIT y si lo llegara a usar no aprovecharía al máximo sus características.

Ya habiendo analizado las posibilidades y de acuerdo a mis necesidades voy a usar SVN pues combina el manejo de ramificaciones (branchs), el versionamiento de carpetas y un manejo adecuado las versiones de los binarios.

En la siguiente entrega mostraré como instalar y configurar el SVN, hacer unos commits y check outs usando Eclipse.

Copyright © 2009 Autumn All rights reserved. Theme by Laptop Geek. | Bloggerized by FalconHive.