summaryrefslogtreecommitdiffstats
path: root/common/cvs-pt_BR.xml
blob: 96c9a9f3da804ae6a56cb10548dcfbd8a8ad530f (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
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
<!-- $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>)
    fornece uma plataforma onde últiplos usuários podem editar os mesmos
    arquivos. Imagine que se um grupo de usuários editam arquivos em um único
    diretório, o caos pode reinar. Entretanto, usando o
    <application>CVS</application>, um grupo de pessoas pode trabalhar de forma
    segura no mesmo conjunto de arquivos. O <application>CVS</application>
    mantém uma cópia mestre dos arquivos, e grava em um repositório central quem
    modificou que arquivo e quando. Se conflitos surgem, o
    <application>CVS</application> lhe diz. O <application>CVS</application> é
    geralmente usado por programadores que compartilham códigos, mas também
    funciona bem para documentação.
  </para>
  <indexterm>
    <primary>cvs</primary>
  </indexterm>
  <section id="sn-cvs-overview">
    <title>Como o CVS Trabalha</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>como ele trabalha</secondary>
    </indexterm>
    <indexterm>
      <primary>cvs</primary>
      <secondary>visão geral</secondary>
    </indexterm>
    <para>
      Em muitos casos, cada conjunto de arquivos que formam um pacote ou projeto
      é armazenado como um <firstterm>módulo</firstterm> no servidor CVS.
    </para>

    <para>
      Quando trabalhando com arquivos no <application>CVS</application>, você
      pode extrair (<firstterm>checkout</firstterm>) uma cópia do módulo para o
      seu sistema de arquivos local. Depois de modificar um ou mais arquivos,
      você pode enviá-los (<firstterm>commit</firstterm>) de volta para o
      repositório central do servidor <application>CVS</application>.
    </para>

    <para>
      Com o <application>CVS</application> você pode editar um arquivo sem
      primeiro pegar permissão ou bloqueando o arquivo. A parte concorrente
      (<wordasword>concurrent</wordasword>) do arquivo no
      <application>CVS</application> tem a habilidade de permitir muitas pessoas
      diferentes a editar diferentes partes do arquivo. Contanto que nenhuma das
      mudanças gerem conflito entre si, o <application>CVS</application> pode
      corretamente gravar as mudanças. Em caso de mudanças duplicadas, elas são
      marcadas nos arquivos e os autores podem resolver o problema entre eles.
    </para>

    <para>
      Quando você aplica as mudanças, apenas mudanças em arquivos que o servidor
      conhece são aplicadas. Em outras palavras, quando você cria um arquivo em
      sua cópia local do módulo, o novo arquivo não é automaticamente atualizado
      no servidor. Você precisa adicionar (<firstterm>add</firstterm>) o arquivo
      ao repositório para depois aplicá-lo enviando (commit). Se você remover o
      arquivo da sua cópia local do módulo, você precisa especificar que você
      deseja removê-lo do diretório no servidor CVS e depois aplicar a remoção
      do arquivo.
    </para>

    <para>
      Os comandos especificos para executar estas ações são descritos em
      <xref linkend="sn-cvs-cvscommands"></xref>.
    </para>

    <para>
      Se alguém modificou o arquivo entre a última vez que você pegou o arquivo
      do CVS e quando você tentou aplicar as mudanças, o
      <application>CVS</application> tentará mesclar as mudanças na cópia mestre
      do servidor <application>CVS</application>. Se o conteúdo que você
      modificou está em uma localização diferente no arquivo do que as mudanças
      que outra pessoa modificou, as chances são de que a ação de aplicar terá
      sucesso sem nenhum <firstterm>conflict</firstterm>. Se alguém modificou o
      mesmo conteúdo que você e tentar aplicar, você verá uma mensagem de que um
      conflito no arquivo ocorreu. Por isso, você precisa atualizar
      (<firstterm>update</firstterm>) seus arquivos freqüentemente. É uma boa
      prática atualizá-los logo antes de começar a modificar um arquivo. Veja na 
      <xref linkend="sn-cvs-cvscommands-conflicts"></xref> para instruções em
      como resolver conflitos.
    </para>
  </section>
  <section id="sn-cvs-preparation">
    <title>Preparando-se Para Usar o CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>preparando-se para usar</secondary>
    </indexterm>
    <para>
      Antes de usar o <application>CVS</application>, você precisa estabelecer
      uma conta no servidor <application>CVS</application>. Depois de conseguir
      uma conta, você não precisa fazer estes passos novamente.
    </para>

    <section id="sn-cvs-rpm-check">
      <title>O CVS Está Instalado em Seu Sistema?</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>instalação por RPM</secondary>
      </indexterm>
      <para>
        Você deve ter o pacote <abbrev>RPM</abbrev> do
	<application>CVS</application> instalado. Verifique a sua presença
	digitando o comando:
      </para>
