aboutsummaryrefslogtreecommitdiff
path: root/es_ES.ISO8859-1/articles/cvs-freebsd/article.xml
blob: 0d9af8f764aeddb3445d834b5399fbee1d66eb6c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
	"../../../share/xml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//ES" "../../share/xml/entities.ent">
%entities;
]>

<!--
  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
	    (&dollar;FreeBSD&dollar;).  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>