summaryrefslogtreecommitdiffstats
path: root/common/cvs-pt.xml
blob: aa2685b5c8bad067c64157298f321f89866b2a66 (plain)
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
<!-- $Id: -->

<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [

 <!ENTITY BOILERPLATE "This header makes editing XML easier">
 <!ENTITY FC          "Fedora Core">
 <!ENTITY RH          "Red Hat">

]>


<chapter id="ch-cvs">
  <title>CVS</title>
  <para>O Concurrent Versions System (<application>CVS</application>) oferece
  uma plataforma onde vários utilizadores poderão editar os mesmos ficheiros.
  Como poderá imaginar se um grupo de utilizadores editar os ficheiros numa
  única pasta, o caos iria reinar. Se usar o <application>CVS</application>,
  todavia, um grupo de utilizadores poderá estar a trabalhar em segurança no
  mesmo conjunto de ficheiros. O <application>CVS</application> mantém a
  cópia-mestra dos ficheiros e regista quem alterou o quê e quando, num
  repositório central. Se ocorrerem conflitos, o <application>CVS</application>
  informá-lo-á. O <application>CVS</application> é normalmente usado para que
  os programadores possam partilhar código, mas também funciona bem para a
  documentação.
  </para>
  <indexterm>
    <primary>cvs</primary>
  </indexterm>
  <section id="sn-cvs-overview">
    <title>Como Funciona o CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>como funciona</secondary>
    </indexterm>
    <indexterm>
      <primary>cvs</primary>
      <secondary>introdução</secondary>
    </indexterm>
    <para>
    Na maioria dos casos, cada conjunto de ficheiros que compõe um pacote ou
    projecto é gravado como um <firstterm>módulo</firstterm> no servidor de
    CVS.</para>

    <para>Ao lidar com ficheiros no <application>CVS</application>, você 
    <firstterm>extrai</firstterm> uma cópia do módulo para o seu sistema
    de ficheiros local. Depois de modificar um ou mais ficheiros, o 
    utilizador <firstterm>envia</firstterm> os mesmos ficheiros de volta
    para o servidor do repositório central do <application>CVS</application>.
    </para>

    <para>Com o <application>CVS</application> poderá editar um ficheiro sem
    pedir primeiro permissão ou bloquear o ficheiro. A parte 
    <wordasword>concurrent</wordasword> (concorrente) do nome do 
    <application>CVS</application> vem da sua capacidade de permitir a várias
    pessoas diferentes editarem partes diferentes do mesmo ficheiro. Desde 
    que nenhuma das alterações se sobreponha, o <application>CVS</application>
    consegue gravar correctamente as suas alterações. No cas de alterações
    duplicadas, elas são marcadas de forma clara nos ficheiros e os autores
    deverão resolver o problema entre eles. </para>

    <para>Quando você envia as alterações, só as alterações aos ficheiros 
    que o servidor reconhece é que são enviadas. Por outras palavras, se
    criou um ficheiro na sua cópia local do módulo, o ficheiro novo não
    é enviado automaticamente para o servidor. Precisa primeiro de 
    <firstterm>adicionar</firstterm> o dito ficheiro ao repositório e depois,
    sim, enviá-lo. Se remover um ficheiro da sua cópia local do módulo,
    também terá de indicar que o deseja remover do repositório no servidor
    de CVS e, posteriormente, confirmar a remoção do ficheiro. </para>

    <para
>Os comandos específicos para efectuar estas acções são discutidos em <xref linkend="sn-cvs-cvscommands"/>. </para>

    <para>Se alguém modificou o ficheiro desde a última altura em que obteve
    o ficheiro do CVS e quando você tentar enviar uma alteração sua, o
    <application>CVS</application> irá tentar juntar as alterações na 
    cópia-mestra no servidor do <application>CVS</application>. Se o conteúdo
    que alterou estiver num local diferente no ficheiro do conteúdo alterado 
    pela outra pessoa, então é possível que a acção de envio seja bem-sucedida
    sem haver <firstterm>conflitos</firstterm>. Se alguém modificou o mesmo
    conteúdo que você alterou e então enviar, irá então ver uma mensagem
    a avisar da ocorrência de um conflito. Como tal, terá de 
    <firstterm>actualizar</firstterm> os seus ficheiros com frequência. É uma
    boa prática actualizá-los antes de começar a modificá-los. Veja em 
    <xref linkend="sn-cvs-cvscommands-conflicts"/> algumas instruções de
    resolução de conflitos.</para>
  </section>
  <section id="sn-cvs-preparation">
    <title>Preparar para Usar o CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>preparar a utilização</secondary>
    </indexterm>
    <para>Antes de usar o <application>CVS</application>, precisa de 
    estabelecer uma conta com o servidor do <application>CVS</application>. 
    Depois de obter uma conta, já não terá de efectuar estas acções de novo.
    </para>

    <section id="sn-cvs-rpm-check">
      <title>O CVS Está Instalado no Seu Sistema</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>Instalação do RPM</secondary>
      </indexterm>
      <para>Deverá ter o pacote <abbrev>RPM</abbrev> do 
      <application>CVS</application> instalado. Verifique
      a sua presença com o comando: </para>