<screen><prompt>$ </prompt><command>rpm -q cvs</command></screen>
      <para>
        Se você ver uma saída parecida com
	<computeroutput>cvs-1.11.19-1</computeroutput>, então o pacote está
	instalado. Uma mensagem parecida com <computeroutput>package cvs is not
	installed</computeroutput> quer dizer que você precisa instalar o pacote
	<application>cvs</application> antes de continuar. Se você não sabe como
	fazer isso, consulte o seu administrador de sistemas que possa
	instalá-lo para você.
      </para>
    </section>

    <section id="sn-cvs-generate-keys">
      <title>Gerando as Chaves SSH</title>
      <indexterm>
        <primary>OpenSSH</primary>
        <secondary>chaves de autorização</secondary>
      </indexterm>
      <para>
        O servidor <application>CVS</application> usa chaves do Protocolo 2 do
	<application>SSH</application> para autenticar usuários. Por isso você
	precisará gerar um par de chaves antes de conseguir uma conta no
	<application>CVS</application>. Se você já tem uma chave
	<abbrev>DSA</abbrev> do <application>SSH</application>, pode pular este
	passo.
      </para>
      <tip>
        <title>Dica</title>
        <para>
	  Você já tem uma chave <abbrev>DSA</abbrev> caso você tenha o arquivo
	  <filename>~/.ssh/id_dsa.pub</filename> em seu sistema.
        </para>
        <para>
	  Se sua chave <abbrev>DSA</abbrev> existente não precisa de uma
	  frase-senha (<wordasword>passphrase</wordasword>), é altamente
	  recomendado que você gere outra que precisa de uma frase-senha.
        </para>
      </tip>
      <para>
        Use os seguintes passos para gerar uma chave <abbrev>DSA</abbrev> usada
	pelo Protocolo 2 do <application>SSH</application>. Ela é necessária
	para uma conta <application>CVS</application> no servidor
	<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 trabalhe com a
	    versão 2.0 do protoclo, digite na linha de comando:
          </para>
<screen><prompt>$ </prompt><command>ssh-keygen -t dsa</command></screen>
          <para>
	    Aceite a localização de arquivo padrão no
	    <filename>~/.ssh/id_dsa</filename>. É altamente recomendado que você
	    defina e use uma frase-senha (<firstterm>passphrase</firstterm>)
	    para melhorar a segurança da sua chave. Entre com uma frase-senha
	    diferente da sua senha de conta e confirme digitando-a novamente.
          </para>
        </listitem>
        <listitem>
          <para>
	    Copie a sua nova chave para o arquivo correto digitando o seguinte
	    na linha de comando.
          </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 pressionar a tecla
	      <guibutton>ENTER</guibutton>. Se o arquivo
	      <filename>~/.ssh/authorized_keys</filename> já existir, o conteúdo
	      do <filename>~/.ssh/id_dsa.pub</filename> irá ser adicionado ao
	      fim do arquivo <filename>~/.ssh/authorized_keys</filename>.
            </para>
          </note>
        </listitem>
        <listitem>
          <para>
	    Mude as permissões do seu diretório <filename>~/.ssh</filename> e de
	    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>Dica</title>
        <para>
	  Você pode fazer com que o seu sistema lembre-se de sua frase-senha
	  para que você não tenha que digitar toda vez que acessar o servidor
	  <application>CVS</application>. Veja a documentação do programa
	  <application>ssh-add</application>.
        </para>
      </tip>
    </section>
  </section>
  <section id="sn-cvs-config">
    <title>Configurando Para Um Acesso CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>configurando para 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>Evitando Digitações Repetitivas</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>evitando digitações repetitivas</secondary>
      </indexterm>
      <para>
        Muitos comandos <application>CVS</application> precisam de certos
	parâmetros de linha de comando para operar consistentemente. Ao invés de
	digitá-los toda vez que o comando é usado, você pode salvar estes
	parâmetros em um arquivo que o <application>CVS</application> irá ler
	antes de executar a sua linha de comando.
      </para>

      <para>
        Crie um arquivo chamado <filename>~/.cvsrc</filename> no seu diretório
	home. Ele deve conter os seguintes comandos, um por linha:
