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
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
|
<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
<!ENTITY kappname "&cervisia;">
<!ENTITY package "tdesdk">
<!ENTITY ssh "<command>ssh</command>">
<!ENTITY rsh "<command>rsh</command>">
<!ENTITY % addindex "IGNORE">
<!ENTITY % Spanish "INCLUDE"> <!-- Change language only here -->
<!ENTITY CVS "<application>CVS</application>">
]>
<book lang="&language;">
<bookinfo>
<title>Manual de &cervisia;</title>
<authorgroup>
<author> <firstname>Bernd</firstname><surname>Gehrmann</surname> <affiliation><address><email>[email protected]</email></address></affiliation>
</author>
<author><firstname>Carlos</firstname><surname>Woelz</surname> <affiliation><address><email>[email protected]</email></address></affiliation>
</author>
<othercredit role="translator"> <firstname>Marcos</firstname> <surname>Fouces Lago</surname> <affiliation><address><email>[email protected]</email></address></affiliation> <contrib>Traductor</contrib> </othercredit>
</authorgroup>
<copyright>
<year>1999</year>
<year>2000</year>
<year>2001</year>
<year>2002</year>
<holder>Bernd Gehrmann</holder>
</copyright>
<copyright>
<year>2004</year>
<holder>Carlos Woelz</holder>
</copyright>
<legalnotice>&FDLNotice;</legalnotice>
<date>2004-06-06</date>
<releaseinfo>2.01.90</releaseinfo>
<abstract>
<para>&cervisia; proporciona una vista gráfica a la aplicación &CVS;.</para>
</abstract>
<keywordset>
<keyword>KDE</keyword>
<keyword>tdesdk</keyword>
<keyword>Cervisia</keyword>
<keyword>CVS</keyword>
<keyword>Control de versión</keyword>
<keyword>control de revisión</keyword>
</keywordset>
</bookinfo>
<chapter id="introduction">
<title>Introducción</title>
<para><ulink url="http://www.kde.org/apps/cervisia/">&cervisia;</ulink> es un interfaz gráfico para cvs muy sencillo de usar. El objetivo es dar soporte a &CVS; así como a otros programas de control de versiones en una misma interfaz permitiendo resolver conflictos, ver historiales de cambios y diferencias entre archivos, el estado de los archivos sobre los que se está trabajando así como permitir realizar muchas de las funciones propias de un sistema de control de versiones.Puede obtener &cervisia; compilando el módulo tdesdk o instalando el paquete tdesdk que seguramente venga con su distribución. Actualmente, sólo permite el uso de &CVS;, sin embargo se preve implementar soporte para más sistemas de control de versiones en el futuro. </para>
<para>Un sistema de control de versiones es una herramienta para registrar, gestionar y distribuir diferentes versiones de varios archivos. &CVS; es una de estas herramientas, le permite compartir fácilmente sus modificaciones ya que varias personas puedes trabajar en su propia copia del archivo en su disco duro sin temor a que se sobreescriban unos a otros los cambios. Permite recuperar versiones anteriores (útil para depurar fallos), la creación de varias ramas (para la versión inestable y estable p. ej.) y mucho más. </para>
<para>El principal <firstterm>repositorio</firstterm> suele contener un proyecto de varias personas (comercial o no) pero puede beneficiarse de las ventajas para el control de las revisiones que le ofrece &CVS; incluso para un proyecto en que usted sea él único miembro. Es sencillo crear un repositorio local que le permitirá identificar los cambios que causaron fallos, deshacer modificaciones, evitar pérdidas accidentales de información, &etc;. </para>
<para>En el repositorio se guardan los archivos del proyecto mientras que cada miembro mantiene una copia local (en su disco duro) del mismo llamada <firstterm>copia local</firstterm> o <firstterm>copia de trabajo</firstterm>, nosotros podemos realizar modificaciones sobre ellos y enviarlas al repositorio principal al tiempo que actualizamos nuestra copia local para recibir los cambios hechos por los demás miembros. </para>
</chapter>
<chapter id="getting-started">
<title>Primeros pasos</title>
<sect1 id="accessing-repository">
<title>Acceso al repositorio</title>
<para>En esta sección veremos como usar algunas funciones básicas de un sistema de control de versiones mediante &cervisia;; veremos como se descargan módulos y como se trabaja sobre ellos. Para hacer esto, deberá tener acceso al repositorio al menos como cliente lo que significa que alguien (seguramente el administrador del &CVS;) le ha asignado una cuenta de usuario. También puede optar por crear una copia local del repositorio para su propio proyecto. </para>
<tip><para>Si piensa desarrollar un proyecto complejo, el uso de &CVS; es siempre una buena idea aunque usted sea el único miembro. Puede realizar los cambios que desee en su copia local y usar &cervisia; (o cualquier otra herramienta de administración de &CVS;) para realizar envíos y actualizaciones. Así, podrá rastrear los cambios que causaron problemas y deshacerlos, evitar pérdidas accidentales de información, &etc;. Verá que es muy sencillo crear un repositorio local con &cervisia;. </para>
<procedure>
<title>Crear un repositorio local</title>
<step><para>Abra el diálogo <guilabel>Crear nuevo repositorio (cvs init)</guilabel> pulsando sobre <menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Crear...</guimenuitem></menuchoice>. </para></step>
<step><para>Pulse el botón <guilabel>...</guilabel> para seleccionar la directorio en la que quiere crear el repositorio o escriba directamente su ubicación en el cuadro de texto. Por ejemplo, si quiere situar el repositorio en la carpeta <filename>/home/usuario</filename> y llamarlo<filename>cvsroot</filename>, deberá escribir<filename>/home/usuario/cvsroot</filename> en el cuadro de texto o seleccionar la carpeta <filename>/home/usuario</filename> y añadir<filename>cvsroot</filename> a su nombre. </para></step>
<step><para>Cuando pulse <guibutton>Aceptar</guibutton>, &cervisia; creará e iniciará la carpeta para el nuevo repositorio. </para></step>
<step><para>Ahora ya puede importar su trabajo al repositorio o simplemente crear una carpeta en el repositorio para comenzar un nuevo módulo partiendo de cero. </para></step>
</procedure>
</tip>
<para>&cervisia; permite gestionar cómodamente todos sus repositorios con el diálogo <guilabel>Configurar acceso a los repositorios</guilabel>. Para acceder a ella, seleccione <menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Repositorios...</guimenuitem></menuchoice>. </para>
<figure id="screenshot-repositories" float="1">
<title>Captura de pantalla del diálogo de configuración de acceso a los repositorios de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="repositories.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de configuración de acceso a los repositorios de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>Hay varias formas de acceder a una repositorio CVS: puede hacerse mediante autenticación con contraseña (:pserver:), mediante ssh (usando :ext:), mediante repositorio local (:local:), &etc;. El formato para la localización del repositorio es el siguiente (los parámetros opcionales se señalan entre corchetes): </para>
<para>
<filename>[:método:][[usuario][:contraseña]@]nombrehost[:[puerto]]/ruta/al/repositorio</filename>
</para>
<para>No todos estos parámetros son siempre obligatorios. La información de acceso necesaria depende de la forma de acceso que puede clasificarse en: </para>
<variablelist>
<varlistentry>
<term>Local</term>
<listitem>
<para>El método de acceso local es el usado por omisión en &CVS; con lo cual no es necesario que indique expresamente el método :local:, puede simplemente añadir la ruta al directorio que contiene el repositorio &CVS; y al que se puede acceder desde su ordenador como <filename class="directory">/ruta/al/repositorio</filename>. Un ejemplo real sería: <filename class="directory">/home/cvs</filename>.</para>
<para>Puede ser que el repositorio esté situado remotamente en una partición montada a través de <acronym>NFS</acronym> pero no importa: si crea un repositorio local es suficiente con que escriba la ruta para llegar a él. </para>
</listitem>
</varlistentry>
<varlistentry id="rsh">
<term>rsh</term>
<listitem>
<para>La localización del repositorio es algo similar a <filename>ext:[email protected]:/ruta/al/repositorio</filename>. </para>
<para>Este método requiere que tenga una cuenta de usuario en el servidor (en este ejemplo: <systemitem class="systemname">host.url.org</systemitem>) y una shell remota. por omisión, &CVS; utiliza para ello ↱ sin embargo, y debido a sus problemas de seguridad se está usando cada vez más &ssh;. </para>
<para>Si desea utilizar &ssh; deberá configurar la variable de entorno <envar>CVS_RSH</envar> adecuadamente. Esto es muy sencillo con &cervisia;. </para>
<!-- TODO: verify if the above still apply -->
<para>Observe que &cervisia; no es capaz de negociar una autenticación con el servidor así que deberá asegurarse de que puede hacer login remotamente sin que el servidor solicite una contraseña. Si utiliza una versión clásica de ↱ puede hacer esto creando una archivo <filename>.rhosts</filename> en su directorio home con una lista de sistemas fiables (vea la página de ↱). </para>
<para>Con &ssh; puede hacerlo copiando su clave pública (el archivo <filename>identity.pub</filename> de la carpeta <filename>$<envar>HOME</envar>/.ssh/</filename>) en el servidor. La clave no debe estar encriptada con contraseña (consulte la página de manual de &ssh; y el &CVS;/<acronym>SSH</acronym> <acronym>FAQ</acronym> en SourceForge). Para asegurarse de la forma exacta de hacerlo, pregunte al administrador del servidor. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>pserver</term>
<listitem>
<para>La localización del repositorio es similar a esta: <filename>:pserver:[email protected]:/ruta/al/repositorio</filename> </para>
<para>Con este método se accede al servidor mediante un protocolo con un sistema de autenticación bastante débil (<literal>pserver</literal> viene de password autentification). Antes de poder usarlo necesitará un nombre de usuario y una contraseña que le proporcionará el administrador del &CVS;. Observe que el nombre de usuario de &CVS; no tiene porque coincidir con el que tiene para el sistema. Antes de acceder al &CVS; deberá hacer login en el sistema. </para>
<para>Los proyectos de código libre suelen permitir acceso anónimo a su CVS, con lo cual podrá fácilmente descargarse el código fuente, modificarlo y crear parches para el repositorio sin necesidad de tener una cuenta en el CVS. En general, el acceso anónimo al CVS es de sólo lectura y se realiza mediante autenticación por contraseña (:pserver:), no podrá subir directamente los cambios que usted realice en el código. </para>
</listitem>
</varlistentry>
</variablelist>
<para>Una vez que conoce el método de acceso y su localización, podrá añadirlo a la lista de repositorios de &cervisia;. </para>
<procedure>
<title>Añadir un nuevo repositorio</title>
<step><para>Abra el diálogo <guilabel>Configurar acceso a los repositorios</guilabel> desde <menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Repositorios...</guimenuitem> </menuchoice>. </para></step>
<step><para>Pulse el botón <guilabel>añadir</guilabel> para abrir el diálogo <guilabel>Añadir repositorio</guilabel>. </para></step>
<step><para>Introduzca la localización el repositorio en el cuadro de texto <guilabel>Repositorio</guilabel>. &cervisia; deshabilitará las áreas del diálogo que no sean aplicables al método de acceso señalado. </para></step>
<step><para>Si usa el método ext para acceder al repositorio, introduzca el intérprete de órdenes remoto que desee usar (⪚ &ssh;) en el cuadro de texto <guilabel>Usar shell remota</guilabel>. </para></step>
<step><para>Pulse <guibutton>Aceptar</guibutton>. Verá el repositorio que acaba de introducir en la lista. </para></step>
<step><para>Si el método de acceso de ese nuevo repositorio es mediante contraseña (pserver), necesitará identificarse antes de conectarse al servidor. Pulse sobre dicho servidor para seleccionarlo y pulse el botón <guilabel>Acceder</guilabel>. Introduzca su contraseña en la ventana emergente. </para>
<para>Si todo ha ido bien, verá que la columna de <guilabel>Estado</guilabel> del repositorio en cuestión cambia de <guilabel>Sin acceso</guilabel> a <guilabel>Dentro del sistema</guilabel>. </para></step>
<step><para>Pulse <guibutton>Aceptar</guibutton> para que surjan efecto estas modificaciones o siga añadiendo repositorios a la lista. &cervisia; puede almacenar tantos como desee. </para></step>
</procedure>
</sect1>
<sect1 id="importing">
<title>Importar un módulo al repositorio</title>
<para>En esta sección veremos como introducir un nuevo proyecto en el repositorio &CVS;. Si sólo quiere trabajar en un proyecto que ya está en él, puede saltarse esta sección. </para>
<para>Hay dos formas de incorporar un proyecto a &CVS;: </para>
<itemizedlist>
<listitem><para>Importar los archivos y carpetas a un nuevo <firstterm>módulo</firstterm> mediante el diálogo de importación de &cervisia;. Los módulos son las principales carpetas del árbol de directorios del &CVS;, sirven para separar y organizar los distintos proyectos existentes en el repositorio. </para></listitem>
<listitem><para>Crear un módulo vacío y añadir manualmente los nuevos archivos y carpetas. Tendrá un mejor control sobre el proceso aunque también le llevará más tiempo. </para></listitem>
</itemizedlist>
<important>
<para>Recuerde que &CVS; fue diseñado para gestionar archivos de texto, muchas de sus funciones como p. ej. combinar los cambios de varios miembros, crear archivos de diferencias, &etc; sólo pueden hacerse sobre archivos de texto. Esto no quiere decir que no pueda usar CVS para gestionar archivos binarios, sólo que si lo hace debe <emphasis>indicar expresamente si un archivo es binario</emphasis>. Si no casi con toda seguridad &CVS; corromperá esos archivos. </para>
</important>
<para>Importar un proyecto (como un nuevo módulo) tiene una serie de ventajas: usted importa recursivamente todos los archivos y directorios y el módulo se creará automáticamente, así importar grandes proyectos al repositorios es una tarea muy sencilla. Existen también algunas desventajas como no poder utilizar el diálogo de importación de &cervisia; para añadir archivos a los módulos existentes y se importarán archivos de texto y binarios. Puede evitar ese problema creando carpetas que sólo contengan un tipo de archivo o estableciendo el patrón de archivos a ignorar durante la importación. </para>
<para>Por ejemplo, suponga que su proyecto sólo contiene archivos de texto e imágenes PNG (que son binarios). Puede indicarle a &CVS; que ignore todos los archivos que sigan el patrón <filename class="extension">*.png</filename> mientras importa los demás archivos como texto, o puede mover las imágenes a una carpeta separada, y a continuación importar los archivos restantes (como archivos de texto). De cualquier forma, debe <link linkend="checkingout">descargar</link> el módulo que se acaba de importar a la copia de trabajo nueva, copiando los archivos y carpetas que falten copiándolos, <link linkend="addingfiles">añadir</link> y <link linkend="committingfiles">enviarlos</link> al repositorio para completar el proceso de importación. </para>
<para>Una posible alternativa consiste en añadir manualmente los archivos y carpetas creando un módulo vacío para ellos. Para añadir un módulo vacío al repositorio, cree una carpeta nueva a la carpeta raíz del repositorio de &CVS;. El nombre de esta carpeta nueva será el nombre del módulo. <link linkend="checkingout">Descargue</link> el nuevo módulo vacío. A continuación copie los archivos y carpetas a la copia de trabajo, <link linkend="addingfiles">añada</link> y <link linkend="committingfiles">envíe</link> para subir los nuevos archivos al repositorio de &CVS;. </para>
<figure id="screenshot-import" float="1">
<title>Captura de pantalla del diálogo de importación de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="import.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de importación de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>En <xref linkend="screenshot-import"/> puede ver el diálogo que le permitirá <emphasis>importar</emphasis> el proyecto a un módulo. Para abrir ese diálogo en &cervisia;, seleccione <menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Importar</guimenuitem></menuchoice>. </para>
<variablelist>
<varlistentry>
<term><guilabel>Repositorio</guilabel> <xref linkend="co-repository"/></term>
<listitem><para>Seleccione el nombre del repositorio &CVS; de la lista, también representado por la variable <envar>CVSROOT</envar>. Deberá haber sido creado previamente y disponer de permiso de escritura. Si aún no hubiera sido creado, podrá hacerlo seleccionando <menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Crear</guimenuitem></menuchoice>. </para>
<para>La pestaña de selección muestra la lista de repositorios que ha introducido previamente mediante el cuadro <guilabel>Configurar acceso a los repositorios</guilabel>. Si el repositorio está situado en otra máquina, asegúrese de que la autenticación funciona correctamente. Para más información vea <xref linkend="accessing-repository"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Módulo</guilabel> <xref linkend="co-module"/></term>
<listitem><para>El nombre del módulo bajo el que se guardará el proyecto. Después de la importación, podrá descargarse el proyecto usando ese nombre. Para más información vea <xref linkend="checkingout"/>. Este nombre también corresponde al de su correspondiente carpeta en el repositorio. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Directorio de trabajo</guilabel></term>
<listitem><para>Directorio principal del proyecto a importar. La importación comienza en ese directorio y desciende recursivamente. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Etiqueta del vendedor</guilabel> <xref linkend="co-vendortag"/></term>
<listitem><para>Históricamente, se usaba para seguir la pista del código aportado por terceras personas. Puede usar su propio nombre si no se le ocurre nada mejor, no tiene mayor importancia. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Etiqueta de publicación</guilabel> <xref linkend="co-releasetag"/></term>
<listitem><para>Esta etiqueta también se usaba históricamente para importar distintas versiones de código de tercera partes. Si no es su caso, utilice la palabra <literal>inicio</literal> o la cadena <literal> FOO_1_0</literal> donde <literal>FOO</literal> sería el nombre de su proyecto y <literal>1.0</literal> la versión. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Archivos ignorados:</guilabel></term>
<listitem><para>Si rellena ese campo, se introducirá una nueva opción <option>-l<replaceable>nombre archivos</replaceable></option> al comando <command>cvs import</command>. Esta entrada debe contener una lista de patrones de nombres de archivo,separados por espacios, que deben ser ignorados. Una solución más limpia y menos propensa a error para controlar qué archivos se importan es crear un directorio donde sólo estén los archivos a importar y comenzar desde ahí. Pese a ello, este campo puede resultar útil en proyectos que contienen archivos ignorados por omisión por &CVS;, p.ej los archivos <filename>core</filename>, en cuyo caso introduzca simplemente el carácter <literal>!</literal> para que no se consideren las opciones por omisión de &CVS; para ignorar archivos. Vea <xref linkend="ignoredfiles"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Comentarios:</guilabel> <xref linkend="co-comment"/></term>
<listitem><para>Utilice es campo para guardar comentarios sobre el origen , uso, desarrollo, &etc; de los archivos que está importando. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Importar como binario</guilabel></term>
<listitem><para>Si marca esta casilla, se importarán todos los archivos como binarios, esto es, se añadiría el argumento <option>-kb</option> al comando <command>cvs import</command>. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Utilizar la hora de modificación del archivo como la de importación</guilabel></term>
<listitem><para>Si marca esta casilla, se considerará la hora de importación como la de modificación del archivo en lugar de considerar la propia de importación. </para></listitem>
</varlistentry>
</variablelist>
<para>Una vez que ha rellenado los campos y pulsado <guibutton>Aceptar</guibutton>, se ejecutara el siguiente comando de &CVS;:</para>
<screen><command>cvs</command> -d <co id="co-repository"></co><replaceable>repositorio</replaceable> import -m "<co id="co-comment"></co>" <co id="co-module"></co><replaceable>módulo</replaceable> <co id="co-vendortag"></co><replaceable>etiqueta del vendedor</replaceable> <co id="co-releasetag"></co><replaceable>etiqueta de la publicación</replaceable></screen>
</sect1>
<sect1 id="checkingout">
<title>Descargar un módulo del repositorio</title>
<para>Una vez que ha configurado correctamente la localización de su repositorio e importado los primeros archivos es hora de descargar el módulo para crear su copia de trabajo. </para>
<para>También deberá conocer el nombre de la <firstterm>rama</firstterm> y la <firstterm>etiqueta</firstterm> que desea. </para>
<para>Las ramas de un módulo son versiones paralelas del mismo. Un ejemplo real de su uso sería la publicación de un proyecto de software. Después de una publicación importante, habrá fallos en el código que será necesario arreglar sin embargo los desarrolladores también querrán añadir nuevas características. Es muy difícil hacer esto al mismo tiempo debido a que la nuevas características también introducirán nuevos fallos dificultando el seguimiento de los más antiguos. Para resolver este problema, &CVS; permite crear una versión paralela que llamaremos "rama de la versión estable" dónde sólo es posible entregar soluciones a los fallos existentes, mientras que prosigue el desarrollo del software en la rama principal (HEAD) </para>
<para>Las etiquetas se usan para marcar una determinada versión de un proyecto. &CVS; utiliza esto para marcar los archivos así, si descarga o actualiza a una etiqueta concreta siempre tendrá la misma versión de los archivos. En contraste con las ramas, las etiquetas son inamovibles, no es posible desarrollar una etiqueta. Son útiles para señalar publicaciones, grandes cambios en el código, &etc;, gracias a ellas es sencillo devolver el proyecto a una fecha o estado anterior, reproducir y hacer un seguimiento de las fallos, volver a generar el código de una determinada versión, &etc;. </para>
<figure id="screenshot-checkout" float="1">
<title>Captura de pantalla del diálogo de descarga de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="checkout.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de descarga de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<variablelist>
<varlistentry>
<term><guilabel>Repositorio</guilabel></term>
<listitem><para>Nombre del repositorio &CVS;, también conocido como <filename><envar>$CVSROOT</envar></filename>. El menú desplegable le mostrará la lista de repositorios que ha introducido previamente mediante el cuadro de diálogo <guilabel>Configurar acceso a los repositorio</guilabel>. Si el repositorio es remoto asegúrese de que la autenticación es posible. Para más información vea <xref linkend="accessing-repository"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Módulo</guilabel></term>
<listitem><para>Nombre del módulo a descargar. Si está trabajando en un repositorio ya existente seguramente el administrador le pueda dar ese nombre o bien, si el proyecto es de código libre, su nombre seguramente esté en su web. Si quiere crear un nuevo módulo partiendo de cero con los archivos de su repositorio local sólo necesitará crear una carpeta en el directorio principal del repositorio. El nombre de esa carpeta debe ser el mismo que el del módulo. </para>
<para>Si el repositorio tiene un archivo <filename><envar>$CVSROOT</envar>/módulos</filename>, podrá ver una lista de los módulos disponibles pinchando sobre <guibutton>Buscar lista</guibutton> </para>
<para>Observe que es posible descarga cualquier subdirectorio del módulo independientemente del resto del módulo, únicamente debe señalar la ruta a dicha subdirectorio. Por ejemplo, si sólo quiere bajar la subdirectorio <filename class="directory">doc/cervisia</filename> del módulo tdesdk, escriba <filename class="directory">tdesdk/doc/cervisia</filename>. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Etiqueta de la rama:</guilabel></term>
<listitem><para>Nombre de la rama o etiqueta que quiere descargar. Si deja ese campo vacío, &cervisia; descargará la rama principal (HEAD). </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Directorio de trabajo:</guilabel></term>
<listitem><para>La carpeta en la cual se descargará el módulo. Observe que el directorio principal de la copia de trabajo recibe el mismo nombre que el módulo a descargar salvo que haya indicado otra cosa en el campo <guilabel>Directorio de trabajo</guilabel>. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Descargar como:</guilabel></term>
<listitem><para>Hace que los archivos de la copia de trabajo se descarguen en otra carpeta dentro del directorio de trabajo en lugar de hacerlo en la del mismo nombre que el módulo. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Exportar sólo</guilabel></term>
<listitem><para>Si marca esa casilla, los archivos se exportarán en lugar de descargarse. La diferencia es que al exportar no se descargan las carpetas de administración del CVS, esto es útil p.ej. al preparar el código fuente para una próxima publicación. </para></listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="mainscreen">
<title>Ventana principal mostrando el estado de los archivos y actualizando.</title>
<para>Cuando inicia &cervisia; y abre un archivo de la copia de trabajo seleccionado <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Abrir directorio de trabajo</guimenuitem></menuchoice> puede ver dos partes en la ventana principal: la superior es un vista en árbol del directorio actual de trabajo, la inferior se usa para mostrar los comandos de &CVS; que ejecuta &cervisia; para realizar las tareas que le indicamos así como la salida de los mismos. </para>
<para>por omisión, &cervisia; no muestra los archivos que contienen las subdirectorio por lo que tendrán que pinchar sobre ellas si quiere verlos. Para ver todos los archivos de la copia de trabajo, seleccione <menuchoice><guimenu>Ver</guimenu><guimenuitem>Desplegar árbol de archivos</guimenuitem></menuchoice>. Para plegar de nuevo el árbol seleccione <menuchoice><guimenu>Ver</guimenu><guimenuitem>Plegar árbol de archivos</guimenuitem></menuchoice>. </para>
<para>De acuerdo con la configuración de <filename>.cvsignore</filename>, los archivos que no desea que se incluyan en el repositorio no se muestran en el árbol de archivos. Par cada archivo visible podrá ver su estado, por omisión éste se estable a "desconocido" debido a que &cervisia; retrasa la obtención de información hasta que seleccione los archivos y carpetas cuyo estado quiere actualizar o ver y seleccione <menuchoice><guimenu>Archivos</guimenu><guimenuitem>Actualizar</guimenuitem></menuchoice> o <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Estado</guimenuitem></menuchoice>. De esta forma dispondrá de un mínimo de funcionalidad aunque no esté conectado permanentemente al servidor &CVS;. </para>
<figure id="screenshot-mainview" float="1">
<title>Captura de pantalla de la vista principal de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="mainview.png"/></imageobject>
<textobject><phrase>Captura de pantalla de la vista principal de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>Las órdenes del menú Archivo solo suelen actuar sobre los archivos marcados. También puede marcar carpetas. A continuación seleccione <menuchoice> <guimenu>Archivo</guimenu> <guimenuitem>Estado</guimenuitem> </menuchoice> o pulse <keycap>F5</keycap>. &cervisia; ejecutará la siguiente orden: </para>
<para>
<screen><command>cvs update -n <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>para recabar información sobre el estado de los archivos señalados. Observe que &cervisia; sólo recorrerá recursivamente las subdirectorios si tiene seleccionada la pertinente opción en el menú <guimenu>Preferencias</guimenu>. Ahora podrá ver el estado de cada archivo en la columna de <guilabel>Estado</guilabel>. </para>
<variablelist>
<varlistentry>
<term><guilabel>Modificados localmente</guilabel></term>
<listitem><para>Quiere decir que ha modificado localmente el archivo respecto de la versión del repositorio. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Añadido localmente</guilabel></term>
<listitem><para>Significa que tiene pendiente de entrega un archivo que no existe en el repositorio pero sí en su copia local. El archivo en cuestión sólo aparecerá en el CVS después de realizar la entrega. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Eliminado localmente</guilabel></term>
<listitem><para>Significa que ha borrado un archivo de su copia local pero aún sigue existiendo en el repositorio. Sólo se eliminará después de realizar una entrega. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Necesita actualizar</guilabel></term>
<listitem><para>Aparece cuando existe una versión más reciente de ese archivo en el repositorio, p. ej. porque otra persona ha estado trabajando sobre él. En general querrá actualizar su copia local para tener siempre la versión más actual de todos los archivos. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Necesita parcheado</guilabel></term>
<listitem><para>Muy similar al anterior sólo que al actualizarse no se transfiere todo el archivo sino sólo un parche con los cambios. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Necesita combinarse</guilabel></term>
<listitem><para>Indica que deben combinarse la revisión que usted ha hecho en su copia local y la versión del repositorio. Esto suele ocurrir cuando ha modificado un archivo al mismo tiempo que otra persona. Si decide actualizar, se combinarán las modificaciones del repositorio con las suyas. En caso de conflicto (que alguien haya modificado las mismas líneas que usted) el nuevo estado del archivos será "Conflicto". </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Actualizado</guilabel></term>
<listitem><para>Indica que el archivo es idéntico a la versión del repositorio. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Conflicto</guilabel></term>
<listitem><para>Se muestra si el archivo sigue teniendo conflictos con la versión del CVS. Seguramente haya actualizado previamente el archivo sin resolver los conflictos. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>No presente en el CVS</guilabel></term>
<listitem><para>Indica que el archivo no figura en el repositorio &CVS;. Si quiere que esté disponible para los demás, debe añadirlo al repositorio y si no lo desea debería añadir su nombre en el archivo <filename>.cvsignore</filename>. </para></listitem>
</varlistentry>
</variablelist>
<para>Una vez que se ha hecho una idea del estado actual del CVS es posible que desee actualizarse. Seleccione algunos archivos (o carpetas lo que equivale a seleccionar todos los archivos que contienen). A continuación seleccione <menuchoice><guimenu>Archivo</guimenu> <guimenuitem>Actualizar</guimenuitem> </menuchoice> (por supuesto, puede hacerlo al principio de la sesión). Alguno de los archivos cambiará de estado. En general, se actualizan los archivos señalados como «Necesita ser parcheado» o «Necesita actualizar», lo que hace que puedan darse los siguientes casos en la columna de estado: </para>
<variablelist>
<varlistentry>
<term><guilabel>Actualizado</guilabel></term>
<listitem><para>Se muestra cuando el archivo se actualizó a la versión del repositorio. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Parchado</guilabel></term>
<listitem><para>Indica que el servidor &CVS; envió un parche para ese archivo y ha sido aplicado correctamente. Si no se ha conseguido aplicar debido a un conflicto entre sus modificaciones y las que otra persona ha enviado el estado para a ser <guilabel>Conflicto</guilabel>. </para></listitem>
</varlistentry>
</variablelist>
<para>Seguramente habrá notado que según el estado de un archivo, su fila tiene un color diferente. Los colores corresponden a la prioridad dada a cada estado. Por ejemplo: un archivo con un conflicto se marca en rojo debido a que tendrá que resolver dicho conflicto antes de seguir trabajando sobre él. Si su directorio contiene un gran número de archivos, es posible que le resulte más complicado tener una visión de conjunto. Para tener información más exacta acerca de qué archivos están en un estado inusual simplemente pinche sobre el encabezado de la columna <guilabel>Estado</guilabel>. Ahora se listarán los archivos por orden de prioridad con lo que tendrá toda la información importante en la parte superior de la lista. Para volver al orden alfabético pinche sobre el encabezado de la columna <guilabel>Nombre de archivo</guilabel>. </para>
</sect1>
</chapter>
<chapter id="workingwithfiles">
<title>Trabajar con los archivos</title>
<para>Es posible acceder a las funciones más comunes de &CVS; directamente desde la vista principal de &cervisia;. Los comnados suelen ejecutarse en todos los archivos seleccionados. Si tiene seleccionada alguna carpeta, el comportamiento variará según el menú <guimenu>preferencias</guimenu>. Por ejemplo, si tiene marcada la casilla <menuchoice><guimenu>preferencias</guimenu><guimenuitem>Enviar y eliminar recursivamente</guimenuitem></menuchoice> y escoge <menuchoice><guimenu>archivo</guimenu><guimenuitem>enviar</guimenuitem></menuchoice> cuando tenga seleccionada una carpeta, se enviarán todos los archivos de esa carpeta así como los contenidos por otras dentro de ella. Si no la tiene marcada, sólo se enviarán los archivos de la carpeta seleccionada. </para>
<figure id="screenshot-popup" float="1">
<title>Captura de pantalla de un menú contextual de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="popup.png"/></imageobject>
</mediaobject>
</figure>
<para>Las funciones más frecuentes también están disponibles pulsando con el botón derecho sobre la vista en árbol, a través del menú contextual. <xref linkend="screenshot-popup"/> que muestra el menú contextual de &cervisia;. </para>
<para>Para editar un archivo simplemente realice una doble pulsación sobre él o selecciónelo y pulse &Enter;. El archivo se abrirá en la aplicación que KDE tenga configurada para ese tipo. Si no desea abrir el archivo en esa aplicación puede hacer una doble pulsación sobre el archivo y seleccionar <menuchoice> <guisubmenu>Editar con</guisubmenu> </menuchoice> y seleccionar una de las aplicacione que manejan este tipo de archivo. </para>
<sect1 id="addingfiles">
<title>Añadir archivos</title>
<para>Puede añadir archivos a un proyecto en dos pasos: primero será necesario que &CVS; sepa que existen, es decir, <emphasis>entregarlos</emphasis> al repositorio. Este método tiene una ventaja importante: puede entregar archivos conjuntamente con modificaciones realizadas en otras áreas del proyecto. Al hacer esto, es fácil ver que esos cambios son parte de un todo. </para>
<para>Para terminar, seleccione todos los archivos que quiere añadir en la ventana principal de &cervisia;. Luego seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Añadir al repositorio</guimenuitem></menuchoice> o pinche con el botón derecho sobre los archivos seleccionados y seleccione <guimenuitem>Añadir al repositorio</guimenuitem>, verá el diálogo <guilabel>Añadir al CVS</guilabel> que le mostrará los archivos seleccionados. Pulse <guibutton>Aceptar</guibutton>. </para>
<para>&cervisia; ejecutará el siguiente comando:</para>
<para>
<screen><command>cvs add <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>Si todo ha ido bien, la columna de estado debe señalar "Añadido al repositorio" para todos los archivos que hemos señalado. </para>
<warning><para>&CVS; no está diseñado para permitir un exhaustivo control de las revisiones de los archivos binarios, p.ej. normalmente carece de sentido combinar cambios entre archivos binarios. Además, &CVS; autocompleta por omisión la palabras clave ( en la cade⪚na <literal>$Revision 1.6$</literal>) cada vez que se le entrega un archivo. Si se hace esto en un archivo binario probablemente deje de ser utilizable. </para></warning>
<para>Para evitar todos estos problemas, debe asegurarse al enviar archivos binarios (como imágenes PNG o archivos postscript) de seleccionar <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Añadir binario</guimenuitem></menuchoice>. Verá el diálogo <guilabel>Añadir al CVS</guilabel> donde se listarán los binarios que haya seleccionado y se le pedirá confirmación. Pulse <guibutton>Aceptar</guibutton>. </para>
<para>&cervisia; ejecutará el siguiente comando: </para>
<para>
<screen><command>cvs add -kb <replaceable>nombre archivos</replaceable></command></screen>
</para>
</sect1>
<sect1 id="removingfiles">
<title>Eliminar archivos</title>
<para>Al igual que cuando los añadimos, al eliminar archivos también necesitaremos dos pasos: primero necesitamos que el servidor tenga constancia de que los queremos eliminar, para ellos seleccionamos <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Eliminar del repositorio</guimenuitem></menuchoice> o <guimenuitem>Eliminar del repositorio</guimenuitem> desde el menú contextual. Aparecerá el diálogo <guilabel>Eliminar del CVS</guilabel> listando los archivos seleccionados. Pulse <guibutton>Aceptar</guibutton>. &cervisia; ejecutará la siguiente orden: </para>
<para>
<screen><command>cvs remove -f <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>Después de eso, deberá entregarse esa modificación quizás junto a otras modificaciones. </para>
<note><para>Este comando sólo funciona si el archivo está actualizado. Aunque pueda parecer un detalle sin importancia, piense que si el archivo se modificó desde la última vez es porque alguien aún está trabajando en él y posiblemente deba reconsiderar descartarlo. </para></note>
</sect1>
<sect1 id="addingremovingdirs">
<title>Añadir y eliminar directorios</title>
<para>&CVS; gestiona las carpetas de modo distinto a los archivos. Éstos carecen de control de revisiones, es decir, no puede saber qué directorios existían en el proyecto en un momento dado. Por ello no es posible eliminar expresamente directorios, salvo que lo hagamos directamente en el repositorio. </para>
<para>Siguiendo esto, &CVS; considera los directorios vacíos como inexistente. Podemos obligarle a eliminarlos usando la opción <option>-P</option><command>cvs update</command> y <command>cvs checkout</command>. Esto puede configurarse en el menú <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Eliminar directorios vacíos al actualizar</guimenuitem></menuchoice>. </para>
<para>Es posible añadir un directorio al repositorio seleccionando <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Añadir al repositorio</guimenuitem></menuchoice> o bien pulsando con el botón derecho sobre la carpeta seleccionada y eligiendo <guimenuitem>Añadir al repositorio</guimenuitem> en el menú contextual. Observe que a diferencia del proceso de añadir archivos, al añadir directorios no es necesario realizar una entrega posterior. &cervisia; ejecutará la orden: </para>
<para>
<screen><command>cvs add <replaceable>nombredir</replaceable></command></screen>
</para>
</sect1>
<sect1 id="committingfiles">
<title>Enviar archivos</title>
<para>Una vez que ha realizado un cierto número de cambios en su copia local y quiere que otros miembros accedan a su trabajo, deberá <emphasis>entregarlos</emphasis>. Al entregar los cambios, lo que hace es situar su propia versión de los archivos modificados como nuevas revisiones en el repositorio. Cuando otro miembro actualice su copia local recibirá (entre otros) los cambios que usted ha realizado. </para>
<para>Para entregar un par de archivos, márquelos en la ventana principal de &cervisia; y seleccione <menuchoice><guimenu>Archivos</guimenu><guimenuitem>Entregar</guimenuitem></menuchoice> o pinche con el botón derecho los archivos marcados y seleccione <guimenuitem>Entregar</guimenuitem> en el menú contextual. </para>
<figure id="screenshot-commit" float="1">
<title>Captura de pantalla del diálogo de entrega de &cervisia;.</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="commit.png"/></imageobject>
</mediaobject>
</figure>
<para>Verá un diálogo con una lista de los archivos seleccionados en la parte superior y los mensajes de registro en la parte inferior. &cervisia; le ayudará de varias formas a encontrar un mensaje de registro con significado: puede hacer doble click o pulsar <keycap>Intro</keycap> sobre un archivo para ver lo cambios que ha realizado en el mismo, puede ver una lista de los mensajes de registro que ha usado y también se ha integrado este diálogo en el editor de cambios de &cervisia;. Cuando haya terminado, se ejecutará el siguiente comando: </para>
<para>
<screen><command>cvs commit -m <replaceable>mensaje</replaceable> <replaceable>nombres de archivos</replaceable></command></screen>
</para>
<para>a tal fin. </para>
<note><para>Un error frecuente al entregar archivos es <errorname>Falló la comprobación de actualización</errorname>. Esto indica que alguien ha entregado cambios al repositorio desde la última vez que usted se ha actualizado, más técnicamente: su revisión <literal>BASE</literal> no es la más reciente existente. En este caso, &CVS; no aceptará sus cambios hasta que se actualice, resuelva los posibles conflictos y realice una nueva entrega. Si está trabajando en un proyecto de software, es una norma de cortesía comprobar que el programa funciona después de introducir sus cambios ya que es posible que sus cambios no sean compatibles con los introducidos por otras personas aunque no existan conflictos en el mismo archivo. </para></note>
<note>
<para>Otro error frecuente es <errorname>La etiqueta inamovible 'X' para el archivo 'X' no es una rama</errorname>. Esto ocurre si intenta enviar un archivo al que previamente le ha asignado un determinado número de revisión o etiqueta con el comando </para>
<para>
<screen><prompt>%</prompt><userinput>cvs update -r X</userinput></screen>
</para>
<para>( usado ⪚ en <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Actualizar a etiqueta/fecha</guimenuitem></menuchoice>). En cuyo caso, la etiqueta del archivo es inamovible, esto que que las siguientes actualizaciones no descargarán la versión más reciente de la rama. Si necesita entregar versiones posteriores a esa rama, antes deberá actualizarse a la versión más reciente de la misma. </para>
</note>
<para>Con &cervisia; es bastante fácil mantener un archivo con los registros de cambios acorde con las normas de programación de GNU. Para usarlo, seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Insertar entrada de registro de cambios</guimenuitem></menuchoice>. Si ya existe un archivo llamado <filename>ChangeLog</filename> en el directorio principal de su copia local, éste se cargará y podrá editarlo, al principio del mismo se introducirá una entrada con la fecha actual y su nombre de usuario (puede configurar esto en <xref linkend="customize-general"/>). Una vez que pulse <guibutton>Aceptar</guibutton>, el siguiente diálogo de entrega que abra tendrá el último mensaje introducido en el registro de cambios como mensaje de registro. </para>
</sect1>
<sect1 id="resolvingconflicts">
<title>Resolución de conflictos</title>
<para>Si le coincide modificar un archivo al mismo tiempo que otro miembro, es posible que ocurran conflictos que será detectados por &CVS; cuando actualice el archivo. &CVS; intentará combinar los cambios del otro miembro en su copia local. En el caso de que coincidan las líneas cambiadas, &CVS; no los combinará y dará un mensaje de error. </para>
<para>Podrá ver los archivos con conflictos desde la vista principal de &cervisia;, aparecen marcados como "conflicto" en la columna de estado y resaltados en rojo. Tendrá que resolver los conflictos antes de entregar esos archivos ya que &CVS; no le permitirá entregarlos mientras existan conflictos. También puede resolver conflictos de manera tradicional haciendo doble click sobre el archivos en cuestión y editándolo con su editor favorito.</para>
<para>&CVS; señala los cambios conflictivos poniendo marcas en la mitad de los archivos de este modo:</para>
<screen><<<<<<<
Cambios en su copia local
=======
Cambios en el repositorio
>>>>>>> revisión_number
</screen>
<para>Deberá reemplazar todo este bloque con la nueva versión combinada. Claro está que tiene mucha libertad a la hora de resolver una serie de conflictos: puede escoger una de las dos reversiones y descartar los otros cambios. También puede concluir que en ambos casos los cambios son inadecuados y reescribir usted mismo las funciones e incluso reescribir todo el archivo. </para>
<para>Afortunadamente, &cervisia; proporciona un útil sistema para resolver estos problemas. Ésto no quiere decir que nunca sea necesario editar los archivos a mano, pero sí que podrá evitarlo para solucionar los conflictos más triviales. Para utilizar el diálogo <guilabel>Resolver para el CVS</guilabel>, seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Resolver</guimenuitem></menuchoice> o pulse con el botón derecho el archivo seleccionado y elija <guimenuitem>Resolver</guimenuitem> desde el menú contextual. </para>
<figure id="screenshot-resolve" float="1">
<title>Captura de pantalla del diálogo de resolución de conflictos de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="resolve.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de resolución de conflictos de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>En la parte superior del diálogo verá ambas versiones del archivo. En la parte izquierda podrá ver <guilabel>Su versión (A)</guilabel> del archivo y el la derecha <guilabel>Otra versión (B)</guilabel>. La <guilabel>sección combinada</guilabel> muestra las partes del archivo que se introducirán en su copia local si pulsa <guibutton>Aceptar</guibutton>. </para>
<para>Podrá avanzar y retroceder a través de las secciones pulsando <guibutton><<</guibutton> y <guibutton>>></guibutton>. En la parte inferior del diálogo podrá ver qué sección está señalada en cada momento. </para>
<para>Ahora podrá decidir para cada sección qué versión quiere tener en el archivo combinado. Pulsando <guibutton>A</guibutton> se añadirá la versión que ha editado y pulsando <guibutton>B</guibutton> la del repositorio. Pulsando <guibutton>A+B</guibutton> se añadirán ambas versiones: primero la suya y luego la del repositorio, si pulsa <guibutton>B+A</guibutton> también se añadirán las dos aunque primero la del repositorio y luego la suya. </para>
<para>Si ninguna de las versiones le satisface, pulse <guibutton>Editar</guibutton> para modificar esa sección en un editor. Cuando termine pulse <guibutton>Aceptar</guibutton> para volver al diálogo <guilabel>Resolver para el CVS</guilabel>. Podrá ver la sección que acaba de editar en la <guilabel>Versión combinada</guilabel> junto con los cambios introducidos por usted. </para>
<para>Para guarda sus cambios, sobreescribiendo su versión de la copia de trabajo, pulse <guibutton>Guardar</guibutton>. Observe que esto no sólo guardará la sección que está viendo sino todo el archivo. Si quiere guardarlo en otro archivo, pulse <guibutton>Guardar como</guibutton>. Pulse <guibutton>Cerrar</guibutton> para salir del diálogo. Tenga en cuenta que si lo hace sin guardar los cambios, éstos se perderán. </para>
</sect1>
</chapter>
<chapter id="obtaininginformation">
<title>Obtener información sobre archivos y crear parches</title>
<sect1 id="diff">
<title>Observar las diferencias entre revisiones</title>
<para>En &cervisia; dispone de varios sitios donde poder acceder a una ventana que muestre las diferencias entre las revisiones de un determinado archivo. </para>
<itemizedlist>
<listitem><para>Desde la vista principal podrá seleccionar <menuchoice><guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio (BASE)</guimenuitem></menuchoice>. Esta función está basada en el comando <command>cvs diff</command>, le mostrará las diferencias entre su versión local y la última que actualizó (también conocida como <literal>BASE</literal>). Esto es bastante útil antes de entregar un archivo, así podrá luego encontrar fácilmente el mensaje de registro. </para></listitem>
<listitem><para>Podrá ver las diferencias entre su versión local y la de la rama principal de desarrollo (también llamada <literal>HEAD</literal>) seleccionando <menuchoice><guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio (HEAD)</guimenuitem></menuchoice>. </para></listitem>
<listitem><para>Podrá ver las diferencias entre las dos últimas revisiones del archivo seleccionado, en <menuchoice><guimenu>Ver</guimenu><guimenuitem>Última modificación</guimenuitem></menuchoice>. </para></listitem>
<listitem><para>Podrá acceder a las opciones de menú <guimenuitem>Diferencias con el repositorio (BASE)</guimenuitem>, <guimenuitem>Diferencias con el repositorio (HEAD)</guimenuitem> y <guimenuitem>Última modificación</guimenuitem> con una doble pulsación sobre el archivo en cuestión y seleccionándolos en el menú contextual. </para></listitem>
<listitem><para>Podrá ver una ventana con las diferencias en el diálogo que se muestra cuando entrega una archivo seleccionando el nombre de un archivo ya sea haciendo doble click sobre él o pulsando <keycap>Intro</keycap>. Esto es muy similar a seleccionar <menuchoice><guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio</guimenuitem></menuchoice> sobre los archivos respectivos en la vista principal. </para></listitem>
<listitem><para>Desde el diálogo de visualización de registros, podrá seleccionar dos revisiones de un archivo y ver las diferencias entre ambos (vea <xref linkend="browsinglogs"/>). </para></listitem>
</itemizedlist>
<para>Seguramente habrá notado que &cervisia; no sólo le muestra la salida del comando <command>diff</command> sino que la representa gráficamente tal como puede ver en <xref linkend="screenshot-log"/>. </para>
<figure id="screenshot-log" float="1">
<title>Captura de pantalla del diálogo de diferencias de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="diff.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de diferencias de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>El texto que aparece en el diálogo incorpora una serie de mejoras respecto al que le proporcionaría el comando diff con la opción <option>-u</option>. Puede ver ambos archivos en sendas ventanas con las líneas ordenadas de tal modo que pueda fácilmente comparar ambos. Donde se haya borrado o añadido alguna línea , se mostrará el delimitador <literal>+++++</literal> en el lado izquierdo de la ventana respectiva. Podrá ver los número de línea en la columna de la izquierda. </para>
<para>En la segunda columna de la ventana derecha, podrá ver los cambios realizados que pueden ser: <literal>Añadido</literal>, <literal>Borrado</literal> y <literal>Modificado</literal> con las líneas resaltadas en azul, verde y rojo respectivamente. Así, podrá ver rápidamente todos los cambios realizados sobre el archivo. También puede usar la posición de las regiones coloreadas de la imagen comprimida como orientación al usar la barra de desplazamiento. </para>
<para>Normalmente, las barras de desplazamiento de la izquierda y de la derecha están sincronizadas, es decir que si mueve una, la otra también lo hará. Puede evitar esto marcando la casilla <guibutton>Sincronizar barras de desplazamiento</guibutton>. </para>
<para>Para obtener más información sobre cómo personalizar el diálogo de diferencias vea <xref linkend="customize-diff"/>. </para>
</sect1>
<sect1 id="creatingpatches">
<title>Crear parches</title>
<para>Puede querer que alguien revise sus modificaciones antes de entregarlas o quizás carece de una cuenta de acceso en el repositorio. En estos casos, &CVS; proporciona métodos estándar para compartir los cambios que ha hecho y que otras personas puedan revisarlos y eventualmente entregarlos. Los archivos que contienen estos cambios se denominan <firstterm>parches</firstterm> y se crean mediante el comando <command>cvs diff</command> de igual modo que las diferencias en <xref linkend="diff"/>. El uso de este tipo de archivos disminuye el ancho de banda al ser más pequeños que el archivo completo, además un sólo parche puede contener los cambios de varios archivos. </para>
<para>&cervisia; le permite acceder a esta característica seleccionando <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Crear parche para el repositorio</guimenuitem></menuchoice>. </para>
<important><para>La acción <guimenuitem>Crear parche para el repositorio</guimenuitem> crea un parche con todas las modificaciones realizadas en los archivos de su copia de trabajo respecto de la rama <guimenuitem>BASE</guimenuitem> del repositorio. Sin embargo, la selección de archivos en la vista principal no afecta al parche que se generará. </para></important>
<para>Otra posibilidad es seleccionar un archivo en la vista principal y seleccionar <guimenuitem>Ver registro</guimenuitem> en el menú <guimenu>Ver</guimenu> o pulsar con el botón derecho sobre el archivo y seleccionar <guimenuitem>Ver registro</guimenuitem> en el menú contextual para que se abra el diálogo <link linkend="browsinglogs">Buscar registros</link>. Ahora deberá seleccionar la versión para la que se quiere crear un parche como revisión «A» y pulsar <guilabel>Crear parche</guilabel>. Esto creará un parche con las diferencias de su copia local respecto al <emphasis>archivo seleccionado</emphasis> y la versión seleccionada como revisión «A». </para>
<para>Antes de crear un parche, &cervisia; le muestra un diálogo para que decida el formato de salida. </para>
<figure id="screenshot-patch" float="1">
<title>Captura de pantalla del diálogo de creación de parches de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="patch.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de creación de parches de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<variablelist>
<varlistentry>
<term><guilabel>Formato de salida</guilabel></term>
<listitem><para>Existen tres posibilidades: </para>
<para><guilabel>Normal</guilabel>: puede usarse para hacer que el editor haga automáticamente otra copia del viejo archivo que coincida con el nuevo. Los caracteres < y > señalan los cambios y no dispone de información contextual. </para>
<para><guilabel>Unificado</guilabel>: es el formato más usado. Utiliza líneas contextuales además de los números de línea para registrar las diferencias lo que añade robustez al proceso de aplicar un parche. Esto formato muestra las diferencias en una forma compacta y legible con un encabezado para cada archivo implicado y secciones separadas para cada diferencia. Las líneas contextuales incluidas con cada diferencia hace que sea más sencillo entender los cambios realizados. Los caracteres + y - señalan los cambios. </para>
<para><guilabel>Contextual</guilabel>: contiene la misma información que el unificado pero de forma menos compacta. Los cambios se marcan con el carácter !. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Cantidad de líneas contextuales:</guilabel></term>
<listitem><para>Ponga aquí el número de líneas contextuales para los formatos unificado y contextual, esta opción no está disponible para el formato normal ya que no contiene información contextual. Cuanta más información contextual esté disponible, más sencilla resultará su lectura y su aplicación aunque se incrementará el tamaño del parche. Es recomendable el uso de al menos dos líneas contextuales. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Ignorar opciones</guilabel></term>
<listitem><para>Vea aquí los cambios que no deben considerarse como diferencias al generar parches. </para></listitem>
</varlistentry>
</variablelist>
<para>Una vez configurado el formato de salida, &cervisia; creará el parche y le mostrará el diálogo <guilabel>Guardar como</guilabel>. Introduzca el nombre y la localización del parche. </para>
</sect1>
<sect1 id="annotate">
<title>Ver un archivo con anotaciones</title>
<para>Con el comando <command>cvs annotate</command>, &CVS; le permite saber para cada línea modificada quien ha sido el último en hacerlo. Esto puede resultar útil para saber quién ha sido el que ha introducido un determinado cambio para contactar con él acerca de cualquier incidencia en esa parte del código. </para>
<para>&cervisia; le permite ver esta información mejor que en una consola. Para ver una versión anotada, seleccione <menuchoice><guimenu>Ver</guimenu><guimenuitem>Anotar</guimenuitem></menuchoice>. Otra forma es pulsar el botón <guilabel>Anotar</guilabel> en el diálogo <link linkend="browsinglogs">Buscar registros</link> donde podrá seleccionar qué versión del archivo quiere ver. En <xref linkend="screenshot-annotate"/> puede ver una captura de pantalla de ese diálogo. </para>
<figure id="screenshot-annotate" float="1">
<title>Captura de pantalla del diálogo de anotaciones de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="annotate.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de anotaciones de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>En el diálogo de anotaciones, podrá ver una ventana con la última versión del archivo seleccionado (o la revisión "A" de la versión) en caso de que iniciará el diálogo de anotaciones desde el diálogo de <link linkend="browsinglogs">Búsqueda de registros</link>). En la columna anterior al texto, podrá ver información sobre el último cambio de cada línea. En la primer columna se muestra el número de línea, en la segunda el nombre del autor y el número de revisión y, finalmente, en la tercera columna puede ver el contenido actual de la línea. </para>
<para>En consecuencia, cuando el formato de una determinada línea le parece extraño o cree que contiene algún fallo podrá saber inmediatamente quien es el responsable. También podrá saber <emphasis>porque</emphasis> se ha modificado esa línea para lo cual deberá situar el cursos sobre el número de revisión que desee, aparecerá un cuadrito mostrándole el mensaje de registro junto con la fecha del cambio. </para>
</sect1>
<sect1 id="browsinglogs">
<title>Ver los registros de &CVS;</title>
<para>Cuando marca un archivo en la vista principal y selecciona <guimenuitem>Examinar registro</guimenuitem> desde el menú <guimenu>Ver</guimenu> o pulsa con el botón derecho sobre el archivo y seleccione <guimenuitem>Buscar registro</guimenuitem> en el menú contextual. Se mostrará el diálogo <guilabel>Registro de CVS</guilabel> (si selecciona más de un archivo no ocurrirá nada porque &cervisia; sólo puede mostrar el registro de un archivo al mismo tiempo). Desde aquí no sólo podrá ver el historial del archivo sino que también podrá: </para>
<itemizedlist>
<listitem><para>Ver la revisión, autor, fecha, rama, mensaje de entrega y etiquetas para cada versión del archivo seleccionado. </para></listitem>
<listitem><para>Ver una gráfico en árbol de las ramas y etiquetas del archivo seleccionado. </para></listitem>
<listitem><para>Ver cualquier versión del archivo seleccionado (se abrirá con la aplicación por defecto). </para></listitem>
<listitem><para>Ver una versión con anotaciones de cualquier versión del archivo seleccionado. </para></listitem>
<listitem><para>Ver las diferencias sobre dos versiones cualquiera del archivo seleccionado. </para></listitem>
<listitem><para>Crear parches con las diferencias entre dos versiones distintas del archivo seleccionado incluyendo su propia copia local. </para></listitem>
</itemizedlist>
<figure float="1">
<title>Captura de pantalla del diálogo del visor de registros de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="logtree.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo del visor de registros de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>Podrá ver el historial tal como lo crea el comando <command>cvs log</command> (<guilabel>Salida de CVS</guilabel>) en forma de <guilabel>Árbol</guilabel> o en forma de <guilabel>Lista</guilabel>. Obviamente deberá seleccionar aquel que encuentre más cómodo o que, por alguna razón, decida usar. La vista en árbol le dará una representación muy intuitiva del trabajo realizado en las distintas ramas por los distintos miembros. Podrá ver los correspondientes mensajes de registro en forma de cuadritos emergentes (tooltips). La forma de lista es, como su nombre indica, lineal y por tanto no aporta esa visión inmediata de las distintas ramas aunque por también concentra más información relevante en menos espacio. La información que proporciona el CVS es muy completa pero también larga y difícil de leer. Para ahorrarle algunos problemas podrá buscar cadenas de texto de su interés pulsando <guibutton>Buscar</guibutton>. </para>
<para>Para obtener más información acerca de una determinada revisión puede pinchar sobre ella ya sea en la lista o en el árbol. Verá como se rellenan los campos de la parte media del diálogo con la información completa aportada por <command>cvs log</command>. Puede ser importante marcar dos revisiones: "A" y "B" en caso de que quiera usar más características de estos botones. Puede seleccionar la revisión "A" con el botón izquierdo del ratón y la revisión "B" con el botón central. También podrá navegar por la lista mediante las teclas del cursor. Para marcar las revisiones "A" y "B", utilice los atajos de teclado <keycombo><keycap>Ctrl</keycap><keycap>A</keycap><keycap>Ctrl</keycap><keycap>B</keycap></keycombo> respectivamente. Podrá seleccionar revisiones usando la vista <guilabel>Salida de CVS</guilabel> y pinchando sobre <guilabel>Seleccionar revisión A</guilabel> o <guilabel>Seleccionar revisión B</guilabel>. </para>
<para>Si pulsa el botón <guibutton>Anotar</guibutton>, verá un diálogo con el texto del archivo perteneciente a la revisión marcada como "A". Cada línea se precede de la información acerca de quién la editó por última vez y en qué revisión se ha hecho. Tiene más información sobre la vista de anotaciones en <xref linkend="annotate"/>. </para>
<para>Si pulsa en botón <guibutton>Diff</guibutton> se llamará al comando <command>cvs diff</command> y se le mostrará un diálogo con todas las modificaciones entre las dos revisiones marcadas. Si marca la revisión "A", pero no la "B", &cervisia; le mostrará las diferencias entre su versión del archivo y la de su copia de trabajo. Así, podrá ver las diferencias entre su versión y cualquier otra presente en el &CVS;. Para facilitarle esa tarea, se usan diferentes colores para resaltar las líneas que han sido añadidas, eliminadas o modificadas, Tiene más información sobre la vista de diferencias en <xref linkend="diff"/>. </para>
<para>Si pulsa el botón <guibutton>Crear parche</guibutton>, verá un diálogo donde podrá configurar las opciones del formato del archivo con las diferencias que se muestran.Si marca la revisión "A", pero no la "B", &cervisia; le mostrará las diferencias entre su versión del archivo y la de su copia de trabajo. sí, podrá crear un parche que muestre las diferencias entre su versión y cualquier otra presente en el &CVS;. Una vez que haya configurado todos los parámetros del diálogo y pulsado <guibutton>Aceptar</guibutton>, se ejecutará el comando <command>cvs diff</command> para generar el parche. Aparecerá el diálogo <guilabel>Guardar como</guilabel>. Para guardarlo, introduzca el nombre de archivo y su localización. Tiene más información sobre creación de parches y sus formatos en <xref linkend="creatingpatches"/>. </para>
<para>Si pulsa el botón <guibutton>Ver</guibutton>, &cervisia; descargará la revisión marcada como "A" y la abrirá con la aplicación asignada por omisión a ese tipo de archivo. </para>
<para>Pulse <guibutton>Cerrar</guibutton> para salir del diálogo y volver a la ventana principal. </para>
<para>Para generar el mensaje de registro, &cervisia; ejecuta el siguiente comando: </para>
<para>
<screen><command>cvs log <replaceable>nombrearchivos</replaceable></command></screen>
</para>
</sect1>
<sect1 id="browsinghistory">
<title>Ver el historial</title>
<para>Si el repositorio que utiliza tiene activado el sistema de registro, &cervisia; le mostrará el historial de ciertos eventos tales como descargas, entregas, actualizaciones.... Seleccione <guimenuitem>Historial</guimenuitem> desde el menú <guimenu>Ver</guimenu>, &cervisia; ejecutará el siguiente comando: </para>
<para>
<screen><command>cvs history -e -a</command></screen>
</para>
<note><para>Con esto obtendrá el archivo de registro completo del servidor, esto es una lista de eventos para todos los usuarios y módulos. Esto puede resultar ser un archivo gigantesco. </para></note>
<para>Ahora podrá ver la lista de eventos ordenados por fecha. En la segunda columna se muestra el tipo de evento. </para>
<itemizedlist>
<listitem><para>Descarga - El usuario que aparece en la segunda columna descargó un módulo. </para></listitem>
<listitem><para>Etiqueta . Un usuario hizo uso del comando <command>cvs rtag</command>. Observe que el uso de <command>cvs rtag</command> (tal como hace &cervisia; al seleccionar <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Etiqueta/Rama</guimenuitem></menuchoice>) no se registra en el historial. Esto es así por motivos históricos (vea la <acronym>FAQ</acronym> de &CVS;). </para></listitem>
<listitem><para>Publicación - Un usuario publicó un módulo. Hoy en día este comando es de poca utilidad y se usa muy poco. </para></listitem>
<listitem><para>Actualización, Borrado - Un usuario actualizó un archivo que había sido borrado en el repositorio. El archivo se borró también en su copia local. </para></listitem>
<listitem><para>Actualizad, Copiado - Un usuario ha actualizado un archivo. Se ha copiado una nueva versión en su copia local. </para></listitem>
<listitem><para>Actualizado, Combinado - Un usuario actualizó un archivo y las modificaciones presentes en la copia del repositorio se introdujeron en su copia local. </para></listitem>
<listitem><para>Actualizado -.Conflicto - Se detectaron conflictos entre la versión local del usuario y la del repositorio. </para></listitem>
<listitem><para>Entregado, Modificado - Un usuario envió al repositorio las modificaciones que realizó sobre un archivo. </para></listitem>
<listitem><para>Entregado, Añadido - Un usuario añadió un archivo nuevo al proyecto y lo entregó al repositorio. </para></listitem>
<listitem><para>Entregado, Eliminado - Un usuario eliminó un archivo de su copia local y del repositorio. </para></listitem>
</itemizedlist>
<figure id="screenshot-history" float="1">
<title>Captura de pantalla del diálogo de historial de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="history.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de historial de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<para>Puede modificar el criterio del orden de listado pinchando en los encabezados de las columnas, Dispone de varias casillas de verificación para activar diversas opciones de filtrado para que se muestren sólo las entradas de su interés. </para>
<itemizedlist>
<listitem><para>Mostrar entregas - muestra las entregas realizadas</para></listitem>
<listitem><para>Mostrar descargas - muestra las descargas realizadas</para></listitem>
<listitem><para>Mostrar etiquetados - Muestra todo lo relacionado con el etiquetado</para></listitem>
<listitem><para>Mostrar otros eventos - Muestra los eventos no incluidos en los apartados anteriores.</para></listitem>
<listitem><para>Sólo usuario - Muestra los eventos realizados por un determinado usuario.</para></listitem>
<listitem><para>Sólo archivos que cumplan el patrón - filtra los nombres de archivo mediante una expresión regular.</para></listitem>
<listitem><para>Sólo directorios que cumplan el patrón - filtra los nombres de directorios mediante una expresión regular</para></listitem>
</itemizedlist>
<para>Los caracteres especiales reconocidos por el sistema de expresiones regulares son: </para>
<itemizedlist>
<listitem><para><literal>x*</literal> concuerda con todos los nombres que incluyan el carácter <literal>x</literal>. </para></listitem>
<listitem><para><literal>x+</literal> concuerda con una o más apariciones del carácter <literal>x</literal>. </para></listitem>
<listitem><para><literal>x?</literal> concuerda con una o ninguna aparición del carácter <literal>x</literal> </para></listitem>
<listitem><para><literal>^</literal> concuerda con el inicio de la cadena. </para></listitem>
<listitem><para><literal>$</literal> concuerda con el final de la cadena. </para></listitem>
<listitem><para><literal>[a-cx-z]</literal> concuerda con una serie de caracteres ⪚ en este caso serían a,b,c,x,y,z. </para></listitem>
</itemizedlist>
</sect1>
</chapter>
<chapter id="advancedusage">
<title>Usos avanzados</title>
<sect1 id="updatingto">
<title>Actualizar a una determinada fecha, rama o etiqueta.</title>
<para>Las ramas de un módulo son versiones paralelas del mismo. Un ejemplo real de su uso es la publicación de un proyecto de software. Después de una publicación importante, habrá que corregir los fallos que vayan surgiendo en el código, pero también será necesario añadir nuevas características al código ya existente. Dado que es muy complicado realizar ambas cosas al mismo tiempo (las nuevas características incorporarán también nuevos fallos), &CVS; permite crear una versión paralela del proyecto que llamaremos "rama de la versión estable" y donde sólo se podrán añadir correcciones a los fallos existentesmientras que en la rama principal (HEAD) se siguen añadiendo nuevas características. </para>
<para>Las etiquetas se usan para marcar una determinada versión de un proyecto. &CVS; asigna una determinada etiqueta a una versión de cada archivo por tanto cuando descarga o se actualiza a una determinada etiqueta siempre tendrá la misma versión del archivo; las etiquetas, a diferencias de las ramas, no se asignan dinámicamente sino que son inamovibles. Son de utilidad a la hora de marcar publicaciones del proyecto, grandes cambios en el código, &etc;. </para>
<para>Tanto si está participando en el desarrollo de un proyecto como si sólo hace un seguimiento del mismo, no siempre trabajará con la rama principal. Después de la publicación de una nueva versión, quizás prefiera seguir con esa rama para realizar traducciones, arreglar fallos o simplemente porque se le supone mayor estabilidad. Para ello deberá actualizarse a la rama correspondiente a la publicación aunque todos los cambios que entregue también se enviarán a la nueva rama. </para>
<para>Si desea realizar el seguimiento de los fallos de alguna versión anterior, sólo tendrá que "desactualizarse" a la versión que desee. Lo mismo sucede si desea volver a la versión existente en una fecha anterior, esto es especialmente útil si se ha introducido algún error entre dos versiones distintas. Cuando pase a una determinada fecha o etiqueta, las versiones de todos sus archivos serán los mismos que los de la versión existente en esa fecha o correspondiente a la etiqueta en cuestión. </para>
<warning><para>Antes de actualizarse a una rama o etiqueta diferente, asegúrese de haber enviado todas sus modificaciones a la rama en la que está trabajando. Si se actualiza teniendo cambios pendientes, es posible que los pierda. Si lo prefiere puede realizar una nueva <link linkend="checkingout">Descarga</link> para trabajar con ambas versiones a la vez. </para></warning>
<figure id="screenshot-updatetag" float="1">
<title>Captura de pantalla del diálogo de actualización de &cervisia;</title>
<mediaobject>
<imageobject><imagedata format="PNG" fileref="updatetag.png"/></imageobject>
<textobject><phrase>Captura de pantalla del diálogo de actualización de &cervisia;</phrase></textobject>
</mediaobject>
</figure>
<variablelist>
<varlistentry>
<term><guilabel>Actualizar a una rama determinada</guilabel></term>
<listitem><para>Seleccione esta opción para actualizarse a una rama determinada. Introduzca el nombre de la rama en el menú desplegable o pulse el botón <guilabel>Buscar lista</guilabel> para obtener una lista de las ramas del &CVS; y seleccione la que desee. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Actualizar a una etiqueta determinada</guilabel></term>
<listitem><para>Seleccione esta opción si desea actualizarse a una determinada etiqueta. Introduzca el nombre de la etiqueta en el menú desplegable o pulse <guilabel>Buscar lista</guilabel> para descargar la lista de etiquetas disponibles en el servidor &CVS; y seleccione la que desee. </para></listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Actualizar a fecha</guilabel></term>
<listitem><para>Seleccione esta opción para actualizarse a la versión existente en una determinada fecha. Aquí podrá emplear una gran variedad de formatos para la fecha, p. ej. <literal>aaaa-mm-dd</literal> donde <literal>aaaa</literal> es el año, <literal>mm</literal> el mes (numérico) y <literal>dd</literal> corresponde al día. Puede utilizar frases en inglés como <literal>yesterday</literal> o <literal>2 weeks ago</literal>. </para></listitem>
</varlistentry>
</variablelist>
<note><para>Actualizar a una determinada etiqueta o hacerla inamovible. &ie; no podrá entregar más modificaciones de este archivo (salvo que la etiqueta sea la de una rama). Para volver a la rama principal seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Actualizar a HEAD</guimenuitem></menuchoice>. </para></note>
<para>El comando ejecutado al actualizar a una rama o etiqueta es: <screen><command>cvs update -r <replaceable>etiqueta</replaceable></command></screen>
</para>
<para>El comando para actualizarse a una fecha determinada es: <screen><command>cvs update -D <replaceable>fecha</replaceable></command></screen>
</para>
<para>El comando ejecutado para actualizarse a la rama principal (HEAD) es: <screen><command>cvs update <option>-A</option></command></screen>
</para>
</sect1>
<sect1 id="taggingbranching">
<title>Etiquetado y denominación de las ramas</title>
<para>Aquí discutiremos sólo los aspectos técnicos del etiquetado y denominación de las ramas. Si usted es <emphasis>usuario</emphasis> y no administrador de un repositorio, probablemente nunca se le presente este problema.Pero si usted administra un proyecto, debería leer también acerca de los problemas no técnicos (cantidad de tiempo, facilidad con la que se cometen errores...) que conlleva el mantenimiento de varias ramas de un mismo proyecto. Podrá encontrar algunas referencias sobre este tema en el apéndice. </para>
<para>El etiquetado suele hacerse cada vez que se publica una nueva versión con lo cual es bastante sencillo volver a la situación anterior si algo va mal. En general, el nombre de las etiquetas está formado por el nombre del proyecto y el número de versión. Por ejemplo, puede obtener la versión 1.0 de &cervisia; si busca la etiqueta <literal>CERVISIA_1_0</literal>. &cervisia; sigue estrictamente las reglas de &CVS; sobre nombres de rama válidos. Deben empezar por una letras y sólo pueden contener más letras, números, guiones y guiones bajos. </para>
<para>En general, querrá etiquetar todo el proyecto (aunque por supuesto, &CVS; le permite etiquetar sólo una parte). Para ello marque el directorio principal y seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Etiqueta/Rama</guimenuitem></menuchoice>. Introduzca el nombre de la rama y pulse <keycap>Intro</keycap>. </para>
<para>La creación de una rama no es mucho más complicado: marque la casilla <guibutton>Crear rama con esta etiqueta</guibutton> en el diálogo de la etiqueta. También puede borrar una etiqueta existente seleccionando <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Borrar etiqueta</guimenuitem></menuchoice> desde la ventana principal. </para>
<para>Otro aspecto de la creación de ramas es la combinación de modificaciones de una rama cualquiera en la actual. Si desea hacerlo, seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Combinar</guimenuitem></menuchoice>. Aparecerá un diálogo con dos opciones: </para>
<para>Podrá combinar todas las modificaciones realizadas en una determinada rama en la rama actual. En ese caso, deberá marcar la casilla <guibutton>Combinar desde la rama</guibutton> e indicar desde que rama quiere combinar los cambios. &cervisia; ejecutará el siguiente comando: </para>
<para>
<screen><command>cvs update <option>-j</option> <replaceable>etiqueta de la rama</replaceable></command></screen>
</para>
<para>La otra posibilidad es combinar sólo los cambios realizados entre dos etiquetas de una misma rama. Esto suele ocurrir cuando se combinan varias veces una misma rama con el tronco principal. Marque la casilla <guibutton>Combinar modificaciones</guibutton> e introduzca (en el orden correcto) las dos etiquetas en cuestión. Se ejecutará el comando: </para>
<para>
<screen><command>cvs update <option>-j</option> <replaceable>rama1</replaceable> <option>-j</option> <replaceable>rama2</replaceable></command></screen>
</para>
</sect1>
<sect1 id="watches">
<title>Uso de testigos</title>
<para>Un testigo sirve para que el servidor &CVS; notifique a los usuarios cuando se cambia un determinado archivo o un miembro ha empezado a editarlo. Para poder usar testigos será necesario que el archivo <filename><envar>$CVSROOT</envar>/CVSROOT/notify</filename> esté correctamente configurado.Este tema no será tratado aquí, si necesita información sobre cómo configurarlo, lea alguno de los libros citados en el apéndice. </para>
<para>&cervisia; proporciona seis opciones para gestionar los testigos. </para>
<para>Para añadir un testigo a uno o varios archivos, utilice <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Añadir testigo</guimenuitem></menuchoice>, podrá elegir para qué acciones quiere que &CVS; le notifique en el diálogo que se le muestra. P.ej. si sólo quiere recibir una notificación cuando se modifica un determinado archivo marque las casillas <guibutton>Sólo</guibutton> y <guibutton>Entregas</guibutton>. Si quiere que se le notifique cualquier acción relacionada con un determinado archivo,marque la casilla <guibutton>Todos</guibutton>. El comando que se ejecuta es el siguiente: </para>
<para>
<screen><command>cvs watch add -a commit <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>Puede variar dependiendo de las acciones a notificar que haya escogido. </para>
<para>Si ya no desea seguir de cerca los cambios de un determinado archivo, puede eliminar los testigos seleccionando <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Eliminar testigo</guimenuitem></menuchoice>, verá un diálogo con las mismas opciones que se le ofrecieron al crearlo. Una vez que dé su confirmación, &cervisia;ejecutará el siguiente comando: </para>
<para>
<screen><command>cvs watch remove <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>quizás con la opción <option>-a</option> para el evento elegido. </para>
<para>Finalmente, si quiere ver una lista con las personas que tienen testigos en un determinado archivo, seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Mostrar testigos</guimenuitem></menuchoice>. Se ejecutará el siguiente comando: </para>
<para>
<screen><command>cvs watchers <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>Durante el uso normal de &CVS;, cada miembro trabaja separadamente sobre su copia local del repositorio, puede modificar archivos simplemente abriéndolos en en editor sin que nadie lo sepa hasta que entregue los cambios. </para>
<para>Para algunos grupos de desarrolladores ésta no es la forma ideal de trabajar, prefieren saber si alguien está trabajando sobre un determinado archivo <emphasis>tan pronto</emphasis> como empiece a hacerlo. Esto puede hacerse si antes de empezar a editar un archivo selecciona <menuchoice><guimenu>Avanzados</guimenu><guimenuitem>Editar</guimenuitem></menuchoice> desde la ventana principal de &cervisia;. El comando que se ejecutará es el siguiente: </para>
<para>
<screen><command>cvs edit <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>Esto enviará una notificación a todos los que hayan puesto un testigo <literal>edit</literal> en ese archivo, también hará que se le considere a usted como un <emphasis>editor</emphasis> de ese archivo. Puede ver una lista de todos los editores de un determinado archivo seleccionando <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Mostrar editores</guimenuitem></menuchoice>. El comando que se ejecutará es el siguiente: </para>
<para>
<screen><command>cvs editors <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>La sesión de trabajo sobre un archivo termina automáticamente cuando se entregan los cambios. En ese momento se envía una notificación <literal>unedit</literal> a todos los miembros que hayan registrado el correspondiente testigo para ese archivo. Algunas veces es posible que no desee entregar el archivo sino que prefiera parar el trabajo y retornar a la revisión anterior, para ello seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Deshacer edición de archivos</guimenuitem></menuchoice>. Observe que &cervisia; no le pedirá confirmación con lo cual nada más seleccionarlo perderá todo el trabajo realizado desde la selección de <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Editar</guimenuitem></menuchoice>. El comando ejecutado por &cervisia; es el siguiente: </para>
<para>
<screen><command>echo y | cvs unedit <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>Hasta ahora hemos tratado el caso en que los desarrolladores hacen y deshacen cambios voluntariamente, pero &CVS; también es capaz de <emphasis>obligar</emphasis> a hacer uso de estos mecanismo. El comando que hace esto es <command>cvs watch on</command>, no entraremos en detalles porque su uso recae sobre todo en los administradores del repositorio pero lo que debe saber los desarrolladores es que cuando se controla la edición, la copia de trabajo se descarga como <emphasis>sólo lectura</emphasis>, es decir que, por omisión, no podrá editar una archivo (salvo que emplee diversas artimañas como cambiar los permisos con <command>chmod</command>). Sólo si selecciona <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Editar</guimenuitem></menuchoice> será posible editar el archivo, pero volverá a ser de sólo lectura otra vez cuando los entregue al servidor o seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Deshacer edición de archivos</guimenuitem></menuchoice>. </para>
<para>La interfaz de edición de &cervisia; también puede ayudarle de otra forma en su trabajo con proyectos que obliguen a usar testigos. Si acaba de abrir un editor con un archivo de sólo lectura haciendo doble click sobre él o seleccionando <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Editar</guimenuitem></menuchoice> no debería ser capaz de guardar los cambios posteriores. Obviamente, existe una razón para esto: cada vez que desea modificar un archivo, será necesario ejecutar <command>cvs edit</command> antes así que todos los miembros que tengan un testigo sobre ese archivo recibirán una notificación informándoles que usted trabaja sobre él. </para>
<para>En este caso, es recomendable marcar la opción <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Hacer cvs edit automáticamente cuando sea necesario</guimenuitem></menuchoice> así cada vez que edite el archivo haciendo doble click sobre él, &cervisia; ejecutará el comando <command>cvs edit</command> antes de abrir el editor para que pueda editar normalmente el archivo. Cuando termine su trabajo, entréguelo al repositorio. Los archivos entregados vuelven a ser de sólo lectura. </para>
</sect1>
<sect1 id="locking">
<title>Bloqueo</title>
<para>El modelo de desarrollo más frecuente en &CVS; es el llamado <emphasis>Descarga libre</emphasis> donde cada desarrollador tiene su propia copia local y puede realizar y entregar todos los cambios que desee. Con el uso de sistemas de notificación - como <command>cvs edit</command> - varios desarrolladores pueden trabajar al mismo tiempo en un mismo archivo mientras que los cambios respectivos se combinarán en sus copias locales cuando hagan una actualización. </para>
<para>Otros sistemas de control de versiones como <acronym>RCS</acronym> y <application>SourceSafe</application> emplean un modelo distinto. Cuando un miembro quiere editar un archivo, tiene que <emphasis>bloquearlo</emphasis> y sólo una persona puede bloquear un archivo al mismo tiempo. Una vez terminado su trabajo, se desactiva el bloqueo. Por una parte este método evita por completo los conflictos pero no es posible que dos personas estén trabajando al mismo tiempo en un mismo archivo aunque lo hagan en partes distintas lo que puede ralentizar el desarrollo. No se tratarán aquí las ventajas en inconvenientes de ambos modelos y aunque &CVS; incorpora algunos métodos de bloqueo no suele ser la forma preferida de trabajo. No debería utilizar esto a no se que el responsable del proyecto lo autorice. </para>
<para>Para bloquear archivos en &cervisia; haga lo siguiente: seleccione los archivos deseados en la vista principal luego seleccione <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Bloquear archivos</guimenuitem></menuchoice>. Esto ejecutará el comando </para>
<para>
<screen><command>cvs admin -l <replaceable>nombre archivos</replaceable></command></screen>
</para>
<para>El efecto contrario se logra seleccionando <menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Desbloquear archivos</guimenuitem></menuchoice> lo que ejecuta el comando</para>
<para>
<screen><command>cvs admin -u <replaceable>nombre archivos</replaceable></command></screen>
</para>
</sect1>
</chapter>
<chapter id="customization">
<title>Personalizar &cervisia;</title>
<para>Es posible personalizar &cervisia; de varias formas para satisfacer sus necesidades.Algunas de las opciones que más habitualmente se modifican están disponibles directamente en el menú <guimenu>Preferencias</guimenu>. Otras están agrupadas en un diálogo en <menuchoice><guimenu>Opción</guimenu><guimenuitem>Preferencias</guimenuitem></menuchoice>. </para>
<sect1 id="customize-general">
<title>General</title>
<variablelist>
<varlistentry id="customize-username">
<term><guilabel>Nombre de usuario para el editor de cambios de registro</guilabel></term>
<listitem><para>Cada vez que selecciona <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Insertar entrada de registro de cambios</guimenuitem></menuchoice> se genera una entrada en el registro con la fecha actual y su nombre de usuario. En general, se considera lo más correcto introducir su nombre completo y su email en cada una de sus entradas. &cervisia; hace eso exactamente. </para></listitem>
</varlistentry>
<varlistentry id="customize-cvspath">
<term><guilabel>Ruta al ejecutable cvs o cvs</guilabel></term>
<listitem><para>Aquí puede introducir la ruta hacia el comando <command>cvs</command>. por omisión, &cervisia; utilizará el ejecutable en <envar>$PATH</envar>&CVS;. </para></listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="customize-diff">
<title>Diff</title>
<variablelist>
<varlistentry id="customize-context">
<term><guilabel>Número de líneas de contexto en el diálogo de diff</guilabel></term>
<listitem><para>&cervisia; utiliza la opción <option>-U</option> para el comando <command>diff</command>, esto hace que sólo se muestren un número limitado de líneas para cada diferencia (líneas contextuales). Aquí podrá seleccionar el argumento para <command>-U</command>. </para></listitem>
</varlistentry>
<varlistentry id="customize-diffopt">
<term><guilabel>Opciones adicionales para cvs diff</guilabel></term>
<listitem><para>Escriba aquí los argumentos adicionales para <command>diff</command>. Un caso habitual es poner <option>-b</option> para que <command>diff</command> ignore los cambios en los espacios en blanco. </para></listitem>
</varlistentry>
<varlistentry id="customize-tabwidth">
<term><guilabel>Espacios de cada tabulador en el diálogo de diferencias:</guilabel></term>
<listitem><para>En el diálogo de diferencias, el tabulador representa </para></listitem>
</varlistentry>
<varlistentry id="customize-difffrontend">
<term><guilabel>Interfaz externo de diff</guilabel></term>
<listitem><para>Cuando utiliza alguna de las funciones que muestra el dialogo de diferencias como <menuchoice><guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio</guimenuitem></menuchoice>. &cervisia; invoca su propio interfaz para diff. Si prefiere usar otro como <application>Kompare</application>, <application>TkDiff</application>, o <application>xxdiff</application>, introduzca aquí su nombre y su ruta. </para></listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="customize-status">
<title>Estado</title>
<variablelist>
<varlistentry id="customize-startstatus-remote">
<term><guilabel>Inicia un archivo >estado automáticamente cada vez que abre un archivo para trabajar en un repositorio remoto.</guilabel></term>
<listitem><para>Cuando marca esta opción, se inicia el comando <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Estado</guimenuitem></menuchoice> cada vez que abre trabaja sobre un archivo remoto. La ejecución de este comando puede llevar algún tiempo y será necesaria una conexión al servidor. </para></listitem>
</varlistentry>
<varlistentry id="customize-startstatus-local">
<term><guilabel>Cuando se abre una copia de trabajo desde un repositorio local, se inicia automáticamente la selección Archivo>Estado.</guilabel></term>
<listitem><para>Cuando marca esta opción , la selección <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Estado</guimenuitem></menuchoice> se inicia cada vez que abre una copia de trabajo local. </para></listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="customize-advanced">
<title>Avanzado</title>
<variablelist>
<varlistentry id="customize-timeout">
<term><guilabel>Tiempo máximo hasta que aparece un diálogo de progreso (en milisegundos):</guilabel></term>
<listitem><para>La práctica totalidad de los comandos de &CVS; ejecutados en el directorio de trabajo del servidor requieren estar conectado. La respuesta varía según las fluctuaciones del ancho de banda y la carga del servidor. Por este motivo, cuando se ejecutan comandos como <menuchoice><guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio</guimenuitem></menuchoice>, &cervisia; abre un diálogo que le indica que el comando está en ejecución y que le permite cancelarlo. Este diálogo también puede mostrar mensajes de error del &CVS;. Dado que ese diálogo puede ser molesto, sólo se muestra tras una cierta cantidad de tiempo, que por omisión, son 4 segundos. desde aquí puede cambiar ese valor. </para></listitem>
</varlistentry>
<varlistentry id="customize-compression">
<term><guilabel>Grado de compresión por omisión</guilabel></term>
<listitem><para>El cliente <command>cvs</command> comprime los parches y archivos al enviarlos por la red. Es posible establecer el nivel de compresión mediante la opción <option>-z</option>. Podrá configurar &cervisia; para utilizar por omisión el nivel de compresión que defina aquí, aunque también es posible definirlo para cada repositorio en <menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Repositorios</guimenuitem></menuchoice>. </para></listitem>
</varlistentry>
<varlistentry id="customize-sshagent">
<term><guilabel>Inicie ssh-agent o utilice uno que ya se esté ejecutando</guilabel></term>
<listitem><para>Marque esa casilla si utiliza repositorios <link linkend="rsh">ext (rsh)</link>, &ssh; para comunicarse con el repositorio y <application>ssh-agent</application> para gestionar sus claves. </para></listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="customize-look">
<title>Aspecto</title>
<variablelist>
<varlistentry id="customize-protocolfont">
<term><guilabel>Tipo de letra para la ventana de protocolo</guilabel></term>
<listitem><para>Pulse este botón para abrir el diálogo <guilabel>Seleccionar tipo de letra</guilabel> y elija la que desee. La ventana de protocolo es donde se muestra la salida del cliente <command>cvs</command>. </para></listitem>
</varlistentry>
<varlistentry id="customize-annotatefont">
<term><guilabel>Tipo de letra para la vista anotada</guilabel></term>
<listitem><para>Pulse este botón para abrir el diálogo <guilabel>Tipo de letra</guilabel> y configurar el tipo de letra de la <link linkend="annotate">Vista anotada</link>. </para></listitem>
</varlistentry>
<varlistentry id="customize-difffont">
<term><guilabel>Tipo de letra para la vista de diferencias</guilabel></term>
<listitem><para>Pulse este botón para abrir el diálogo <guilabel>Configurar tipo de letra</guilabel> para configurar el que se emplea en los <link linkend="diff">diálogos de diferencias</link>. </para></listitem>
</varlistentry>
<varlistentry id="customize-colors">
<term><guilabel>Colores</guilabel></term>
<listitem><para>Si pulsa uno de los botones coloreados, se abrirá el diálogo <guilabel>Seleccionar color</guilabel>, así podrá seleccionar el color a usar en los diálogos <guilabel>Conflicto</guilabel>, <guilabel>Cambio local</guilabel> o <guilabel>Cambio remoto</guilabel> de la ventana principal o <guilabel>Cambios diff</guilabel>, <guilabel>Inserción diff</guilabel> o <guilabel>Borrado diff</guilabel> del interfaz de diff incluido en &cervisia;. </para></listitem>
</varlistentry>
<varlistentry id="customize-splitter">
<term><guilabel>Dividir horizontalmente la ventana principal</guilabel></term>
<listitem><para>La ventana principal de &cervisia; suele dividirse verticalmente en una ventana superior donde se sitúa el árbol de archivos y otra inferior con la salida de &CVS;. Si lo desea puede hacer que esta división sea horizontal. </para></listitem>
</varlistentry>
</variablelist>
</sect1>
</chapter>
<chapter id="appendix">
<title>Apéndice</title>
<sect1 id="ignoredfiles">
<title>Archivos ignorados</title>
<para>En el árbol de archivos principal, &cervisia; no mostrará todos los archivos que realmente están ahí. Esto es igual que para el comando <command>cvs</command>. &cervisia; intenta emular lo mejor posible su comportamiento obteniendo información de los archivos a ignorar en los siguientes lugares: </para>
<itemizedlist>
<listitem><para>Una lista estática que incluye cosas como <literal role="extension">*.o</literal> y <filename>core</filename>. Vea la documentación de &CVS; para más detalles. </para></listitem>
<listitem><para>El archivo <filename><envar>$HOME</envar>/.cvsignore</filename>. </para></listitem>
<listitem><para>La variable de entorno <envar>$CVSIGNORE</envar>. </para></listitem>
<listitem><para>El archivo <filename>.cvsignore</filename> del directorio correspondiente. </para></listitem>
</itemizedlist>
<para>El propio comando <command>cvs</command> también busca entradas en el archivo <filename><envar>$CVSROOT</envar>/CVSROOT/cvsignore</filename> a pesar de que se encuentra en el servidor y se supone que &cervisia;debe ser capaz de hacer su trabajo sin conexión. Si usted trabaja con un grupo que prefiere utilizar una lista de archivos a ignorar en el servidor, es una buena idea que eche un vistazo a los patrones que aparecen en ese archivo y los incluya en el archivo <filename>.cvsignore</filename> de su propio directorio home. </para>
</sect1>
<sect1 id="information">
<title>Más información y soporte</title>
<itemizedlist>
<listitem><para>&CVS; incluye una documentación muy completa en forma de páginas info llamada "The Cederqvist". Si está instalada en sus sistema, puede consultarla escribiendo <userinput>info:/cvs</userinput> en el cuadro de direcciones del <application>centro de ayuda de KDE</application>. También puede seleccionar <menuchoice><guimenu>Ayuda</guimenu><guimenuitem>CVS Info</guimenuitem></menuchoice>desde &cervisia;. La versión on-line en HTML de Derivaste puede consultarse <ulink url="http://cvshome.org/docs/manual/cvs.html">en su web</ulink>. </para>
<para>Dado que ese libro se mantiene conjuntamente con &CVS;, suele ser la fuente más actualizada. No obstante, considere también consultar otras fuentes para aprender el manejo de &CVS;, en especial las siguiente: </para></listitem>
<listitem><para>Karl Fogel ha escrito <ulink url="http://cvsbook.red-bean.com/index.html">Open Source Development with CVS</ulink>. Aproximadamente la mitad del libro trata del proceso de desarrollo de código libre mientras la otra mitad es documentación técnica sobre &CVS;. Afortunadamente, esta segunda parte ha sido publicada bajo la GPL y es posible descargarla en HTML. En la página antes mencionada, también se encuentra una lista de los errores encontrados en el libro. </para></listitem>
<listitem><para>Los aspecto de &CVS; se discuten en su propia <ulink url="http://mail.gnu.org/mailman/listinfo/info-cvs">lista de correo</ulink>. </para></listitem>
<listitem><para>En el grupo de USENET <literal>comp.software.config.mgmt</literal> se discuten asuntos sobre sistemas de gestión en general. Aunque &CVS; representa sólo una pequeña parte de las discusiones, puede resultarle interesante discutir acerca de las ventajas de &CVS; respeto de otros sistemas. </para></listitem>
<listitem><para>Por último (no menos importante):una lista de bajo tráfico <ulink url="http://lists.sourceforge.net/mailman/listinfo/cervisia-user">lista de correo de &cervisia;</ulink> </para></listitem>
</itemizedlist>
</sect1>
<sect1 id="commandreference">
<title>Referencia de comandos</title>
<!-- File Menu -->
<sect2 id="menufile">
<title>El menú Archivo</title>
<variablelist>
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Abrir directorio de trabajo</guimenuitem> </menuchoice></term>
<listitem><para>Abre un directorio de trabajo en la ventana principal. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Directorios locales recientes</guimenuitem> </menuchoice></term>
<listitem><para>Abre uno de los directorios de trabajo usados recientemente. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Insertar entrada de registro de cambios</guimenuitem> </menuchoice></term>
<listitem><para>Abre el editor de registros de modificaciones listo para añadir una nueva entrada con la fecha actual. Vea <xref linkend="committingfiles"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>U</keycap></keycombo></shortcut> <guimenu>Archivo</guimenu><guimenuitem>Actualizar</guimenuitem> </menuchoice></term>
<listitem><para>Ejecuta cvs update sobre los archivos seleccionados y modifica adecuadamente la versión de la revisión y el estado. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycap>F5</keycap></shortcut> <guimenu>Archivo</guimenu><guimenuitem>Estado</guimenuitem> </menuchoice></term>
<listitem><para>Ejecuta cvs -n update sobre los archivos seleccionados y modifica en consecuencia el estado y la versión de la revisión. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Editar</guimenuitem> </menuchoice></term>
<listitem><para>Abre el archivo seleccionado en el editor configurado por omisión en KDE para el tipo de archivo seleccionado. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Resolver</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para permitir solucionar conflictos en el archivo seleccionado. Vea <xref linkend="resolvingconflicts"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycap>#</keycap></shortcut> <guimenu>Archivo</guimenu><guimenuitem>Enviar</guimenuitem> </menuchoice></term>
<listitem><para>Le permite entregar al repositorio los archivos seleccionados. Vea <xref linkend="committingfiles"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycap>+</keycap></shortcut> <guimenu>Archivo</guimenu><guimenuitem>Añadir al repositorio</guimenuitem> </menuchoice></term>
<listitem><para>Le permite añadir al repositorio los archivos seleccionados. Vea <xref linkend="addingfiles"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Añadir binario</guimenuitem> </menuchoice></term>
<listitem><para>Le permite entregar los archivos seleccionados como binarios (<command>cvs add<option>-kb</option></command>). Vea <xref linkend="addingfiles"/>). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycap>-</keycap></shortcut> <guimenu>Archivo</guimenu><guimenuitem>Eliminar del repositorio</guimenuitem> </menuchoice></term>
<listitem><para>Le permite eliminar del repositorio los archivos seleccionados. Vea <xref linkend="removingfiles"/>. </para></listitem>
</varlistentry>
<!--TODO: add the revert action to the working with files chapter -->
<varlistentry>
<term><menuchoice><guimenu>Archivo</guimenu><guimenuitem>Revertir</guimenuitem> </menuchoice></term>
<listitem><para>Descarta cualquier cambio que usted haya realizado sobre los archivos seleccionados volviendo a la versión del repositorio (opción <option>-C</option> del comando <command>cvs update</command>). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>Q</keycap></keycombo></shortcut><guimenu>Archivo</guimenu><guimenuitem>Salir</guimenuitem> </menuchoice></term>
<listitem><para>Termina la ejecución de &cervisia; </para></listitem>
</varlistentry>
</variablelist>
</sect2>
<!-- View Menu -->
<sect2 id="menuview">
<title>El menú Ver</title>
<variablelist>
<varlistentry>
<term><menuchoice><shortcut><keycap>Escape</keycap></shortcut> <guimenu>Ver</guimenu><guimenuitem>Detener</guimenuitem> </menuchoice></term>
<listitem><para>Interrumpe todos los subprocesos en ejecución. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>L</keycap></keycombo></shortcut> <guimenu>Ver</guimenu><guimenuitem>Examinar registro</guimenuitem> </menuchoice></term>
<listitem><para>Muestra los registros de las versiones del archivo seleccionado. Vea <xref linkend="browsinglogs"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>A</keycap></keycombo></shortcut> <guimenu>Ver</guimenu><guimenuitem>Anotar</guimenuitem> </menuchoice></term>
<listitem><para>Muestra el archivo seleccionado con anotaciones, esto es que para cada línea del archivo usted puede ver qué autor fue el último en modificarla. Vea <xref linkend="annotate"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>D</keycap></keycombo></shortcut> <guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio (BASE)</guimenuitem> </menuchoice></term>
<listitem><para>Muestra las diferencias entre el archivo seleccionado en el directorio de trabajo y la última revisión que usted actualizó (BASE). Vea <xref linkend="diff"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><shortcut><keycombo><keycap>&Ctrl;</keycap><keycap>H</keycap></keycombo></shortcut><guimenu>Ver</guimenu><guimenuitem>Diferencias con el repositorio (HEAD)</guimenuitem> </menuchoice></term>
<listitem><para>Muestra las diferencias entre los archivos seleccionados en el directorio de trabajo y la última revisión que usted actualizó (HEAD). Vea <xref linkend="diff"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Último cambio</guimenuitem> </menuchoice></term>
<listitem><para>Muestra las diferencias entre la última revisión del archivo que usted actualizó (BASE) y la anterior. Vea <xref linkend="diff"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Historial</guimenuitem> </menuchoice></term>
<listitem><para>Muestra el historial de &CVS; tal como se recibe del servidor. Vea <xref linkend="browsinghistory"/>. </para></listitem>
</varlistentry>
<!--TODO: add hide menus to mainscreen section-->
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Ocultar todos los archivos</guimenuitem> </menuchoice></term>
<listitem><para>Determina si sólo deben mostrarse los directorios en la vista de árbol. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Ocultar archivos no modificados</guimenuitem> </menuchoice></term>
<listitem><para>Determina si deben o no estar visibles en el árbol principal los archivos desconocidos y actualizados. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Ocultar archivos eliminados</guimenuitem> </menuchoice></term>
<listitem><para>Determina si deben o no mostrarse en el árbol principal los archivos eliminados. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Ocultar archivos que no son del CVS</guimenuitem> </menuchoice></term>
<listitem><para>Determina si deben o no ocultarse los archivos que no pertenecen al CVS. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Esconder carpetas vacías</guimenuitem> </menuchoice></term>
<listitem><para>Determina cuándo se ocultarán las carpetas vacías en la vista del árbol principal. Consulte <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Desplegar árbol de archivos</guimenuitem> </menuchoice></term>
<listitem><para>Abre todas las ramas en el árbol de archivos para que pueda ver todos los archivos y carpetas que contiene. Vea <xref linkend="mainscreen"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ver</guimenu><guimenuitem>Plegar árbol de archivos</guimenuitem> </menuchoice></term>
<listitem><para>Cierra todas las ramas del árbol de archivos. Vea <xref linkend="mainscreen"/> </para></listitem>
</varlistentry>
</variablelist>
</sect2>
<!-- Advanced Menu -->
<sect2 id="menuadvanced">
<title>El menú Avanzado</title>
<variablelist>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Etiqueta/Rama</guimenuitem> </menuchoice></term>
<listitem><para>Etiqueta o asigna a una determinada rama los archivos seleccionados. Vea <xref linkend="taggingbranching"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Suprimir etiqueta</guimenuitem> </menuchoice></term>
<listitem><para>Elimina una determinada etiqueta de los archivos seleccionados. Vea <xref linkend="taggingbranching"/> </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Actualizar para la etiqueta/fecha</guimenuitem> </menuchoice></term>
<listitem><para>Asigna a los archivos seleccionados una determinada fecha o etiqueta inalterable. Vea <xref linkend="updatingto"/> </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Actualizar a HEAD</guimenuitem> </menuchoice></term>
<listitem><para>Actualiza los archivos seleccionados a la su respectiva versión en la rama HEAD. Vea <xref linkend="updatingto"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Combinar</guimenuitem> </menuchoice></term>
<listitem><para>Combina una rama determinada o bien las modificaciones entre dos versiones de los archivos seleccionados. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Añadir testigo</guimenuitem> </menuchoice></term>
<listitem><para>Añade un testigo sobre una serie de eventos en los archivos seleccionados. Vea <xref linkend="watches"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Eliminar testigo...</guimenuitem> </menuchoice></term>
<listitem><para>Elimina un testigo de los archivos seleccionados. Consulte <xref linkend="watches"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Mostrar testigos</guimenuitem> </menuchoice></term>
<listitem><para>Muestra una lista de los testigos presentes en los archivos seleccionados. Vea <xref linkend="watches"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Editar</guimenuitem> </menuchoice></term>
<listitem><para>Ejecuta <command>cvs edit</command> sobre los archivos seleccionados. Vea <xref linkend="watches"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Deshacer edición de archivos</guimenuitem> </menuchoice></term>
<listitem><para>Ejecuta el comando <command>cvs unedit</command> sobre los archivos seleccionados. Vea <xref linkend="watches"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Mostrar editores</guimenuitem> </menuchoice></term>
<listitem><para>Ejecuta el comando <command>cvs editors</command> sobre los archivos seleccionados. Vea <xref linkend="watches"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Bloquear archivos</guimenuitem> </menuchoice></term>
<listitem><para>Bloquea los archivos seleccionados. Vea <xref linkend="locking"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Desbloquear archivos</guimenuitem> </menuchoice></term>
<listitem><para>Desbloquea los archivos seleccionados. Vea <xref linkend="locking"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Avanzado</guimenu><guimenuitem>Crear un parche para el repositorio</guimenuitem> </menuchoice></term>
<listitem><para>Crea un parche en base a las modificaciones hechas por usted en su copia local. Vea <xref linkend="creatingpatches"/>. </para></listitem>
</varlistentry>
</variablelist>
</sect2>
<!-- Repository Menu -->
<sect2 id="menurepository">
<title>El menú repositorio</title>
<variablelist>
<varlistentry>
<term><menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Crear</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para facilitarle la creación de un nuevo repositorio local. Vea <xref linkend="accessing-repository"/> </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Descargar</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para permitirle descargar un determinado módulo del repositorio.Vea <xref linkend="checkingout"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Importar</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para permitirle importar un paquete al repositorio. Vea <xref linkend="importing"/>. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Repositorio</guimenu><guimenuitem>Repositorios</guimenuitem> </menuchoice></term>
<listitem><para>Configura una lista de repositorios que use a menudo junto con la forma de acceder a ellos. Vea <xref linkend="accessing-repository"/>. </para></listitem>
</varlistentry>
</variablelist>
</sect2>
<!-- Settings Menu -->
<sect2 id="menuoptions">
<title>El menú Preferencias</title>
<variablelist>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Mostrar barra de herramientas</guimenuitem> </menuchoice></term>
<listitem><para>Determina si la barra de herramientas debe o no mostrarse. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Crear directorios al actualizar</guimenuitem> </menuchoice></term>
<listitem><para>Determina si al actualizarse deben crearse nuevas carpetas en nuestra copia de trabajo (opción <option>-d</option> del comando <command>cvs update</command>). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Eliminar directorios vacíos a actualizar</guimenuitem> </menuchoice></term>
<listitem><para>Determina si deben eliminarse directorios vacíos al actualizar nuestra copia local (opción <option>-P</option> del comando <command>cvs update</command>). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Actualizar recursivamente</guimenuitem> </menuchoice></term>
<listitem><para>Determina si las actualizaciones deben ser o no recursivas (opción <option>-r</option> del comando <command>cvs update</command>). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Entregar y eliminar recursivamente</guimenuitem> </menuchoice></term>
<listitem><para>Determina si las entregas y eliminaciones deben hacerse o no recursivamente (opción <option>-r</option> del comando <command>cvs add</command> y <command>cvs remove</command> respectivamente). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Hacer cvs edit automáticamente cuando sea necesario</guimenuitem> </menuchoice></term>
<listitem><para>Determinar si el comando <command>cvs edit</command> debe ejecutarse automáticamente cada vez que edite un archivo. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Configurar atajos de teclado</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para configurar atajos de teclado. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Configurar barras de herramientas</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para configurar las barras de herramientas de &cervisia;. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Configurar Cervisia</guimenuitem> </menuchoice></term>
<listitem><para>Abre un diálogo para permitirle personalizar varios parámetros de &cervisia;. </para></listitem>
</varlistentry>
</variablelist>
</sect2>
<!-- Help -->
<sect2 id="menuhelp">
<title>El menú ayuda</title>
<variablelist>
<varlistentry>
<term><menuchoice><shortcut><keycap>F1</keycap></shortcut> <guimenu>Ayuda</guimenu><guimenuitem>Manual de Cervisia</guimenuitem> </menuchoice></term>
<listitem><para>Abre el manual de &cervisia; en el centro de ayuda de KDE (es decir este documento). </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ayuda</guimenu><guimenuitem>Informar de fallo...</guimenuitem> </menuchoice></term>
<listitem><para>Abre el diálogo para enviar fallos. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ayuda</guimenu> <guimenuitem>Acerca de &cervisia;</guimenuitem> </menuchoice></term>
<listitem><para>Esto mostrará información sobre la versión y el autor. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ayuda</guimenu><guimenuitem>Acerca de KDE</guimenuitem> </menuchoice></term>
<listitem><para>Muestra la versión de KDE y otra información básica. </para></listitem>
</varlistentry>
<varlistentry>
<term><menuchoice><guimenu>Ayuda</guimenu><guimenuitem>Manual del CVS</guimenuitem> </menuchoice></term>
<listitem><para>Abre las páginas info de &CVS; en el sistema de ayuda de KDE. </para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
</chapter>
<chapter id="credits-and-licenses">
<title>Créditos y licencias</title>
&underFDL; &underGPL; </chapter>
</book>
|