822 lines
34 KiB
XML
822 lines
34 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
|
|
"../../../share/xml/freebsd45.dtd">
|
|
|
|
<!--
|
|
The FreeBSD Spanish Documentation Project
|
|
$FreeBSD$
|
|
$FreeBSDes$
|
|
-->
|
|
|
|
<article lang='es'>
|
|
<articleinfo>
|
|
<title>Configurar un repositorio CVS - a la manera de FreeBSD</title>
|
|
|
|
<author>
|
|
<firstname>Stijn</firstname>
|
|
<surname>Hoop</surname>
|
|
<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 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>
|
|
</articleinfo>
|
|
|
|
<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 <replaceable>ruta-al-repositorio
|
|
</replaceable> 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 <replaceable>ncvs
|
|
</replaceable></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 :<replaceable>ncvs
|
|
</replaceable>
|
|
<replaceable>path-a-su-repositorio</replaceable></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 <ulink
|
|
url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/anoncvs.html">el
|
|
capítulo correspondiente del Handbook</ulink>.
|
|
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 <replaceable>
|
|
ruta-a-su-repositorio </replaceable> 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 '<replaceable>- Commit
|
|
para iniciar los scripts de FreeBSD</replaceable>'</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'<replaceable>Commit
|
|
forzado para probar los nuevos scripts en CVSROOT</replaceable>'
|
|
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 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:<replaceable>ncvs</replaceable>
|
|
/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 '<replaceable>Commit
|
|
forzado para probar los nuevos scripts en CVSROOT</replaceable>'
|
|
access</userinput></screen>
|
|
|
|
Si algo falla asegúrese de que todos los pasos arriba
|
|
descritos se han realizado correctamente.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</article>
|
|
|