<screen><computeroutput>cvs -z3
diff -uNp
rdiff -uNp
update -dP</computeroutput></screen>
      </para>
    </section>

    <section id="sn-cvs-config-anon">
      <title>Configurando para Acesso CVS Somente-Leitura</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>configurando acesso somente-leitura</secondary>
      </indexterm>
      <indexterm>
        <primary>cvs</primary>
        <secondary>acesso anônimo</secondary>
      </indexterm>
      <para>
        Se o seu objetivo é efetuar download das várias documentações do &FC; e
	renderizar em seu sistema, você precisará apenas de acesso
	somente-leitura no repositório <application>CVS</application>. Siga as
	instruções desta seção e então pule diretamente para a <xref
	linkend="sn-cvs-cvscommands-co"/>.
      </para>

      <para>
        Mude o diretório para onde você quer que seus arquivos do
	<application>CVS</application> estejam localizados, e então 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>module-name</replaceable>
<prompt>$ </prompt><command>cvs checkout</command> <replaceable>module-name</replaceable>
<prompt>$ </prompt><command>cd</command> <replaceable>module-name</replaceable></screen>
      <para>
        Uma vez que você tenha obtido o módulo, não importa o que estiver em sua
	variável <envar>CVSROOT</envar> porque o dado é armazenado no arquivo
	<filename>CVS/Root</filename> em cada diretório do seu repositório
	local. Enquanto o seu diretório de trabalho atual tiver um diretório
	<filename>CVS/</filename>, o programa <application>CVS</application> irá
	localizar automaticamente o repositório &FC;.
      </para>
    </section>

    <section id="sn-cvs-config-author">
      <title>Configurando Acesso CVS Leitura/Escrita</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>configurando acesso leitura/escrita</secondary>
      </indexterm>
      <indexterm>
        <primary>cvs</primary>
        <secondary>configurando acesso para autores</secondary>
      </indexterm>
      <para>
        Para criar um novo documento ou modificar um já existente, você precisa
	obter acesso leitura/escrita completo ao repositório CVS de
	Documentação &FC;. Para detalhes completos sobre este processo, veja no
	site <ulink
	url="http://fedoraproject.org/wiki/DocsProject/NewWriters"><filename>http://fedoraproject.org/wiki/DocsProject/NewWriters</filename>.
	Abaixo está um pequeno resumo:
      </para>

      <itemizedlist>
        <listitem>
          <para>
	    Inscreva-se na <ulink
	    url="https://listman.redhat.com/mailman/listinfo/fedora-docs-list"><filename>fedora-docs-list</filename>
	    </ulink>, que é a lista principal do projeto.
          </para>
        </listitem>
        <listitem>
          <para>
	    Gere uma chave GNU Privacy Guard (<abbrev>GPG</abbrev>) para você se
	    identificar no projeto.
          </para>
        </listitem>
        <listitem>
          <para>
	    Registre uma conta no <ulink
	    url="http://bugzilla.redhat.com/"><filename>Bugzilla</filename>
	    </ulink>, se você já não tem uma. O <filename>Bugzilla</filename> é
	    o método que usamos para acompanhar bugs, mudanças e projetos.
          </para>
        </listitem>
        <listitem>
          <para>
	    Envie uma <ulink
	    url="http://fedoraproject.org/wiki/DocsProject_2fSelfIntroduction">apresentação
	    de si</ulink> na lista.
          </para>
        </listitem>
      </itemizedlist>

      <para>
        Depois que sua <ulink
	url="http://fedoraproject.org/wiki/DocsProject_2fSelfIntroduction">apresentação
	de si</ulink> for aprovada, seu acesso <application>CVS</application>
	será garantido.
      </para>

      <para>
        Todo autor, e isso inclui você depois da sua apresentação, recebe uma
	variável <envar>$CVSROOT</envar> única para acessar o repositório
	<application>CVS</application>:
      </para>
<screen><prompt>$ </prompt><command>export CVSROOT=:ext:</command><replaceable>seunome</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>
        funcionando, você pode acessar o repositório:
      </para>
