doc/es_ES.ISO8859-1/articles/cvs-freebsd/article.sgml
J. Vicente Carrasco e13f73ad67 -Add articles.ent and books.ent for easier handling of entity
sets.

Approved by: jesusr (mentor)

-MFen:
2007-11-08 21:49:11 +00:00

821 lines
36 KiB
Text

<!--
The FreeBSD Spanish Documentation Project
$FreeBSD$
$FreeBSDes$
-->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//ES">
%articles.ent;
]>
<article>
<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>
<releaseinfo>$FreeBSD$</releaseinfo>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>Este art&iacute;culo describe los pasos que d&iacute; para
configurar un repositorio CVS con los mismos <quote>scripts</quote>
usados por el proyecto &os; en su configuraci&oacute;n.
Tienen algunas ventajas frente a las dem&aacute;s
configuraciones de CVS, por ejemplo una gesti&oacute;n m&aacute;s
eficaz de los accesos a los &aacute;rboles de c&oacute;digo y
la creaci&oacute;n de mensajes de correo electr&oacute;nico por
cada commit.</para>
&trans.es.jcamou;
</abstract>
</articleinfo>
<sect1>
<title>Introducci&oacute;n</title>
<para>Muchos de los proyectos de software de c&oacute;digo
abierto usan <application>CVS</application> como su sistema
de gesti&oacute;n de c&oacute;digo. Aunque <application>
CVS</application> es bastante bueno para esto tiene sus
inconvenientes y sus flaquezas. Un ejemplo de esto es el compartir
un &aacute;rbol de c&oacute;digo con otros desarrolladores, lo cual
puede convertirse r&aacute;pidamente en una pesadilla para la
administraci&oacute;n del sistema, especialmente si se desea
proteger del acceso indiscriminado ciertas partes del
&aacute;rbol.</para>
<para>&os; es uno de los proyectos que usan <application>
CVS</application>. Tambi&eacute;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&aacute;s f&aacute;cil.
Recientemente estos <quote>scripts</quote> fueron revisados por
&a.joe; para facilitar su uso en otros proyectos. Este
art&iacute;culo muestra uno de los m&eacute;todos para usar estos
nuevos <quote>scripts</quote>.</para>
<para>Si quiere sacar verdadero partido de la informaci&oacute;n que
se le brinda en este art&iacute;culo debe tener familiaridad con
m&eacute;todos b&aacute;sicos para realizar operaciones
<application>CVS</application>.</para>
</sect1>
<sect1>
<title>Comienzo de la configuraci&oacute;n</title>
<warning>
<para>Es preferible que realice estos procedimientos
en un repositorio de prueba vac&iacute;o y podamos asi asegurarnos
de que entiende todas las consecuencias. Como siempre, aseg&uacute;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&aacute;n todas las configuraciones.</para>
</sect2>
<sect2>
<title>El grupo del repositorio</title>
<para>Ahora vamos a crear al grupo due&ntilde;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&oacute;n, es necesario usar &man.chown.8; en el directorio
para ajustar los permisos al grupo reci&oacute;n agregado:
<screen>&prompt.root; <userinput>chown -R :<replaceable>ncvs
</replaceable>
<replaceable>path-a-su-repositorio</replaceable></userinput></screen>
Esto asegura que nadie podr&aacute; escribir en el repositorio
sin los permisos de grupo adecuados.</para>
</sect2>
<sect2>
<title>Obtenci&oacute;n del c&oacute;digo</title>
<para>Ahora es necesario obtener el directorio <filename>
CVSROOT</filename> del repositorio de &os;. Puede hacerse muy
f&aacute;cilmente desde una r&eacute;plica del CVS
an&oacute;nimo de &os;. Para m&aacute;s informaci&oacute;n
<!--
consulte <ulink
url="&url.books.handbook;/anoncvs.html">el cap&iacute;tulo
-->
consulte <ulink
url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/anoncvs.html">el
cap&iacute;tulo correspondiente del Handbook</ulink>.
Asumiremos que el c&oacute;digo est&aacute; 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&oacute;digo de &os;
sito en <filename>CVSROOT</filename> a nuestro
repositorio. Si est&aacute; familiarizado con <application>CVS
</application>, puede pensar que se puede
realizar importando los <quote>scripts</quote>, lo que deber&iacute;a
permitirle sincronizar posteriores versiones muy f&aacute;cilmente.
No es as&iacute;, <application>CVS</application> tiene una
deficiencia en este aspecto: al intentar importar
c&oacute;digo al directorio
<filename>CVSROOT</filename> no se actualizar&aacute;n los
ficheros administrativos necesarios. Para hacer que esto
suceda es necesario ejecutar <quote>checkin</quote>
en cada uno de ellos despu&eacute;s de importarlos,
perdiendo asi el valor de <literal>cvs import</literal>.
En consecuencia el m&eacute;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&aacute;rrafo anterior, el resultado ser&aacute; 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&aacute; advertencias
acerca de directorios no copiados; es normal que suceda pero no
debe usted preocuparse porque &eacute;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&oacute;n de su repositorio.
He aqu&iacute; una descripci&oacute;n del cometido de cada uno de
ellos.</para>
<itemizedlist>
<listitem>
<para><filename>access</filename> - este fichero
no se usa en la configuraci&oacute;n por defecto.
Se usa en <link linkend="freebsdspecific">la
configuraci&oacute;n del proyecto &os;</link>,
el cual controla el acceso al repositorio. Puede
borrar este fichero si no quiere usarlo en su
configuraci&oacute;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&aacute;s
directorios dados. Deber&aacute;
editarlo para que contenga los grupos
y directorios que se usar&aacute;n en su
repositorio.</para>
</listitem>
<listitem>
<para><filename>cfg.pm</filename> - este fichero
se encarga de analizar su configuraci&oacute;n
y provee la configuraci&oacute;n por defecto.
<emphasis>No</emphasis> deber&aacute; usted
cambiar nada en este fichero. Si va a hacer cambios
su configuraci&oacute;n deber&aacute;n ir en
<filename>cfg_local.pm</filename>.
</para>
</listitem>
<listitem>
<para><filename>cfg_local.pm</filename> -
contiene todos los par&aacute;metros configurables del
sistema. Deber&aacute; configurar todo tipo de
cosas en este fichero, tales como el env&iacute;o
por correo electr&oacute;nico de los mensajes
de commit, desde qu&eacute; <quote>hosts</quote> pueden
hacer commits los usuarios, etc. M&aacute;s
informaci&oacute;n m&aacute;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&aacute;ndar creados por <literal>cvs init</literal>.
Deber&aacute; editar &eacute;ste para borrar algunos
ficheros espec&iacute;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&uacute;n las modificaciones hechas o
o no en su versi&oacute;n de
<filename>cfg_local.pm</filename>.
No deber&iacute;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&iacute;fica del &aacute;rbol usando
<filename>cvs_acls.pl</filename>, para despu&eacute;s
ejecutar <filename>commit_prep.pl</filename>, mediante el que
efectuar&aacute; las comprobaciones de rigor previas a cada
commit. Si todo ha ido bien <application>CVS</application>
permitir&aacute; que el commit tenga lugar. No deber&iacute;a
tocar este fichero.</para>
</listitem>
<listitem>
<para><filename>commitinfo</filename> - este fichero es
usado por <application>CVS</application> para determinar
qu&eacute; <quote>script</quote> se deber&aacute; ejecutar
antes de hacer el commit, en este caso
<filename>commitcheck</filename>.
Tampoco deber&iacute;a tener que modificar este fichero.</para>
</listitem>
<listitem>
<para><filename>config</filename> - el fichero de
configuraci&oacute;n del repositorio. Deber&iacute;a
editarlo si es necesario aunque la mayor&iacute;a de
los administradores lo dejan tal y como viene por defecto.
Dispone de m&aacute;s informaci&oacute;n sobre las opciones
que pueden declararse en &eacute;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&iacute;
como si tiene permitido acceder al &aacute;rbol.
Est&aacute; basado en el fichero <filename>avail</filename>.
No deber&iacute;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&aacute;s informaci&oacute;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&oacute;n de
la expansi&oacute;n de palabras clave o si el
fichero debe ser considerado binario. Este fichero puede
editarse seg&uacute;n necesidades. Para m&aacute;s
informaci&oacute;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&oacute;ricas.
Este fichero puede borrarse con total tranquilidad sin miedo de
perjudicar la configuraci&oacute;n.</para>
</listitem>
<listitem>
<para><filename>editinfo</filename> - <application>CVS
</application> usa este fichero en las sobreescrituras de
edici&oacute;n. &os; no usa esta funci&oacute;n ya que el
an&aacute;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&iacute;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&oacute;n. En la
configuraci&oacute;n que se usa en &os; todos los ficheros
bajo control de revisi&oacute;n necesitan tener lo que se
llama una cabecera de revisi&oacute;n
(&dollar;FreeBSD&dollar;). Todos los ficheros que aparezcan
en alguna de las l&iacute;neas de
<filename>exclude</filename> no pasan por dicha revisi&oacute;n.
Incluya en este fichero entradas para aquellos ficheros que no
puedan tener una cabecera de revisi&oacute;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&ntilde;adirlo a un fichero de <quote>log</quote> en el repositorio
para que pueda disponerse de respaldos en caso de necesidad.
Tambi&eacute;n gestiona el env&iacute;o de un correo electr&oacute;nico
a la direcci&oacute;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&iacute;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&oacute;n. Este fichero conecta con
<application>CVS</application> via <filename>verifymsg
</filename>. Tampoco deber&iacute;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&oacute;n lee el
mensaje de <quote>log</quote> despu&eacute;s de que este
<quote>script</quote> lo haya modificado. La versi&oacute;n
est&aacute;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&eacute; sint&aacute;cticamente correcto.
<application>CVS</application> 1.11.2 puede configurarse
para tener el mismo comportamiento que la
versi&oacute;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&oacute;nde se
env&iacute;a la informaci&oacute;n de <quote>log</quote>;
aqu&iacute; es donde <filename>log_accum.pl</filename>
entra en escena. No deber&iacute;a tener que modificar
este fichero.
</para>
</listitem>
<listitem>
<para><filename>modules</filename> - este fichero mantiene su
significado tradicional en <application>CVS</application>.
Deber&aacute; borrar los m&oacute;dulos propios de &os; de la
versi&oacute;n que vaya a usar. Puede editarlo a su
gusto. Tiene m&aacute;s informaci&oacute;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&aacute;s informaci&oacute;n acerca de este fichero
en el manual de <application>CVS</application>.</para>
</listitem>
<listitem>
<para><filename>options</filename> - este fichero se usa
espec&iacute;ficamente en la versi&oacute;n de <application>CVS
</application>
de &os;, as&iacute; como en la versi&oacute;n de Debian.
Contiene una palabra clave para expander cabeceras de
revisi&oacute;n. Tendr&aacute; 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&iacute;stica, claro est&aacute;; 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&ntilde;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&oacute;n por defecto en &os; no admite
etiquetas con nombre RELENG* debido al proceso de ingenier&iacute;a
de releases. Puede editar este fichero seg&uacute;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&iacute;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&oacute;n que funciona hoy d&iacute;a
en &os; porque no funciona correctamente con commits remotos.
No deber&iacute;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&iacute;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&oacute;n que mantiene el proyecto &os; porque no
funciona correctamente con commits remotos. No deber&iacute;a tener
que modificar este fichero.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Modificaci&oacute;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&aacute; que revisar todos y
cada uno de los ficheros en el directorio y hacer sus propios
cambios y configuraciones. Seguramente tendr&aacute; que editar los
siguientes ficheros:</para>
<procedure>
<step>
<para>Si no desea usar los <quote>scripts</quote> de la
<link linkend="freebsdspecific">
configuraci&oacute;n espec&iacute;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&uacute;rese de mantener la l&iacute;nea
<literal>avail||CVSROOT</literal>, si no lo hace no podr&iacute;
realizar el siguiente paso.</para>
<para>Otra de las opciones que puede a&ntilde;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&eacute;n es
posible agregar grupos si se desea (la sintaxis est&aacute;
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&aacute;n de gran
inter&eacute;s las siguientes configuraciones:
<itemizedlist>
<listitem>
<para><literal>%TEMPLATE_HEADERS</literal> - &eacute;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&ntilde;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&uacute;n su configuraci&oacute;n y
necesidades o d&eacute;jelo vac&iacute;o si no desea usar dicha
cabecera.</para>
</listitem>
<listitem>
<para><literal>@COMMIT_HOSTS</literal> - defina &eacute;ste valor
si desea listar los <quote>hosts</quote> desde los que ser&aacute;
posible hacer commits.
</para>
</listitem>
<listitem>
<para><literal>$MAILADDRS</literal> - defina &eacute;ste como
la direcci&oacute;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&oacute;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&iacute;ficas de &os;</link> deber&iacute;a
borrar la definici&oacute;n de <literal>
$COMMITCHECK_EXTRA</literal> de este fichero.</para>
</listitem>
</itemizedlist>
<note><para>Cambiar el par&aacute;metro <literal>$IDHEADER</literal>
es algo que s&oacute;lo puede asegurarse que funcionar&aacute; en
&os;; depende de las modificaciones
espec&iacute;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&aacute;rrafos anteriores son bastante razonables.</para>
</step>
<step>
<para>Seguramente quiera borrar las l&iacute;neas del principio de
<filename>exclude</filename> (las que contienen
<literal>^ports/</literal>, entre otras), puesto que son
espec&iacute;ficas de &os;. Adem&aacute;s de esto
comente las l&iacute;neas que empiecen con
<literal>^CVSROOT/</literal> y agregue una l&iacute;nea s&oacute;lo
con <literal>^CVSROOT/</literal>. Despu&eacute;s de que
<quote>wrapper</quote> sea instalado puede a&ntilde;adir
su cabecera a los ficheros en el directorio <filename>
CVSROOT</filename> y restaurar estas l&iacute;neas; por lo
pronto s&oacute;lo estar&aacute;n estorbar&aacute;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&ntilde;ada sus propios m&oacute;dulos
si lo cree necesario.</para>
</step>
<step>
<note><para>Este paso es s&oacute;lo necesario si usted ha
declarado un valor a <literal>$IDHEADER</literal>
en <filename>cfg_local.pm</filename> (que s&oacute;lo
funciona usando la versi&oacute;n de <application>CVS
</application> modificada por &os;).</para></note>
<para>Edite <filename>options</filename> y aseg&uacute;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&ntilde;adir <literal>exit 0</literal> al principio
del fichero para deshabilitar todas las comprobaciones que
hace sobre las etiquetas.</para>
</step>
<step>
<para>El &uacute;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&eacute;s de una revisi&oacute;n cuidadosa
debe hacer los commits necesarios con sus cambios. Aseg&uacute;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&oacute;n</title>
<para>Ahora ya est&aacute; 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 &iexcl;felicidades! Dispone de una
configuraci&oacute;n de los <quote>scripts</quote> de &os; en su repositorio.
Si <application>CVS</application> le da alg&uacute;n tipo de error
en algo revise todo de nuevo y aseg&uacute;rese de que todos
los pasos se hayan hecho correctamente.</para>
</sect2>
</sect1>
<sect1 id="freebsdspecific">
<title>Configuraci&oacute;n espec&iacute;fica de &os;</title>
<para>El proyecto &os; utliza una configuraci&oacute;n
ligeramente diferente de la descrita; se usan los ficheros de
configuraci&oacute;n del subdirectorio
<filename>freebsd</filename> en <filename>CVSROOT</filename>.
El proyecto lo hace de esta manera debido al gran n&uacute;mero de
committers y a que todos y todas han de estar en el mismo grupo.
Un <quote>wrapper</quote> simple fu&eacute; 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&eacute;n los
pasos para hacerlo est&aacute;n documentados m&aacute;s adelante. Pero
antes de nada veamos una descripci&oacute;n de los ficheros involucrados.</para>
<sect2>
<title>Ficheros usados en la configuraci&oacute;n de &os;</title>
<para>
<itemizedlist>
<listitem>
<para><filename>access</filename> - este fichero controla
la informaci&oacute;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&oacute;digo de CVS wrapper que va a ser necesario
instalar para hacer que todos los chequeos de acceso
funcionen. Mas informaci&oacute;n sobre &eacute;l m&aacute;s
adelante en el texto. Deber&iacute;a editar las rutas de las
macros <literal>ACCESS</literal> y <literal>REALCVS</literal>
para que se correspondan con su configuraci&oacute;n.
</para>
</listitem>
<listitem>
<para><filename>freebsd/mailsend.c</filename> - este fichero
es necesario para la configuraci&oacute;n de la lista
de correo de &os;. No deber&aacute; 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&oacute;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&oacute;n. Se
define con una macro llamada <literal>ACCESS</literal>.
Deber&aacute; cambiar tambi&eacute;n el lugar del binario de
<command>cvs</command> si no coincide con el de su
sistema. <filename>cvswrap.c</filename> est&aacute; pensado
para sustituir al comando cvs del sistema, que pasar&aacute; 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&eacute;s wrapper para asegurarnos de que
se haya convertido en el grupo correcto al hacer el commit.
Tiene el c&oacute;digo fuente en
<filename>cvswrap.c</filename> en su
<filename>CVSROOT</filename>.</para>
<para>Tendr&aacute; que compilar el c&oacute;digo una vez haya
incluido en el las rutas correctas:
<screen>&prompt.user; <userinput>cc -o cvs cvswrap.c
</userinput></screen>
E inst&aacute;lelos (necesitar&aacute; 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&iacute; 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&aacute; a partir de ahora wrapper y este wrapper
establecer&aacute; el grupo de acceso correcto.</para>
</step>
</procedure>
</sect2>
<sect2>
<title>Prueba de la configuraci&oacute;n</title>
<para>Su wrapper deber&iacute;a estar listo. Deber&iacute;a probarlo,
claro est&aacute;, 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&uacute;rese de que todos los pasos arriba
descritos se han realizado correctamente.</para>
</sect2>
</sect1>
</article>