<screen><prompt>$ </prompt><command>rpm -q cvs</command></screen>
      <para>Se observar um resultado semelhante a 
      <computeroutput>cvs-1.11.19-1</computeroutput>, então o pacote
      está instalado. Se aparecer uma mensagem do tipo <computeroutput>o 
      pacote cvs não está instalado</computeroutput>, significa então que
      é necessário instalar o pacote <application>cvs</application> antes
      de prosseguir. Se não souber como fazê-lo, consulte o seu administrador
      de sistema, que podê-lo-á instalar por si. </para>
    </section>

    <section id="sn-cvs-generate-keys">
      <title>Gerar as Chaves de SSH</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>chaves de autorização</secondary>
      </indexterm>
      <para>O servidor de <application>CVS</application> usa chaves de 
      <application>SSH</application> Protocolo 2 para autenticar os
      utilizadores. Como tal, terá de gerar um par de chaves, antes
      de pedir uma conta de <application>CVS</application>. Se já 
      tiver uma chave <abbrev>DSA</abbrev> do <application>SSH</application>,
       poderá saltar este passo. </para>
      <tip>
        <title>Sugestão</title>
        <para>Já terá uma chave de <abbrev>DSA</abbrev> se tiver o ficheiro 
        <filename>~/.ssh/id_dsa.pub</filename> no sistema. </para>
        <para>Se a sua chave <abbrev>DSA</abbrev> existente não precisar de
        uma <wordasword>frase-senha</wordasword>, é-lhe altamente recomendado
        que gere uma que peça de facto a senha. </para>
      </tip>
      <para>Use os seguintes passos para gerar uma chave <abbrev>DSA</abbrev>
      usada pelo <application>SSH</application> Protocolo 2. É necessário para
      uma conta do <application>CVS</application> em 
      <computeroutput>cvs.fedoraproject.org</computeroutput>. </para>
      <orderedlist>
        <indexterm>
          <primary>OpenSSH</primary>
          <secondary><command>ssh-keygen</command>
          </secondary>
        </indexterm>
        <indexterm>
          <primary><command>ssh-keygen</command>
          </primary>
        </indexterm>
        <listitem>
          <para>Para gerar uma chave <acronym>DSA</acronym> que funcione com a versão do protocolo 2.0, numa consola, escreva o comando: </para>
<screen><prompt>$ </prompt><command>ssh-keygen -t dsa</command></screen>
          <para>Aceite a localização por omissão do ficheiro em 
          <filename>~/.ssh/id_dsa</filename>. É-lhe pedido para definir 
          e usar uma <firstterm>frase-senha</firstterm> para melhorar a
          segurança da sua chave. Indique uma frase-senha diferente da senha
          da sua conta e confirme-a, introduzindo-a de novo. </para>
        </listitem>
        <listitem>
          <para>Copie a sua chave nova para o ficheiro correcto, escrevendo 
          o seguinte numa linha de comandos. </para>
<screen><prompt>$ </prompt>
 <command>cat ~/.ssh/id_dsa.pub&gt;&gt;~/.ssh/authorized_keys</command>
</screen>
          <note>
            <para>Verifique este comando com cuidado, antes de carregar na
            tecla <guibutton>ENTER</guibutton>. Se o 
            <filename>~/.ssh/authorized_keys</filename> já existir,
            o conteúdo do <filename>~/.ssh/id_dsa.pub</filename> será
            adicionado ao fim do ficheiro 
            <filename>~/.ssh/authorized_keys</filename>. </para>
          </note>
        </listitem>
        <listitem>
          <para>Mude as permissões da sua pasta <filename>~/.ssh</filename>
          e das suas chaves com os comandos: </para>