<screen><prompt>$ </prompt><command>cvs co -c</command></screen>
      <para>
        Você terá que digitar sua frase-senha para a sua chave
        <application>SSH</application>. Pressione
        <guibutton>ENTER</guibutton>
	e você deverá receber uma lista de módulos que já estão no repositório.
      </para>
    </section>
  </section>
  <section id="sn-cvs-cvscommands">
    <title>Comandos Básicos de CVS</title>
    <indexterm>
      <primary>cvs</primary>
      <secondary>comandos</secondary>
    </indexterm>
    <para>
      Depois de configurar seu sistema para trabalhar com CVS, extraia os
      módulos que você irá trabalhar.
    </para>
    <tip>
      <title>Dica</title>
      <para>
        Para ver se você precisa de uma variável 
	<envar>$CVSROOT</envar>
	configurada corretamente,  ou um parâmetro
	<option>-m </option>
        <replaceable>repositório</replaceable>, veja se você tem um subdiretório
	chamado <filename>CVS/</filename> no diretório atual.
      </para>
      <para>
        Se você tem um diretório <filename>CVS/</filename>, o
	<application>CVS</application> ignora totalmente a variável
	<envar>$CVSROOT</envar> ou o parâmetro <option>-m</option>.
      </para>
    </tip>
    <section id="sn-cvs-cvscommands-co">
      <title>Extraindo Módulos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>extraindo módulos</secondary>
      </indexterm>
      <para>
        Você só precisar extrair um módulo uma vez. Depois que uma cópia local
	do módulo estiver em seu sistema, ela estará em seu sistema.
      </para>

      <para>
        Para extrair um módulo, use o seguinte comando:
      </para>
<screen><prompt>$ </prompt><command>cvs co</command> <replaceable>&lt;nome-do-modulo&gt;</replaceable></screen>
      <para>
       
        Por exemplo, para extrair o módulo
	<computeroutput>example-tutorial</computeroutput>, mude o seu atual
	diretório, e execute o seguinte comando:
      </para>
<screen><prompt>$ </prompt><command>cvs co example-tutorial</command></screen>
      <para>
        Um diretório chamado <filename>example-tutorial/</filename> é criado
	dentro do diretório atual.
      </para>

      <para>
        Se um nome de árvore não é especificado ao extrair um módulo, ele é
	referenciado com a árvore <firstterm>HEAD</firstterm> do módulo
	<application>CVS</application>.
      </para>

      <section id="sn-cvs-cvscommands-co-branch">
        <title>Extraindo Árvores de Módulos</title>
        <indexterm>
          <primary>cvs</primary>
          <secondary>extrair módulos</secondary>
          <tertiary>extraindo árvores</tertiary>
        </indexterm>
        <para>
	  Pense na árvore <application>CVS</application> como uma versão dos
	  arquivos para uma versão particular de um manual ou pacote.
        </para>

        <para>
	  Para extrair uma árvore de um módulo, use o seguinte comando:
        </para>
<screen><prompt>$ </prompt><command>cvs co</command> <option>-d</option> <replaceable>&lt;diretório&gt;</replaceable> <option>-r</option> <replaceable>&lt;nome-da-árvore&gt;</replaceable> <replaceable>&lt;nome-do-módulo&gt;</replaceable></screen>
        <para>
	  Um diretório chamado <replaceable>&lt;diretório&gt;</replaceable> é
	  criado, e os arquivos da árvore
	  <replaceable>&lt;nome-da-árvore&gt;</replaceable> do módulo 
	  <replaceable>&lt;nome-do-módulo&gt;</replaceable> são copiados para
	  este diretório.
        </para>

        <para>
	  Por exemplo, para extrair uma árvore chamada BRANCH-VERSION-1.2
	  do módulo <computeroutput>mymodule</computeroutput>, use o comando:
        </para>
<screen><prompt>$ </prompt><command>cvs co -d mymodule-1.2 -r BRANCH-VERSION-1.2 mymodule</command></screen>
        <para>
	  A árvore BRANCH-VERSION-1.2 do módulo é extraída para o diretório
	  <filename>mymodule-1.2</filename> em seu sistema.
        </para>

        <para>
	  Para determinar que árvores e tags existem para um arquivo, use o
	  comando:
        </para>
