814 lines
		
	
	
	
		
			34 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			814 lines
		
	
	
	
		
			34 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<?xml version="1.0" encoding="iso-8859-1"?>
 | 
						|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
 | 
						|
	"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
 | 
						|
<!--
 | 
						|
  The FreeBSD Spanish Documentation Project
 | 
						|
  $FreeBSD$
 | 
						|
  $FreeBSDes$
 | 
						|
-->
 | 
						|
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="es">
 | 
						|
  <info><title>Configurar un repositorio CVS - a la manera de FreeBSD</title>
 | 
						|
    
 | 
						|
 | 
						|
    <author><personname><firstname>Stijn</firstname><surname>Hoop</surname></personname><affiliation>
 | 
						|
        <address><email>stijn@win.tue.nl</email></address>
 | 
						|
      </affiliation></author>
 | 
						|
 | 
						|
    <copyright>
 | 
						|
      <year>2001</year>
 | 
						|
      <year>2002</year>
 | 
						|
      <year>2003</year>
 | 
						|
      <holder role="mailto:stijn@win.tue.nl">Stijn Hoop</holder>
 | 
						|
    </copyright>
 | 
						|
 | 
						|
    <pubdate>$FreeBSD$</pubdate>
 | 
						|
 | 
						|
    <releaseinfo>$FreeBSD$</releaseinfo>
 | 
						|
 | 
						|
    <legalnotice xml:id="trademarks" role="trademarks">
 | 
						|
      &tm-attrib.freebsd;
 | 
						|
      &tm-attrib.general;
 | 
						|
    </legalnotice>
 | 
						|
 | 
						|
    <abstract>
 | 
						|
      <para>Este artículo describe los pasos que dí para
 | 
						|
        configurar un repositorio CVS con los mismos <quote>scripts</quote>
 | 
						|
        usados por el proyecto &os; en su configuración.
 | 
						|
        Tienen algunas ventajas frente a las demás
 | 
						|
        configuraciones de CVS, por ejemplo una gestión más
 | 
						|
	eficaz de los accesos a los árboles de código y
 | 
						|
        la creación de mensajes de correo electrónico por
 | 
						|
        cada commit.</para>
 | 
						|
	&trans.es.jcamou;
 | 
						|
    </abstract>
 | 
						|
  </info>
 | 
						|
 | 
						|
  <sect1>
 | 
						|
    <title>Introducción</title>
 | 
						|
 | 
						|
    <para>Muchos de los proyectos de software de código
 | 
						|
      abierto usan <application>CVS</application> como su sistema
 | 
						|
      de gestión de código.  Aunque <application>
 | 
						|
      CVS</application> es bastante bueno para esto tiene sus
 | 
						|
      inconvenientes y sus flaquezas.  Un ejemplo de esto es el compartir
 | 
						|
      un árbol de código con otros desarrolladores, lo cual
 | 
						|
      puede convertirse rápidamente en una pesadilla para la
 | 
						|
      administración del sistema, especialmente si se desea
 | 
						|
      proteger del acceso indiscriminado ciertas partes del
 | 
						|
      árbol.</para>
 | 
						|
 | 
						|
    <para>&os; es uno de los proyectos que usan <application>
 | 
						|
      CVS</application>.  También cuenta con una gran
 | 
						|
      cantidad de desarrolladores alrededor del mundo.  Ellos
 | 
						|
      mismos desarrollaron algunos <quote>scripts</quote> para hacer
 | 
						|
      del manejo del repositorio una tarea más fácil.
 | 
						|
      Recientemente estos <quote>scripts</quote> fueron revisados por
 | 
						|
      &a.joe; para facilitar su uso en otros proyectos.  Este
 | 
						|
      artículo muestra uno de los métodos para usar estos
 | 
						|
      nuevos <quote>scripts</quote>.</para>
 | 
						|
 | 
						|
    <para>Si quiere sacar verdadero partido de la información que
 | 
						|
      se le brinda en este artículo debe tener familiaridad con
 | 
						|
      métodos básicos para realizar operaciones
 | 
						|
      <application>CVS</application>.</para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1>
 | 
						|
    <title>Comienzo de la configuración</title>
 | 
						|
 | 
						|
    <warning>
 | 
						|
      <para>Es preferible que realice estos procedimientos
 | 
						|
        en un repositorio de prueba vacío y podamos asi asegurarnos
 | 
						|
        de que entiende todas las consecuencias.  Como siempre, asegúrese
 | 
						|
        de tener respaldos recientes.</para>
 | 
						|
    </warning>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Inicio del repositorio</title>
 | 
						|
 | 
						|
      <para>Lo primero a hacer al configurar un nuevo repositorio
 | 
						|
        es decirle a <application>CVS</application> que lo inicie:
 | 
						|
 | 
						|
        <screen>&prompt.user; <userinput>cvs -d ruta-al-repositorio
 | 
						|
         init</userinput></screen>
 | 
						|
 | 
						|
        Esto le indica a <application>CVS</application> que cree
 | 
						|
        el directorio administrativo <filename>CVSROOT</filename>,
 | 
						|
        donde se albergarán todas las configuraciones.</para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>El grupo del repositorio</title>
 | 
						|
 | 
						|
      <para>Ahora vamos a crear al grupo dueño del repositorio.
 | 
						|
        Todos los <quote>committers</quote> necesitan estar en este
 | 
						|
        grupo, para de esta manera poder escribir en el repositorio.
 | 
						|
        Asumiremos el grupo <literal>ncvs</literal> por defecto
 | 
						|
        de &os;.
 | 
						|
 | 
						|
        <screen>&prompt.root; <userinput>pw groupadd ncvs
 | 
						|
        </userinput></screen>
 | 
						|
 | 
						|
        A continuación, es necesario usar &man.chown.8; en el directorio
 | 
						|
        para ajustar los permisos al grupo reción agregado:
 | 
						|
 | 
						|
        <screen>&prompt.root; <userinput>chown -R :ncvs
 | 
						|
        
 | 
						|
        path-a-su-repositorio</userinput></screen>
 | 
						|
 | 
						|
        Esto asegura que nadie podrá escribir en el repositorio
 | 
						|
        sin los permisos de grupo adecuados.</para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Obtención del código</title>
 | 
						|
 | 
						|
      <para>Ahora es necesario obtener el directorio <filename>
 | 
						|
        CVSROOT</filename> del repositorio de &os;.  Puede hacerse muy
 | 
						|
        fácilmente desde una réplica del CVS
 | 
						|
        anónimo de &os;.  Para más información
 | 
						|