<screen><prompt>$ </prompt><command>chmod 700 ~/.ssh</command>
<prompt>$ </prompt><command>chmod 644 ~/.ssh/authorized_keys</command></screen>
        </listitem>
      </orderedlist>
      <tip>
        <title>Sugestão</title>
        <para>Poderá fazer com que o seu sistema recorde a sua frase-senha, 
        para que não tenha de a escrever, sempre que acede ao servidor do
        <application>CVS</application>. Veja a documentação do programa
        <application>ssh-add</application>. </para>
      </tip>
    </section>
  </section>
  <section id="sn-cvs-config">
    <title>Configurar o Acesso ao CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>configurar o acesso</secondary>
    </indexterm>
    <indexterm>
      <primary>cvs</primary>
      <secondary>CVSROOT</secondary>
    </indexterm>
    <indexterm>
      <primary>cvs</primary>
      <secondary>CVS_RSH</secondary>
    </indexterm>
    <indexterm>
      <primary>CVSROOT</primary>
    </indexterm>
    <indexterm>
      <primary>CVS_RSH</primary>
    </indexterm>
    <indexterm>
      <primary>cvs</primary>
      <secondary><filename>.cvsrc</filename>
    </secondary>
    </indexterm>
    <indexterm>
      <primary><filename>.cvsrc</filename>
      </primary>
    </indexterm>
    <section id="sn-cvs-config-cvsrc">
      <title>Evitar a Escrita Repetitiva</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>evitar a escrita repetitiva</secondary>
      </indexterm>
      <para>Muitos dos comandos do <application>CVS</application> precisam
      de certas opções da linha de comandos para funcionarem de forma
      consistente. Em vez de os escrever, sempre que esse comando é usado,
      poderá gravar as opções num ficheiro que o <application>CVS</application>
      irá ler antes de executar a sua linha de comandos. </para>

      <para>Crie um ficheiro chamado <filename>~/.cvsrc</filename> na sua
      pasta pessoal. Deverá conter os seguintes comandos, estando um por
      cada linha: 
<screen><computeroutput>cvs -z3
diff -uNp
rdiff -uNp
update -dP</computeroutput></screen>
      </para>
    </section>

    <section id="sn-cvs-config-anon">
      <title>Configurar o Acesso Apenas para Leitura ao CVS</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>configurar o acesso apenas para leitura</secondary>
      </indexterm>
      <indexterm>
        <primary>cvs</primary>
        <secondary>acesso anónimo</secondary>
      </indexterm>
      <para>Se o seu objectivo é transferir os vários documentos do &FC;
      e gerá-los para o seu sistema, só precisa de acesso apenas para
      leitura ao repositório do <application>CVS</application>. Siga
      as instruções desta secção e salte directamente para o 
      <xref linkend="sn-cvs-cvscommands-co"/>. </para>

      <para>Mude as pastas para onde deseja colocar os ficheiros do 
      <application>CVS</application>, e execute os seguintes comandos:
      </para>
<screen><prompt>$ </prompt>
<command>export CVSROOT=:pserver:anonymous@cvs.fedoraproject.org:/cvs/docs</command>
<prompt>$ </prompt><command>cvs login</command>
<prompt>$ </prompt><command>cvs checkout docs-common</command> 
<replaceable>nome-módulo</replaceable>
<prompt>$ </prompt><command>cvs checkout</command>
<replaceable>nome-módulo</replaceable>
<prompt>$ </prompt><command>cd</command> <replaceable>nome-módulo</replaceable>
</screen>
      <para>Logo que tenha obtido o módulo, não interessa com que valor está
      definido o seu <envar>CVSROOT</envar>, dado que é guardado no ficheiro
      <filename>CVS/Root</filename> de cada pasta do seu repositório local.
      Desde que a sua pasta actual tenha uma pasta <filename>CVS/</filename>,
      o programa <application>CVS</application> irá localizar automaticamente
      o repositório do &FC;. </para>
    </section>

    <section id="sn-cvs-config-author">
      <title>Configurar o Acesso de Leitura/Escrita ao CVS</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>configurar o acesso de leitura/escrita</secondary>
      </indexterm>
      <indexterm>
        <primary>cvs</primary>
        <secondary>configurar o acesso para os autores</secondary>
      </indexterm>
      <para>Para criar um documento novo ou para mudar um existente, terá
      de obter o acesso completo de leitura/escrita ao repositório de
      <application>CVS</application> da Documentação do &FC;. Para saber
      os detalhes completos deste processo, veja na página Web 
      <ulink url="http://fedoraproject.org/wiki/DocsProject/NewWriters">
      <filename>http://fedoraproject.org/wiki/DocsProject/NewWriters</filename>
      </ulink>. Em baixo, encontra-se um resumo: </para>

      <itemizedlist>
        <listitem>
          <para>Subscreva-se na lista de correio 
          <ulink url="https://listman.redhat.com/mailman/listinfo/fedora-docs-list"><filename>fedora-docs-list</filename> </ulink>,
          que é o fórum principal do projecto. </para>
        </listitem>
        <listitem>
          <para