<screen><prompt>$ </prompt><command>cvs status</command> <option>-v</option> <replaceable>&lt;nomedoarquivo&gt;</replaceable></screen>
        <para>
	  Por exemplo, o status do arquivo <filename>foo.sgml</filename> é o
	  seguinte:
        </para>
<screen>
<computeroutput>
===================================================================
File: foo.sgml    Status: Up-to-date

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

   Existing Tags:
        BRANCH-VERSION-1.2              (branch: 1.25.2)
</computeroutput>
</screen>
        <para>
	  Apenas as tags marcadas como árvores na segunda coluna da seção
	  <computeroutput>Existing Tags</computeroutput> (Tags Existentes) podem
	  ser extraídas como uma árvore.
        </para>
      </section>
    </section>

    <section id="sn-cvs-cvscommands-up">
      <title>Atualizando Arquivos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>atualizando arquivos</secondary>
      </indexterm>
      <para>
        Para obter as últimas versões dos arquivos de um módulo, mude para o
	diretório que contém os arquivos para o módulo e execute o comando:
      </para>
<screen><command>cvs update</command></screen>
      <para>
        Será efetuado o download das últimas versões de todos os arquivos no
	módulo e colocado em sua cópia local. Se você notar algum conflito de
	arquivo, veja a <xref linkend="sn-cvs-cvscommands-conflicts"></xref>.
      </para>
    </section>

    <section id="sn-cvs-cvscommands-commit">
      <title>Enviando Arquivos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>enviando arquivos</secondary>
      </indexterm>
      <para>
        Depois de modificar os arquivos em sua versão local do módulo, envie-os
	(commit) para salvar as mudanças no servidor
	<application>CVS</application>:
      </para>
<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option> &quot;<replaceable>mensagem de log</replaceable>&quot; <replaceable>nomedoarquivo</replaceable></screen>
      <note>
        <para>
	  Se você prefere escrever as mensagens de log com seu editor de textos
	  preferidos, como definido nas variáveis de mabiente $VISUAL ou
	  $EDITOR, apenas omita o parâmetro <userinput>-m &quot;mensagem
	  de log&quot;</userinput>. O documento já terá comentários descrevendo
	  a mudança; você não precisa removê-los quando for escrever seu
	  próprio texto.
        </para>
      </note>

      <para>
        A mensagem de log deve ser o quanto mais descritiva possível para que
	você e qualquer outra pessoa trabalhando no módulo entenda o que foi
	mudado. Usar uma mensagem de log como por exemplo <userinput>atualizado
	alguns arquivos</userinput> não descreve necessariamente o que foi
	mudado e não irá ajudá-lo no futuro. Se você está corrigindo um bug, use
	a referência do <application>Bugzilla</application>.
      </para>

      <para>
        O <replaceable>&lt;nomedoarquivo&gt;</replaceable> pode ser um arquivo,
	uma série de arquivos separados por espaço, ou um grupo de arquivos
	especificados com wildcards (coringas) como por exemplo
	<filename>*.png</filename> ou <filename>foo-*.sgml</filename>.
      </para>

      <para>
        Se nehum arquivo ou grupo de arquivos é especificado no comando
	<command>commit</command>, todas as mudanças de todos os tipos serão
	enviadas ao servidor. O comando é recursivo e incluirá também mudanças
	em subdiretórios do módulo. Tenha cuidado quando usar o comando
	<command>commit</command> sem especificar arquivos porque você pode não
	lembrar exatamente que arquivos foram modificados.
      </para>

      <para>
        Se você notar algum conflito de arquivo, veja a <xref
	linkend="sn-cvs-cvscommands-conflicts"></xref>.
      </para>
    </section>

    <section id="sn-cvs-cvscommands-add">
      <title>Adicionando Arquivos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>adicionando arquivos</secondary>
      </indexterm>
      <para>
        Para adicionar um arquivo a um módulo, crie o arquivo em sua cópia local
	e execute o seguinte comando:
      </para>
<screen><prompt>$ </prompt><command>cvs add</command> <replaceable>arquivo-a-adicionar</replaceable></screen>
      <para>
        Depois de adicionar o arquivo, você precisará aplicar
	(<command>commit</command>) o comando <command>add</command> para copiar
	o arquivo para o servidor:
      </para>
