meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
aplicaciones:cvs [072014/01/ 21:14] – editor externo 127.0.0.1aplicaciones:cvs [182023/01/ 13:10] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 +{{tag> cvs}}
 +====== CVS en linux ======
 +
 +===== Instalación =====
 +
 +Lo instalamos desde los repositorios. También tendremos que instalar el demonio xinetd que no viene por defecto en Centos 5. Ya que lo utilizaremos.
 +<code bash>
 +  yum install cvs
 +  yum install xinetd
 +</code>
 +
 +===== Configuración =====
 +
 +==== General ====
 +
 +Usaremos el método de acceso pserver. Que es un protocolo propio de CVS para la gestión de los repositorios. 
 +
 +Lo primero que tenemos que hacer es crear un usuario y un grupo para el CVS. Ya que CVS no permite que root haga modificaciones en los repositorios.
 +
 +<code bash>
 +  groupadd cvs -g 500
 +  useradd CVSWRITER -g 500
 +</code>
 +
 +Creamos los repositorios que vayamos a utilizar. En este caso no los creamos desde cero, si no que copiamos los que ya existían en servidor Windows. 
 +
 +<code bash>
 +  mkdir -p /var/grecasadata/cvs
 +</code>
 +
 +<note important>Hay que repetir este paso tantas veces como repositorios distintos tengamos.
 +</note>
 +
 +<code bash>
 +  export CVSROOT=/var/grecasadata/cvs/<nombrereposito>
 +  cvs init
 +</code>
 +
 +==== Pserver ====
 +
 +Configuramos el servicio pserver. Puede llamarse cvs o cvspserver.
 +
 +<code bash>
 +  vim /etc/xinetd.d/cvs
 +</code>
 +
 +Lo dejamos de esta forma. Hay que tener en cuenta que hay que agregar un alinea "--allow-root=/var/grecasadata/cvs/<nombre repositorio>" por cada repositorio que tengamos. Si no no podremos acceder.
 +
 +<code bash>
 +# default: off
 +# description: The CVS service can record the history of your source \
 +#              files. CVS stores all the versions of a file in a single \
 +#              file in a clever way that only stores the differences \
 +#              between versions.
 +service cvspserver
 +{
 +        disable                 = no
 +        port                    = 2401
 +        socket_type             = stream
 +        protocol                = tcp
 +        wait                    = no
 +        user                    = CVSWRITER
 +        passenv                 = PATH
 +        server                  = /usr/bin/cvs
 +#       env                     = HOME=/var/grecasadata/cvs
 +        server_args             = -f --allow-root=/var/grecasadata/cvs/cvsprueba --allow-root=/var/grecasadata/cvs/cvsrepo --allow-root=/var/grecasadata/cvs/cvstemp  --allow-root=/var/grecasadata/cvs/cvsejecutivapre --allow-root=/var/grecasadata/cvs/cvsejecutivaexp --allow-root=/var/grecasadata/cvs/cvsejecutivades --allow-root=/var/grecasadata/cvs/cvsejecutiva pserver
 +#       bind                    = 127.0.0.1
 +}
 +</code>
 +
 +Iniciamos el servicio
 +  service xinetd restart
 +
 +==== Acceso ====
 +
 +Una vez tengamos los repositorios copiados dentro de "/var/grecasadata/cvs". Tenemos que modificar los archivos passwd que esta dentro de la carpeta CVSROOT dentro de cada repositorio.
 +
 +==== El Archivo passwd ====
 +
 +Lo dejamos con la siguiente sintaxis: "usuario1:passCifrada:usuarioLocal". Donde usuario1 es el nombre del usuario remoto, passCifrada la contraseña del usuario previamente cifrada y usuarioLocal es el usuario dueño de la carpeta /var/grecasadata/cvs y que pertenece al grupo cvs. En este caso es CVSWRITER.
 +
 +Ejemplo:
 +<code bash>
 +usuario1:$1$4lZbpW/X$MIkTbTVxGUmKKOIKqN8Y1.:CVSWRITER
 +</code>
 +
 +Si lo que deseas es añadir un usuario nuevo
 +
 +<code bash>
 +cd /var/grecasadata/cvs/<nombre reposito>/CVSROOT
 +htpasswd passwd <nombre usuario>
 +vim passwd
 +</code>
 +
 +y añadimos a la nueva linea (del archivo **passwd**, con el **vim**) el nombre del usuario local siguiendo la sintaxis "usuario1:passCifrada:usuarioLocal".
 +
 +<note>
 +Para poder usar **htpasswd** hay que tener instalado apache.
 +</note>
 +
 +==== Permisos ====
 +
 +Toda la carpeta cvs debe pertenecer a CVSWRITER y al grupo cvs. Además solo debe tener todos los permisos el usuario CVSWRITER, los demás del grupo solo lectura y ejecución. El resto ninguno. Ademas de añadir el SGID para que los directorios nuevos hereden el grupo.
 +
 +<code bash>
 +chown -R CVSWRITER:cvs /var/grecasadata/cvs
 +chmod -R 750 /var/grecasadata/cvs
 +chmod +s /var/grecasadata/cvs
 +</code>
 +
 +===== Tipos de usuarios =====
 +
 +Todos los usuarios remotos por defecto usaran los permisos que tenga CVSWRITER, es decir todos los permisos. Si queremos que los usuarios remotos se diferencien entre escritores y lectores debemos crear dos archivos dentro de CVSROOT
 +
 +<code bash>
 +touch readers
 +touch writers
 +</code>
 +
 +y poner dentro de cada archivo el nombre del usuario que queremos que lea o lea y escriba. Uno por linea.
 +
 +  usuario1
 +  usuario2
 +  ...
 +
 +===== Migracion CVSNT a CVS =====
 +
 +CVSNT usa "kopb" para especificar que el archivo es binario, mientras que CVS usa "expand @b@;". Asi que si usamos un repositorio de CVSNT en un servidor CVS todos los archivos aparecerá como ASCII. Para evitar esto ejecutamos el siguiente script en la carpeta donde estén los repositorios.
 +
 +<code bash>
 +find . -not -name "*,v.bak" -exec grep -q "kopt.*b" \{\} \; -not -exec grep -q "expand.*@b@;" \{\} \; -print0  | xargs -0 -i sh -c  "echo conv {};cp \"{}\" \"{}.bak\";cat \"{}.bak\" | sed 2a\"expand  @b@;\" > \"{}\""
 +</code>
 +
 +Para cada archivo modificado creara uno con el mismo nombre mas la extensión .bak.
 +
 +===== Links =====
 +
 +  * http://www.chuidiang.com/chuwiki/index.php?title=Sesi%C3%B3n_con_CVS
 +  * http://firefang.net/english/converting-cvsnt-repository-format-to-cvs-repository-format
 +