>Crie uma chave de GNU Privacy Guard (<abbrev
>GPG</abbrev
>) para o identificar no projecto. </para>
        </listitem>
        <listitem>
          <para>Registe uma conta do <ulink url="http://bugzilla.redhat.com/">
          <filename>Bugzilla</filename> </ulink>, se não tiver já criado
          alguma. O <filename>Bugzilla</filename> é o método de registar
          os erros, alterações e projectos. </para>
        </listitem>
        <listitem>
          <para>Publique uma 
          <ulink url="http://fedoraproject.org/wiki/DocsProject_2fSelfIntroduction">auto-apresentação</ulink> na lista. </para>
        </listitem>
      </itemizedlist>

      <para>Depois da sua 
      <ulink url="http://fedoraproject.org/wiki/DocsProject_2fSelfIntroduction">auto-apresentação</ulink> ter sido aprovada, o acesso de
      <application>CVS</application> será cedido.
      </para>

      <para>Todos os autores, e isso inclui-o a si após a recepção da
      sua auto-apresentação, terão um <envar>$CVSROOT</envar> único
      para aceder ao repositório do <application>CVS</application>: </para>
<screen><prompt>$ </prompt><command>export CVSROOT=:ext:</command>
<replaceable>o-seu-utilizador</replaceable>
<command>@cvs.fedoraproject.org:/cvs/docs</command><prompt>$ </prompt>
<command>export CVS_RSH=/usr/bin/ssh</command></screen>
      <para>Com as variáveis de ambiente <envar>$CVSROOT</envar> e 
      <envar>$CVS_RSH</envar> correctas, poderá aceder ao repositório: </para>
<screen><prompt>$ </prompt>
<command>cvs co -c</command></screen>
      <para>Será então pedida a frase-senha da sua chave 
      <application>SSH</application>. Carregue em <guibutton>ENTER</guibutton>
      para receber uma lista dos módulos já existentes no repositório. </para>
    </section>
  </section>
  <section id="sn-cvs-cvscommands">
    <title>Comandos Básicos do CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>comandos</secondary>
    </indexterm>
    <para>Depois de configurar o seu sistema para funcionar com o CVS, faça 
    uma extracção dos módulos com que irá trabalhar. </para>
    <tip>
      <title>Sugestão</title>
      <para>Para ver se precisa de uma variável <envar>$CVSROOT</envar>
      definida de forma correcta ou da opção da linha de comandos 
      <option>-m </option> <replaceable>repositório</replaceable>, veja
      se tem uma sub-pasta <filename>CVS/</filename> na sua pasta local
      de trabalho. </para>
      <para>Se tiver uma pasta <filename>CVS/</filename>, o 
      <application>CVS</application> irá ignorar o <envar>$CVSROOT</envar>
      ou a opção da linha de comandos. </para>
    </tip>
    <section id="sn-cvs-cvscommands-co">
      <title>Obter os Módulos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>obter os módulos</secondary>
      </indexterm>
      <para>Só precisa de extrair por completo o módulo uma vez. Depois de
      ter uma cópia local do módulo no seu sistema, fica de facto por
      completo no seu sistema. </para>

      <para>Para extrair um módulo, use o seguinte comando: </para>
<screen><prompt>$ </prompt><command>cvs co</command>  
<replaceable>&lt;nome-módulo&gt;</replaceable></screen>
      <para>Por exemplo, para extrair o módulo 
<computeroutput>example-tutorial</computeroutput>, vá para a sua pasta
de trabalho e execute o seguinte comando: </para>
<screen><prompt>$ </prompt><command>cvs co example-tutorial</command></screen>
      <para>Será criada uma pasta <filename>example-tutorial/</filename> na 
      sua pasta actual. </para>

      <para>Se não for indicado um nome de ramificação ('branch') ao extrair 
      um módulo, assume-se como sendo o <firstterm>HEAD</firstterm> do módulo
      do <application>CVS</application>. </para>

      <section id="sn-cvs-cvscommands-co-branch">
        <title>Extrair Ramificações dos Módulos</title>
        <indexterm>
          <primary>cvs</primary>
          <secondary>extrair os módulos</secondary>
          <tertiary>extrair as ramificações</tertiary>
        </indexterm>
        <para>Pense numa ramificação do <application>CVS</application> como
        sendo uma versão dos ficheiros para uma dada versão em particular de
        um manual ou pacote. </para>

        <para>Para extrair uma ramificação de um módulo, use o seguinte 
        comando: </para>
<screen><prompt>$ </prompt><command>cvs co</command> <option>-d</option>
<replaceable>&lt;pasta&gt;</replaceable> <option>-r</option>  
<replaceable>&lt;nome-ramificação&gt;</replaceable> 
<replaceable>&lt;nome-módulo&gt;</replaceable></screen>
        <para>Será criada uma pasta <replaceable>&lt;pasta&gt;</replaceable>
        e os ficheiros da ramificação 
        <replaceable>&lt;nome-ramificação&gt;</replaceable> do módulo 
        <replaceable>&lt;nome-módulo&gt;</replaceable> são copiados 
        para a pasta. </para>

        <para>Por exemplo, para extrair uma ramificação chamada 
        RAMIFICACAO-VERSAO-1.2 do módulo 
        <computeroutput>meu_modulo</computeroutput>, use o comando: </para>