<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option> &quot;<replaceable>mensagem de log</replaceable>&quot; <replaceable>arquivo-a-adicionar</replaceable></screen>
    </section>

    <section id="sn-cvs-cvscommands-admin">
      <title>Lidando com Arquivos Binários</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>arquivos binários</secondary>
      </indexterm>
      <para>
        A maioria dos arquivos mais comuns são arquivos de texto simples, mas
	algumas vezes arquivos binários também são arquivados. O programa
	<application>cvs</application> reconhece as extensões de arquivos mais
	comuns como por exemplo <filename>.png</filename> ou
	<filename>.jpg</filename>, então o <application>cvs</application>
	geralmente &quot;faz a coisa certa&quot;.
      </para>

      <para>
        Quando uma cópia de arquivo é extraída do repositório, o
	<application>cvs</application>procura palavras-chave especiais nele como
	por exemplo &quot;<computeroutput>$id:$</computeroutput>&quot; e
	substitui a linha por um valor gerado, como o número de versão do
	arquivo.
      </para>

      <para>
        Esta substituição de palavras-chave geralmente corrompe arquivos
	binários, então ela deve ser desligada se o
	<application>cvs</application> não reconhece seu arquivo como binário.
	Para marcar seu arquivo como binário, deixando a substituição de
	palavras-chave desligada, use o comando:
      </para>
<screen width="60"><prompt>$ </prompt><command>cvs</command> <option>admin</option> <option>-kk</option> <replaceable>arquivo</replaceable></screen>
      <para>
        Note que o arquivo deve estar contido no repositório
	<abbrev>CVS</abbrev> antes do comando <option>admin</option> ser usado.
	Isto é certo porque a substituição de palavra-chave é feia quando o
	arquivo é extraído para o repositório local, e não quando o arquivo é
	aplicado ao repositório.
      </para>
      <tip>
        <title>Recuperando um arquivo binário</title>
        <para>
	  Se você colocar um arquivo binário no repositório e perceber que ele
	  está corrompido quando extraído, não entre em pânico. Simplesmente use
	  o comando <option>admin</option> como descrito acima, remova sua cópia
	  local de arquivo, e extraia-o de novo.
        </para>
      </tip>
    </section>

    <section id="sn-cvs-cvscommands-rm">
      <title>Removendo Arquivos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>removendo arquivos</secondary>
      </indexterm>
      <para>
        Se um arquivo não é mais preciso em um módulo, use o comando
	<command>remove</command> para removê-lo de sua cópia local e então
	aplique <command>commit</command> a remoção no servidor. Meso que o
	arquivo seja removido da versão atual do módulo, uma cópia arquivada
	ainda é guardada no servidor para que possa ser recolocada a qualquer
	momento com o comando <command>add</command>.
      </para>
<screen><prompt>$ </prompt><command>cvs rm -f</command> <replaceable>arquivo-a-remover</replaceable></screen>
      <para>
        Depois de remover o arquivo, você precisa aplicar
	(<command>commit</command>) a remoção:
      </para>
<screen><prompt>$ </prompt><command>cvs commit</command> <option>-m</option>&quot;<replaceable>mensagem de log</replaceable>&quot; <replaceable>arquivo-a-remover</replaceable></screen>
      <para>
        Você pode usar wildcards (coringas) no comando <command>commit</command>
	para identificar os arquivos removidos. Eles devem ser especificados
	com um nome de arquivo exato.
      </para>

      <para>
        Se você precisa renomear um arquivo, é melhor você renomear o arquivo no
	servidor <application>CVS</application> para que o histórico de versões
	do arquivo seja preservado. Quando precisar renomear um arquivo, envie
	um e-mail para
        <ulink url="mailto:cvsdocs-administrator@fedoraproject.org"><filename>cvsdocs-administrator@fedoraproject.org</filename>
        </ulink> pedindo para o arquivo ser renomeado.
      </para>
    </section>

    <section id="sn-cvs-cvscommands-status">
      <title>Estado dos Arquivos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>estado dos arquivos</secondary>
      </indexterm>
      <para>
        As vezes é necessário visualizar o <firstterm>estado</firstterm> de um
	arquivo em um módulo <application>CVS</application>. Para ver o estado
	de um arquivo, use o comando:
      </para>
