Desarrollar código de forma conjunta entre varias personas sin un sistema de control de versiones, puede ser un auténtico infierno. Doy fe.
Por diversas circunstancias, en el proyecto en el que estoy trabajando ahora mismo, no teníamos ningún sistema de este tipo, y sufríamos de los típicos problemas: que si cuál es la versión más reciente del repositorio, que si la versión del servidor no es la última, que si tus cambios hacen que no funcionen mis clases, que si habíamos decidido hacerlo al revés… por suerte hay muy buen rollo y nos lo tomábamos con el mejor humor posible. Pero seguía siendo insufrible.
Así que, pasada la tormenta del deadline para el prototipo arquitectónico -que supuso el clímax de los problemas de versiones- decidimos que ya era hora de hacer algo. Así que me asigné el marrón a mí mismo y me puse manos a la obra para montar un sistema CVS.
Por razones prácticas, el sistema anfitrión corre Windows XP SP2, así que la plataforma no era una opción a elegir. Tras echar un vistazo a las opciones disponibles, me decidí por CVSNT, que no obstante es software libre licenciado bajo GNU GPL. El proceso no fue muy complejo, pero resumo aquí los pasos a llevar a cabo por si a alguien le resulta de utilidad.
- En primer lugar, obviamente, hay que descargar e instalar el software. Típico siguiente-siguiente-siguiente, así que no voy a dar detalles innecesarios. :-P
- Ahora hay que abrir el Service Control Panel de CVSNT en el grupo de progamas creado y configurar las opciones.
- Conviene detener los servicios mientras configuramos el servidor, en la pestaña About, pero tampoco pasa nada por no hacerlo.
- En Repository Configuration hay que dar un nombre al servidor y añadir un repositorio pulsando en Add y rellenando los campos del formulario.
- Location: algún directorio en el disco del servidor.
- Name: cualquiera que identifique al servidor, por ejemplo «cvs».
- Description: meramente informativo.
- Conviene marcar las tres cajas de verificación.
- El software nos avisará de que el repositorio no está inicializado, así que le pediremos que lo haga por nosotros.
- En Server Settings no es necesario tocar nada, pero podemos ajustar cosas como el puerto en el que la aplicación escuchará -por si tenemos problemas con los cortafuegos-, o el usuario bajo el que correrá el servicio.
- Respecto a las opciones de Compatibility Options, sólo hará falta cambiarlas si usáis un cliente que lo necesite. Con cualquier software compatible con CVS, no será necesario.
- Debemos asegurarnos que el plugin del protocolo que utilizaremos para acceder está activado en la pestaña Plugins.
- En Advanced no será necesario tocar nada.
- Aplicamos los cambios realizados y volvemos a iniciar los servicios de CVSNT en la primera pestaña. Quizá sea necesario reiniciar el sistema para que los cambios en la variable PATH del sistema tengan efecto.
- Ahora hay que crear un usuario administrador del servidor CVSNT (que no tiene porqué ser necesariamente administrador del sistema), y tantos usuarios del servidor como deseemos usar. Podéis hacerlo perfectamente mediante las herramientas administrativas de Windows. Se podría crear un único usuario y varios alias para el mismo en el servidor, pero de cara a gestionar los permisos en el disco, será más seguro crear cuentas reales… a no ser que pretendáis usar cientos de usuarios, claro.
- Ahora hay que establecer las contraseñas de los usuarios, para lo cual ejecutaremos en primer lugar:
- set cvsroot=:sspi:nombre_del_host:/nombre_del_repositorio
- Y ahora debemos asignar las contraseñas (por seguridad, deberían ser diferentes a las usadas para el sistema operativo), para lo cual debemos ejecutar, para cada usuario del servidor, esta orden:
- cvs passwd -a nombre_de_usuario
- Si hemos creado muchos usuarios en la máquina, y deseamos evitar la fiesta en que se ha convertido la pantalla de inicio de sesión, conviene ocultar los que no vayamos a utilizar. Para ello, debemos acceder al editor del registro y posteriormente:
- Acceder a la clave HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/ CurrentVersion/Winlogon/SpecialAccounts/UserList
- Crear una nueva entrada DWORD para cada cuenta, con el nombre de la misma como valor.
Y con esto, el servidor ya está listo para funcionar. ;-)
Así que hoy no has currado mucho… :)
Hoy no, pero no por el CVS, sino porque hemos tenido una mega-reunión que no acababa nunca. :P
El CVS lleva montado ya tres semanitas más o menos, sólo que aún no había sacado un hueco para escribir el post jeje…
Cool de hecho lo voy a implemetar para mi uso para mi uso
saludos Death Master realize al pie de la letra tu minitutorial pero no lo he logrado configurar con el cliente eclipse 3.3 ya que solo puedo acceer con un unico usuario que es el de la maquina donde tengo instalado el repositorio
Si me pudieras hacer el favor de ayudarme ya no se que hacer
gracias
Hola Hugo Alejandro.
La verdad es que, sin más detalles acerca del fallo, no sabría qué decirte. Si has seguido los pasos correctamente, deberías tener configurados varios usuarios para el CVS, de forma que podría funcionar desde absolutamente cualquier sistema.
Yo, además, no trabajo con Eclipse sino con NetBeans, así que tampoco conozco muy bien cómo será la integración de dicho IDE para los sistemas CVS.
Un saludo.
Pues no funciona lo de los multiples usuarios. Si fueses tan amable de explicar ese apartado paso por paso..
Una vez fijada la variable de entorno cvsroot:
set cvsroot=:sspi:nombre_del_host:/nombre_del_repositorio
Sólo tienes que añadir usuarios al sistema y usar la orden siguiente:
cvs passwd -a nombre_de_usuario
O también puedes crear cuentas «virtuales» vinculadas a otras reales con:
cvs passwd -a nombre_virtual -r cuenta_real
Con cualquiera de los dos comandos, deberás introducir una contraseña válida, y ya deberían funcionar contra el CVS.
[…] de un sistema de control de versiones, concretamente CVSNT bajo Windows, algo de lo que ya hablé -por encima- en este blog. Se analizan los problemas de sincronización, sus causas y efectos sobre […]
Excelente tutorial!!!!! muchas gracias por publicarlo, me ayudó d mucho a instalar mi propio Servidor :D
Saludos!
Perfecto… Gracias
hola estoy atorado en el paso de cambiar la contraseña
passwd -a administrador
can´t authenticate -server and client cannot agree on authentication scheme (goto ´´)
si me puedes resolver mi duda te lo agradeceria mucho
¿Has introducido el comando correctamente?
«cvs passwd -a nombre_de_usuario»
¿Has establecido primero la variable de entorno?
«set cvsroot=:sspi:nombre_del_host:/nombre_del_repositorio»
Si has realizado estos dos pasos con los comandos correctos, y por el error que te da, me parece que intentas cambiar la contraseña en remoto. Yo siempre lo he realizado en local, desde el propio servidor.
Un saludo.
Hola…
Muchas gracias por el tutorial, pero me atore con en la parte ya de logearme con ese usuario administrador
C:\>cvs login
Logging in to :pserver:cvsadmin@nombre_servidor:2401:/TEST
CVS Password:
Fatal error, aborting.
cvs [login aborted]: cvsadmin: user account disabled
espero me puedas ayudar con este detalle
gracias!!!
Pues la verdad es que no he visto ese error nunca… siento no poder ayudarte.
Hola Death Master,
Ya segui los pasos que mencionas pero tengo dudas de como exportar mi codigo al servidor desde NetBeans y posteriormente que otros usuarios tengan tambien acceso.
Si tienes por ahi alguna informacion al respecto te lo agradeceria.
Saludos
Simplemente debes ir al menú de versiones («CVS» en NetBeans 5.5 o «Versioning» en 6.0 y posteriores), seleccionar la opción CVS (si hay también otras, como SVN) y después «Checkout».
Rellenas los datos de conexión, y ya está listo para usar el repositorio.
Luego, en los proyectos, puedes hacer las opciones típicas de «Commit», «Update», etc. Para descargar los datos del CVS por primera vez, vuelves a hacer el paso del «Checkout».
Saludos.
Hola. Te comento, quiero hacer un servidor de cvs, segui los pasos que indicas, pero al momento de hacer el del password me sale esto:
connect to direccion.com.ar:2401 failed: Se produjo un error durante el intento de
conexión ya que la parte conectada no respondió adecuadamente tras un periodo de
tiempo, o bien se produjo un error en la conexión establecida ya que el host co
nectado no ha podido responder.
ME imagino alguna macana de parte mia, y quiero explicar lo que tengo instalado para ver si puedes ayudarme. Saque mi dominio .com.ar y tengo el no-ip para que me tire el ip actual., por lo que pense que donde decias:
“set cvsroot=:sspi:nombre_del_host:/nombre_del_repositorio
en nombre_del_host le puse misurl.com.ar o es que entendi mal?
Gracias.
Ten en cuenta que para poner ese nombre como nombre del host, necesitarás que el equipo sepa traducirlo, y que además sea el nombre del equipo en Windows.
Si con noip no funciona para direcciones locales, puedes incluir una entrada en el fichero de hosts que traduzca ese nombre por 127.0.0.1.
No se puede accder a http://www.cvsnt.org/
Hola Death Master
Te comento que he tenido errores para configurar el repository, hasta que inicie ambos servicios.
Me genero correctamente el repository (o por lo menos asi sentenciaba el CVS Control Panel)
pero ahora quiero establecer las cuentas de los usuarios y me da el siguiente error:
cvs [passwd aborted]: /CVSserver: no such repository
antes genere la variable de entorno.
Te agradeceria si me puedes ayudar. Desde ya muchas gracias.