<!--
 | 
						|
	consulte <ulink
 | 
						|
        url="&url.books.handbook;/anoncvs.html">el capítulo
 | 
						|
-->
 | 
						|
	consulte <link xlink:href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/anoncvs.html">el
 | 
						|
        capítulo correspondiente del Handbook</link>.
 | 
						|
        Asumiremos que el código está en
 | 
						|
        <filename>CVSROOT-freebsd</filename> en el directorio
 | 
						|
        actual.</para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Copia de los <quote>scripts</quote> de &os;</title>
 | 
						|
 | 
						|
      <para>El siguiente paso consiste en copiar el código de &os;
 | 
						|
        sito en <filename>CVSROOT</filename> a nuestro
 | 
						|
        repositorio.  Si está familiarizado con <application>CVS
 | 
						|
        </application>, puede pensar que se puede
 | 
						|
        realizar importando los <quote>scripts</quote>, lo que debería
 | 
						|
	permitirle sincronizar posteriores versiones muy fácilmente.
 | 
						|
        No es así, <application>CVS</application> tiene una
 | 
						|
        deficiencia en este aspecto: al intentar importar
 | 
						|
        código al directorio
 | 
						|
        <filename>CVSROOT</filename> no se actualizarán los
 | 
						|
        ficheros administrativos necesarios.  Para hacer que esto
 | 
						|
        suceda es necesario ejecutar <quote>checkin</quote>
 | 
						|
        en cada uno de ellos después de importarlos,
 | 
						|
        perdiendo asi el valor de <literal>cvs import</literal>.
 | 
						|
	En consecuencia el método recomendado para este
 | 
						|
	cometido es sencillamente copiar los
 | 
						|
	<quote>scripts</quote>.</para>
 | 
						|
 | 
						|
      <para>No importa en realidad si no encuentra demasiado sentido al
 | 
						|
	párrafo anterior, el resultado será el mismo.
 | 
						|
        Simplemente haga <quote>check out</quote> de su <filename>CVSROOT
 | 
						|
        </filename> y copie los ficheros de &os; a su copia local:
 | 
						|
 | 
						|
        <screen>&prompt.user; <userinput>cvs -d 
 | 
						|
        ruta-a-su-repositorio  checkout CVSROOT</userinput>
 | 
						|
        &prompt.user; <userinput>cd CVSROOT</userinput>
 | 
						|
        &prompt.user; <userinput>cp ../CVSROOT-freebsd/* .</userinput>
 | 
						|
        &prompt.user; <userinput>cvs add *</userinput></screen>
 | 
						|
 | 
						|
        Tenga en cuenta que probablemente recibirá advertencias
 | 
						|
        acerca de directorios no copiados; es normal que suceda pero no
 | 
						|
	debe usted preocuparse porque éstos no son
 | 
						|
        necesarios.</para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Los <quote>scripts</quote></title>
 | 
						|
 | 
						|
      <para>Ahora ya cuenta con una copia exacta en su directorio de
 | 
						|
	trabajo de los <quote>scripts</quote> que &os; usa en la
 | 
						|
	gestión de su repositorio.
 | 
						|
        He aquí una descripción del cometido de cada uno de
 | 
						|
	ellos.</para>
 | 
						|
 | 
						|
      <itemizedlist>
 | 
						|
        <listitem>
 | 
						|
          <para><filename>access</filename> - este fichero
 | 
						|
            no se usa en la configuración por defecto.
 | 
						|
            Se usa en <link linkend="freebsdspecific">la
 | 
						|
            configuración del proyecto &os;</link>,
 | 
						|
            el cual controla el acceso al repositorio.  Puede
 | 
						|
            borrar este fichero si no quiere usarlo en su
 | 
						|
            configuración.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>avail</filename> - este fichero
 | 
						|
            controla el acceso al repositorio.  Dentro del mismo
 | 
						|
            es posible especificar grupos de personas
 | 
						|
            autorizadas para el acceso al repositorio,
 | 
						|
            asi como commits no autorizados en uno o más
 | 
						|
            directorios dados.  Deberá
 | 
						|
            editarlo para que contenga los grupos
 | 
						|
            y directorios que se usarán en su
 | 
						|
            repositorio.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>cfg.pm</filename> - este fichero
 | 
						|
            se encarga de analizar su configuración
 | 
						|
            y provee la configuración por defecto.
 | 
						|
            <emphasis>No</emphasis> deberá usted
 | 
						|
            cambiar nada en este fichero.  Si va a hacer cambios
 | 
						|
            su configuración deberán ir en
 | 
						|
            <filename>cfg_local.pm</filename>.
 | 
						|
            </para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>cfg_local.pm</filename> -
 | 
						|
            contiene todos los parámetros configurables del
 | 
						|
            sistema.  Deberá configurar todo tipo de
 | 
						|
            cosas en este fichero, tales como el envío
 | 
						|
            por correo electrónico de los mensajes
 | 
						|
            de commit, desde qué <quote>hosts</quote> pueden
 | 
						|
	    hacer commits los usuarios, etc.  Más
 | 
						|
            información más adelante en el texto.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>checkoutlist</filename> - este fichero
 | 
						|
            lista todos los ficheros bajo control de <application>
 | 
						|
            CVS</application> en este directorio, aparte de aquellos
 | 
						|
            estándar creados por <literal>cvs init</literal>.
 | 
						|
            Deberá editar éste para borrar algunos
 | 
						|
            ficheros específicos del proyecto &os;.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>commit_prep.pl</filename> - este <quote>
 | 
						|
	    script</quote> se encarga de realizar algunas comprobaciones
 | 
						|
	    previas a cada commit según las modificaciones hechas o
 | 
						|
	    o no en su versión de
 | 
						|
            <filename>cfg_local.pm</filename>.
 | 
						|
            No debería modificar este <quote>script</quote>.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>commitcheck</filename> - este <quote>script</quote>
 | 
						|
            es invocado directamente por <application>CVS</application>.
 | 
						|
            En primer lugar comprueba que la <quote>committer</quote> tenga
 | 
						|
            acceso a una parte específica del árbol usando
 | 
						|
            <filename>cvs_acls.pl</filename>, para después
 | 
						|
            ejecutar <filename>commit_prep.pl</filename>, mediante el que
 | 
						|
	    efectuará las comprobaciones de rigor previas a cada
 | 
						|
	    commit.  Si todo ha ido bien  <application>CVS</application>
 | 
						|
            permitirá que el commit tenga lugar.  No debería
 | 
						|
            tocar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>commitinfo</filename> - este fichero es
 | 
						|
            usado por <application>CVS</application> para determinar
 | 
						|
            qué <quote>script</quote> se deberá ejecutar
 | 
						|
	    antes de hacer el commit, en este caso
 | 
						|
            <filename>commitcheck</filename>.
 | 
						|
            Tampoco debería tener que modificar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>config</filename> - el fichero de
 | 
						|
            configuración del repositorio.  Debería
 | 
						|
            editarlo si es necesario aunque la mayoría de
 | 
						|
            los administradores lo dejan tal y como viene por defecto.
 | 
						|
            Dispone de más información sobre las opciones
 | 
						|
            que pueden declararse en él en el manual de
 | 
						|
            <application>CVS</application>.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>cvs_acls.pl</filename> - este <quote>script</quote>
 | 
						|
            determina la identidad de los <quote>committers</quote>, así
 | 
						|
            como si tiene permitido acceder al árbol.
 | 
						|
            Está basado en el fichero <filename>avail</filename>.
 | 
						|
            No debería tener que modificar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>cvsignore</filename> - este fichero especifica
 | 
						|
            los ficheros que <application>CVS</application> no debe
 | 
						|
            incluir en el repositorio.  Puede editarlo a su gusto.
 | 
						|
            Para más información sobre fichero consulte
 | 
						|
            el manual de <application>CVS</application>.
 | 
						|
            </para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>cvswrappers</filename> -
 | 
						|
            <application>CVS</application> usa este fichero para activar
 | 
						|
	    o desactivar la expansión de
 | 
						|
            la expansión de palabras clave o si el
 | 
						|
            fichero debe ser considerado binario.  Este fichero puede
 | 
						|
            editarse  según necesidades.  Para más
 | 
						|
	    información sobre este fichero consulte el manual de
 | 
						|
            <application>CVS</application>.
 | 
						|
            Tenga en cuenta que las opciones <literal>-t</literal> y <literal>
 | 
						|
            -f</literal> no funcionan correctamente con <application>
 | 
						|
            CVS</application> cliente/servidor.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>edithook</filename> - este fichero ya no
 | 
						|
            se usa, aunque se mantenga por razones históricas.
 | 
						|
            Este fichero puede borrarse con total tranquilidad sin miedo de
 | 
						|
            perjudicar la configuración.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>editinfo</filename> - <application>CVS
 | 
						|
            </application> usa este fichero en las sobreescrituras de
 | 
						|
	    edición.  &os; no usa esta función ya que el
 | 
						|
	    análisis de mensajes de <quote>log</quote> se hace
 | 
						|
	    mediante <filename>verifymsg</filename> y
 | 
						|
	    <filename>logcheck</filename>.  Esto se debe a que
 | 
						|
	    <filename>editinfo</filename> no funciona correctamente con
 | 
						|
	    commits remotos ni con aquellos que usan las opciones
 | 
						|
            <literal>-m</literal> o <literal>-F</literal>.
 | 
						|
            No debería tener que modificar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>exclude</filename> - este fichero lista
 | 
						|
            expresiones regulares usadas por
 | 
						|
	    <filename>commit_prep.pl</filename> para determinar ficheros
 | 
						|
	    que no puedan contener cabeceras de revisión.  En la
 | 
						|
	    configuración que se usa en &os; todos los ficheros
 | 
						|
	    bajo control de revisión necesitan tener lo que se
 | 
						|
	    llama una cabecera de revisión
 | 
						|
	    ($FreeBSD$).  Todos los ficheros que aparezcan
 | 
						|
	    en alguna de las líneas de
 | 
						|
            <filename>exclude</filename> no pasan por dicha revisión.
 | 
						|
	    Incluya en este fichero entradas para aquellos ficheros que no
 | 
						|
	    puedan tener una cabecera de revisión.  Si va a instalar
 | 
						|
	    los <quote>scripts</quote> <filename>CVSROOT/</filename> es un
 | 
						|
	    firme candidato para figurar en este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>log_accum.pl</filename> - este es el
 | 
						|
	    <quote>script</quote> encargado de obtener el mensaje de
 | 
						|
	    <quote>log</quote> que genera <filename>logcheck</filename> y
 | 
						|
	    añadirlo a un fichero de <quote>log</quote> en el repositorio
 | 
						|
	    para que pueda disponerse de respaldos en caso de necesidad.
 | 
						|
	    También gestiona el envío de un correo electrónico
 | 
						|
	    a la dirección que el administrador declare (en
 | 
						|
            <filename>cfg_local.pm</filename>).  <filename>loginfo
 | 
						|
            </filename> se encarga de conectar <filename>log_accum.pl
 | 
						|
            </filename> con <application>CVS</application>.  No
 | 
						|
            debería tener que modificar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>logcheck</filename> - este fichero revisa el
 | 
						|
            mensaje de commit proporcionado por el
 | 
						|
            <quote>committer</quote> e intenta esterilizarlo, valga la
 | 
						|
            expresión.  Este fichero conecta con
 | 
						|
            <application>CVS</application> via <filename>verifymsg
 | 
						|
            </filename>.  Tampoco debería tener que modificar este
 | 
						|
	    fichero.</para>
 | 
						|
 | 
						|
          <note><para>Este <quote>script</quote> depende de un hack de <application>
 | 
						|
            CVS</application> propio de &os;: esta versión lee el
 | 
						|
            mensaje de <quote>log</quote> después de que este
 | 
						|
	    <quote>script</quote> lo haya modificado.  La versión
 | 
						|
            estándar de <application>CVS</application>
 | 
						|
            no hace esto, lo que hace a <filename>
 | 
						|
            logcheck</filename> incapaz de limpiar los mensajes de
 | 
						|
	    <quote>log</quote>, aunque es capaz de comprobar que
 | 
						|
	    esté sintácticamente correcto.
 | 
						|
            <application>CVS</application> 1.11.2 puede configurarse
 | 
						|
            para tener el mismo comportamiento que la
 | 
						|
            versión de &os; activando <literal>
 | 
						|
            RereadLogAfterVerify=always</literal> en el fichero
 | 
						|
            <filename>config</filename>.</para></note>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>loginfo</filename> - este fichero es usado por
 | 
						|
            <application>CVS</application> para controlar dónde se
 | 
						|
	    envía la información de <quote>log</quote>;
 | 
						|
            aquí es donde <filename>log_accum.pl</filename>
 | 
						|
            entra en escena.  No debería tener que modificar
 | 
						|
	    este fichero.
 | 
						|
          </para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>modules</filename> - este fichero mantiene su
 | 
						|
            significado tradicional en <application>CVS</application>.
 | 
						|
            Deberá borrar los módulos propios de &os; de la
 | 
						|
            versión que vaya a usar.  Puede editarlo a su
 | 
						|
            gusto.  Tiene más información acerca de este fichero
 | 
						|
            en el manual de <application>CVS</application>.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>notify</filename> -
 | 
						|
            <application>CVS</application> usa este fichero en caso de que
 | 
						|
            alguien ponga un fichero en modo <quote>watch</quote>.  No se usa en el
 | 
						|
            repositorio de &os; y puede editarse cuanto se desee.
 | 
						|
            Tiene más información acerca de este fichero
 | 
						|
            en el manual de <application>CVS</application>.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>options</filename> - este fichero se usa
 | 
						|
            específicamente en la versión de <application>CVS
 | 
						|
            </application>
 | 
						|
            de &os;, así como en la versión de Debian.
 | 
						|
            Contiene una palabra clave para expander cabeceras de
 | 
						|
            revisión.  Tendrá que modificar este fichero
 | 
						|
	    y escribir la misma palabra que haya declarado en
 | 
						|
            <filename>cfg_local.pm</filename> (si es que quiere usar esa
 | 
						|
            característica, claro está; el valor por defecto
 | 
						|
	    es FreeBSD)</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>rcsinfo</filename> - este fichero mapea
 | 
						|
            directorios en el repositorio para aplicar una plantilla
 | 
						|
            como <filename>rcstemplate</filename>.  Por defecto &os;
 | 
						|
            usa una plantilla para el repositorio.  Es posible
 | 
						|
            añadir otras plantillas si se estima conveniente.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>tagcheck</filename> - este fichero controla
 | 
						|
            el acceso a marcar <quote>tags</quote> (etiquetas) en el
 | 
						|
	    repositorio.  La versión por defecto en &os; no admite
 | 
						|
	    etiquetas con nombre RELENG* debido al proceso de ingeniería
 | 
						|
	    de releases.  Puede editar este fichero según sus
 | 
						|
	    necesidades.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>taginfo</filename> - este fichero mapea operaciones
 | 
						|
            de etiquetado en los directorios del repositorio, cosa necesaria en
 | 
						|
	    el funcionamiento habitual de <quote>scripts</quote> de control como
 | 
						|
            <filename>tagcheck</filename>.  No debería tener que modificar
 | 
						|
            este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>unwrap</filename> - este <quote>script</quote> puede ser
 | 
						|
            usado para alterar el estado de ficheros binarios en una forma opuesta a
 | 
						|
	    como lo hace <filename>cvswrappers</filename>, descrito al principio de esta
 | 
						|
	    lista.   No se usa en la configuración que funciona hoy día
 | 
						|
	    en &os; porque no funciona correctamente con commits remotos.
 | 
						|
            No debería tener que modificar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>verifymsg</filename> - este fichero mapea
 | 
						|
            directorios del repositorio con <quote>scripts</quote> encargados del proceso
 | 
						|
	    posterior de mensajes de commit en ficheros de <quote>log</quote>, por
 | 
						|
            ejemplo <filename>logcheck</filename>.
 | 
						|
            No debería verse en la necesidad de modificar este fichero.</para>
 | 
						|
        </listitem>
 | 
						|
 | 
						|
        <listitem>
 | 
						|
          <para><filename>wrap</filename> - este script puede usarse
 | 
						|
            para poner ficheros binarios bajo el efecto de
 | 
						|
	    <filename>cvswrappers</filename> (descrito al principio de esta
 | 
						|
	    lista) en cada <quote>checkin</quote>.  No se usa en la
 | 
						|
	    configuración que mantiene el proyecto &os; porque no
 | 
						|
	    funciona correctamente con commits remotos.  No debería tener
 | 
						|
	    que modificar este fichero.
 | 
						|
            </para>
 | 
						|
        </listitem>
 | 
						|
      </itemizedlist>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Modificación de los <quote>scripts</quote></title>
 | 
						|
 | 
						|
      <para>El siguiente paso es configurar los <quote>scripts</quote> para que
 | 
						|
        se adapten a sus necesidades.  Tendrá que revisar todos y
 | 
						|
        cada uno de los ficheros en el directorio y hacer sus propios
 | 
						|
        cambios y configuraciones.  Seguramente tendrá que editar los
 | 
						|
        siguientes ficheros:</para>
 | 
						|
 | 
						|
      <procedure>
 | 
						|
        <step>
 | 
						|
          <para>Si no desea usar los <quote>scripts</quote> de la
 | 
						|
          <link linkend="freebsdspecific">
 | 
						|
          configuración específica de &os;</link>
 | 
						|
          puede borrar tranquilamente el fichero <filename>
 | 
						|
          access</filename>:
 | 
						|
 | 
						|
          <screen>&prompt.user; <userinput>cvs rm -f access</userinput>
 | 
						|
          </screen></para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Editar <filename>avail</filename> para que contenga los
 | 
						|
            diferentes directorios del repositorio en los cuales quiera
 | 
						|
            controlar el acceso.  Asegúrese de mantener la línea
 | 
						|
            <literal>avail||CVSROOT</literal>, si no lo hace no podrí
 | 
						|
            realizar el siguiente paso.</para>
 | 
						|
 | 
						|
          <para>Otra de las opciones que puede añadir a este fichero
 | 
						|
            es el grupo de <quote>committers</quote>.  Por defecto
 | 
						|
            &os; usa el fichero <filename>access</filename> para
 | 
						|
            listar todos sus <quote>committers</quote> pero se puede
 | 
						|
            usar cualquier fichero que se desee.  También es
 | 
						|
            posible agregar grupos si se desea (la sintaxis está
 | 
						|
            declarada en la primera parte de <filename>cvs_acls.pl
 | 
						|
            </filename>).</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Edite <filename>cfg_local.pm</filename> para que contenga
 | 
						|
            las opciones deseadas.  Seguramente le serán de gran
 | 
						|
            interés las siguientes configuraciones:
 | 
						|
 | 
						|
            <itemizedlist>
 | 
						|
              <listitem>
 | 
						|
                <para><literal>%TEMPLATE_HEADERS</literal> - éstos son
 | 
						|
                  procesados por los <quote>scripts</quote> de <quote>log</quote>
 | 
						|
		  y se insertan bajo el correo de commit si es que existen.
 | 
						|
                  Puede que quiera borrar las entradas <literal>PR</literal>
 | 
						|
                  y <literal>MFC after</literal>; y claro, puede agregar
 | 
						|
                  las suyas.</para>
 | 
						|
              </listitem>
 | 
						|
 | 
						|
              <listitem>
 | 
						|
                <para><literal>$MAIL_BRANCH_HDR</literal> - puede añadir
 | 
						|
                  una cabecera en cada correo de commit en la que se detalle la
 | 
						|
		  rama (<quote>branch</quote>) en la que se ha hecho el commit.
 | 
						|
                  Defina la cabecera según su configuración y
 | 
						|
		  necesidades o déjelo vacío si no desea usar dicha
 | 
						|
		  cabecera.</para>
 | 
						|
              </listitem>
 | 
						|
 | 
						|
              <listitem>
 | 
						|
                <para><literal>@COMMIT_HOSTS</literal> - defina éste valor
 | 
						|
		  si desea listar los <quote>hosts</quote> desde los que será
 | 
						|
		  posible hacer commits.
 | 
						|
                  </para>
 | 
						|
              </listitem>
 | 
						|
 | 
						|
              <listitem>
 | 
						|
                <para><literal>$MAILADDRS</literal> - defina éste como
 | 
						|
                  la dirección del administrador o de alguna lista donde
 | 
						|
                  reciban los correos de commit.</para>
 | 
						|
              </listitem>
 | 
						|
 | 
						|
              <listitem>
 | 
						|
		<para><literal>@LOG_FILE_MAP</literal> - cambie este
 | 
						|
		  valor como desee.  Cada expresión regular
 | 
						|
		  (regexp) se compara en el directorio del commit, y el
 | 
						|
		  mensaje de log del commit se guarda en el subdirectorio
 | 
						|
		  <filename>commitlogs</filename> en el nombre de fichero
 | 
						|
		  mencionado.</para>
 | 
						|
              </listitem>
 | 
						|
 | 
						|
              <listitem>
 | 
						|
                <para><literal>$COMMITCHECK_EXTRA</literal> - si no
 | 
						|
                  desea usar las <link linkend="freebsdspecific">comprobaciones
 | 
						|
                  de acceso específicas de &os;</link> debería
 | 
						|
                  borrar la definición de <literal>
 | 
						|
                  $COMMITCHECK_EXTRA</literal> de este fichero.</para>
 | 
						|
              </listitem>
 | 
						|
            </itemizedlist>
 | 
						|
 | 
						|
          <note><para>Cambiar el parámetro <literal>$IDHEADER</literal>
 | 
						|
            es algo que sólo puede asegurarse que funcionará en
 | 
						|
            &os;; depende de las modificaciones
 | 
						|
            específicas de <application>CVS</application> hechas por
 | 
						|
            &os;.</para></note>
 | 
						|
 | 
						|
          Revise <filename>cfg.pm</filename> y compruebe si alguna de las
 | 
						|
          opciones puede modificarse, aunque los cambios propuestos en los
 | 
						|
	  párrafos anteriores son bastante razonables.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
	  <para>Seguramente quiera borrar las líneas del principio de
 | 
						|
	    <filename>exclude</filename> (las que contienen
 | 
						|
            <literal>^ports/</literal>, entre otras), puesto que son
 | 
						|
	    específicas de &os;.  Además de esto
 | 
						|
            comente las líneas que empiecen con
 | 
						|
            <literal>^CVSROOT/</literal> y agregue una línea sólo
 | 
						|
            con <literal>^CVSROOT/</literal>.  Después de que
 | 
						|
            <quote>wrapper</quote> sea instalado puede añadir
 | 
						|
            su cabecera a los ficheros en el directorio <filename>
 | 
						|
            CVSROOT</filename> y restaurar estas líneas; por lo
 | 
						|
            pronto sólo estarán estorbarán en el momento
 | 
						|
	    que quiera hacer un commit.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Edite <filename>modules</filename> y borre todo lo
 | 
						|
            relacionado con &os;.  Añada sus propios módulos
 | 
						|
            si lo cree necesario.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <note><para>Este paso es sólo necesario si usted ha
 | 
						|
            declarado un valor a <literal>$IDHEADER</literal>
 | 
						|
            en <filename>cfg_local.pm</filename> (que sólo
 | 
						|
            funciona usando la versión de <application>CVS
 | 
						|
            </application> modificada por &os;).</para></note>
 | 
						|
 | 
						|
          <para>Edite <filename>options</filename> y asegúrese
 | 
						|
            de que la etiqueta declarada sea la misma que en <filename>
 | 
						|
            cfg_local.pm</filename>.  Simplemente cambie la etiqueta
 | 
						|
            <literal>FreeBSD</literal> por la suya.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Edite <filename>rcstemplate</filename> para que
 | 
						|
            contenga las mismas palabras clave
 | 
						|
	    (o <quote>keywords</quote>) declaradas en
 | 
						|
            <filename>cfg_local.pm</filename>.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Puede borrar (este paso es opcional) las comprobaciones
 | 
						|
            realizadas por <filename>tagcheck</filename>.  Puede
 | 
						|
            simplemente añadir <literal>exit 0</literal> al principio
 | 
						|
            del fichero para deshabilitar todas las comprobaciones que
 | 
						|
	    hace sobre las etiquetas.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>El último paso antes de terminar es
 | 
						|
            asegurarse de que sea posible guardar de modo seguro los
 | 
						|
	    mensajes de commit.  Por defecto se guardan en el propio
 | 
						|
            repositorio, en el subdirectorio <filename>commitlogs</filename>
 | 
						|
            del directorio <filename>CVSROOT</filename>.  Este
 | 
						|
            directorio debe crearse del siguiente modo:
 | 
						|
 | 
						|
            <screen>&prompt.user; <userinput>mkdir commitlogs
 | 
						|
            </userinput>&prompt.user; <userinput>cvs add commitlogs
 | 
						|
            </userinput></screen></para>
 | 
						|
 | 
						|
        </step>
 | 
						|
      </procedure>
 | 
						|
 | 
						|
      <para>Después de una revisión cuidadosa
 | 
						|
        debe hacer los commits necesarios con sus cambios.  Asegúrese
 | 
						|
        de haber activado su acceso al directorio <filename>
 | 
						|
        CVSROOT</filename> en su <filename>avail</filename> antes
 | 
						|
        de intentarlo.  Una vez haya comprobado que todo es correcto puede
 | 
						|
	hacer lo siguiente:
 | 
						|
 | 
						|
        <screen>&prompt.user; <userinput>cvs commit -m '- Commit
 | 
						|
        para iniciar los scripts de FreeBSD'</userinput>
 | 
						|
        </screen></para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Prueba de la configuración</title>
 | 
						|
 | 
						|
      <para>Ahora ya está listo para la primera prueba: un commit
 | 
						|
        forzado al fichero <filename>avail</filename> para asegurarnos
 | 
						|
        de que todo funciona como se espera.
 | 
						|
 | 
						|
        <screen>&prompt.user; <userinput>cvs commit -f -m'Commit
 | 
						|
        forzado para probar los nuevos scripts en CVSROOT'
 | 
						|
        avail</userinput></screen>
 | 
						|
 | 
						|
        Si todo ha funcionado ¡felicidades!  Dispone de una
 | 
						|
        configuración de los <quote>scripts</quote> de &os; en su repositorio.
 | 
						|
        Si <application>CVS</application> le da algún tipo de error
 | 
						|
        en algo revise todo de nuevo y asegúrese de que todos
 | 
						|
        los pasos se hayan hecho correctamente.</para>
 | 
						|
    </sect2>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 xml:id="freebsdspecific">
 | 
						|
    <title>Configuración específica de &os;</title>
 | 
						|
 | 
						|
    <para>El proyecto &os; utliza una configuración
 | 
						|
      ligeramente diferente de la descrita; se usan los ficheros de
 | 
						|
      configuración del subdirectorio
 | 
						|
      <filename>freebsd</filename> en <filename>CVSROOT</filename>.
 | 
						|
      El proyecto lo hace de esta manera debido al gran número de
 | 
						|
      committers y a que todos y todas han de estar en el mismo grupo.
 | 
						|
      Un <quote>wrapper</quote> simple fué escrito para poder
 | 
						|
      asegurar que los usuarios tengan permisos correctos para poder hacer
 | 
						|
      hacer commits; este <quote>wrapper</quote> establece el id del grupo al
 | 
						|
      que el repositorio tiene.</para>
 | 
						|
 | 
						|
    <para>Si su repositorio lo necesita también los
 | 
						|
      pasos para hacerlo están documentados más adelante.  Pero
 | 
						|
      antes de nada veamos una descripción de los ficheros involucrados.</para>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Ficheros usados en la configuración de &os;</title>
 | 
						|
 | 
						|
      <para>
 | 
						|
        <itemizedlist>
 | 
						|
          <listitem>
 | 
						|
            <para><filename>access</filename> - este fichero controla
 | 
						|
              la información de acceso.  Se debe editar este
 | 
						|
              fichero e incluir a todos los miembros del proyecto.</para>
 | 
						|
          </listitem>
 | 
						|
 | 
						|
          <listitem>
 | 
						|
            <para><filename>freebsd/cvswrap.c</filename> - este es el
 | 
						|
              código de CVS wrapper que va a ser necesario
 | 
						|
              instalar para hacer que todos los chequeos de acceso
 | 
						|
              funcionen.  Mas información sobre él más
 | 
						|
	      adelante en el texto.  Debería editar las rutas de las
 | 
						|
              macros <literal>ACCESS</literal> y <literal>REALCVS</literal>
 | 
						|
              para que se correspondan con su configuración.
 | 
						|
              </para>
 | 
						|
          </listitem>
 | 
						|
 | 
						|
          <listitem>
 | 
						|
            <para><filename>freebsd/mailsend.c</filename> - este fichero
 | 
						|
              es necesario para la configuración de la lista
 | 
						|
              de correo de &os;.  No deberá tocar este
 | 
						|
              fichero.</para>
 | 
						|
          </listitem>
 | 
						|
        </itemizedlist>
 | 
						|
      </para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>El procedimiento</title>
 | 
						|
 | 
						|
      <procedure>
 | 
						|
        <step>
 | 
						|
          <para>Edite el fichero <filename>access</filename> para que
 | 
						|
            sólo contenga su nombre de usuario.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Edite el fichero <filename>cvswrap.c</filename> para que
 | 
						|
            contenga la ruta correcta de su configuración.  Se
 | 
						|
            define con una macro llamada <literal>ACCESS</literal>.
 | 
						|
            Deberá cambiar también el lugar del binario de
 | 
						|
            <command>cvs</command> si no coincide con el de su
 | 
						|
            sistema.  <filename>cvswrap.c</filename> está pensado
 | 
						|
            para sustituir al comando cvs del sistema, que pasará a
 | 
						|
            ser <filename>/usr/bin/ncvs
 | 
						|
            </filename>.</para>
 | 
						|
 | 
						|
          <para>Mi copia de <filename>cvswrap.c</filename> tiene lo
 | 
						|
            siguiente:</para>
 | 
						|
 | 
						|
          <programlisting>#define ACCESS "/local/cvsroot/CVSROOT/access"
 | 
						|
#define REALCVS "/usr/bin/ncvs"</programlisting>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Instalaremos después wrapper para asegurarnos de que
 | 
						|
            se haya convertido en el grupo correcto al hacer el commit.
 | 
						|
            Tiene el código fuente en
 | 
						|
            <filename>cvswrap.c</filename> en su
 | 
						|
            <filename>CVSROOT</filename>.</para>
 | 
						|
 | 
						|
	  <para>Tendrá que compilar el código una vez haya
 | 
						|
	    incluido en el las rutas correctas:
 | 
						|
 | 
						|
            <screen>&prompt.user; <userinput>cc -o cvs cvswrap.c
 | 
						|
            </userinput></screen>
 | 
						|
            E instálelos (necesitará ejecutar este paso como root):
 | 
						|
 | 
						|
            <screen>&prompt.root; <userinput>mv /usr/bin/cvs /usr/bin/ncvs
 | 
						|
            </userinput>
 | 
						|
            &prompt.root; <userinput>mv cvs /usr/bin/cvs</userinput>
 | 
						|
            &prompt.root; <userinput>chown root:ncvs
 | 
						|
            /usr/bin/cvs /usr/bin/ncvs</userinput>
 | 
						|
            &prompt.root; <userinput>chmod o-rw /usr/bin/ncvs</userinput>
 | 
						|
            &prompt.root; <userinput> chmod u-w,g+s /usr/bin/cvs</userinput>
 | 
						|
            </screen>
 | 
						|
 | 
						|
            Esto instala wrapper como el comando <command>cvs</command>
 | 
						|
            por defecto; así nos aseguramos de que cualquiera que
 | 
						|
            quiera usar el repositorio necesita tener los niveles de acceso
 | 
						|
            correctos.</para>
 | 
						|
        </step>
 | 
						|
 | 
						|
        <step>
 | 
						|
          <para>Ahora ya puede eliminar a todos los usuarios del grupo del repositorio.
 | 
						|
            Todo control de acceso lo hará a partir de ahora wrapper y este wrapper
 | 
						|
            establecerá el grupo de acceso correcto.</para>
 | 
						|
        </step>
 | 
						|
      </procedure>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Prueba de la configuración</title>
 | 
						|
 | 
						|
      <para>Su wrapper debería estar listo.  Debería probarlo,
 | 
						|
        claro está, haciendo un commit forzado al fichero <filename>
 | 
						|
        access</filename>:
 | 
						|
 | 
						|
        <screen>&prompt.user; <userinput>cvs commit -f -m 'Commit
 | 
						|
        forzado para probar los nuevos scripts en CVSROOT'
 | 
						|
        access</userinput></screen>
 | 
						|
 | 
						|
        Si algo falla asegúrese de que todos los pasos arriba
 | 
						|
        descritos se han realizado correctamente.</para>
 | 
						|
    </sect2>
 | 
						|
  </sect1>
 | 
						|
</article>
 |