<screen><prompt>$ </prompt>
<command>cvs co -d meu_modulo-1.2 -r RAMIFICACAO-VERSAO-1.2 meu_modulo</command></screen>
        <para>A ramificação RAMIFICACAO-VERSAO-1.2 do módulo é extraída
        para a pasta <filename>meu_modulo-1.2</filename> no seu sistema. 
        </para>

        <para>Para determinar que ramificações e marcas existem para um
        dado ficheiro, use o comando: </para>
<screen><prompt>$ </prompt><command>cvs status</command> <option>-v</option>
<replaceable>&lt;ficheiro&gt;</replaceable></screen>
        <para>Por exemplo, o estado do ficheiro <filename>xpto.sgml</filename>
        é o seguinte: </para>
<screen><computeroutput>
===================================================================
File: xpto.sgml    Status: Up-to-date

   Working revision:    1.47
   Repository revision: 1.47    /cvs/docs/custom-guide/rhl-cg-pt.sgml,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

   Existing Tags:
        RAMIFICACAO-VERSAO-1.2              (branch: 1.25.2)
</computeroutput>
</screen>
        <para>Só as marcas que estejam registadas como ramificações na 
        segunda coluna, sob a secção 
        <computeroutput>Existing Tags</computeroutput> (Marcas Existentes)
        é que poderão ser extraídas como ramificações. </para>
      </section>
    </section>

    <section id="sn-cvs-cvscommands-up">
      <title>Actualizar os Ficheiros</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>actualizar os ficheiros</secondary>
      </indexterm>
      <para>Para obter as últimas versões dos ficheiros de um módulo,
      mude para a pasta que contém os ficheiros do módulo e execute
      o comando: </para>
<screen><command>cvs update</command></screen>
      <para>As últimas versões de todos os ficheiros do módulo serão
      transferidas para a sua cópia local. Se reparar em algum conflito
      de ficheiros, consulte depois o 
      <xref linkend="sn-cvs-cvscommands-conflicts"/>. </para>
    </section>

    <section id="sn-cvs-cvscommands-commit">
      <title>Enviar os Ficheiros</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>enviar os ficheiros</secondary>
      </indexterm>
      <para>Depois de modificar os ficheiros na sua versão local de
      um módulo, envie-os para gravar as alterações no servidor de
      <application>CVS</application>: </para>
<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option>
&quot;<replaceable>uma mensagem de registo</replaceable>&quot; 
<replaceable>ficheiro</replaceable></screen>
      <note>
        <para>Se preferir escrever a sua mensagem de registo com o seu editor
        de texto favorito, como está definido pelas variáveis de ambiente 
        $VISUAL ou $EDITOR, basta omitir o 
        <userinput>-m &quot;uma mensagem de registo&quot;</userinput>.
        O documento já irá conter comentários a descrever a alteração;
        não precisa de os remover, à medida que introduz o seu próprio
        texto. </para>
      </note>

      <para>A mensagem de registo deverá ser tão descritiva quanto possível,
      para que você e outra pessoa qualquer que esteja a trabalhar no projecto
      saiba o que mudou. Se usar uma mensagem de registo do tipo 
      <userinput>alterei alguns ficheiros</userinput>, não está a descrever
      correctamente o que foi alterado e podê-lo-á não ajudar no futuro.
      Se estiver a corrigir um erro, use a referência do 
      <application>Bugzilla</application>. </para>

      <para>O <replaceable>&lt;ficheiro&gt;</replaceable> poderá ser um nome
      de ficheiro, um conjunto de nomes de ficheiros separados por espaços ou
      um grupo de nomes de ficheiros indicados com caracteres especiais 
      (*, ?), como por exemplo <filename>*.png</filename> ou 
      <filename>xpto-*.sgml</filename>. </para>

      <para>Se não for indicado nenhum nome ou grupo de ficheiros no comando
      <command>commit</command>, todas as alterações pendentes de qualquer 
      tipo serão enviadas para o servidor. O comando é recursivo e irá incluir
      as alterações de quaisquer sub-pastas do módulo. Tenha cuidado ao usar
      o comando <command>commit</command> sem quaisquer nomes de ficheiros, 
      porque poderá não recordar exactamente os ficheiros que mudaram. </para>

      <para>Se reparar num conflito de ficheiros, consulte por favor a 
      secção <xref linkend="sn-cvs-cvscommands-conflicts"/>. </para>
    </section>

    <section id="sn-cvs-cvscommands-add">
      <title>Adicionar Ficheiros</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>adicionar ficheiros</secondary>
      </indexterm>
      <para>Para adicionar um ficheiro a um módulo, crie o ficheiro na sua 
      cópia local e execute então o seguinte comando: </para>