<screen><prompt>$ </prompt><command>cvs status</command>  <replaceable>arquivo</replaceable></screen>
      <para>
        O estado de um arquivo de repositório pode ser:
      </para>

      <variablelist>
        <varlistentry>
          <term><computeroutput>Up-to-date</computeroutput> (Atualizado)</term>
          <listitem>
            <para>
	      Sua revisão do arquivo é idêntica a última versão do servidor
	      <application>CVS</application>.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Locally Modified</computeroutput> (Localmente Modificada)</term>
          <listitem>
            <para>
	      Você atualizou a última revisão do servidor, mas você modificou o
	      arquivo em seu sistema.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Locally Added</computeroutput> (Adicionado Localmente)</term>
          <listitem>
            <para>
	      Você adicionou o arquivo com o comando <command>cvs add</command>
	      mas não aplicou (commit) a adição do arquivo.
            </para>
          </listitem>
        </varlistentry>

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

        <varlistentry>
          <term><computeroutput>Needs Checkout</computeroutput> (Precisa de Extração)</term>
          <listitem>
            <para>
	      Uma novaversão do arquivo está no servidor e precisa ser obtida.
	      Apesar do estado incluir a palavra extrair, ele na verdade
	      significa que você precisa atualizar seus arquivos com o comando
	      <command>cvs update</command>.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Needs Patch</computeroutput> (Precisa de Patch)</term>
          <listitem>
            <para>
	      A revisão do seu repositório local precisa de um patch para a
	      última revisão do servidor. Use o comando <command>cvs
	      update</command> para resolver.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Needs Merge</computeroutput> (Precisa de Mesclagem)</term>
          <listitem>
            <para>
	      Uma nova revisão existe no servidor e sua versão local contém
	      modificações que ainda não foram aplicadas. Este estado geralmente
	      aparece quando você não tem a última revisão do arquivo e mesmo
	      assim o edita.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>File had conflicts on merge</computeroutput> (Há conflitos no Arquivo durante a Mesclagem)</term>
          <listitem>
            <para>
	      Parecido com o <computeroutput>Needs Merge</computeroutput>,
	      exceto pelo fato de que você tentou usar o comando <command>cvs
	      update</command>. A diferença não pôde ter sido resolvida
	      automaticamente. Veja a <xref
	      linkend="sn-cvs-cvscommands-conflicts"></xref> para mais
	      informações em como resolver conflitos.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><computeroutput>Unknown</computeroutput> (Desconhecido)</term>
          <listitem>
            <para>
	      O servidor <application>CVS</application> não sabe de nada sobre
	      este arquivo. Ele pode não ter sido adicionado ou removido
	      localmente e nunca pôde ter sido aplicado ao servidor. Este estado
	      geralmente ocorre para arquivos que você não deve aplicar (commit)
	      ao <application>CVS</application> como por exemplo um
	      <filename>generated-index.sgml</filenamee> ou arquivos que você
	      pode querer adicionar ao repositório mas não usou o comando
	      <command>cvs add</command>.
            </para>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="sn-cvs-cvscommands-conflicts">
      <title>Resolvendo Conflitos</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>resolvendo conflitos</secondary>
      </indexterm>
      <para>
        Se você modifica um arquivo em uma mesma região que foi modificada e
	aplicada por outra pessoa primeiro, você provavelmente irá ver uma
	mensagem parecido com a abaixo quando aplicar o arquivo ou atualizar a
	sua cópia local do módulo:
      </para>
<screen>
<computeroutput>
RCS file: /cvs/docs/module-name/filename.sgml,v
retrieving revision 1.12
retrieving revision 1.13
Merging differences between 1.12 and 1.13 into filename.sgml
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in filename.sgml
C filename.sgml
</computeroutput>
</screen>
      <para>
        Para resolver o conflito, abra o arquivo, procure por
        <computeroutput>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</computeroutput>
	e determine que versão do conteúdo é correta. Por exemplo:
      </para>