<screen><prompt>$ </prompt><command>cvs add</command>
<replaceable>ficheiro-a-adicionar</replaceable
></screen>
      <para>Depois de adicionar o ficheiro, deverá confirmar (fazer 
      <command>commit</command>) da operação <command>add</command> para
      o copiar para o servidor: </para>
<screen><prompt>$ </prompt><command>cvs commit</command>
<option>-m</option> &quot;<replaceable>uma mensagem de registo</replaceable>
&quot; <replaceable>ficheiro-a-adicionar</replaceable></screen>
    </section>

    <section id="sn-cvs-cvscommands-admin">
      <title>Gerir os Ficheiros Binários</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>ficheiros binários</secondary>
      </indexterm>
      <para>Os ficheiros que são armazenados com maior frequência são os 
      ficheiros de texto, mas às vezes também poderão ser armazenados
      ficheiros binários. O programa <application>cvs</application>
      reconhece a maioria das extensões de ficheiros, como  a 
      <filename>.png</filename> ou a <filename>.jpg</filename>,
      por isso o <application>cvs</application> normalmente 
      &quot;faz a coisa correcta&quot;. </para>

      <para>Quando for extraída uma cópia do repositório, o
      <application>cvs</application> verifica algumas palavras-chave
      especiais, do tipo &quot;<computeroutput>$id:$</computeroutput>&quot;
      e faz a substituição do texto por um valor gerado, como o número de
      versão do ficheiro. </para>

      <para>A substituição desta palavra-chave normalmente corrompe os 
      ficheiros binários, por isso tem de ser desligada se o 
      <application>cvs</application> não reconhecer o seu ficheiro
      como binário. Para marcar o seu ficheiro como binário e, deste
      modo, desligar a expansão de palavras-chave, use o comando: </para>
<screen width="60"><prompt>$ </prompt><command>cvs</command> 
<option>admin</option> <option>-kk</option> <replaceable>ficheiro</replaceable>
</screen>
      <para>Lembre-se que o ficheiro já deverá estar extraído do
      repositório de <abbrev>CVS</abbrev>, antes de o comando
      <option>admin</option> poder ser usado. Isto está OK, 
      dado que a expansão é feita quando o ficheiro é obtido
      e copiado para a pasta local, não quando é enviado para
      o repositório. </para>
      <tip>
        <title>Recuperar um ficheiro binário</title>
        <para>Se extrair um ficheiro binário para o repositório e descobrir
        então que este está corrompido, não entre em pânico. Basta usar o
        comando <option>admin</option> descrito acima, remover a sua cópia
        local e transferi-la de novo. </para>
      </tip>
    </section>

    <section id="sn-cvs-cvscommands-rm">
      <title>Remover os Ficheiros</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>remover os ficheiros</secondary>
      </indexterm>
      <para>Se um dado ficheiro não for mais necessário no módulo, use
      o comando <command>remove</command> para o remover da sua cópia
      local e então confirme (faça um <command>commit</command>) da 
      remoção no servidor. Ainda que o ficheiro seja removido da versão
      actual do módulo, é mantida uma cópia em arquivo no servidor, que
      poderá ser obtida em qualquer altura com o comando 
      <command>add</command>. </para>
<screen><prompt>$ </prompt><command>cvs rm -f</command>  
<replaceable>ficheiro-a-remover</replaceable></screen>
      <para>Depois de remover, terá de confirmar a remoção: </para>
<screen><prompt>$ </prompt><command>cvs commit</command> 
<option>-m</option>&quot;<replaceable>uma mensagem de registo</replaceable>
&quot; <replaceable>ficheiro-a-remover</replaceable></screen>
      <para>Não poderá usar caracteres especiais (*, ?) no comando 
      <command>commit</command>, para identificar os ficheiros 
      removidos. Estes deverão ser indicados com um nome de ficheiro
      exacto. </para>

      <para>Se precisar de mudar o nome de um ficheiro, é melhor mudar
      o nome do ficheiro no servidor de <application>CVS</application>, 
      para que o histórico do ficheiro se mantenha. Se precisar de mudar
      o nome de um ficheiro, envie um e-mail para o 
      <ulink url="mailto:cvsdocs-administrator@fedoraproject.org">
      <filename>cvsdocs-administrator@fedoraproject.org</filename>
      </ulink> a pedir a mudança do nome do ficheiro. </para>
    </section>

    <section id="sn-cvs-cvscommands-status">
      <title>Estado dos Ficheiros</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>estado dos ficheiros</secondary>
      </indexterm>
      <para>Algumas vezes é necessário ver o <firstterm>estado</firstterm>
      de um ficheiro num módulo do <application>CVS</application>. Para ver
      o estado de um ficheiro, use o comando: </para>
<screen><prompt>$ </prompt><command>cvs status</command>  
<replaceable>ficheiro</replaceable></screen>
      <para>O relatório do estado de um ficheiro do repositório é o 
      seguinte: </para>

      <variablelist>
        <varlistentry>
          <term><computeroutput>Actualizado ('Up-to-date')</computeroutput></term>
          <listitem>
            <para>A sua versão do ficheiro é idêntica à última versão no 
            servidor do <application>CVS</application>. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Modificado Localmente ('Locally Modified')</computeroutput></term>
          <listitem>
            <para>Você actualizou-se para a última versão do servidor, 
            mas depois modificou o ficheiro no seu sistema. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Adicionado Localmente ('Locally Added')</computeroutput></term>
          <listitem>
            <para>Você adicionou o ficheiro com o comando 
            <command>cvs add</command>, mas ainda não confirmou
            a adição do ficheiro. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Removido Localmente ('Locally Removed')</computeroutput
></term>
          <listitem>
            <para>Você removeu o ficheiro com o comando 
            <command>cvs remove</command> mas ainda não 
            confirmou a remoção. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Necessita de Extracção 
          ('Needs Checkout')</computeroutput></term>
          <listitem>
            <para>Existe uma versão mais recente do ficheiro no servidor
            e é necessário obtê-la de novo. Ainda que o estado inclua
            a palavra 'checkout', significa de facto que é necessário
            actualizar os seus ficheiros com o comando 
            <command>cvs update</command>. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Necessita de Actualização 
          ('Needs Patch')</computeroutput></term>
          <listitem>
            <para>A versão na sua extracção local necessita de uma
            actualização com a última versão do servidor. Execute
            o comando <command>cvs update</command> para a resolver. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Necessita de Junção ('Needs Merge')</computeroutput></term>
          <listitem>
            <para>Existe uma versão mais recente no servidor e a sua versão 
            local contém modificações ainda não enviadas. Este estado ocorre
            normalmente se não tiver a última versão do ficheiro e a quiser
            editar à mesma. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>O ficheiro tinha conflitos na junção</computeroutput></term>
          <listitem>
            <para>É semelhante ao <computeroutput>Needs Merge</computeroutput>,
            excepto quando tentou enviar o comando <command>cvs 
            update</command>, as diferenças não conseguiram ser resolvidas
            automaticamente. Veja em 
            <xref linkend="sn-cvs-cvscommands-conflicts"/> para mais 
            informações sobre a resolução de conflitos. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Desconhecido ('Unknown')</computeroutput></term>
          <listitem>
            <para>O servidor do <application>CVS</application> não sabe nada
            acerca deste ficheiro. Nunca foi adicionado nem removido localmente
            e nunca foi enviado para o servidor. Este estado ocorre normalmente
            nos ficheiros que não deverá mandar para o 
            <application>CVS</application>, como o 
            <filename>indice-gerado.sgml</filename> ou nos ficheiros que
            deseja adicionar ao repositório, mas que ainda não foram 
            adicionados com o comando <command>cvs add</command>. </para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="sn-cvs-cvscommands-conflicts">
      <title
>Resolver os Conflitos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>resolver os conflitos</secondary>
      </indexterm>
      <para>Se modificar um ficheiro e a mesma região for modificada por
      alguém e foi enviada em primeiro lugar, poderá ver uma mensagem 
      semelhante à seguinte ao enviar o ficheiro ou ao actualizar a sua cópia
      local do módulo: </para>
<screen><computeroutput>
RCS file: /cvs/docs/nome-modulo/ficheiro.sgml,v
retrieving revision 1.12
retrieving revision 1.13
Merging differences between 1.12 and 1.13 into ficheiro.sgml
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in ficheiro.sgml
C ficheiro.sgml
</computeroutput>
</screen>
      <para>Para resolver o conflito, abra o ficheiro, procure pelas 
      sequências <computeroutput>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</computeroutput>
      e determine qual a versão do conteúdo que está correcta. Por exemplo: 
      </para>