<screen>
<computeroutput>
&lt;para&gt;
Uma sentença.
&lt;&lt;&lt;&lt;&lt;&lt;&lt; filename.sgml
A sentença que foi mudada na cópia em trabalho.
=======
A mesma sentença que foi mudada diferentemente e aplicada.
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.13
&lt;/para&gt;
</computeroutput>
</screen>
      <para>
        O conteúdo entre 
        <computeroutput>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</computeroutput>,
        e <computeroutput>=======</computeroutput> é o conteúdo da sua cópia
	local. O conteúdo entre o <computeroutput>=======</computeroutput> e 
        <computeroutput>&gt;&gt;&gt;&gt;&gt;&gt;&gt;</computeroutput> é o
	conteúdo do servidor.
      </para>

      <para>
        Resolva o conflito editando a sua cópia, e aplicando (commit) o arquivo.
      </para>
    </section>

    <section id="sn-cvs-cvscommands-summary">
      <title>Sumário</title>
      <indexterm>
        <primary>cvs</primary>
        <secondary>comandos</secondary>
        <tertiary>sumário dos</tertiary>
      </indexterm>
      <para>
        Todos os comandos assumem que você esteja no diretório apropriado do
	módulo <application>CVS</application>.
      </para>
      <table frame="all" id="tb-cvs-basic-commands">
        <title>Comandos Básicos de 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-do-módulo&gt;</replaceable></command>
      ou <command>cvs co <replaceable>&lt;nome-do-módulo&gt;</replaceable></command>
              </entry>
              <entry>Cria um diretório chamado
      <replaceable>&lt;nome-do-módulo&gt;</replaceable> com o conteúdo do módulo no
      diretório</entry>
            </row>
            <row>
              <entry><command>cvs co -d
	      <replaceable>&lt;diretório&gt;</replaceable> -r <replaceable>&lt;nome-da-árvore&gt;</replaceable><replaceable>&lt;nome-do-módulo&gt;</replaceable></command>
              </entry>
              <entry>Cria o diretório <replaceable>&lt;diretório&gt;</replaceable>
      com o conteúdo da árvore <replaceable>&lt;nome-da-árvore&gt;</replaceable>
      do módulo <replaceable>&lt;nome-do-módulo&gt;</replaceable> módulo.</entry>
            </row>
            <row>
              <entry><command>cvs update</command> ou <command>cvs up</command>
              </entry>
              <entry>Atualiza seus arquivos com os últimos arquivos do servidor
	      CVS.</entry>
            </row>
            <row>
              <entry><command>cvs add <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Adiciona o novo arquivo "arquivo" ao servidor CVS</entry>
            </row>
            <row>
              <entry><command>cvs commit -m "Minha mensagem"
        <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Atualiza o arquivo
	      <replaceable>&lt;arquivo&gt;</replaceable> com a última cópia de
	      seu computador</entry>
            </row>
            <row>
              <entry><command>cvs log <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Visualiza as mensagens de commit do arquivo <replaceable>&lt;arquivo&gt;</replaceable>
              </entry>
            </row>
            <row>
              <entry><command>cvs status <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Visualiza o estado do arquivo, como por exemplo
	      <computeroutput>Localmente Modificado</computeroutput>
              </entry>
            </row>
            <row>
              <entry><command>cvs status -v <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Visualiza as tags e árvores existentes para o arquivo</entry>
            </row>
            <row>
              <entry><command>cvs diff <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Mostra a diferença entre sua cópia local do arquivo e a
	      última versão do arquivo na árvore</entry>
            </row>
            <row>
              <entry><command>cvs diff -r1.1 -r1.2 <replaceable>&lt;arquivo&gt;</replaceable></command>
              </entry>
              <entry>Mostra a diferença do arquivo da versão 1.1 para a 1.2</entry>
            </row>
          </tbody>
        </tgroup>
      </table>
      <para>
        Para mais informações, leia o manual CVS disponível em seu sistema em
        <filename>/usr/share/doc/cvs-<replaceable>&lt;número-de-versão&gt;</replaceable>/cvs.ps</filename>
        (a versão do CVS pode variar) e visite a página do CVS disponível em
        <ulink url="http://www.cvshome.org/">http://www.cvshome.org/</ulink>.
      </para>
      <tip>
        <title>Dica</title>
        <para>
	  Como o <application>CVS</application> está usando o
	  <application>ssh</application> para conectar-se ao servidor
	  <application>CVS</application>, você será perguntando por uma senha
	  antes de executar a instrução <application>CVS</application>. Se você
	  quiser configurar o seu sistema para que você não tenha que digitar a
	  senha, veja a página
          <ulink url="http://redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/s1-openssh-client-config.html"><citetitle>&RH;
          Linux 9 Customization Guide</citetitle> </ulink> para detalhes em como
	  usar o <command>ssh-agent</command>.
        </para>
      </tip>
    </section>
  </section>
</chapter>