<screen><computeroutput>
&lt;para&gt;
Uma frase
&lt;&lt;&lt;&lt;&lt;&lt;&lt; ficheiro.sgml
Uma frase que foi modificada na cópia local.
=======
Uma frase parecida que foi mudada de forma diferente e enviada.
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.13
&lt;/para&gt;
</computeroutput>
</screen>
      <para>O conteúdo entre o <computeroutput>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</computeroutput>e o <computeroutput>=======</computeroutput> é o conteúdo da
      sua cópia local. O conteúdo entre o 
      <computeroutput>=======</computeroutput> e o 
      <computeroutput>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</computeroutput>
      é o conteúdo proveniente do servidor. </para>

      <para>Resolva o conflito, editando a sua cópia, e envie
      o ficheiro.</para>
    </section>

    <section id="sn-cvs-cvscommands-summary">
      <title>Resumo</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>comandos</secondary>
        <tertiary>resumo de</tertiary>
      </indexterm>
      <para>Todos os comandos assumem que você está na pasta correcta 
      do módulo do <application>CVS</application>. </para>
      <table frame="all" id="tb-cvs-basic-commands">
        <title>Comandos Básicos do CVS</title>
        <tgroup cols="2">
          <colspec colnum="1" colname="shortcut" colwidth="30"/>
          <colspec colnum="2" colname="description" colwidth="60"/>
          <thead>
            <row>
              <entry>Comando</entry>
              <entry>Descrição</entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry>
               <command>cvs checkout <replaceable>&lt;nome-módulo&gt;</replaceable></command> ou <command>cvs co <replaceable>&lt;nome-módulo&gt;</replaceable></command> </entry>
              <entry>Cria uma pasta chamada 
              <replaceable>&lt;nome-módulo&gt;</replaceable> com o conteúdo do
              módulo na pasta</entry>
            </row>
            <row>
              <entry><command>cvs co -d <replaceable>&lt;pasta&gt;</replaceable> 
              -r <replaceable>&lt;ramificação&gt;</replaceable>
              <replaceable>&lt;nome-módulo&gt;</replaceable></command>
              </entry>
              <entry>Cria a pasta <replaceable>&lt;pasta&gt;</replaceable> com
              o conteúdo da ramificação 
              <replaceable>&lt;ramificação&gt;</replaceable> do módulo
              <replaceable>&lt;nome-módulo&gt;</replaceable></entry>
            </row>
            <row>
              <entry><command>cvs update</command> ou <command>cvs up</command>               </entry>
              <entry>Actualiza os seus ficheiros com as últimas versões do 
              servidor de CVS</entry>
            </row>
            <row>
              <entry><command>cvs add <replaceable>&lt;ficheiro&gt;
              </replaceable></command>
              </entry>
              <entry>Adiciona um ficheiro "ficheiro" novo ao servidor
              do CVS</entry>
            </row>
            <row>
              <entry><command>cvs commit -m "A minha mensagem" 
              <replaceable>&lt;ficheiro&gt;</replaceable></command>
              </entry>
              <entry>Actualiza o ficheiro 
              <replaceable>&lt;ficheiro&gt;</replaceable> com a última
              cópia do seu computador</entry>
            </row>
            <row>
              <entry><command>cvs log 
              <replaceable>&lt;ficheiro&gt;</replaceable></command>
              </entry>
              <entry>Vê as mensagens de registo do envio do ficheiro
              <replaceable>&lt;ficheiro&gt;</replaceable> </entry>
            </row>
            <row>
              <entry><command>cvs status 
              <replaceable>&lt;ficheiro&gt;</replaceable></command>
              </entry>
              <entry>Vê o estado do ficheiro, como algo do tipo
              <computeroutput>Locally Modified</computeroutput> 
              (Modificado Localmente) </entry>
            </row>
            <row>
              <entry><command>cvs status -v 
              <replaceable>&lt;ficheiro&gt;</replaceable></command>
              </entry>
              <entry>Vê as marcas e ramificações existentes do ficheiro</entry>
            </row>
            <row>
              <entry><command>cvs diff 
              <replaceable>&lt;ficheiro&gt;</replaceable></command>
              </entry>
              <entry>Mostra as diferenças entre a cópia local do ficheiro
              e a última versão do ficheiro na ramificação</entry>
            </row>
            <row>
              <entry><command>cvs diff -r1.1 -r1.2 
              <replaceable>&lt;ficheiro&gt;</replaceable></command>
              </entry>
              <entry>Mostra as diferenças entre a versão 1.1 e a 1.2
              do ficheiro</entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>Para mais informações, veja o manual do CVS disponível no seu
      sistema em <filename>/usr/share/doc/cvs-<replaceable>&lt;número-versão&gt;</replaceable>/cvs.ps</filename> (a versão do CVS poderá variar) e vá à página
Web do CVS, que está disponível em 
<ulink url="http://www.cvshome.org/">http://www.cvshome.org/</ulink>. </para>
      <tip>
        <title>Sugestão</title>
        <para>Dado que o <application>CVS</application> está a usar o
        <application>ssh</application> para se ligar ao servidor do
        <application>CVS</application>, ser-lhe-á pedida a sua senha
        antes de efectuar o seu pedido de <application>CVS</application>. 
        Se quiser configurar a sua máquina para que não tenha de introduzir
        uma senha, veja no 
        <ulink url="http://redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-openssh-client-config.html">
<citetitle>Guia de Personalização do &RH; Linux 9</citetitle> </ulink>
para mais detalhes sobre a utilização do <command>ssh-agent</command>. </para>
      </tip>
    </section>
  </section>
</chapter>