Initial import of binutils 2.22 on the new vendor branch
[dragonfly.git] / contrib / cvs-1.12 / doc / i18n / pt_BR / cvs.texinfo
1 \input texinfo  @c -*-texinfo-*-
2 @comment Documentation for CVS.
3 @setfilename cvs.info
4 @macro copyleftnotice
5 @noindent
6 Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
7                        2001, 2002, 2003 Free Software Foundation, Inc.
8
9 @multitable @columnfractions .12 .88
10 @item Portions
11 @item @tab Copyright @copyright{} 1999, 2000, 2001, 2002, 2003 Derek R. Price,
12 @item @tab Copyright @copyright{} 2002, 2003 Ximbiot @url{http://ximbiot.com},
13 @item @tab Copyright @copyright{} 1992, 1993, 1999 Signum Support AB,
14 @item @tab and Copyright @copyright{} others.
15 @end multitable
16
17 @ignore
18 Permission is granted to process this file through Tex and print the
19 results, provided the printed document carries copying permission
20 notice identical to this one except for the removal of this paragraph
21 (this paragraph not being relevant to the printed manual).
22
23 @end ignore
24 Permission is granted to make and distribute verbatim copies of
25 this manual provided the copyright notice and this permission notice
26 are preserved on all copies.
27
28 Permission is granted to copy and distribute modified versions of this
29 manual under the conditions for verbatim copying, provided also that the
30 entire resulting derived work is distributed under the terms of a
31 permission notice identical to this one.
32
33 Permission is granted to copy and distribute translations of this manual
34 into another language, under the above conditions for modified versions,
35 except that this permission notice may be stated in a translation
36 approved by the Free Software Foundation.
37 @end macro
38
39 @comment This file is part of the CVS distribution.
40
41 @comment CVS is free software; you can redistribute it and/or modify
42 @comment it under the terms of the GNU General Public License as published by
43 @comment the Free Software Foundation; either version 2, or (at your option)
44 @comment any later version.
45
46 @comment CVS is distributed in the hope that it will be useful,
47 @comment but WITHOUT ANY WARRANTY; without even the implied warranty of
48 @comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
49 @comment GNU General Public License for more details.
50
51 @c See ../README for A4 vs. US letter size.
52 @c When we provided A4 postscript, and people tried to
53 @c print it on US letter, the usual complaint was that the
54 @c page numbers would get cut off.
55 @c If one prints US letter on A4, reportedly there is
56 @c some extra space at the top and/or bottom, and the side
57 @c margins are a bit narrow, but no text is lost.
58 @c
59 @c See
60 @c http://www.ft.uni-erlangen.de/~mskuhn/iso-paper.html
61 @c for more on paper sizes.  Insuring that margins are
62 @c big enough to print on either A4 or US letter does
63 @c indeed seem to be the usual approach (RFC2346).
64
65 @c This document seems to get overfull hboxes with some
66 @c frequency (probably because the tendency is to
67 @c sanity-check it with "make info" and run TeX less
68 @c often).  The big ugly boxes just seem to add insult
69 @c to injury, and I'm not aware of them helping to fix
70 @c the overfull hboxes at all.
71 @finalout
72
73 @c ???@include version.texi???
74 @settitle CVS---Concurrent Versions System v@c ???@value{VERSION}???
75 @setchapternewpage odd
76
77 @c -- TODO list:
78 @c -- Fix all lines that match "^@c -- "
79 @c -- Also places marked with FIXME should be manual
80 @c problems (as opposed to FIXCVS for CVS problems).
81
82 @c @splitrcskeyword{} is used to avoid keyword expansion.  It is replaced by
83 @c @asis when generating info and dvi, and by <i></i> in the generated html,
84 @c such that keywords are not expanded in the generated html. 
85 @ifnothtml
86 @macro splitrcskeyword {arg}
87 @asis{}\arg\
88 @end macro
89 @end ifnothtml
90
91 @ifhtml
92 @macro splitrcskeyword {arg}
93 @i{}\arg\
94 @end macro
95 @end ifhtml
96
97 @dircategory GNU Packages
98 @direntry
99 * CVS: (cvs).                   Concurrent Versions System
100 @end direntry
101 @dircategory Individual utilities
102 @direntry
103 * cvs: (cvs)CVS commands.       Concurrent Versions System
104 @end direntry
105
106 @comment The titlepage section does not appear in the Info file.
107 @titlepage
108 @sp 4
109 @comment The title is printed in a large font.
110 @center @titlefont{Version Management}
111 @sp
112 @center @titlefont{with}
113 @sp
114 @center @titlefont{CVS}
115 @sp 2
116 @center for @sc{cvs} @c ???@value{VERSION}???
117 @comment -release-
118 @sp 3
119 @center Per Cederqvist et al
120
121 @comment  The following two commands start the copyright page
122 @comment  for the printed manual.  This will not appear in the Info file.
123 @page
124 @vskip 0pt plus 1filll
125 @copyleftnotice
126 @end titlepage
127
128 @comment ================================================================
129 @comment                   The real text starts here
130 @comment ================================================================
131
132 @ifnottex
133 @c ---------------------------------------------------------------------
134 @node    Top
135 @top
136
137 @c <en> This info manual describes how to use and administer
138 Esta página manual ensina a como usar e administrar o
139 @c <en> @sc{cvs} version @value{VERSION}.
140 @sc{cvs} versão @c ???@value{VERSION}???.
141 @end ifnottex
142
143 @ifinfo
144 @copyleftnotice
145 @end ifinfo
146
147 @c This menu is pretty long.  Not sure how easily that
148 @c can be fixed (no brilliant ideas right away)...
149 @menu
150 @c <en>* Overview::                    An introduction to CVS
151 * Visão Geral::                 Uma introdução ao CVS
152 @c <en>* Repository::                  Where all your sources are stored
153 * Repositório::                 Onde todos os seus fontes são guardados
154 @c <en>* Starting a new project::      Starting a project with CVS
155 * Começando um novo projeto::   Começando um projeto com CVS
156 @c <en>* Revisions::                   Numeric and symbolic names for revisions
157 * Revisões::                    Nomes numéricos e simbólicos para revisões
158 @c <en>* Branching and merging::       Diverging/rejoining branches of development
159 * Ramificando e mesclando::     Divergindo/reunindo ramos de desenvolvimento
160 @c <en>* Recursive behavior::          CVS descends directories
161 * Comportamento recursivo::     CVS adentra nos diretórios
162 @c <en>* Adding and removing::         Adding/removing/renaming files/directories
163 * Adicionando e removendo::     Adicionando/apagando/renomeando arquivos/diretórios
164 @c <en>* History browsing::            Viewing the history of files in various ways
165 * Navegação no Histórico::      Vendo o histórico dos arquivos de várias formas
166
167 @c <en>CVS and the Real World.
168 CVS e o mundo Real.
169 -----------------------
170 @c <en>* Binary files::                CVS can handle binary files
171 * Arquivos binários::             CVS pode lidar com arquivos binários
172 @c <en>* Multiple developers::         How CVS helps a group of developers
173 * Múltiplos desenvolvedores::     Como CVS ajuda um grupo de desenvolvedores
174 @c <en>* Revision management::         Policy questions for revision management
175 * Gerenciamento de revisões::     Questões de política para gerenciamento de revisões
176 @c <en>* Keyword substitution::        CVS can include the revision inside the file
177 * Substituição de palavra-chave:: CVS inclui a revisão dentro do arquivo
178 @c <en>* Tracking sources::            Tracking third-party sources
179 * Acompanhando fontes::           Acompanhando fontes de terceiros
180 @c <en>* Builds::                      Issues related to CVS and builds
181 * Builds::                        Issues related to CVS and builds
182 @c <en>* Special Files::                Devices, links and other non-regular files
183 * Arquivos especiais::            Dispositivos, ligações e outros arquivos diferentes
184
185 @c <en>References.
186 Referências.
187 -----------
188 @c <en>* CVS commands::                CVS commands share some things
189 * Comandos do CVS::            Comandos do CVS têm algo em comum
190 @c <en>* Invoking CVS::                Quick reference to CVS commands
191 * Chamando o CVS::             Referência rápida aos comandos do CVS
192 @c <en>* Administrative files::        Reference manual for the Administrative files
193 * Arquivos administrativos::   Manual de referência para os arquivos administrativos
194 @c <en>* Environment variables::       All environment variables which affect CVS
195 * Variáveis de ambiente::      Todas as variáveis de ambiente que afetam o CVS
196 @c <en>* Compatibility::               Upgrading CVS versions
197 * Compatibilidade::            Upgrading CVS versions
198 @c <en>* Troubleshooting::             Some tips when nothing works
199 * Resolução de problemas::     Algumas dicas quando nada funciona
200 @c <en>* Credits::                     Some of the contributors to this manual
201 * Créditos::                   Alguns dos contribuidores deste manual
202 @c <en>* BUGS::                        Dealing with bugs in CVS or this manual
203 * Paus::                       Lidando com paus no CVS ou neste manual
204 @c <en>* Index::                       Index
205 * Indice::                     Índice
206 @end menu
207
208 @c ---------------------------------------------------------------------
209 @c <en>@node Overview
210 @c <en>@chapter Overview
211 @c <en>@cindex Overview
212 @node Visão Geral
213 @chapter Visão Geral
214 @cindex Visão Geral
215
216 @c <en>This chapter is for people who have never used
217 @c <en>@sc{cvs}, and perhaps have never used version control
218 @c <en>software before.
219 Este capítulo é para aqueles que nunca usaram o
220 @sc{cvs} antes, e talvez nunca tenham usado um programa
221 de controle de versões antes.
222
223 @c <en>If you are already familiar with @sc{cvs} and are just
224 @c <en>trying to learn a particular feature or remember a
225 @c <en>certain command, you can probably skip everything here.
226 Se você já conhece o @sc{cvs} e está apenas tentando
227 aprender sobre uma habilidade em particular ou lembrar
228 um certo comando, você provavelmente pode pular tudo
229 aqui.
230
231 @menu
232 @c <en>* What is CVS?::                What you can do with @sc{cvs}
233 * O que é CVS?::                O que você pode fazer com @sc{cvs}
234 @c <en>* What is CVS not?::            Problems @sc{cvs} doesn't try to solve
235 * O que CVS não é?::            Problemas que o @sc{cvs} não tenta resolver
236 @c <en>* A sample session::            A tour of basic @sc{cvs} usage
237 * Uma sessão de exemplo::          Um tour pelo uso básico do @sc{cvs}
238 @end menu
239
240 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
241 @c <en>@node What is CVS?
242 @c <en>@section What is CVS?
243 @c <en>@cindex What is CVS?
244 @c <en>@cindex Introduction to CVS
245 @c <en>@cindex CVS, introduction to
246 @node O que é CVS?
247 @section O que é CVS?
248 @cindex O que é CVS?
249 @cindex Introdução ao CVS
250 @cindex CVS, introdução ao
251
252 @c <en>@sc{cvs} is a version control system.  Using it, you can
253 @c <en>record the history of your source files.
254 @sc{cvs} é um sistema de controle de versões.  Ao
255 usá-lo, você pode registrar a história dos seus códigos
256 fonte.
257
258 @c -- ///
259 @c -- ///Those who cannot remember the past are condemned to repeat it.
260 @c -- ///               -- George Santayana
261 @c -- //////
262
263 @c -- Insert history  quote here!
264 @c <en>For example, bugs sometimes creep in when
265 @c <en>software is modified, and you might not detect the bug
266 @c <en>until a long time after you make the modification.
267 @c <en>With @sc{cvs}, you can easily retrieve old versions to see
268 @c <en>exactly which change caused the bug.  This can
269 @c <en>sometimes be a big help.
270 Por exemplo, às vezes aparecem erros quando um programa
271 é modificado e você não detecta o problema até muito
272 tempo depois de você ter feito a modificação.  Com
273 @sc{cvs}, você pode recuperar versões antigas para ver
274 exatamente o que causou o erro.  Isto às vezes é de
275 grande ajuda.
276
277 @c <en>You could of course save every version of every file
278 @c <en>you have ever created.  This would
279 @c <en>however waste an enormous amount of disk space.  @sc{cvs}
280 @c <en>stores all the versions of a file in a single file in a
281 @c <en>clever way that only stores the differences between
282 @c <en>versions.
283 Você pode, é claro, salvar toda versão de todo arquivo
284 que um dia você criou.  Mas isto vai consumir um enorme
285 espaço no disco.  O @sc{cvs} guarda todas as versões de um
286 arquivo em um único arquivo em uma forma inteligente
287 que guarda apenas as diferenças entre versões.
288
289 @c <en>@sc{cvs} also helps you if you are part of a group of people working
290 @c <en>on the same project.  It is all too easy to overwrite
291 @c <en>each others' changes unless you are extremely careful.
292 @c <en>Some editors, like @sc{gnu} Emacs, try to make sure that
293 @c <en>the same file is never modified by two people at the
294 @c <en>same time.  Unfortunately, if someone is using another
295 @c <en>editor, that safeguard will not work.  @sc{cvs} solves this problem
296 @c <en>by insulating the different developers from each other.  Every
297 @c <en>developer works in his own directory, and @sc{cvs} merges
298 @c <en>the work when each developer is done.
299 @sc{cvs} também ajuda se você é parte de um grupo de
300 pessoas trabalhando no mesmo projeto.  É muito fácil uns
301 sobreescreverem as mudanças de outros se não forem
302 extremamente cuidadosos.  Alguns editores, como o
303 @sc{gnu} Emacs, tentam se certificar de que o mesmo
304 arquivo nunca seja modificado por duas pessoas ao mesmo
305 tempo.  Infelizmente, se alguém estiver usando outro
306 editor, está segurança não vai funcionar.  O @sc{cvs}
307 resolve este problema isolando os desenvolvedores uns
308 dos outros.  Todo desenvolvedor trabalha em seu próprio
309 diretório e o @sc{cvs} mescla o trabalho quando cada
310 desenvolvedor tiver terminado.
311
312 @c <en>@cindex History of CVS
313 @cindex História do CVS
314 @c <en>@cindex CVS, history of
315 @cindex CVS, história do
316 @c <en>@cindex Credits (CVS program)
317 @cindex Créditos (programa CVS)
318 @c <en>@cindex Contributors (CVS program)
319 @cindex Contribuidores (programa CVS)
320 @c <en>@sc{cvs} started out as a bunch of shell scripts written by
321 @c <en>Dick Grune, posted to the newsgroup
322 @c <en>@code{comp.sources.unix} in the volume 6
323 @c <en>release of July, 1986.  While no actual code from
324 @c <en>these shell scripts is present in the current version
325 @c <en>of @sc{cvs} much of the @sc{cvs} conflict resolution algorithms
326 @c <en>come from them.
327 @sc{cvs} começou como um monte de shell scripts
328 escritos por Dick Grune, postados no newsgroup
329 @code{comp.sources.unix} no volume 6, de Julho de
330 1986.  Na verdade, nenhum código daqueles scripts está
331 presente na versão atual do @sc{cvs}, mas muito dos
332 algoritmos de resolução de conflitos do @sc{cvs} vem
333 deles.
334
335 @c <en>In April, 1989, Brian Berliner designed and coded @sc{cvs}.
336 @c <en>Jeff Polk later helped Brian with the design of the @sc{cvs}
337 @c <en>module and vendor branch support.
338 Em abril de 1989, Brian Berliner projetou e codificou
339 @sc{cvs}.  Depois, Jeff Polk ajudou Brian com o projeto
340 do módulo @sc{cvs} e o suporte ao ramo do fornecedor.
341
342 @c <en>@cindex Source, getting CVS source
343 @cindex Fontes, adquirindo os fontes do CVS
344 @c <en>You can get @sc{cvs} in a variety of ways, including
345 @c <en>free download from the internet.  For more information
346 @c <en>on downloading @sc{cvs} and other @sc{cvs} topics, see:
347 Você pode conseguir o @sc{cvs} de várias formas,
348 inclusive baixando gratuitamente da internet.  Para
349 maiores informações sobre baixar o @sc{cvs} e para
350 outros tópicos sobre @sc{cvs}, veja:
351
352 @example
353 @url{http://cvs.nongnu.org/}
354 @end example
355
356 @c <en>@cindex Mailing list
357 @cindex Lista de Discussão
358 @c <en>@cindex List, mailing list
359 @cindex Lista, lista de discussão
360 @c <en>@cindex Newsgroups
361 @cindex Newsgroups
362 @c <en>There is a mailing list, known as @email{info-cvs@@nongnu.org},
363 @c <en>devoted to @sc{cvs}.  To subscribe or
364 @c <en>unsubscribe
365 @c <en>write to
366 @c <en>@email{info-cvs-request@@nongnu.org}.
367 @c <en>If you prefer a usenet group, there is a one-way mirror (posts to the email
368 @c <en>list are usually sent to the news group, but not visa versa) of
369 @c <en>@email{info-cvs@@nongnu.org} at @url{news:gnu.cvs.help}.  The right
370 @c <en>usenet group for posts is @url{news:comp.software.config-mgmt} which is for
371 @c <en>@sc{cvs} discussions (along with other configuration
372 @c <en>management systems).  In the future, it might be
373 @c <en>possible to create a
374 @c <en>@code{comp.software.config-mgmt.cvs}, but probably only
375 @c <en>if there is sufficient @sc{cvs} traffic on
376 @c <en>@url{news:comp.software.config-mgmt}.
377 Existe uma lista de discussão, conhecida como @email{info-cvs@@nongnu.org},
378 dedicada ao @sc{cvs}.  Para se cadastrar ou descadastrar nela
379 escreva para @email{info-cvs-request@@nongnu.org}.  Se você
380 preferir um grupo de usenet, existe um espelho de mão
381 única (postagens para a lista de email são usualmente
382 mandadas para o news group, mas não vice-versa) da lista
383 @email{info-cvs@@nongnu.org} em @url{news:gnu.cvs.help}.  O
384 grupo usenet correto para postagens é o
385 @url{news:comp.software.config-mgmt} que é para
386 discussões sobre @sc{cvs} (juntamente com outros
387 sistemas de gerência de configuração).  No futuro, poderá ser criada uma
388 @code{comp.software.config-mgmt.cvs}, mas apenas se
389 houver bastante tráfego sobre o @sc{cvs} na
390 @url{news:comp.software.config-mgmt}.
391 @c Other random data is that the tale was very
392 @c skeptical of comp.software.config-mgmt.cvs when the
393 @c subject came up around 1995 or so (for one
394 @c thing, because creating it would be a "reorg" which
395 @c would need to take a more comprehensive look at the
396 @c whole comp.software.config-mgmt.* hierarchy).
397
398 @c <en>You can also subscribe to the @email{bug-cvs@@nongnu.org} mailing list,
399 @c <en>described in more detail in @ref{BUGS}.  To subscribe
400 @c <en>send mail to @email{bug-cvs-request@@nongnu.org}.  There is a two-way
401 @c <en>usenet mirror (posts to the usenet group are usually sent to the email list and
402 @c <en>visa versa) of @email{bug-cvs@@nongnu.org} named @url{news:gnu.cvs.bug}.
403 Você também pode se cadastrar na lista de discussão
404 @email{bug-cvs@@nongnu.org}, descrita em maiores detalhes
405 em @ref{Paus}.  Para se cadastrar mande um e-mail para
406 @email{bug-cvs-request@@nongnu.org}.  Existe um espelho
407 usenet de mão-dupla (postagens para o grupo usenet são
408 usualmente mandadas para a lista e vice-versa) de
409 @email{bug-cvs@@nongnu.org} chamado
410 @url{news:gnu.cvs.bug}.
411
412 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
413 @c <en>@node What is CVS not?
414 @node O que CVS não é?
415 @c <en>@section What is CVS not?
416 @section O que CVS não é?
417 @c <en>@cindex What is CVS not?
418 @cindex O que CVS não é?
419
420 @c <en>@sc{cvs} can do a lot of things for you, but it does
421 @c <en>not try to be everything for everyone.
422 @sc{cvs} pode fazer várias coisas para você, mas não
423 tenta fazer tudo para todo mundo.
424
425 @table @asis
426 @c <en>@item @sc{cvs} is not a build system.
427 @item @sc{cvs} não é um sistema de construção (build system).
428
429 @c <en>Though the structure of your repository and modules
430 @c <en>file interact with your build system
431 @c <en>(e.g. @file{Makefile}s), they are essentially
432 @c <en>independent.
433 Embora a estrutura do seu repositório e arquivos de
434 módulo interajam com seu sistema de construção
435 (e.g. @file{Makefile}s), eles são essencialmente
436 independentes.
437
438 @c <en>@sc{cvs} does not dictate how you build anything.  It
439 @c <en>merely stores files for retrieval in a tree structure
440 @c <en>you devise.
441 @sc{cvs} não dita como você constroi nada.  Ele apenas
442 guarda arquivos para recuperação numa estrutura de
443 árvore que você concebeu.
444
445 @c <en>@sc{cvs} does not dictate how to use disk space in the
446 @c <en>checked out working directories.  If you write your
447 @c <en>@file{Makefile}s or scripts in every directory so they
448 @c <en>have to know the relative positions of everything else,
449 @c <en>you wind up requiring the entire repository to be
450 @c <en>checked out.
451 @sc{cvs} não dita como usar o espaço em disco em
452 diretórios de trabalho locais.  Se você
453 escreve seus @file{Makefile}s ou scripts em cada
454 diretório, eles têm que saber a posição relativa de
455 todo o resto, logo você acaba tendo que pegar todo o
456 repositório.
457
458 @c <en>If you modularize your work, and construct a build
459 @c <en>system that will share files (via links, mounts,
460 @c <en>@code{VPATH} in @file{Makefile}s, etc.), you can
461 @c <en>arrange your disk usage however you like.
462 Se você modularizar o seu trabalho e fizer um sistema
463 de construção (build) que irá compartilhar arquivos
464 (via links, mounts, @code{VPATH} em @file{Makefile}s,
465 etc.), você pode organizar a sua utilização de disco de
466 qualquer forma.
467
468 @c <en>But you have to remember that @emph{any} such system is
469 @c <en>a lot of work to construct and maintain.  @sc{cvs} does
470 @c <en>not address the issues involved.
471 Mas você tem que lembrar que @emph{qualquer} sistema
472 desse é muito trabalhoso para construir e
473 manter.  O @sc{cvs} não se importa com tais questões.
474
475 @c <en>Of course, you should place the tools created to
476 @c <en>support such a build system (scripts, @file{Makefile}s,
477 @c <en>etc) under @sc{cvs}.
478 Obviamente, você pode botar as ferramentas criadas para
479 auxiliar tal sistema de construção (scripts,
480 @file{Makefile}s, etc) dentro do @sc{cvs}.
481
482 @c <en>Figuring out what files need to be rebuilt when
483 @c <en>something changes is, again, something to be handled
484 @c <en>outside the scope of @sc{cvs}.  One traditional
485 @c <en>approach is to use @code{make} for building, and use
486 @c <en>some automated tool for generating the dependencies which
487 @c <en>@code{make} uses.
488 Definir quais arquivos precisam ser reconstruídos
489 quando algo muda é, novamente, algo para ser visto fora
490 do escopo do @sc{cvs}.  Uma abordagem tradicional é
491 usar o @code{make} para construir, e usar alguma
492 ferramenta automatizada para gerar as dependências que
493 o @code{make} usa.
494
495 @c <en>Veja em @ref{Builds}, for more information on doing builds
496 @c <en>in conjunction with @sc{cvs}.
497 See @ref{Builds}, para mais informações sobre
498 construção com @sc{cvs}.
499
500 @c <en>@item @sc{cvs} is not a substitute for management.
501 @item @sc{cvs} não substitui gerenciamento.
502
503 @c <en>Your managers and project leaders are expected to talk
504 @c <en>to you frequently enough to make certain you are aware
505 @c <en>of schedules, merge points, branch names and release
506 @c <en>dates.  If they don't, @sc{cvs} can't help.
507 Espera-se que seus gerentes e líderes de projetos falem
508 com você com a frequência suficiente para que você
509 saiba de prazos, pontos de mescla, nomes de ramos e
510 datas de lançamento (release).  Se eles não o fizerem, o
511 @sc{cvs} não pode ajudar.
512
513 @c <en>@sc{cvs} is an instrument for making sources dance to
514 @c <en>your tune.  But you are the piper and the composer.  No
515 @c <en>instrument plays itself or writes its own music.
516 @sc{cvs} é um instrumento para fazer o fonte dançar
517 conforme a sua música.  Mas você é o maestro e o
518 compositor.  Nenhum instrumento toca sozinho ou escreve
519 sua própria música.
520
521 @c <en>@item @sc{cvs} is not a substitute for developer communication.
522 @item @sc{cvs} não é um substituto para comunicação entre desenvolvedores.
523
524 @c <en>When faced with conflicts within a single file, most
525 @c <en>developers manage to resolve them without too much
526 @c <en>effort.  But a more general definition of ``conflict''
527 @c <en>includes problems too difficult to solve without
528 @c <en>communication between developers.
529 Quando se deparam com conflitos num único arquivo, a
530 maioria dos desenvolvedores conseguem resolvê-los sem
531 muito esforço.  Mas uma definição mais geral de
532 ``conflito'' inclui problemas tão difíceis de resolver
533 que é necessária a comunicação entre os desenvolvedores.
534
535 @c <en>@sc{cvs} cannot determine when simultaneous changes
536 @c <en>within a single file, or across a whole collection of
537 @c <en>files, will logically conflict with one another.  Its
538 @c <en>concept of a @dfn{conflict} is purely textual, arising
539 @c <en>when two changes to the same base file are near enough
540 @c <en>to spook the merge (i.e. @code{diff3}) command.
541 @sc{cvs} não pode determinar quando é que alterações
542 simultâneas em um arquivo, ou vários, vão conflitar
543 logicamente umas com as outras.  Seu conceito de
544 @dfn{conflito} é puramente textual, surgindo quando
545 duas alterações num mesmo arquivo base são próximas o
546 suficiente para intimidar o comando de mescla
547 (i.e. @code{diff3}).
548
549 @c <en>@sc{cvs} does not claim to help at all in figuring out
550 @c <en>non-textual or distributed conflicts in program logic.
551 @sc{cvs} não se propõe a dar qualquer ajuda quanto a
552 localizar conflitos não-textuais ou distribuídos na
553 lógica de programação.
554
555 @c <en>For example: Say you change the arguments to function
556 @c <en>@code{X} defined in file @file{A}.  At the same time,
557 @c <en>someone edits file @file{B}, adding new calls to
558 @c <en>function @code{X} using the old arguments.  You are
559 @c <en>outside the realm of @sc{cvs}'s competence.
560 Por exemplo: Digamos que você altere os argumentos da
561 função @code{X} definida no arquivo @file{A}.  Neste
562 instante, alguem altera o arquivo @file{B}, adicionando
563 novas chamadas à função @code{X} usando os argumentos
564 antigos.  Vocês estão fora do escopo da competência do
565 @sc{cvs}.
566
567 @c <en>Acquire the habit of reading specs and talking to your
568 @c <en>peers.
569 Adquira o hábito de ler documentação e conversar com
570 seus parceiros.
571
572
573 @c <en>@item @sc{cvs} does not have change control
574 @item @sc{cvs} não tem controle de mudanças
575
576 @c <en>Change control refers to a number of things.  First of
577 @c <en>all it can mean @dfn{bug-tracking}, that is being able
578 @c <en>to keep a database of reported bugs and the status of
579 @c <en>each one (is it fixed?  in what release?  has the bug
580 @c <en>submitter agreed that it is fixed?).  For interfacing
581 @c <en>@sc{cvs} to an external bug-tracking system, see the
582 @c <en>@file{rcsinfo} and @file{verifymsg} files
583 @c <en>(@pxref{Administrative files}).
584 Controle de mudanças se refere a várias coisas.  Em
585 primeiro lugar, pode significar @dfn{bug-tracking
586 (busca de erros)}, que é manter uma base de dados de
587 erros relatados e o status de cada um (foi consertado?
588 em qual lançamento? o submissor do erro concordou que o
589 erro foi corrigido?).  Para fazer a interface do
590 @sc{cvs} com um sistema de bug-tracking externo, veja
591 os arquivos @file{rcsinfo} e @file{verifymsg}
592 (@pxref{Arquivos administrativos}).
593
594 @c <en>Another aspect of change control is keeping track of
595 @c <en>the fact that changes to several files were in fact
596 @c <en>changed together as one logical change.  If you check
597 @c <en>in several files in a single @code{cvs commit}
598 @c <en>operation, @sc{cvs} then forgets that those files were
599 @c <en>checked in together, and the fact that they have the
600 @c <en>same log message is the only thing tying them
601 @c <en>together.  Keeping a @sc{gnu} style @file{ChangeLog}
602 @c <en>can help somewhat.
603 Outra característica de controle de mudanças é manter
604 um controle no fato de que mudanças em vários arquivos
605 foram, de fato, uma única mudança lógica.  Se você
606 devolve vários arquivos numa única operação com
607 @code{cvs commit} (efetivar), @sc{cvs} esquece que os arquivos
608 foram devolvidos juntos, e o fato de eles terem a mesma
609 mensagem de log é a única coisa que os une.  Manter um
610 @file{ChangeLog} no estilo @sc{gnu} pode de certa forma
611 ajudar.
612 @c FIXME: should have an xref to a section which talks
613 @c more about keeping ChangeLog's with CVS, but that
614 @c section hasn't been written yet.
615
616 @c <en>Another aspect of change control, in some systems, is
617 @c <en>the ability to keep track of the status of each
618 @c <en>change.  Some changes have been written by a developer,
619 @c <en>others have been reviewed by a second developer, and so
620 @c <en>on.  Generally, the way to do this with @sc{cvs} is to
621 @c <en>generate a diff (using @code{cvs diff} or @code{diff})
622 @c <en>and email it to someone who can then apply it using the
623 @c <en>@code{patch} utility.  This is very flexible, but
624 @c <en>depends on mechanisms outside @sc{cvs} to make sure
625 @c <en>nothing falls through the cracks.
626 Outro aspecto do controle de mudanças, em alguns
627 sistemas, é a habilidade de se obter informação sobre o
628 status de cada mudança.  Algumas mudanças foram escritas
629 por um certo desenvolvedor, outras foram revisadas por
630 um segundo desenvolvedor, e por aí vai.  Geralmente, a
631 forma de fazer isto com o @sc{cvs} é gerando um diff
632 (usando @code{cvs diff} ou @code{diff}) e mandando por
633 email para alguem que possa resolver as diferenças usando o
634 utilitário @code{patch}.  Isto é muito flexível, mas
635 depende de mecanismos externos ao @sc{cvs} para
636 garantir que nada dê problema.
637
638 @c <en>@item @sc{cvs} is not an automated testing program
639 @item @sc{cvs} não é um programa de testes automático
640
641 @c <en>It should be possible to enforce mandatory use of a
642 @c <en>testsuite using the @code{commitinfo} file.  I haven't
643 @c <en>heard a lot about projects trying to do that or whether
644 @c <en>there are subtle gotchas, however.
645 é possível reforçar o uso obrigatório de uma suíte de
646 testes usando o arquivo @code{commitinfo}.  Eu nunca
647 ouvi falar muito sobre projetos que tentam fazer isto,
648 ou se existem armadilhas sutís nestes casos.
649
650 @c <en>@item @sc{cvs} does not have a builtin process model
651 @item @sc{cvs} não tem um modelo de processo inerente
652
653 @c <en>Some systems provide ways to ensure that changes or
654 @c <en>releases go through various steps, with various
655 @c <en>approvals as needed.  Generally, one can accomplish
656 @c <en>this with @sc{cvs} but it might be a little more work.
657 @c <en>In some cases you'll want to use the @file{commitinfo},
658 @c <en>@file{loginfo}, @file{rcsinfo}, or @file{verifymsg}
659 @c <en>files, to require that certain steps be performed
660 @c <en>before cvs will allow a checkin.  Also consider whether
661 @c <en>features such as branches and tags can be used to
662 @c <en>perform tasks such as doing work in a development tree
663 @c <en>and then merging certain changes over to a stable tree
664 @c <en>only once they have been proven.
665 alguns sistemas fornecem formas de garantir que
666 mudanças ou lançamentos sigam vários passos, com várias
667 aprovações obrigatórias.  Geralmente, pode-se obter
668 isto com o @sc{cvs}, mas acarreta em um pouco mais de
669 trabalho.  Em alguns casos você vai querer usar o
670 arquivo @file{commitinfo}, @file{loginfo},
671 @file{rcsinfo}, ou @file{verifymsg} para exigir que
672 certos passos sejam executados antes que o cvs permita
673 uma devolução (checkin).  Também considere se
674 características tais como ramos e etiquetas (tags) podem ser usadas
675 para realizar tarefas como desenvolver numa árvore de
676 desenvolvimento e então mesclar certas mudanças numa
677 árvore estável apenas quando eles tenham sido confirmados.
678 @end table
679
680 @c ---------------------------------------------------------------------
681 @c <en>@node A sample session
682 @node Uma sessão de exemplo
683 @c <en>@section A sample session
684 @section Uma sessão de exemplo
685 @c <en>@cindex Example of a work-session
686 @cindex Exemplo de uma sessão de trabalho
687 @c <en>@cindex Getting started
688 @cindex Iniciando
689 @c <en>@cindex Work-session, example of
690 @cindex Sessão de trabalho, exemplo de uma
691 @c <en>@cindex tc, Trivial Compiler (example)
692 @cindex tc, Trivial Compiler (Compilador trivial) (exemplo)
693 @c <en>@cindex Trivial Compiler (example)
694 @cindex Trivial Compiler (Compilador trivial) (exemplo)
695
696 @c I think an example is a pretty good way to start.  But
697 @c somewhere in here, maybe after the sample session,
698 @c we need something which is kind of
699 @c a "roadmap" which is more directed at sketching out
700 @c the functionality of CVS and pointing people to
701 @c various other parts of the manual.  As it stands now
702 @c people who read in order get dumped right into all
703 @c manner of hair regarding remote repositories,
704 @c creating a repository, etc.
705 @c
706 @c The following was in the old Basic concepts node.  I don't
707 @c know how good a job it does at introducing modules,
708 @c or whether they need to be introduced so soon, but
709 @c something of this sort might go into some
710 @c introductory material somewhere.
711 @ignore
712 @cindex Modules (intro)
713 The repository contains directories and files, in an
714 arbitrary tree.  The @dfn{modules} feature can be used
715 to group together a set of directories or files into a
716 single entity (@pxref{modules}).  A typical usage is to
717 define one module per project.
718 @end ignore
719
720 @c <en>As a way of introducing @sc{cvs}, we'll go through a
721 @c <en>typical work-session using @sc{cvs}.  The first thing
722 @c <en>to understand is that @sc{cvs} stores all files in a
723 @c <en>centralized @dfn{repository} (@pxref{Repository}); this
724 @c <en>section assumes that a repository is set up.
725 Vamos apresentar o @sc{cvs} usando numa sessão de
726 trabalho típica.  A primeira coisa a saber é que
727 @sc{cvs} guarda todos os arquivos em um
728 @dfn{repository} centralizado (@pxref{Repositório});
729 esta sessão assume que um repositório esteja ativo.
730 @c I'm not sure that the sentence concerning the
731 @c repository quite tells the user what they need to
732 @c know at this point.  Might need to expand on "centralized"
733 @c slightly (maybe not here, maybe further down in the example?)
734
735 @c <en>Suppose you are working on a simple compiler.  The source
736 @c <en>consists of a handful of C files and a @file{Makefile}.
737 @c <en>The compiler is called @samp{tc} (Trivial Compiler),
738 @c <en>and the repository is set up so that there is a module
739 @c <en>called @samp{tc}.
740 Suponha que você esteja trabalhando num compilador
741 simples.  O fonte é um monte de arquivos C e um
742 @file{Makefile}.  O compilador é chamado @samp{tc}
743 (Trivial Compiler, ou Compilador trivial), e o repositório é feito de
744 forma que exista um módulo chamado @samp{tc}.
745
746 @menu
747 @c <en>* Getting the source::          Creating a workspace
748 * Obtendo os fontes::           Criando uma área de trabalho
749 @c <en>* Committing your changes::     Making your work available to others
750 * Efetivando suas alterações::  Disponibilizando seu trabalho para outros
751 @c <en>* Cleaning up::                 Cleaning up
752 * Limpando::                    Limpando
753 @c <en>* Viewing differences::         Viewing differences
754 * Vendo as diferenças::         Vendo as diferenças
755 @end menu
756
757 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
758 @c <en>@node Getting the source
759 @node Obtendo os fontes
760 @c <en>@subsection Getting the source
761 @subsection Obtendo os fontes
762 @c <en>@cindex Getting the source
763 @cindex Obtendo os fontes
764 @c <en>@cindex Checking out source
765 @cindex Pegando emprestado os fontes
766 @c <en>@cindex Fetching source
767 @cindex Recuperando os fontes
768 @c <en>@cindex Source, getting from CVS
769 @cindex Fonte, pegando do CVS
770 @c <en>@cindex Checkout, example
771 @cindex Checkout, exemplo
772
773 @c <en>The first thing you must do is to get your own working copy of the
774 @c <en>source for @samp{tc}.  For this, you use the @code{checkout} command:
775 A primeira coisa a fazer é pegar sua própria cópia de
776 trabalho dos fontes de @samp{tc}.  Para isto, use o comando
777 @code{checkout} (pegar emprestado):
778
779 @example
780 $ cvs checkout tc
781 @end example
782
783 @noindent
784 @c <en>This will create a new directory called @file{tc} and populate it with
785 @c <en>the source files.
786 Isto vai criar um novo diretório chamado @file{tc} e
787 povoa-lo com os fontes.
788
789 @example
790 $ cd tc
791 $ ls
792 CVS         Makefile    backend.c   driver.c    frontend.c  parser.c
793 @end example
794
795 @c <en>The @file{CVS} directory is used internally by
796 @c <en>@sc{cvs}.  Normally, you should not modify or remove
797 @c <en>any of the files in it.
798 O diretório @file{CVS} é usado internamente pelo
799 @sc{cvs}.  Normalmente, você não deve modificar ou
800 remover quaisquer arquivos dele.
801
802 @c <en>You start your favorite editor, hack away at @file{backend.c}, and a couple
803 @c <en>of hours later you have added an optimization pass to the compiler.
804 @c <en>A note to @sc{rcs} and @sc{sccs} users: There is no need to lock the files that
805 @c <en>you want to edit.  @xref{Multiple developers}, for an explanation.
806 Você abre o seu editor favorito, trabalha no arquivo
807 @file{backend.c}, e algumas horas depois você deixou o
808 compilador mais otimizado.  Uma observação para usuários
809 de @sc{rcs} e @sc{sccs}: Não é necessário travar (lock)
810 os arquivos que você quer editar.  @xref{Múltiplos
811 desenvolvedores}, para uma explicação.
812
813 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
814 @c <en>@node Committing your changes
815 @node Efetivando suas alterações
816 @c <en>@subsection Committing your changes
817 @subsection Efetivando suas alterações
818 @c <en>@cindex Committing changes to files
819 @cindex Efetivando mudanças nos arquivos
820 @c <en>@cindex Log message entry
821 @cindex Registro de mensagens de log
822
823 @c <en>When you have checked that the compiler is still compilable you decide
824 @c <en>to make a new version of @file{backend.c}.  This will
825 @c <en>store your new @file{backend.c} in the repository and
826 @c <en>make it available to anyone else who is using that same
827 @c <en>repository.
828 Quando você se certificar que o compilador ainda é
829 compilável você decide criar uma nova versão de
830 @file{backend.c}.  Tal ato vai botar o seu novo
831 @file{backend.c} no repositório e torná-lo disponível
832 para qualquer outra pessoa que esteja usando o mesmo
833 repositório.
834
835 @example
836 $ cvs commit backend.c
837 @end example
838
839 @noindent
840 @c <en>@sc{cvs} starts an editor, to allow you to enter a log
841 @c <en>message.  You type in ``Added an optimization pass.'',
842 @c <en>save the temporary file, and exit the editor.
843 @sc{cvs} inicia um editor, para que você possa digitar
844 uma messagem de log.  Você digita ``Uma otimização adicionada.'',
845 salva o arquivo temporário e sai do editor.
846
847 @c <en>@cindex CVSEDITOR, environment variable
848 @cindex CVSEDITOR, variável de ambiente
849 @c <en>@cindex EDITOR, environment variable
850 @cindex EDITOR, variável de ambiente
851 @c <en>The environment variable @code{$CVSEDITOR} determines
852 @c <en>which editor is started.  If @code{$CVSEDITOR} is not
853 @c <en>set, then if the environment variable @code{$EDITOR} is
854 @c <en>set, it will be used. If both @code{$CVSEDITOR} and
855 @c <en>@code{$EDITOR} are not set then there is a default
856 @c <en>which will vary with your operating system, for example
857 @c <en>@code{vi} for unix or @code{notepad} for Windows
858 @c <en>NT/95.
859 A variável de ambiente @code{$CVSEDITOR} determina qual
860 editor vai ser aberto.  Se @code{$CVSEDITOR} não existe,
861 e se a variável de ambiente @code{$EDITOR} existe, esta
862 última é usada.  Se nenhuma das duas @code{$CVSEDITOR} e
863 @code{$EDITOR} existem então o padrão vai variar
864 dependendo do sistema operacional, por exemplo,
865 @code{vi} para unix ou @code{notepad} para Windows
866 NT/95.
867
868 @c <en>@cindex VISUAL, environment variable
869 @cindex VISUAL, variável de ambiente
870 @c <en>In addition, @sc{cvs} checks the @code{$VISUAL} environment
871 @c <en>variable.  Opinions vary on whether this behavior is desirable and
872 @c <en>whether future releases of @sc{cvs} should check @code{$VISUAL} or
873 @c <en>ignore it.  You will be OK either way if you make sure that
874 @c <en>@code{$VISUAL} is either unset or set to the same thing as
875 @c <en>@code{$EDITOR}.
876 Adicionalmente, @sc{cvs} busca pela variável de
877 ambiente @code{$VISUAL}.  Isto gera duas opiniões
878 divergentes, se este é um comportamento desejável ou se
879 releases futuras do @sc{cvs} devem verificar
880 @code{$VISUAL} ou ignorá-la.  Você vai estar OK se não
881 tiver a variável @code{$VISUAL} ou se ela for igual à
882 @code{$EDITOR}.
883
884 @c This probably should go into some new node
885 @c containing detailed info on the editor, rather than
886 @c the intro.  In fact, perhaps some of the stuff with
887 @c CVSEDITOR and -m and so on should too.
888 @c <en>When @sc{cvs} starts the editor, it includes a list of
889 @c <en>files which are modified.  For the @sc{cvs} client,
890 @c <en>this list is based on comparing the modification time
891 @c <en>of the file against the modification time that the file
892 @c <en>had when it was last gotten or updated.  Therefore, if
893 @c <en>a file's modification time has changed but its contents
894 @c <en>have not, it will show up as modified.  The simplest
895 @c <en>way to handle this is simply not to worry about it---if
896 @c <en>you proceed with the commit @sc{cvs} will detect that
897 @c <en>the contents are not modified and treat it as an
898 @c <en>unmodified file.  The next @code{update} will clue
899 @c <en>@sc{cvs} in to the fact that the file is unmodified,
900 @c <en>and it will reset its stored timestamp so that the file
901 @c <en>will not show up in future editor sessions.
902 Quando o @sc{cvs} inicia o editor, ele inclui uma lista
903 de arquivos que foram modificados.  Para o @sc{cvs}
904 cliente, esta lista é baseada na comparação da data de
905 modificação do arquivo com a data de modificação que o
906 arquivo tinha da última vez que foi pego ou
907 atualizado.  Entretanto, se a data de modificação de um
908 arquivo mudou mas seu conteúdo não, ele vai ser
909 considerado modificado.  A maneira mais fácil de lidar
910 com isto é desconsidarando---se você seguir efetivando,
911 o @sc{cvs} vai notar que o conteúdo está intacto e vai
912 tratar o arquivo como não-modificado.  O próximo
913 @code{update} vai dar a dica para o @sc{cvs} de que o
914 arquivo está igual, e isto vai restaurar a data,
915 fazendo com que o arquivo não apareça nas próximas
916 aparições do editor.
917 @c FIXCVS: Might be nice if "commit" and other commands
918 @c would reset that timestamp too, but currently commit
919 @c doesn't.
920 @c FIXME: Need to talk more about the process of
921 @c prompting for the log message.  Like show an example
922 @c of what it pops up in the editor, for example.  Also
923 @c a discussion of how to get the "a)bort, c)ontinue,
924 @c e)dit" prompt and what to do with it.  Might also
925 @c work in the suggestion that if you want a diff, you
926 @c should make it before running commit (someone
927 @c suggested that the diff pop up in the editor.  I'm
928 @c not sure that is better than telling people to run
929 @c "cvs diff" first if that is what they want, but if
930 @c we want to tell people that, the manual possibly
931 @c should say it).
932
933 @c <en>If you want to avoid
934 @c <en>starting an editor you can specify the log message on
935 @c <en>the command line using the @samp{-m} flag instead, like
936 @c <en>this:
937 Se você quer evitar o aparecimento de um editor, você
938 pode especificar a mensagem de log na linha de comando
939 usando a opção @samp{-m}, desta forma:
940
941 @example
942 $ cvs commit -m "Uma otimização adicionada" backend.c
943 @end example
944
945 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
946 @c <en>@node Cleaning up
947 @node Limpando
948 @c <en>@subsection Cleaning up
949 @subsection Limpando
950 @c <en>@cindex Cleaning up
951 @cindex Limpando
952 @c <en>@cindex Working copy, removing
953 @cindex Cópia de trabalho, removendo
954 @c <en>@cindex Removing your working copy
955 @cindex Removendo sua cópia de trabalho
956 @c <en>@cindex Releasing your working copy
957 @cindex Lançando sua cópia de trabalho
958
959 @c <en>Before you turn to other tasks you decide to remove your working copy of
960 @c <en>tc.  One acceptable way to do that is of course
961 Antes de ir fazer outras tarefas, você decide remover
962 sua cópia de trabalho de tc.  Uma forma aceitável de
963 fazer isto é, obviamente:
964
965 @example
966 $ cd ..
967 $ rm -r tc
968 @end example
969
970 @noindent
971 mas uma forma melhor é usando o comando @code{release} (@pxref{release}):
972
973 @example
974 $ cd ..
975 $ cvs release -d tc
976 M driver.c
977 ? tc
978 You have [1] altered files in this repository.
979 Are you sure you want to release (and delete) directory `tc': n
980 ** `release' aborted by user choice.
981 @end example
982
983 @c <en>The @code{release} command checks that all your modifications have been
984 @c <en>committed.  If history logging is enabled it also makes a note in the
985 @c <en>history file.  @xref{history file}.
986 O comando @code{release} verifica se todas as suas
987 modificações foram efetivadas.  Se o registro
988 histórico (history log) está ativo ele também escreve uma
989 observação no arquivo de histórico.  @xref{arquivo
990 history (histórico)}.
991
992 @c <en>When you use the @samp{-d} flag with @code{release}, it
993 @c <en>also removes your working copy.
994 Quando você usa a opção @samp{-d} com o @code{release},
995 ele também remove a sua cópia de trabalho local.
996
997 @c <en>In the example above, the @code{release} command wrote a couple of lines
998 @c <en>of output.  @samp{? tc} means that the file @file{tc} is unknown to @sc{cvs}.
999 @c <en>That is nothing to worry about: @file{tc} is the executable compiler,
1000 @c <en>and it should not be stored in the repository.  @xref{cvsignore},
1001 @c <en>for information about how to make that warning go away.
1002 @c <en>@xref{release output}, for a complete explanation of
1003 @c <en>all possible output from @code{release}.
1004 No exemplo acima, o comando @code{release} escreve
1005 poucas linhas de saída.  @samp{? tc} significa que o
1006 arquivo @file{tc} é desconhecido pelo @sc{cvs}.  Não há
1007 nada com que se preocupar: @file{tc} é um compilador
1008 executável, e não deve ser guardado no
1009 repositório.  @xref{cvsignore}, para ver como fazer para
1010 sumir com este aviso.  @xref{release output}, para uma
1011 explicação geral de todas as possíveis saídas do
1012 @code{release}.
1013
1014 @c <en>@samp{M driver.c} is more serious.  It means that the
1015 @c <en>file @file{driver.c} has been modified since it was
1016 @c <en>checked out.
1017 @samp{M driver.c} é mais sério.  Significa que o arquivo
1018 @file{driver.c} foi modificado desde quando foi pego.
1019
1020 @c <en>The @code{release} command always finishes by telling
1021 @c <en>you how many modified files you have in your working
1022 @c <en>copy of the sources, and then asks you for confirmation
1023 @c <en>before deleting any files or making any note in the
1024 @c <en>history file.
1025 O comando @code{release} sempre termina dizendo quantos
1026 arquivos modificados você tem em sua cópia de trabalho
1027 dos fontes, e então pergunta por confirmação antes de
1028 apagar qualquer arquivo ou escrever qualquer coisa no
1029 arquivo de histórico.
1030
1031 @c <en>You decide to play it safe and answer @kbd{n @key{RET}}
1032 @c <en>when @code{release} asks for confirmation.
1033 Você decide que executar isto é seguro e responde @kbd{n @key{RET}}
1034 quando @code{release} pede uma confirmação.
1035
1036 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1037 @c <en>@node Viewing differences
1038 @node Vendo as diferenças
1039 @c <en>@subsection Viewing differences
1040 @subsection Vendo diferenças
1041 @c <en>@cindex Viewing differences
1042 @cindex Vendo diferenças
1043 @c <en>@cindex Diff
1044 @cindex Diff
1045
1046 @c <en>You do not remember modifying @file{driver.c}, so you want to see what
1047 @c <en>has happened to that file.
1048 Você não lembra se modificou @file{driver.c}.  Logo,
1049 você precisa ver o que aconteceu com este arquivo.
1050
1051 @example
1052 $ cd tc
1053 $ cvs diff driver.c
1054 @end example
1055
1056 @c <en>This command runs @code{diff} to compare the version of @file{driver.c}
1057 @c <en>that you checked out with your working copy.  When you see the output
1058 @c <en>you remember that you added a command line option that enabled the
1059 @c <en>optimization pass.  You check it in, and release the module.
1060 Este comando roda o @code{diff} para comparar a versão
1061 de @file{driver.c} que você pegou com a da sua cópia de
1062 trabalho.  Quando você vê a saída, você lembra de ter
1063 adicionado uma opção de linha de comando que permite a
1064 otimização.  Você devolve e lança (release) o módulo.
1065 @c FIXME: we haven't yet defined the term "check in".
1066
1067 @example
1068 @c <en>$ cvs commit -m "Added an optimization pass" driver.c
1069 $ cvs commit -m "Uma otimização adicionada" driver.c
1070 Checking in driver.c;
1071 /usr/local/cvsroot/tc/driver.c,v  <--  driver.c
1072 new revision: 1.2; previous revision: 1.1
1073 done
1074 $ cd ..
1075 $ cvs release -d tc
1076 ? tc
1077 You have [0] altered files in this repository.
1078 Are you sure you want to release (and delete) directory `tc': y
1079 @end example
1080
1081 @c ---------------------------------------------------------------------
1082 @c <en>@node Repository
1083 @node Repositório
1084 @c <en>@chapter The Repository
1085 @chapter O Repositório
1086 @c <en>@cindex Repository (intro)
1087 @cindex Repositório (intro)
1088 @c <en>@cindex Repository, example
1089 @cindex Repositório, exemplo
1090 @c <en>@cindex Layout of repository
1091 @cindex Estrutura do repositório
1092 @c <en>@cindex Typical repository
1093 @cindex Repositório típico
1094 @c <en>@cindex /usr/local/cvsroot, as example repository
1095 @cindex /usr/local/cvsroot, como um repositório de exemplo
1096 @c <en>@cindex cvsroot
1097 @cindex cvsroot
1098
1099 @c <en>The @sc{cvs} @dfn{repository} stores a complete copy of
1100 @c <en>all the files and directories which are under version
1101 @c <en>control.
1102 O @dfn{repositório} do @sc{cvs} guarda uma cópia
1103 completa de todos os arquivos e diretórios que estão
1104 sob controle de versão.
1105
1106 @c <en>Normally, you never access any of the files in the
1107 @c <en>repository directly.  Instead, you use @sc{cvs}
1108 @c <en>commands to get your own copy of the files into a
1109 @c <en>@dfn{working directory}, and then
1110 @c <en>work on that copy.  When you've finished a set of
1111 @c <en>changes, you check (or @dfn{commit}) them back into the
1112 @c <en>repository.  The repository then contains the changes
1113 @c <en>which you have made, as well as recording exactly what
1114 @c <en>you changed, when you changed it, and other such
1115 @c <en>information.  Note that the repository is not a
1116 @c <en>subdirectory of the working directory, or vice versa;
1117 @c <en>they should be in separate locations.
1118 Normalmente, você nunca acessa qualquer dos arquivos do
1119 repositório diretamente.  Ao invés disso, você usa os
1120 comandos do @sc{cvs} para pegar emprestada a sua cópia
1121 dos arquivos num @dfn{diretório de trabalho}, e então
1122 trabalhar nesta cópia.  Quando você termina um conjunto
1123 de mudanças, você as @dfn{efetiva} no repositório.  O
1124 repositório então passa a conter as mudanças que você
1125 fez, assim como gravar exatamente o que você fez,
1126 quando você fez e outras informações deste
1127 tipo.  Observe que o repositório não é um subdiretório
1128 do diretório de trabalho nem vice-versa; eles estão em
1129 locais diferentes.
1130 @c Need some example, e.g. repository
1131 @c /usr/local/cvsroot; working directory
1132 @c /home/joe/sources.  But this node is too long
1133 @c as it is; need a little reorganization...
1134
1135 @c <en>@cindex :local:, setting up
1136 @cindex :local:, ajustando
1137 @c <en>@sc{cvs} can access a repository by a variety of
1138 @c <en>means.  It might be on the local computer, or it might
1139 @c <en>be on a computer across the room or across the world.
1140 @c <en>To distinguish various ways to access a repository, the
1141 @c <en>repository name can start with an @dfn{access method}.
1142 @c <en>For example, the access method @code{:local:} means to
1143 @c <en>access a repository directory, so the repository
1144 @c <en>@code{:local:/usr/local/cvsroot} means that the
1145 @c <en>repository is in @file{/usr/local/cvsroot} on the
1146 @c <en>computer running @sc{cvs}.  For information on other
1147 @c <en>access methods, see @ref{Remote repositories}.
1148 @sc{cvs} pode acessar um repositório de várias
1149 formas.  Ele pode estar no mesmo computador, ou num
1150 computador do outro lado da sala, ou do outro lado do
1151 mundo.  Para distinguir as várias formas de acessar um
1152 repositório o seu nome deve começar com um
1153 @dfn{método de acesso}.  Por exemplo, o método de acesso
1154 @code{:local:} significa acessar um diretório que é um
1155 repositório.  Logo, @code{:local:/usr/local/cvsroot}
1156 significa que o repositório está em
1157 @file{/usr/local/cvsroot} no computador rodando
1158 @sc{cvs}.  Para informações sobre outros métodos de
1159 acesso, vá em @ref{Repositórios remotos}.
1160
1161 @c Can se say this more concisely?  Like by passing
1162 @c more of the buck to the Remote repositories node?
1163 @c <en>If the access method is omitted, then if the repository
1164 @c <en>starts with @samp{/}, then @code{:local:} is
1165 @c <en>assumed.  If it does not start with @samp{/} then either
1166 @c <en>@code{:ext:} or @code{:server:} is assumed.  For
1167 @c <en>example, if you have a local repository in
1168 @c <en>@file{/usr/local/cvsroot}, you can use
1169 @c <en>@code{/usr/local/cvsroot} instead of
1170 @c <en>@code{:local:/usr/local/cvsroot}.  But if (under
1171 @c <en>Windows NT, for example) your local repository is
1172 @c <en>@file{c:\src\cvsroot}, then you must specify the access
1173 @c <en>method, as in @code{:local:c:/src/cvsroot}.
1174 Se o método de acesso é omitido e se o repositório
1175 começa com @samp{/}, então assume-se @code{:local:}.  Se
1176 não começa com @samp{/} então ou @code{:ext:} ou
1177 @code{:server:} é assumido.  Por exemplo, se você tem um
1178 repositório local em @file{/usr/local/cvsroot}, você
1179 pode usar @code{/usr/local/cvsroot} ao invés de
1180 @code{:local:/usr/local/cvsroot}.  Mas se (no Windows
1181 NT, por exemplo) seu repositório local é
1182 @file{c:\src\cvsroot}, então você deve especificar o
1183 método de acesso, como em @code{:local:c:/src/cvsroot}.
1184
1185 @c This might appear to go in Repository storage, but
1186 @c actually it is describing something which is quite
1187 @c user-visible, when you do a "cvs co CVSROOT".  This
1188 @c isn't necessary the perfect place for that, though.
1189 @c <en>The repository is split in two parts.  @file{$CVSROOT/CVSROOT} contains
1190 @c <en>administrative files for @sc{cvs}.  The other directories contain the actual
1191 @c <en>user-defined modules.
1192 O repositório é separado em duas
1193 partes.  @file{$CVSROOT/CVSROOT} contém arquivos
1194 administrativos do @sc{cvs}.  Os outros diretórios
1195 contém os módulos definidos pelo usuário.
1196
1197 @menu
1198 @c <en>* Specifying a repository::  Telling CVS where your repository is
1199 * Especificando um repositório::          Dizendo ao CVS onde está o seu repositório
1200 @c <en>* Repository storage::       The structure of the repository
1201 * Armazenamento do repositório::          A estrutura do repositório
1202 @c <en>* Working directory storage:: The structure of working directories
1203 * Armazenamento do Diretório de trabalho:: A estrutura dos diretórios de trabalho
1204 @c <en>* Intro administrative files::  Defining modules
1205 * Intro aos arquivos administrativos:: Definindo módulos
1206 @c <en>* Multiple repositories::       Multiple repositories
1207 * Repositórios múltiplos::             Repositórios múltiplos
1208 @c <en>* Creating a repository::       Creating a repository
1209 * Criando um repositório::             Criando um repositório
1210 @c <en>* Backing up::                  Backing up a repository
1211 * Fazendo backup::                     Criando Backup de um repositório
1212 @c <en>* Moving a repository::         Moving a repository
1213 * Movendo um repositório::             Movendo um repositório
1214 @c <en>* Remote repositories::         Accessing repositories on remote machines
1215 * Repositórios remotos::               Acessando repositórios em máquinas remotas
1216 @c <en>* Read-only access::            Granting read-only access to the repository
1217 * Acesso somente-leitura::             Dando acesso somente-leitura ao repositório
1218 @c <en>* Server temporary directory::  The server creates temporary directories
1219 * Diretório temporário do servidor::   O servidor cria diretórios temporários
1220 @end menu
1221
1222 @c <en>@node Specifying a repository
1223 @node Especificando um repositório
1224 @c <en>@section Telling CVS where your repository is
1225 @section Dizendo ao CVS onde está o seu repositório
1226
1227 @c <en>There are several ways to tell @sc{cvs}
1228 @c <en>where to find the repository.  You can name the
1229 @c <en>repository on the command line explicitly, with the
1230 @c <en>@code{-d} (for "directory") option:
1231 Existem várias formas de dizer ao @sc{cvs} onde
1232 encontrar o repositório.  Você pode dar o nome do
1233 repositório explicitamente na linha de comando, com a
1234 opção @code{-d} (de "diretório"):
1235
1236 @example
1237 cvs -d /usr/local/cvsroot checkout yoyodyne/tc
1238 @end example
1239
1240 @c <en>@cindex .profile, setting CVSROOT in
1241 @cindex .profile, configurando o CVSROOT no
1242 @c <en>@cindex .cshrc, setting CVSROOT in
1243 @cindex .cshrc, configurando o CVSROOT no
1244 @c <en>@cindex .tcshrc, setting CVSROOT in
1245 @cindex .tcshrc, configurando o CVSROOT no
1246 @c <en>@cindex .bashrc, setting CVSROOT in
1247 @cindex .bashrc, configurando o CVSROOT no
1248 @c <en>@cindex CVSROOT, environment variable
1249 @cindex CVSROOT, variável de ambiente
1250 @c <en>        Or you can set the @code{$CVSROOT} environment
1251 @c <en>variable to an absolute path to the root of the
1252 @c <en>repository, @file{/usr/local/cvsroot} in this example.
1253 @c <en>To set @code{$CVSROOT}, @code{csh} and @code{tcsh}
1254 @c <en>users should have this line in their @file{.cshrc} or
1255 @c <en>@file{.tcshrc} files:
1256         Ou você pode ajustar a variável de ambiente
1257 @code{$CVSROOT} para um caminho absoluto para a raiz
1258 (root) do repositório, @file{/usr/local/cvsroot} neste
1259 exemplo.  Para ajustar o @code{$CVSROOT}, usuário de
1260 @code{csh} e @code{tcsh} devem ter esta linha no seu
1261 arquivo @file{.cshrc} ou @file{.tcshrc}:
1262
1263 @example
1264 setenv CVSROOT /usr/local/cvsroot
1265 @end example
1266
1267 @noindent
1268 @c <en>@code{sh} and @code{bash} users should instead have these lines in their
1269 @c <en>@file{.profile} or @file{.bashrc}:
1270 usuários de @code{sh} e @code{bash} devem, por sua vez,
1271 ter estas linhas nos seus @file{.profile} ou @file{.bashrc}:
1272
1273 @example
1274 CVSROOT=/usr/local/cvsroot
1275 export CVSROOT
1276 @end example
1277
1278 @c <en>@cindex Root file, in CVS directory
1279 @cindex O arquivo Root, no diretório CVS
1280 @c <en>@cindex CVS/Root file
1281 @cindex O arquivo CVS/Root
1282 @c <en>        A repository specified with @code{-d} will
1283 @c <en>override the @code{$CVSROOT} environment variable.
1284 @c <en>Once you've checked a working copy out from the
1285 @c <en>repository, it will remember where its repository is
1286 @c <en>(the information is recorded in the
1287 @c <en>@file{CVS/Root} file in the working copy).
1288         Um repositório especificado com @code{-d} se
1289 sobrepõe à variável de ambiente @code{$CVSROOT}.  Uma
1290 vez que você tenha pego emprestada uma cópia de
1291 trabalho do repositório, ela vai se lembrar onde está o
1292 seu repositório (a informação é registrada no arquivo
1293 @file{CVS/Root} na cópia de trabalho).
1294
1295 @c <en>The @code{-d} option and the @file{CVS/Root} file both
1296 @c <en>override the @code{$CVSROOT} environment variable.  If
1297 @c <en>@code{-d} option differs from @file{CVS/Root}, the
1298 @c <en>former is used.  Of course, for proper operation they
1299 @c <en>should be two ways of referring to the same repository.
1300 Tanto a opção @code{-d} quanto o arquivo
1301 @file{CVS/Root} sobreescrevem a variável de ambiente
1302 @code{$CVSROOT}.  Se a opção @code{-d} é diferente do
1303 @file{CVS/Root}, a primeira é usada.  Obviamente, para
1304 operações corretas, elas devem ser duas formas de
1305 referenciar o mesmo repositório.
1306
1307 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1308 @c <en>@node Repository storage
1309 @node Armazenamento do repositório
1310 @c <en>@section How data is stored in the repository
1311 @section Como os dados são guardados no repositório
1312 @c <en>@cindex Repository, how data is stored
1313 @cindex Repositório, como os dados são guardados no
1314
1315 @c <en>For most purposes it isn't important @emph{how}
1316 @c <en>@sc{cvs} stores information in the repository.  In
1317 @c <en>fact, the format has changed in the past, and is likely
1318 @c <en>to change in the future.  Since in almost all cases one
1319 @c <en>accesses the repository via @sc{cvs} commands, such
1320 @c <en>changes need not be disruptive.
1321 Para a maioria das aplicações, não importa @emph{como}
1322 o @sc{cvs} guarda as informações no repositório.  De
1323 fato, o formato mudou no passado, e provavelmente vai
1324 mudar no futuro.  Já que em quase todo os casos o acesso
1325 ao repositório é feito via comandos do @sc{cvs}, tais
1326 mudanças não serão radicais.
1327
1328 @c <en>However, in some cases it may be necessary to
1329 @c <en>understand how @sc{cvs} stores data in the repository,
1330 @c <en>for example you might need to track down @sc{cvs} locks
1331 @c <en>(@pxref{Concurrency}) or you might need to deal with
1332 @c <en>the file permissions appropriate for the repository.
1333 Entretanto, em alguns casos pode ser necessário
1334 entender como o @sc{cvs} guarda os dados no
1335 repositório.  Por exemplo, você pode precisar localizar
1336 travas do @sc{cvs} (@pxref{Concorrência}) ou você pode
1337 precisar lidar com permissões de arquivos apropriadas
1338 para o repositório.
1339
1340 @menu
1341 @c <en>* Repository files::            What files are stored in the repository
1342 * Arquivos do repositório::           Quais arquivos são guardados no repositório
1343 @c <en>* File permissions::            File permissions
1344 * Permissões de arquivos::            Permisões de arquivos
1345 @c <en>* Windows permissions::         Issues specific to Windows
1346 * Permissões no Windows::         Questões específicas ao Windows
1347 @c <en>* Attic::                       Some files are stored in the Attic
1348 * Attic::                       Alguns arquivos são guardados no Attic
1349 @c <en>* CVS in repository::           Additional information in CVS directory
1350 * CVS no repositório::           Informações adicionais no diretório CVS
1351 @c <en>* Locks::                       CVS locks control concurrent accesses
1352 * Travas::                       Travas do CVS controlam acesso concorrente
1353 @c <en>* CVSROOT storage::             A few things about CVSROOT are different
1354 * Armazenamento do CVSROOT::          Umas poucas coisas sobre CVSROOT são diferentes
1355 @end menu
1356
1357 @c <en>@node Repository files
1358 @node Arquivos do repositório
1359 @c <en>@subsection Where files are stored within the repository
1360 @subsection Onde arquivos são guardados dentro do repositório
1361
1362 @c @cindex Filenames, legal
1363 @c @cindex Legal filenames
1364 @c Somewhere we need to say something about legitimate
1365 @c characters in filenames in working directory and
1366 @c repository.  Not "/" (not even on non-unix).  And
1367 @c here is a specific set of issues:
1368 @c      Files starting with a - are handled inconsistently. They can not
1369 @c   be added to a repository with an add command, because it they are
1370 @c   interpreted as a switch. They can appear in a repository if they are
1371 @c   part of a tree that is imported. They can not be removed from the tree
1372 @c   once they are there.
1373 @c Note that "--" *is* supported (as a
1374 @c consequence of using GNU getopt).  Should document
1375 @c this somewhere ("Common options"?).  The other usual technique,
1376 @c "./-foo", isn't as effective, at least for "cvs add"
1377 @c which doesn't support pathnames containing "/".
1378
1379 @c <en>The overall structure of the repository is a directory
1380 @c <en>tree corresponding to the directories in the working
1381 @c <en>directory.  For example, supposing the repository is in
1382 A estrutura geral do repositório é uma árvore de
1383 diretórios correspondendo aos diretórios no diretório
1384 de trabalho.  Por exemplo, suponha que o repositório
1385 está em
1386
1387 @example
1388 /usr/local/cvsroot
1389 @end example
1390
1391 @noindent
1392 @c <en>here is a possible directory tree (showing only the
1393 @c <en>directories):
1394 Aqui está uma possível árvore de diretórios (mostrando
1395 apenas os diretórios):
1396
1397 @example
1398 @t{/usr}
1399  |
1400  +--@t{local}
1401  |   |
1402  |   +--@t{cvsroot}
1403  |   |    |
1404  |   |    +--@t{CVSROOT}
1405 @c <en>          |      (administrative files)
1406           |      (arquivos administrativos)
1407           |
1408           +--@t{gnu}
1409           |   |
1410           |   +--@t{diff}
1411 @c <en>          |   |   (source code to @sc{gnu} diff)
1412           |   |   (código fonte do @sc{gnu} diff)
1413           |   |
1414           |   +--@t{rcs}
1415 @c <en>          |   |   (source code to @sc{rcs})
1416           |   |   (código fonte do @sc{rcs})
1417           |   |
1418           |   +--@t{cvs}
1419 @c <en>          |       (source code to @sc{cvs})
1420           |       (código fonte do @sc{cvs})
1421           |
1422           +--@t{yoyodyne}
1423               |
1424               +--@t{tc}
1425               |    |
1426               |    +--@t{man}
1427               |    |
1428               |    +--@t{testing}
1429               |
1430               +--(other Yoyodyne software)
1431 @end example
1432
1433 @c <en>With the directories are @dfn{history files} for each file
1434 @c <en>under version control.  The name of the history file is
1435 @c <en>the name of the corresponding file with @samp{,v}
1436 @c <en>appended to the end.  Here is what the repository for
1437 @c <en>the @file{yoyodyne/tc} directory might look like:
1438 Nos diretórios estão os @dfn{arquivos de histórico} para
1439 cada arquivo sob controle de versão.  O nome do arquivo
1440 de histórico é o nome do arquivo correspondente com um
1441 @samp{,v} no final.  Aqui está como o repositório do
1442 diretório @file{yoyodyne/tc} deve se parecer:
1443 @c FIXME: Should also mention CVS (CVSREP)
1444 @c FIXME? Should we introduce Attic with an xref to
1445 @c Attic?  Not sure whether that is a good idea or not.
1446 @example
1447   @code{$CVSROOT}
1448     |
1449     +--@t{yoyodyne}
1450     |   |
1451     |   +--@t{tc}
1452     |   |   |
1453             +--@t{Makefile,v}
1454             +--@t{backend.c,v}
1455             +--@t{driver.c,v}
1456             +--@t{frontend.c,v}
1457             +--@t{parser.c,v}
1458             +--@t{man}
1459             |    |
1460             |    +--@t{tc.1,v}
1461             |
1462             +--@t{testing}
1463                  |
1464                  +--@t{testpgm.t,v}
1465                  +--@t{test2.t,v}
1466 @end example
1467
1468 @c <en>@cindex History files
1469 @cindex Arquivos de histórico
1470 @c <en>@cindex RCS history files
1471 @cindex Arquivos de histórico do RCS
1472 @c The first sentence, about what history files
1473 @c contain, is kind of redundant with our intro to what the
1474 @c repository does in node Repository....
1475 @c <en>The history files contain, among other things, enough
1476 @c <en>information to recreate any revision of the file, a log
1477 @c <en>of all commit messages and the user-name of the person
1478 @c <en>who committed the revision.  The history files are
1479 @c <en>known as @dfn{RCS files}, because the first program to
1480 @c <en>store files in that format was a version control system
1481 @c <en>known as @sc{rcs}.  For a full
1482 @c <en>description of the file format, see the @code{man} page
1483 @c <en>@cite{rcsfile(5)}, distributed with @sc{rcs}, or the
1484 @c <en>file @file{doc/RCSFILES} in the @sc{cvs} source
1485 @c <en>distribution.  This
1486 @c <en>file format has become very common---many systems other
1487 @c <en>than @sc{cvs} or @sc{rcs} can at least import history
1488 @c <en>files in this format.
1489 Os arquivos de histórico contém, entre outras coisas,
1490 informações suficientes para recriar qualquer revisão
1491 do arquivo, um log com todas as mensagens ???de
1492 commit??? e o usuário que efetivou (commit) a
1493 @comment This is the same as a "log message", "log entry", or whatever else
1494 @comment you might want to call it.  It is sometimes called a "commit message"
1495 @comment in this manual because it is entered into the log at commit time.
1496 @comment -DRP
1497 revisão.  Os arquivos de histórico são conhecidos como
1498 @dfn{arquivos RCS} (RCS files), pois o primeiro
1499 programa a guardar arquivos neste formato foi o sistema
1500 de controle de versões conhecido como @sc{rcs}.  Para
1501 uma descrição completa do formato de arquivo, leia a
1502 página @code{man} @cite{rcsfile(5)}, distribuída com o
1503 @sc{rcs}, ou o arquivo @file{doc/RCSFILES} na
1504 distribuição dos fontes do @sc{cvs}.  Este formato de
1505 arquivo se tornou muito comum---muitos sistemas além do
1506 @sc{cvs} e do @sc{rcs} podem, pelo menos, importar
1507 arquivos de histórico neste formato.
1508 @c FIXME: Think about including documentation for this
1509 @c rather than citing it?  In the long run, getting
1510 @c this to be a standard (not sure if we can cope with
1511 @c a standards process as formal as IEEE/ANSI/ISO/etc,
1512 @c though...) is the way to go, so maybe citing is
1513 @c better.
1514
1515 @c <en>The @sc{rcs} files used in @sc{cvs} differ in a few
1516 @c <en>ways from the standard format.  The biggest difference
1517 @c <en>is magic branches; for more information see @ref{Magic
1518 @c <en>branch numbers}.  Also in @sc{cvs} the valid tag names
1519 @c <en>are a subset of what @sc{rcs} accepts; for @sc{cvs}'s
1520 @c <en>rules see @ref{Tags}.
1521 Os arquivos @sc{rcs} usados no @sc{cvs} diferem em
1522 algumas poucas coisas do formato padrão.  A maior
1523 diferença são os ramos mágicos; para mais informações
1524 veja em @ref{Números de ramos mágicos}.  Além disso, no
1525 @sc{cvs} os nomes válidos de etiquetas (tags) é um subconjunto dos
1526 que são aceitos pelo @sc{rcs}; para regras do @sc{cvs},
1527 leia em @ref{Etiquetas}.
1528
1529 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1530 @c <en>@node File permissions
1531 @node Permissões de arquivos
1532 @c <en>@subsection File permissions
1533 @subsection Permissões de arquivos
1534 @c -- Move this to @node Creating a repository or similar
1535 @c <en>@cindex Security, file permissions in repository
1536 @cindex Segurança, permissões de arquivos no repositório
1537 @c <en>@cindex File permissions, general
1538 @cindex Permissões de arquivos, geral
1539 @c <en>@cindex Permissions, general
1540 @cindex Permissões, geral
1541 @c FIXME: we need to somehow reflect "permissions in
1542 @c repository" versus "permissions in working
1543 @c directory" in the index entries.
1544 @c <en>@cindex Group, UNIX file permissions, in repository
1545 @cindex Grupo, permissões de arquivos UNIX, no repositório
1546 @c <en>@cindex Read-only files, in repository
1547 @cindex Arquivos somente-leitura, no repositório
1548 @c <en>All @samp{,v} files are created read-only, and you
1549 @c <en>should not change the permission of those files.  The
1550 @c <en>directories inside the repository should be writable by
1551 @c <en>the persons that have permission to modify the files in
1552 @c <en>each directory.  This normally means that you must
1553 @c <en>create a UNIX group (see group(5)) consisting of the
1554 @c <en>persons that are to edit the files in a project, and
1555 @c <en>set up the repository so that it is that group that
1556 @c <en>owns the directory.
1557 @c <en>(On some systems, you also need to set the set-group-ID-on-execution bit
1558 @c <en>on the repository directories (see chmod(1)) so that newly-created files
1559 @c <en>and directories get the group-ID of the parent directory rather than
1560 @c <en>that of the current process.)
1561 Todos os arquivos @samp{,v} são criados
1562 somente-leitura, e você não deve mudar as permissões
1563 destes arquivos.  Os diretórios dentro do repositório
1564 devem dar permissão de escrita para as pessoas que tem
1565 permissão para modificar os arquivos em cada diretório.
1566 Isto normalmente significa que você deve criar um grupo
1567 do UNIX (veja em group(5)) consistindo nas pessoas que
1568 vão editar os arquivos num projeto, e ajustar o
1569 repositório tal que aquele grupo seja o dono do
1570 diretório.  (Em alguns sistemas, você também vai
1571 precisar ajustar o bit set-group-ID-on-execution nos
1572 diretórios do repositório (veja em chmod(1)) de forma
1573 que arquivos e diretório criados recebam o ID de grupo
1574 do diretório pai e não do processo atual.)
1575
1576 @c See also comment in commitinfo node regarding cases
1577 @c which are really awkward with unix groups.
1578
1579 @c <en>This means that you can only control access to files on
1580 @c <en>a per-directory basis.
1581 Isto significa que você pode apenas controlar o acesso
1582 aos arquivos por diretório.
1583
1584 @c <en>Note that users must also have write access to check
1585 @c <en>out files, because @sc{cvs} needs to create lock files
1586 @c <en>(@pxref{Concurrency}).  You can use LockDir in CVSROOT/config
1587 @c <en>to put the lock files somewhere other than in the repository
1588 @c <en>if you want to allow read-only access to some directories
1589 @c <en>(@pxref{config}).
1590 Observe que os usuários devem ter direito de escrita
1591 para pegar arquivos emprestados, já que o @sc{cvs} tem
1592 que criar arquivos de trava (@pxref{Concorrência}).  Você
1593 pode usar LockDir (diretório de trava) no CVSROOT/config
1594 para botar os arquivos de trava num lugar fora do
1595 repositório se você quer permitir acesso
1596 somente-leitura a alguns diretórios (@pxref{config}).
1597
1598 @c CVS seems to use CVSUMASK in picking permissions for
1599 @c val-tags, but maybe we should say more about this.
1600 @c Like val-tags gets created by someone who doesn't
1601 @c have CVSUMASK set right?
1602 @c <en>@cindex CVSROOT/val-tags file, and read-only access to projects
1603 @cindex O arquivo CVSROOT/val-tags, e acesso somente-leitura a projetos
1604 @c <en>@cindex val-tags file, and read-only access to projects
1605 @cindex O arquivo val-tags, e acesso somente-leitura a projetos
1606 @c <en>Also note that users must have write access to the
1607 @c <en>@file{CVSROOT/val-tags} file.  @sc{cvs} uses it to keep
1608 @c <en>track of what tags are valid tag names (it is sometimes
1609 @c <en>updated when tags are used, as well as when they are
1610 @c <en>created).
1611 Observe também que os usuários devem ter permissão de
1612 escrita ao arquivo @file{CVSROOT/val-tags}.  O @sc{cvs} usa
1613 tal arquivo para ter controle sobre quais etiquetas
1614 (tags) são nomes de etiquetas válidos (é às vezes
1615 atualizado quando etiquetas são usadas ou criadas).
1616
1617 @c <en>Each @sc{rcs} file will be owned by the user who last
1618 @c <en>checked it in.  This has little significance; what
1619 @c <en>really matters is who owns the directories.
1620 Cada arquivo @sc{rcs} vai pertencer ao usuário que o
1621 devolveu por último.  Isto tem pouco significado; o que
1622 realmente importa é quem possui os diretórios.
1623
1624 @c <en>@cindex CVSUMASK, environment variable
1625 @cindex CVSUMASK, variável de ambiente
1626 @c <en>@cindex Umask, for repository files
1627 @cindex Umask, para arquivos do repositório
1628 @c <en>@sc{cvs} tries to set up reasonable file permissions
1629 @c <en>for new directories that are added inside the tree, but
1630 @c <en>you must fix the permissions manually when a new
1631 @c <en>directory should have different permissions than its
1632 @c <en>parent directory.  If you set the @code{CVSUMASK}
1633 @c <en>environment variable that will control the file
1634 @c <en>permissions which @sc{cvs} uses in creating directories
1635 @c <en>and/or files in the repository.  @code{CVSUMASK} does
1636 @c <en>not affect the file permissions in the working
1637 @c <en>directory; such files have the permissions which are
1638 @c <en>typical for newly created files, except that sometimes
1639 @c <en>@sc{cvs} creates them read-only (see the sections on
1640 @c <en>watches, @ref{Setting a watch}; -r, @ref{Global
1641 @c <en>options}; or @code{CVSREAD}, @ref{Environment variables}).
1642 O @sc{cvs} tenta ajustar de forma razoável as permissões para novos
1643 diretórios que vão sendo adicionados na árvore, mas
1644 você vai ter que mudar as permissões manualmente quando
1645 um novo diretório deve ter permissões diferentes das do
1646 seu diretório pai.  Se você ajusta a variável de
1647 ambiente @code{CVSUMASK} ela vai controlar as
1648 permissões que o @sc{cvs} usa na criação de diretórios
1649 e/ou arquivos no repositório.  @code{CVSUMASK} não mexe
1650 nas permissões do diretório de trabalho; tais arquivos
1651 têm as permissões que são típicas para novos arquivos,
1652 exceto que algumas vezes o @sc{cvs} cria os arquivos
1653 somente-leitura (veja as seções em ???watches???,
1654 @comment From Webster's:
1655 @comment 1. The act of watching; forbearance of sleep; vigil; wakeful,
1656 @comment    vigilant, or constantly observant attention; close
1657 @comment    observation; guard; preservative or preventive vigilance;
1658 @comment    formerly, a watching or guarding by night.
1659 @comment 
1660 @comment A "watch" in CVS terminology, is the command run to request
1661 @comment notifications of file status changes.  Thus CVS keeps a "watch" on the
1662 @comment file for you and notifies you of changes.  When you have requested
1663 @comment that CVS "watch" several files, it is said to be keeping "watches".
1664 @comment -DRP
1665 @ref{Ajustando um ???watch???}; -r, @ref{Opções globais}; or
1666 @code{CVSREAD}, @ref{Variáveis de ambiente}).
1667 @c FIXME: Need more discussion of which
1668 @c group should own the file in the repository.
1669 @c Include a somewhat detailed example of the usual
1670 @c case where CVSUMASK is 007, the developers are all
1671 @c in a group, and that group owns stuff in the
1672 @c repository.  Need to talk about group ownership of
1673 @c newly-created directories/files (on some unices,
1674 @c such as SunOS4, setting the setgid bit on the
1675 @c directories will make files inherit the directory's
1676 @c group.  On other unices, your mileage may vary.  I
1677 @c can't remember what POSIX says about this, if
1678 @c anything).
1679
1680 @c <en>Note that using the client/server @sc{cvs}
1681 @c <en>(@pxref{Remote repositories}), there is no good way to
1682 @c <en>set @code{CVSUMASK}; the setting on the client machine
1683 @c <en>has no effect.  If you are connecting with @code{rsh}, you
1684 @c <en>can set @code{CVSUMASK} in @file{.bashrc} or @file{.cshrc}, as
1685 @c <en>described in the documentation for your operating
1686 @c <en>system.  This behavior might change in future versions
1687 @c <en>of @sc{cvs}; do not rely on the setting of
1688 @c <en>@code{CVSUMASK} on the client having no effect.
1689 Observe que ao usar o @sc{cvs} cliente/servidor
1690 (@pxref{Repositórios remotos}), não há uma boa maneira
1691 de ajustar o @code{CVSUMASK}; o ajuste na máquina
1692 cliente não tem efeito.  Se você está se conectando com
1693 @code{rsh}, você pode ajustar o @code{CVSUMASK} em
1694 @file{.bashrc} ou @file{.cshrc}, como descrito na
1695 documentação de seu sistema operacional.  Este
1696 comportamento pode mudar em futuras versões do
1697 @sc{cvs}; Não se basear na configuração do @code{CVSUMASK}
1698 no cliente não afeta nada.
1699 @c FIXME: need to explain what a umask is or cite
1700 @c someplace which does.
1701 @c
1702 @c There is also a larger (largely separate) issue
1703 @c about the meaning of CVSUMASK in a non-unix context.
1704 @c For example, whether there is
1705 @c an equivalent which fits better into other
1706 @c protection schemes like POSIX.6, VMS, &c.
1707 @c
1708 @c FIXME: Need one place which discusses this
1709 @c read-only files thing.  Why would one use -r or
1710 @c CVSREAD?  Why would one use watches?  How do they
1711 @c interact?
1712 @c
1713 @c FIXME: We need to state
1714 @c whether using CVSUMASK removes the need for manually
1715 @c fixing permissions (in fact, if we are going to mention
1716 @c manually fixing permission, we better document a lot
1717 @c better just what we mean by "fix").
1718
1719 @c <en>Using pserver, you will generally need stricter
1720 @c <en>permissions on the @sc{cvsroot} directory and
1721 @c <en>directories above it in the tree; see @ref{Password
1722 @c <en>authentication security}.
1723 Quando usar pserver, você deve ser, em geral, mais mais
1724 restritivo com permissões no diretório @sc{cvsroot} e
1725 nos diretórios abaixo dele na árvore; veja em
1726 @ref{Segurança com autenticação por senha}.
1727
1728 @c <en>@cindex Setuid
1729 @cindex Setuid
1730 @c <en>@cindex Setgid
1731 @cindex Setgid
1732 @c <en>@cindex Security, setuid
1733 @cindex Segurança, setuid
1734 @c <en>@cindex Installed images (VMS)
1735 @cindex ???Installed images??? (VMS)
1736 @comment I have no idea what I could tell you to help you translate this since
1737 @comment I know little of the VMS operating system.  Perhaps you could look
1738 @comment this up in some VMS documentation somewhere?
1739 @comment -DRP
1740 @c <en>Some operating systems have features which allow a
1741 @c <en>particular program to run with the ability to perform
1742 @c <en>operations which the caller of the program could not.
1743 @c <en>For example, the set user ID (setuid) or set group ID
1744 @c <en>(setgid) features of unix or the installed image
1745 @c <en>feature of VMS.  @sc{cvs} was not written to use such
1746 @c <en>features and therefore attempting to install @sc{cvs} in
1747 @c <en>this fashion will provide protection against only
1748 @c <en>accidental lapses; anyone who is trying to circumvent
1749 @c <en>the measure will be able to do so, and depending on how
1750 @c <en>you have set it up may gain access to more than just
1751 @c <en>@sc{cvs}.  You may wish to instead consider pserver.  It
1752 @c <en>shares some of the same attributes, in terms of
1753 @c <en>possibly providing a false sense of security or opening
1754 @c <en>security holes wider than the ones you are trying to
1755 @c <en>fix, so read the documentation on pserver security
1756 @c <en>carefully if you are considering this option
1757 @c <en>(@ref{Password authentication security}).
1758 alguns sistemas operacionais têm a habilidade de
1759 permitir que um programa execute com a habilidade de
1760 executar certas operações que quem chamou o programa
1761 não não tem.  Por exemplo, os set user ID (setuid) ou
1762 set group ID (setgid) do unix ou a caracteristica de
1763 installed image do VMS.  @sc{cvs} não foi escrito para
1764 usar tais habilidades, logo, tentar instalar o @sc{cvs}
1765 nesta forma vai gerar proteção apenas contra erros
1766 acidentais; qualquer um que esteja tentando driblar a
1767 segurança vai ser capaz de fazê-lo,
1768 e dependendo de como você configurou, o invasor pode ganhar
1769 acesso até a mais do que apenas o @sc{cvs}.  Você pode
1770 estar considerando o uso do pserver.  Ele compartilha
1771 alguns dos mesmos atributos, em termos de possivelmente
1772 fornecer uma falsa sensação de segurança ou de abrir
1773 buracos de segurança ainda maiores dos que os que você
1774 quer fechar.  Portanto leia a documentação de segurança
1775 com pserver cuidadosamente se você está pensando nesta
1776 opção (@ref{Segurança com autenticação por senha}).
1777
1778 @c <en>@node Windows permissions
1779 @node Permissões no Windows
1780 @c <en>@subsection File Permission issues specific to Windows
1781 @subsection Questões sobre permissões de arquivos específicas ao Windows
1782 @c <en>@cindex Windows, and permissions
1783 @cindex Windows, e permissões
1784 @c <en>@cindex File permissions, Windows-specific
1785 @cindex Permissões de arquivos, específicas ao Windows
1786 @c <en>@cindex Permissions, Windows-specific
1787 @cindex Permissões, específicas ao Windows
1788
1789 @c <en>Some file permission issues are specific to Windows
1790 @c <en>operating systems (Windows 95, Windows NT, and
1791 @c <en>presumably future operating systems in this family.
1792 @c <en>Some of the following might apply to OS/2 but I'm not
1793 @c <en>sure).
1794 Algumas questões sobre permissões de arquivos são
1795 específicas ao sistema operacional Windows (Windows 95,
1796 Windows NT e presumivelmente futuros sistemas
1797 operacionais nesta família.  Algumas coisas abaixo se
1798 aplicam ao OS/2 mas não estou bem certo).
1799
1800 @c <en>If you are using local @sc{cvs} and the repository is on a
1801 @c <en>networked file system which is served by the Samba SMB
1802 @c <en>server, some people have reported problems with
1803 @c <en>permissions.  Enabling WRITE=YES in the samba
1804 @c <en>configuration is said to fix/workaround it.
1805 @c <en>Disclaimer: I haven't investigated enough to know the
1806 @c <en>implications of enabling that option, nor do I know
1807 @c <en>whether there is something which @sc{cvs} could be doing
1808 @c <en>differently in order to avoid the problem.  If you find
1809 @c <en>something out, please let us know as described in
1810 @c <en>@ref{BUGS}.
1811 Se você está usando um @sc{cvs} local e o repositório
1812 está num sistema de arquivos em rede de um servidor
1813 Samba SMB, algumas pessoas relataram problemas com
1814 permissões.  Habilitando WRITE=YES na configuração do
1815 samba conserta/resolve.  ???Disclaimer:??? Eu não
1816 @comment "Webster's Revised Unabridged Dictionary (1913)"
1817 @comment Disclaimer Dis*claim"er, n.
1818 @comment    1. One who disclaims, disowns, or renounces.
1819 @comment 
1820 @comment    2. (Law) A denial, disavowal, or renunciation, as of a title,
1821 @comment       claim, interest, estate, or trust; relinquishment or
1822 @comment       waiver of an interest or estate. --Burrill.
1823 @comment 
1824 @comment    3. A public disavowal, as of pretensions, claims, opinions,
1825 @comment       and the like. --Burke.
1826 @comment 
1827 @comment In other words, "Warning:", or "Caution:", might be appropriate.
1828 @comment -DRP
1829 investiguei o suficiente as implicações de habilitar
1830 esta opção, nem sei se há algo que o @sc{cvs} poderia
1831 fazer de diferente para evitar este problema.  Se você
1832 souber de algo, por favor nos ponha a par como descrito
1833 em @ref{Paus}.
1834
1835 @c <en>@node Attic
1836 @node Attic
1837 @c <en>@subsection The attic
1838 @subsection O attic
1839 @c <en>@cindex Attic
1840 @cindex Attic
1841
1842 @c <en>You will notice that sometimes @sc{cvs} stores an
1843 @c <en>@sc{rcs} file in the @code{Attic}.  For example, if the
1844 @c <en>@sc{cvsroot} is @file{/usr/local/cvsroot} and we are
1845 @c <en>talking about the file @file{backend.c} in the
1846 @c <en>directory @file{yoyodyne/tc}, then the file normally
1847 @c <en>would be in
1848 Você deve ter notado que às vezes o @sc{cvs} guarda um
1849 arquivo @sc{rcs} no @code{Attic}.  Por exemplo, se o
1850 @sc{cvsroot} é @file{/usr/local/cvsroot} e nós estamos
1851 falando sobre o arquivo @file{backend.c} no diretório
1852 @file{yoyodyne/tc}, então o arquivo normalmente deve
1853 estar em
1854
1855 @example
1856 /usr/local/cvsroot/yoyodyne/tc/backend.c,v
1857 @end example
1858
1859 @noindent
1860 @c <en>but if it goes in the attic, it would be in
1861 mas se ele vai para o attic, ele deve estar em
1862
1863 @example
1864 /usr/local/cvsroot/yoyodyne/tc/Attic/backend.c,v
1865 @end example
1866
1867 @noindent
1868 @c <en>@cindex Dead state
1869 @cindex Estado morto
1870 @c <en>.  It should not matter from a user point of
1871 @c <en>view whether a file is in the attic; @sc{cvs} keeps
1872 @c <en>track of this and looks in the attic when it needs to.
1873 @c <en>But in case you want to know, the rule is that the RCS
1874 @c <en>file is stored in the attic if and only if the head
1875 @c <en>revision on the trunk has state @code{dead}.  A
1876 @c <en>@code{dead} state means that file has been removed, or
1877 @c <en>never added, for that revision.  For example, if you
1878 @c <en>add a file on a branch, it will have a trunk revision
1879 @c <en>in @code{dead} state, and a branch revision in a
1880 @c <en>non-@code{dead} state.
1881 ao invés.  Não importa ao usuário onde, dentro do Attic,
1882 fica o arquivo; @sc{cvs} mantém controle disto e busca
1883 no Attic quando é preciso.  Mas caso você queira saber,
1884 a regra é que o arquivo RCS é guardado no attic se e
1885 somente se a ???head revision??? no tronco está no
1886 @comment "Head", at the front, etc.  In this case, refers to the most recent
1887 @comment revision on the trunk, like the head of a snake would be in front.
1888 @comment In English, the "head of a line" is the person in front and the "tail"
1889 @comment the person in back.
1890 @comment -DRP
1891 estado @code{morto} (dead).  Um estado @code{morto} significa
1892 que o arquivo foi removido, ou nunca foi adicionado,
1893 naquela revisão.  Por exemplo, se você adiciona um
1894 arquivo num ramo, ele vai ter uma revisão de
1895 tronco num estado @code{morto} e uma revisão de
1896 ramo num estado não-@code{morto}.
1897 @c Probably should have some more concrete examples
1898 @c here, or somewhere (not sure exactly how we should
1899 @c arrange the discussion of the dead state, versus
1900 @c discussion of the attic).
1901
1902 @c <en>@node CVS in repository
1903 @node CVS no repositório
1904 @c <en>@subsection The CVS directory in the repository
1905 @subsection O diretório CVS no repositório
1906 @c <en>@cindex CVS directory, in repository
1907 @cindex diretório CVS, no repositório
1908
1909 @c <en>The @file{CVS} directory in each repository directory
1910 @c <en>contains information such as file attributes (in a file
1911 @c <en>called @file{CVS/fileattr}.  In the
1912 @c <en>future additional files may be added to this directory,
1913 @c <en>so implementations should silently ignore additional
1914 @c <en>files.
1915 O diretório @file{CVS} em cada diretório do repositório
1916 contém informações tais como atributos de arquivos (num
1917 arquivo chamado @file{CVS/fileattr}.  No futuro novos
1918 arquivos ficarão neste diretório, logo, implementações
1919 devem ignorar em silêncio arquivos adicionais.
1920
1921 @c <en>This behavior is implemented only by @sc{cvs} 1.7 and
1922 @c <en>later; for details see @ref{Watches Compatibility}.
1923 Este comportamento é implementado apenas pelo @sc{cvs}
1924 1.7 e posteriores; para detalhes veja em
1925 @ref{Compatibilidade de ???Watches???}.
1926 @comment As "watches", previously.
1927 @comment -DRP
1928
1929 @c <en>The format of the fileattr file is a series of entries
1930 @c <en>of the following form (where @samp{@{} and @samp{@}}
1931 @c <en>means the text between the braces can be repeated zero
1932 @c <en>or more times):
1933 O formato do arquivo fileattr é uma série de entradas
1934 da seguinte forma (onde @samp{@{} e @samp{@}}
1935 significam que o texto entre chaves pode ser repetido
1936 zero ou várias vezes):
1937
1938 @var{ent-type} @var{filename} <tab> @var{attrname} = @var{attrval}
1939   @{; @var{attrname} = @var{attrval}@} <linefeed>
1940
1941 @c <en>@var{ent-type} is @samp{F} for a file, in which case the entry specifies the
1942 @c <en>attributes for that file.
1943 @var{ent-type} é @samp{F} para arquivo, neste caso a
1944 entrada especifica os atributos para tal arquivo.
1945
1946 @c <en>@var{ent-type} is @samp{D},
1947 @c <en>and @var{filename} empty, to specify default attributes
1948 @c <en>to be used for newly added files.
1949 @var{ent-type} é @samp{D},
1950 e @var{filename} vazio, para especificar atributos
1951 padrão para serem usados em novos arquivos adicionados.
1952
1953 @c <en>Other @var{ent-type} are reserved for future expansion.  @sc{cvs} 1.9 and older
1954 @c <en>will delete them any time it writes file attributes.
1955 @c <en>@sc{cvs} 1.10 and later will preserve them.
1956 Outros @var{ent-type} são reservados para futuras
1957 expansões.  @sc{cvs} 1.9 e anteriores vão deletá-los a
1958 toda hora que ele escrever atributos de
1959 arquivos.  @sc{cvs} 1.10 e posteriores vão preservá-los.
1960
1961 @c <en>Note that the order of the lines is not significant;
1962 @c <en>a program writing the fileattr file may
1963 @c <en>rearrange them at its convenience.
1964 Observe que a ordem das linhas não é significante; um
1965 programa escrevendo o arquivo fileattr pode
1966 rearranjá-las de acordo com sua própria conveniência.
1967
1968 @c <en>There is currently no way of quoting tabs or linefeeds in the
1969 @c <en>filename, @samp{=} in @var{attrname},
1970 @c <en>@samp{;} in @var{attrval}, etc.  Note: some implementations also
1971 @c <en>don't handle a NUL character in any of the fields, but
1972 @c <en>implementations are encouraged to allow it.
1973 Não existe atualmente uma forma de tratar tabulações ou quebras de linha
1974 como caractere no nome do arquivo, @samp{=} em @var{attrname},
1975 @samp{;} em @var{attrval}, etc.  Obs.: algumas
1976 implementações também não manipulam o caractere NUL em
1977 nenhum dos campos, mas encorajamos implementações que
1978 permitam isto.
1979
1980 @c <en>By convention, @var{attrname} starting with @samp{_} is for an attribute given
1981 @c <en>special meaning by @sc{cvs}; other @var{attrname}s are for user-defined attributes
1982 @c <en>(or will be, once implementations start supporting user-defined attributes).
1983 Por convenção, @var{attrname} começando com @samp{_} é
1984 para um atributo ao qual foi dado significado especial
1985 pelo @sc{cvs}; outros @var{attrname}s são para
1986 atributos definidos pelo usuário (ou que vão ser, já
1987 que implementações começaram suporte a atributos
1988 definidos pelo usuário).
1989
1990 @c <en>Builtin attributes:
1991 Atributos internos:
1992
1993 @table @code
1994 @item _watched
1995 @c <en>Present means the file is watched and should be checked out
1996 @c <en>read-only.
1997 Quando presente significa que o arquivo está
1998 ???watched??? (watched) e deve ser emprestado como
1999 @comment As "watches", before.
2000 @comment -DRP
2001 somente-leitura.
2002
2003 @item _watchers
2004 @c <en>Users with watches for this file.  Value is
2005 @c <en>@var{watcher} > @var{type} @{ , @var{watcher} > @var{type} @}
2006 @c <en>where @var{watcher} is a username, and @var{type}
2007 @c <en>is zero or more of edit,unedit,commit separated by
2008 @c <en>@samp{+} (that is, nothing if none; there is no "none" or "all" keyword).
2009 Usuários com ???watches??? para este arquivo.  O valor é
2010 @comment As "watches", before.
2011 @comment -DRP
2012 @var{watcher} > @var{type} @{ , @var{watcher} > @var{type} @}
2013 onde @var{watcher} é um nome de usuário, e @var{type} é
2014 zero ou mais de edit,unedit,commit separados por
2015 @samp{+} (isto é, deixe em branco para nenhum; não há
2016 palavras-chave para "nenhum" ou "todos").
2017
2018 @item _editors
2019 @c <en>Users editing this file.  Value is
2020 @c <en>@var{editor} > @var{val} @{ , @var{editor} > @var{val} @}
2021 @c <en>@c <en>where @var{editor} is a username, and @var{val} is
2022 @c <en>@var{time}+@var{hostname}+@var{pathname}, where
2023 @c <en>@var{time} is when the @code{cvs edit} command (or
2024 @c <en>equivalent) happened,
2025 @c <en>and @var{hostname} and @var{pathname} are for the working directory.
2026 Usuários editando este arquivo.  O valor é
2027 @var{editor} > @var{val} @{ , @var{editor} > @var{val} @}
2028 onde @var{editor} é um username, e @var{val} é
2029 @var{time}+@var{hostname}+@var{pathname}, onde
2030 @var{time} é quando o comando @code{cvs edit} (ou outro
2031 equivalente) aconteceu, e @var{hostname} e
2032 @var{pathname} são do diretório de trabalho.
2033 @end table
2034
2035 Example:
2036
2037 @c FIXME: sanity.sh should contain a similar test case
2038 @c so we can compare this example from something from
2039 @c Real Life(TM).  See cvsclient.texi (under Notify) for more
2040 @c discussion of the date format of _editors.
2041 @example
2042 Ffile1 _watched=;_watchers=joe>edit,mary>commit
2043 Ffile2 _watched=;_editors=sue>8 Jan 1975+workstn1+/home/sue/cvs
2044 D _watched=
2045 @end example
2046
2047 @noindent
2048 @c <en>means that the file @file{file1} should be checked out
2049 @c <en>read-only.  Furthermore, joe is watching for edits and
2050 @c <en>mary is watching for commits.  The file @file{file2}
2051 @c <en>should be checked out read-only; sue started editing it
2052 @c <en>on 8 Jan 1975 in the directory @file{/home/sue/cvs} on
2053 @c <en>the machine @code{workstn1}.  Future files which are
2054 @c <en>added should be checked out read-only.  To represent
2055 @c <en>this example here, we have shown a space after
2056 @c <en>@samp{D}, @samp{Ffile1}, and @samp{Ffile2}, but in fact
2057 @c <en>there must be a single tab character there and no spaces.
2058 significa que o arquivo @file{file1} deve ser pego como
2059 somente-leitura.  Além disso, joe está ???watching???
2060 edições e mary está ???watching??? ???commits???.  O
2061 @comment "Watching", as "watches", before.
2062 @comment "Commits" are checkins, i.e. via the `cvs commit' command.
2063 @comment -DRP
2064 arquivo @file{file2} deve ser pego somente-leitura; sue
2065 comecou a edita-lo em 8 Jan 1975 no diretorio
2066 @file{/home/sue/cvs} na maquina
2067 @code{workstn1}.  Futuros arquivos que forem adicionados
2068 devem ser pegos somente-leitura.  Para representar este
2069 exemplo aqui, nós mostramos um espaco depois de
2070 @samp{D}, @samp{Ffile1}, e @samp{Ffile2}, mas de fato
2071 existe um caractere de tab e nenhum espaco.
2072
2073 @c <en>@node Locks
2074 @node Travas
2075 @c <en>@subsection CVS locks in the repository
2076 @subsection travas CVS no repositório
2077
2078 @c <en>@cindex #cvs.rfl, technical details
2079 @cindex #cvs.rfl, detalhes técnicos
2080 @c <en>@cindex #cvs.pfl, technical details
2081 @cindex #cvs.pfl, detalhes técnicos
2082 @c <en>@cindex #cvs.wfl, technical details
2083 @cindex #cvs.wfl, detalhes técnicos
2084 @c <en>@cindex #cvs.lock, technical details
2085 @cindex #cvs.lock, detalhes técnicos
2086 @c <en>@cindex Locks, cvs, technical details
2087 @cindex Travas, cvs, detalhes técnicos
2088 @c <en>For an introduction to @sc{cvs} locks focusing on
2089 @c <en>user-visible behavior, see @ref{Concurrency}.  The
2090 @c <en>following section is aimed at people who are writing
2091 @c <en>tools which want to access a @sc{cvs} repository without
2092 @c <en>interfering with other tools accessing the same
2093 @c <en>repository.  If you find yourself confused by concepts
2094 @c <en>described here, like @dfn{read lock}, @dfn{write lock},
2095 @c <en>and @dfn{deadlock}, you might consult the literature on
2096 @c <en>operating systems or databases.
2097 Para uma introdução às travas (locks) no @sc{cvs}
2098 focando no comportamento visível ao usuário, veja em
2099 @ref{Concorrência}.  A seção seguinte foi feita para
2100 para pessoas que escrevem ferramentas as quais precisam
2101 acessar um repositório @sc{cvs} sem interferir com
2102 outras ferramentas acessando o mesmo repositório.  Se
2103 você se sentir confuso com os conceitos descritos aqui,
2104 como @dfn{read lock}, @dfn{write lock} e
2105 @dfn{deadlock}, você deve consultar a literatura de
2106 sistemas operacionais e bancos de dados.
2107
2108 @c <en>@cindex #cvs.tfl
2109 @cindex #cvs.tfl
2110 @c <en>Any file in the repository with a name starting
2111 @c <en>with @file{#cvs.rfl.} is a read lock.  Any file in
2112 @c <en>the repository with a name starting with
2113 @c <en>@file{#cvs.pfl} is a promotable read lock.  Any file in
2114 @c <en>the repository with a name starting with
2115 @c <en>@file{#cvs.wfl} is a write lock.  Old versions of @sc{cvs}
2116 @c <en>(before @sc{cvs} 1.5) also created files with names starting
2117 @c <en>with @file{#cvs.tfl}, but they are not discussed here.
2118 @c <en>The directory @file{#cvs.lock} serves as a master
2119 @c <en>lock.  That is, one must obtain this lock first before
2120 @c <en>creating any of the other locks.
2121 Qualquer arquivo no repositório com um nome começando
2122 com @file{#cvs.rfl.} é uma trava de leitura.  Qualquer
2123 arquivo no repositório com um nome comçando com
2124 @file{#cvs.pfl} é uma trava de leitura
2125 ???promotable???.  Qualquer arquivo no repositório com
2126 um nome começando com
2127 @file{#cvs.wfl} é uma trava de escrita.  Versões antigas
2128 do @sc{cvs} (antes do @sc{cvs} 1.5) também criavam
2129 arquivos com nomes começando com @file{#cvs.tfl}, mas
2130 estes não são discutidos aqui.
2131
2132 @c <en>The directory @file{#cvs.lock} serves as a master
2133 @c <en>lock.  That is, one must obtain this lock first before
2134 @c <en>creating any of the other locks.
2135 O diretório @file{#cvs.lock} funciona como uma trava
2136 mestra.  Isto é, deve-se obter esta trava antes de
2137 criar qualquer das outras travas.
2138
2139 @c <en>To obtain a readlock, first create the @file{#cvs.lock}
2140 @c <en>directory.  This operation must be atomic (which should
2141 @c <en>be true for creating a directory under most operating
2142 @c <en>systems).  If it fails because the directory already
2143 @c <en>existed, wait for a while and try again.  After
2144 @c <en>obtaining the @file{#cvs.lock} lock, create a file
2145 @c <en>whose name is @file{#cvs.rfl.} followed by information
2146 @c <en>of your choice (for example, hostname and process
2147 @c <en>identification number).  Then remove the
2148 @c <en>@file{#cvs.lock} directory to release the master lock.
2149 @c <en>Then proceed with reading the repository.  When you are
2150 @c <en>done, remove the @file{#cvs.rfl} file to release the
2151 @c <en>read lock.
2152 Para obter uma trava de leitura, primeiro crie o diretório
2153 @file{#cvs.lock}.  Esta operação deve ser atômica (o
2154 que deve ser verdade para a criação de um diretório na
2155 maioria dos sistemas operacionais).  Se isto falha por
2156 que o diretório já existe, espere um tempinho e tente de
2157 novo.  Depois de obter a trava @file{#cvs.lock}, crie
2158 um arquivo cujo nome seja @file{#cvs.rfl.} seguido pela
2159 informação de sua escolha (por exemplo, nome de host e
2160 nmero de identificaçao de processo).  Então remova o
2161 diretório @file{#cvs.lock} para ativar a trava
2162 mestra.  Então começe a ler o repositório.  Quando você
2163 terminar, remova o arquivo @file{#cvs.rfl} para
2164 liberar a trava de leitura.
2165
2166 @c <en>Promotable read locks are a concept you may not find in other literature on
2167 @c <en>concurrency.  They are used to allow a two (or more) pass process to only lock
2168 @c <en>a file for read on the first (read) pass(es), then upgrade its read locks to
2169 @c <en>write locks if necessary for a final pass, still assured that the files have
2170 @c <en>not changed since they were first read.  @sc{cvs} uses promotable read locks,
2171 @c <en>for example, to prevent commit and tag verification passes from interfering
2172 @c <en>with other reading processes.  It can then lock only a single directory at a
2173 @c <en>time for write during the write pass.
2174 Promotable read locks are a concept you may not find in other literature on
2175 concurrency.  They are used to allow a two (or more) pass process to only lock
2176 a file for read on the first (read) pass(es), then upgrade its read locks to
2177 write locks if necessary for a final pass, still assured that the files have
2178 not changed since they were first read.  @sc{cvs} uses promotable read locks,
2179 for example, to prevent commit and tag verification passes from interfering
2180 with other reading processes.  It can then lock only a single directory at a
2181 time for write during the write pass.
2182
2183 @c <en>To obtain a promotable read lock, first create the @file{#cvs.lock} directory,
2184 @c <en>as with a non-promotable read lock.  Then check
2185 @c <en>that there are no files that start with
2186 @c <en>@file{#cvs.pfl}.  If there are, remove the master @file{#cvs.lock} directory,
2187 @c <en>wait awhile (CVS waits 30 seconds between lock attempts), and try again.  If
2188 @c <en>there are no other promotable locks, go ahead and create a file whose name is
2189 @c <en>@file{#cvs.pfl} followed by information of your choice (for example, CVS uses
2190 @c <en>its hostname and the process identification number of the CVS server process
2191 @c <en>creating the lock).  If versions of @sc{cvs} older than version 1.12.4 access
2192 @c <en>your repository directly (not via a @sc{cvs} server of version 1.12.4 or
2193 @c <en>later), then you should also create a read lock since older versions of CVS
2194 @c <en>will ignore the promotable lock when attempting to create their own write lock.
2195 @c <en>Then remove the master @file{#cvs.lock} directory in order to allow other
2196 @c <en>processes to obtain read locks.
2197 To obtain a promotable read lock, first create the @file{#cvs.lock} directory,
2198 as with a non-promotable read lock.  Then check
2199 that there are no files that start with
2200 @file{#cvs.pfl}.  If there are, remove the master @file{#cvs.lock} directory,
2201 wait awhile (CVS waits 30 seconds between lock attempts), and try again.  If
2202 there are no other promotable locks, go ahead and create a file whose name is
2203 @file{#cvs.pfl} followed by information of your choice (for example, CVS uses
2204 its hostname and the process identification number of the CVS server process
2205 creating the lock).  If versions of @sc{cvs} older than version 1.12.4 access
2206 your repository directly (not via a @sc{cvs} server of version 1.12.4 or
2207 later), then you should also create a read lock since older versions of CVS
2208 will ignore the promotable lock when attempting to create their own write lock.
2209 Then remove the master @file{#cvs.lock} directory in order to allow other
2210 processes to obtain read locks.
2211
2212 @c <en>To obtain a writelock, first create the
2213 @c <en>@file{#cvs.lock} directory, as with readlocks.  Then
2214 @c <en>check that there are no files whose names start with
2215 @c <en>@file{#cvs.rfl.} and no files whose names start with @file{#cvs.pfl} that are
2216 @c <en>not owned by the process attempting to get the write lock.  If either exist,
2217 @c <en>remove @file{#cvs.lock}, wait for a while, and try again.  If
2218 @c <en>there are no readers or promotable locks from other processes, then create a
2219 @c <en>file whose name is @file{#cvs.wfl} followed by information of your choice
2220 @c <en>(again, CVS uses the hostname and server process identification
2221 @c <en>number).  Remove your @file{#cvs.pfl} file if present.  Hang on to the
2222 @c <en>@file{#cvs.lock} lock.  Proceed
2223 @c <en>with writing the repository.  When you are done, first
2224 @c <en>remove the @file{#cvs.wfl} file and then the
2225 @c <en>@file{#cvs.lock} directory. Note that unlike the
2226 @c <en>@file{#cvs.rfl} file, the @file{#cvs.wfl} file is just
2227 @c <en>informational; it has no effect on the locking operation
2228 @c <en>beyond what is provided by holding on to the
2229 @c <en>@file{#cvs.lock} lock itself.
2230 Para obter uma trava de escrita, primeiro crie o
2231 diretório @file{#cvs.lock}, da mesma forma que com as
2232 travas de leitura.  Então verifique se não existem
2233 arquivos cujos nomes começam com @file{#cvs.rfl.} e se
2234 não existem arquivos cujo nome começa com
2235 @file{#cvs.pfl} que não tenha como dono o processo
2236 tentando ter a trava de escrita.  Se ???either???
2237 existe, remova o @file{#cvs.lock}, espere um momento, e
2238 tente de novo.  Se não existem ???readers??? ou travas
2239 ???promotable??? de outros processos, então crie um
2240 arquivo cujo nome é @file{#cvs.wfl} seguido de
2241 informações da sua escolha (novamente, o CVS usa o
2242 hostname e o ???server process identification
2243 number??).  Remove your @file{#cvs.pfl} file if present.  Hang on to the
2244 @file{#cvs.lock} lock.  Escreva no repositório.  Quando
2245 tiver terminado, primeiro remova o arquivo
2246 @file{#cvs.wfl} e então o diretório
2247 @file{#cvs.lock}.  Observe que ao contrário do arquivo
2248 @file{#cvs.rfl}, o  arquivo @file{#cvs.wfl} é apenas
2249 informativo; ele não tem efeito na operação de trava
2250 além do que é feito pelo ato de manter a trava
2251 @file{#cvs.lock}.
2252
2253 @c <en>Note that each lock (writelock or readlock) only locks
2254 @c <en>a single directory in the repository, including
2255 @c <en>@file{Attic} and @file{CVS} but not including
2256 @c <en>subdirectories which represent other directories under
2257 @c <en>version control.  To lock an entire tree, you need to
2258 @c <en>lock each directory (note that if you fail to obtain
2259 @c <en>any lock you need, you must release the whole tree
2260 @c <en>before waiting and trying again, to avoid deadlocks).
2261 Observe que cada trava (de escrita ou leitura) apenas trava um
2262 único diretório no
2263 repositório, inclusive no caso do @file{Attic} e do @file{CVS}
2264 sem incluir os subdiretórios que representam outros
2265 diretórios sob controle de versão.  Para travar uma
2266 árvore inteira, voc precisa travar cada diretório
2267 (observe que se você não conseguir obter alguma trava
2268 que você precise, você deve liberar a árvore toda antes
2269 para esperar e tentar novamente, para evitar ???deadlocks???).
2270 @comment "Deadlock" is a computer science term which refers to the scenario
2271 @comment where two processes end up waiting on each other in such a way that
2272 @comment neither will ever get the lock and therefore neither process will
2273 @comment ever run again, and therefore both are said to be "dead".
2274 @comment 
2275 @comment For example, say process 1 wants to lock files "A" and "B", and so
2276 @comment does process 2.  If process 1 locks "A" first, and process 2 locks
2277 @comment file "B" first, then process begins waiting to lock "B" while process
2278 @comment 2 waits to lock "A", then both processes will wait indefinately, a
2279 @comment commonly encountered problem with file locking, especially for
2280 @comment inexperienced programmers.
2281 @comment -DRP
2282
2283 @c <en>Note also that @sc{cvs} expects writelocks to control
2284 @c <en>access to individual @file{foo,v} files.  @sc{rcs} has
2285 @c <en>a scheme where the @file{,foo,} file serves as a lock,
2286 @c <en>but @sc{cvs} does not implement it and so taking out a
2287 @c <en>@sc{cvs} writelock is recommended.  See the comments at
2288 @c <en>rcs_internal_lockfile in the @sc{cvs} source code for
2289 @c <en>further discussion/rationale.
2290 Observe também que o @sc{cvs} espera travas de escrita
2291 para controlar o acesso a arquivos @file{foo,v}
2292 individuais.  O @sc{rcs} tem um esquema onde o arquivo
2293 @file{,foo,} funciona como uma trava, mas o @sc{cvs}
2294 não implementa isso.  Portanto, fazer uma trava de escrita
2295 no @sc{cvs} é recomendado.  Veja os comentários no
2296 rcs_internal_lockfile no código fonte do @sc{cvs} para
2297 mais discussões/explicações.
2298
2299 @c <en>@node CVSROOT storage
2300 @node Armazenamento do CVSROOT
2301 @c <en>@subsection How files are stored in the CVSROOT directory
2302 @subsection Como os arquivos são guardados no diretório CVSROOT
2303 @c <en>@cindex CVSROOT, storage of files
2304 @cindex CVSROOT, armazenamento de arquivos
2305
2306 @c <en>The @file{$CVSROOT/CVSROOT} directory contains the
2307 @c <en>various administrative files.  In some ways this
2308 @c <en>directory is just like any other directory in the
2309 @c <en>repository; it contains @sc{rcs} files whose names end
2310 @c <en>in @samp{,v}, and many of the @sc{cvs} commands operate
2311 @c <en>on it the same way.  However, there are a few
2312 @c <en>differences.
2313 O diretório @file{$CVSROOT/CVSROOT} contém os vários
2314 arquivos administrativos.  Em alguns aspectos este
2315 diretório é igual a qualquer outro diretório no
2316 repositório; ele contém arquivos @sc{rcs} cujos nomes
2317 terminam em @samp{,v}, e muitos dos comandos do
2318 @sc{cvs} operam neles do mesmo jeito.  Entretanto,
2319 existem algumas poucas diferenças.
2320
2321 @c <en>For each administrative file, in addition to the
2322 @c <en>@sc{rcs} file, there is also a checked out copy of the
2323 @c <en>file.  For example, there is an @sc{rcs} file
2324 @c <en>@file{loginfo,v} and a file @file{loginfo} which
2325 @c <en>contains the latest revision contained in
2326 @c <en>@file{loginfo,v}.  When you check in an administrative
2327 @c <en>file, @sc{cvs} should print
2328 Para cada arquivo administrativo, além do arquivo
2329 @sc{rcs}, existe também uma cópia de trabalho do
2330 arquivo.  Por exemplo, existe um arquivo @sc{rcs}
2331 @file{loginfo,v} e um arquivo @file{loginfo} que contém
2332 a ultima revisão contida em @file{loginfo,v}.  Quando
2333 você devolve um arquivo administrativo, o @sc{cvs} vai
2334 mostrar
2335
2336 @example
2337 cvs commit: Rebuilding administrative file database
2338 @end example
2339
2340 @noindent
2341 @c <en>and update the checked out copy in
2342 @c <en>@file{$CVSROOT/CVSROOT}.  If it does not, there is
2343 @c <en>something wrong (@pxref{BUGS}).  To add your own files
2344 @c <en>to the files to be updated in this fashion, you can add
2345 @c <en>them to the @file{checkoutlist} administrative file
2346 @c <en>(@pxref{checkoutlist}).
2347 e atualizar a cópia de trabalho em
2348 @file{$CVSROOT/CVSROOT}.  Se não fizer, tem algo errado
2349 (@pxref{Paus}).  Para adicionar os seus próprios
2350 arquivos aos arquivos a serem atualizados desta
2351 maneira, você pode adicioná-los ao arquivo
2352 administrativo  @file{checkoutlist}
2353 (@pxref{checkoutlist}).
2354
2355 @c <en>@cindex modules.db
2356 @cindex modules.db
2357 @c <en>@cindex modules.pag
2358 @cindex modules.pag
2359 @c <en>@cindex modules.dir
2360 @cindex modules.dir
2361 @c <en>By default, the @file{modules} file behaves as
2362 @c <en>described above.  If the modules file is very large,
2363 @c <en>storing it as a flat text file may make looking up
2364 @c <en>modules slow (I'm not sure whether this is as much of a
2365 @c <en>concern now as when @sc{cvs} first evolved this
2366 @c <en>feature; I haven't seen benchmarks).  Therefore, by
2367 @c <en>making appropriate edits to the @sc{cvs} source code
2368 @c <en>one can store the modules file in a database which
2369 @c <en>implements the @code{ndbm} interface, such as Berkeley
2370 @c <en>db or GDBM.  If this option is in use, then the modules
2371 @c <en>database will be stored in the files @file{modules.db},
2372 @c <en>@file{modules.pag}, and/or @file{modules.dir}.
2373 Por padrão o arquivo @file{modules} se comporta como
2374 descrito acima.  Se o arquivo modules é muito grande,
2375 guardar ele como um arquivo de texto normal faz a busca
2376 por módulos lenta (Não estou bem certo se isso importa
2377 tanto agora como quando o @sc{cvs} primeiramente
2378 desenvolveu esta habilidade; não vi avaliações).
2379 Entretanto, fazendo edições apropriadas no código fonte
2380 do @sc{cvs} pode-se guardar o arquivo modules num banco
2381 de dados que implementa a interface @code{ndbm}, tais
2382 como o Berkeley db ou GDBM.  Se esta opção está em uso,
2383 então o banco de dados modules será guardado nos
2384 arquivos @file{modules.db}, @file{modules.pag}, e/ou @file{modules.dir}.
2385 @c I think fileattr also will use the database stuff.
2386 @c Anything else?
2387
2388 @c <en>For information on the meaning of the various
2389 @c <en>administrative files, see @ref{Administrative files}.
2390 Para informações sobre o significado dos vários arquivos administrativos,
2391 veja em @ref{Arquivos administrativos}.
2392
2393 @c <en>@node Working directory storage
2394 @node Armazenamento do Diretório de trabalho
2395 @c <en>@section How data is stored in the working directory
2396 @section Como os dados são guardados no diretório de trabalho
2397
2398 @c FIXME: Somewhere we should discuss timestamps (test
2399 @c case "stamps" in sanity.sh).  But not here.  Maybe
2400 @c in some kind of "working directory" chapter which
2401 @c would encompass the "Builds" one?  But I'm not sure
2402 @c whether that is a good organization (is it based on
2403 @c what the user wants to do?).
2404
2405 @c <en>@cindex CVS directory, in working directory
2406 @cindex diretório CVS, no diretório de trabalho
2407 @c <en>While we are discussing @sc{cvs} internals which may
2408 @c <en>become visible from time to time, we might as well talk
2409 @c <en>about what @sc{cvs} puts in the @file{CVS} directories
2410 @c <en>in the working directories.  As with the repository,
2411 @c <en>@sc{cvs} handles this information and one can usually
2412 @c <en>access it via @sc{cvs} commands.  But in some cases it
2413 @c <en>may be useful to look at it, and other programs, such
2414 @c <en>as the @code{jCVS} graphical user interface or the
2415 @c <en>@code{VC} package for emacs, may need to look at it.
2416 @c <en>Such programs should follow the recommendations in this
2417 @c <en>section if they hope to be able to work with other
2418 @c <en>programs which use those files, including future
2419 @c <en>versions of the programs just mentioned and the
2420 @c <en>command-line @sc{cvs} client.
2421 Assim como estamos conversando sobre as entranhas do
2422 @sc{cvs}, que podem ficar visíveis de tempos em tempos,
2423 também devemos falar sobre o que o @sc{cvs} bota nos
2424 diretórios @file{CVS} nos diretórios de trabalho.
2425 Assim como com o repositório, o @sc{cvs} manipula esta
2426 informação e pode-se acessá-la normalmente via comandos
2427 @sc{cvs}.  Mas em alguns casos pode ser útil dar uma
2428 olhada, e outros programas, como a interface de usuário
2429 gráfica @code{jCVS} ou o pacote para emacs @code{VC},
2430 precisarem ver o que tem lá.  Tais programas devem
2431 seguir as recomendações nesta seção se eles querem
2432 interagir com outros programas que usam estes arquivos,
2433 inclusive versões futuras dos programas mencinados logo
2434 acima e o  cliente em linha-de-comando do @sc{cvs}.
2435
2436 @c <en>The @file{CVS} directory contains several files.
2437 @c <en>Programs which are reading this directory should
2438 @c <en>silently ignore files which are in the directory but
2439 @c <en>which are not documented here, to allow for future
2440 @c <en>expansion.
2441 O diretório @file{CVS} contém vários
2442 arquivos.  Programas que estão lendo este diretório
2443 devem ignorar em silêncio arquivos que encontrem no
2444 diretório mas que não estejam documentados aqui, para
2445 permitir expansões futuras.
2446
2447 @c <en>The files are stored according to the text file
2448 @c <en>convention for the system in question.  This means that
2449 @c <en>working directories are not portable between systems
2450 @c <en>with differing conventions for storing text files.
2451 @c <en>This is intentional, on the theory that the files being
2452 @c <en>managed by @sc{cvs} probably will not be portable between
2453 @c <en>such systems either.
2454 Os arquivos são guardados de acordo com a convenção de
2455 arquivo de texto do sistema em questão.  Isto significa
2456 que diretórios de trabalho não são portáveis entre
2457 sistemas com diferentes convenções para armazenar
2458 arquivos de texto.  Isto é de propósito, baseado na
2459 teoria de que os arquivos sendo gerenciados pelo
2460 @sc{cvs} provavelmente também não seriam portáveis
2461 entre tais sistemas.
2462
2463 @table @file
2464 @item Root
2465 @c <en>This file contains the current @sc{cvs} root, as
2466 @c <en>described in @ref{Specifying a repository}.
2467 Este arquivo contém a raiz atual do @sc{cvs}, como
2468 descrito em @ref{Especificando um repositório}.
2469
2470 @c <en>@cindex Repository file, in CVS directory
2471 @cindex O arquivo Repository, no diretório CVS
2472 @c <en>@cindex CVS/Repository file
2473 @cindex O arquivo CVS/Repository
2474 @c <en>@item Repository
2475 @item Repositório
2476 @c <en>This file contains the directory within the repository
2477 @c <en>which the current directory corresponds with.  It can
2478 @c <en>be either an absolute pathname or a relative pathname;
2479 @c <en>@sc{cvs} has had the ability to read either format
2480 @c <en>since at least version 1.3 or so.  The relative
2481 @c <en>pathname is relative to the root, and is the more
2482 @c <en>sensible approach, but the absolute pathname is quite
2483 @c <en>common and implementations should accept either.  For
2484 @c <en>example, after the command
2485 Este arquivo contém o diretório no qual está o
2486 repositório correspondente ao diretório atual.  Pode
2487 ser um caminho absoluto ou relativo; @sc{cvs} adquiriu
2488 a habilidade de ler ambos os formatos desde a versão
2489 1.3.  O caminho é relativo à raiz (root), e é a
2490 abordagem mais racional, mas o caminho absoluto é
2491 mais comum e ambos devem ser aceitos.  Por exemplo,
2492 depois do comando
2493
2494 @example
2495 cvs -d :local:/usr/local/cvsroot checkout yoyodyne/tc
2496 @end example
2497
2498 @noindent
2499 @c <en>@file{Root} will contain
2500 o @file{Root} vai conter
2501
2502 @example
2503 :local:/usr/local/cvsroot
2504 @end example
2505
2506 @noindent
2507 @c <en>and @file{Repository} will contain either
2508 e o @file{Repositório} vai conter ou
2509
2510 @example
2511 /usr/local/cvsroot/yoyodyne/tc
2512 @end example
2513
2514 @noindent
2515 @c <en>or
2516 ou
2517
2518 @example
2519 yoyodyne/tc
2520 @end example
2521
2522 @c <en>If the particular working directory does not correspond
2523 @c <en>to a directory in the repository, then @file{Repository}
2524 @c <en>should contain @file{CVSROOT/Emptydir}.
2525 Se o diretório de trabalho particular não corresponde a
2526 um diretório no repositório, então o @file{Repositório}
2527 deve conter @file{CVSROOT/Emptydir}.
2528 @c <en>@cindex Emptydir, in CVSROOT directory
2529 @cindex Emptydir, no diretório CVSROOT
2530 @c <en>@cindex CVSROOT/Emptydir directory
2531 @cindex O diretório CVSROOT/Emptydir
2532
2533 @c <en>@cindex Entries file, in CVS directory
2534 @cindex O arquivo Entries, no diretório do CVS
2535 @c <en>@cindex CVS/Entries file
2536 @cindex O arquivo CVS/Entries
2537 @c <en>@item Entries
2538 @item Entries
2539 @c <en>This file lists the files and directories in the
2540 @c <en>working directory.
2541 @c <en>The first character of each line indicates what sort of
2542 @c <en>line it is.  If the character is unrecognized, programs
2543 @c <en>reading the file should silently skip that line, to
2544 @c <en>allow for future expansion.
2545 Este arquivo relaciona os arquivos e diretórios no
2546 diretório de trabalho.  O primeiro caractere de cada
2547 linha indica de que tipo é a linha.  Se  caractere não
2548 for reconhecido, os programas lendo o arquivo devem
2549 pular de linha em silêncio, para permitir futuras expansões.
2550
2551 @c <en>If the first character is @samp{/}, then the format is:
2552 Se o primeiro caractere é @samp{/}, então o formato é:
2553
2554 @example
2555 /@var{name}/@var{revision}/@var{timestamp}[+@var{conflict}]/@var{options}/@var{tagdate}
2556 @end example
2557
2558 @noindent
2559 @c <en>where @samp{[} and @samp{]} are not part of the entry,
2560 @c <en>but instead indicate that the @samp{+} and conflict
2561 @c <en>marker are optional.  @var{name} is the name of the
2562 @c <en>file within the directory.  @var{revision} is the
2563 @c <en>revision that the file in the working derives from, or
2564 @c <en>@samp{0} for an added file, or @samp{-} followed by a
2565 @c <en>revision for a removed file.  @var{timestamp} is the
2566 @c <en>timestamp of the file at the time that @sc{cvs} created
2567 @c <en>it; if the timestamp differs with the actual
2568 @c <en>modification time of the file it means the file has
2569 @c <en>been modified.  It is stored in
2570 @c <en>the format used by the ISO C asctime() function (for
2571 @c <en>example, @samp{Sun Apr  7 01:29:26 1996}).  One may
2572 @c <en>write a string which is not in that format, for
2573 @c <en>example, @samp{Result of merge}, to indicate that the
2574 @c <en>file should always be considered to be modified.  This
2575 @c <en>is not a special case; to see whether a file is
2576 @c <en>modified a program should take the timestamp of the file
2577 @c <en>and simply do a string compare with @var{timestamp}.
2578 @c <en>If there was a conflict, @var{conflict} can be set to
2579 @c <en>the modification time of the file after the file has been
2580 @c <en>written with conflict markers (@pxref{Conflicts example}).
2581 @c <en>Thus if @var{conflict} is subsequently the same as the actual
2582 @c <en>modification time of the file it means that the user
2583 @c <en>has obviously not resolved the conflict.  @var{options}
2584 @c <en>contains sticky options (for example @samp{-kb} for a
2585 @c <en>binary file).  @var{tagdate} contains @samp{T} followed
2586 @c <en>by a tag name, or @samp{D} for a date, followed by a
2587 @c <en>sticky tag or date.  Note that if @var{timestamp}
2588 @c <en>contains a pair of timestamps separated by a space,
2589 @c <en>rather than a single timestamp, you are dealing with a
2590 @c <en>version of @sc{cvs} earlier than @sc{cvs} 1.5 (not
2591 @c <en>documented here).
2592 Onde @samp{[} e @samp{]} não são partes da entrada, mas
2593 indicam que o @samp{+} e o marcador de conflito são
2594 opcionais.  @var{name} é o nome do arquivo no
2595 diretório.  @var{revision} e a revisão da qual o
2596 arquivo no diretório de trabalho deriva, ou @samp{0}
2597 para um arquivo adicionado, ou @samp{-} seguido de uma
2598 revisão para um arquivo removido.  @var{timestamp} é o
2599 ???timestamp??? do arquivo quando o @sc{cvs} o criou;
2600 @comment As a file system timestamp.  Usually a creation time or modification
2601 @comment time or something.  I'm not sure what they were prior to CVS 1.5.
2602 @comment -DRP
2603 se o timestamp difere da hora de modificação do
2604 arquivo, significa que o arquivo foi modificado.  É
2605 armazenado no formato usando pela função ISO C
2606 asctime() (por exemplo, @samp{Sun Apr  7 01:29:26
2607 1996}).  Pode-se escrever uma string que não esteja
2608 neste formato, por exemplo, @samp{Result of merge},
2609 para indicar que o arquivo deve ser sempre considerado
2610 como modificado.  Este não é um caso especial; para ver
2611 se um arquivo é modificado, um programa pode pegar o
2612 timestamp do arquivo e simplesmente criar uma string e
2613 comparar com @var{timestamp}.  Se existe um conflito,
2614 @var{conflict} pode ser ajustada para o tempo de
2615 modificação do arquivo depois do arquivo ter sido
2616 escrito com marcações de conflito (@pxref{Exemplo de conflitos}).
2617 Logo, se @var{conflict} é posteriormente o mesmo que o
2618 tempo de modificação real do arquivo significa que o
2619 usuário obviamente não resolveu o conflito.  @var{options}
2620 contém opções adesivas (por exemplo @samp{-kb} para um
2621 arquivo binário).  @var{tagdate} contém @samp{T}
2622 seguindo de um nome de etiqueta (tag), ou @samp{D} para
2623 uma data, seguido de uma data ou etiqueta adesiva.
2624 Observe que se @var{timestamp} contém um par de
2625 timestamps separados por um espaço, ao invés de um
2626 único timestamp, você está lidando com uma versão do
2627 @sc{cvs} anterior ao @sc{cvs} 1.5 (sem documentação aqui).
2628
2629 @c <en>The timezone on the timestamp in CVS/Entries (local or
2630 @c <en>universal) should be the same as the operating system
2631 @c <en>stores for the timestamp of the file itself.  For
2632 @c <en>example, on Unix the file's timestamp is in universal
2633 @c <en>time (UT), so the timestamp in CVS/Entries should be
2634 @c <en>too.  On @sc{vms}, the file's timestamp is in local
2635 @c <en>time, so @sc{cvs} on @sc{vms} should use local time.
2636 @c <en>This rule is so that files do not appear to be modified
2637 @c <en>merely because the timezone changed (for example, to or
2638 @c <en>from summer time).
2639 O fuso horário do timestamp no CVS/Entries (local ou
2640 universal) deve ser igual ao que o sistema
2641 operacional guarda para o timestamp do próprio arquivo.
2642 Por exemplo, no Unix o timestamp do arquivo está em
2643 tempo universal (universal time - UT).  Logo, o
2644 timestamp em CVS/Entries deve estar assim também.  No
2645 @sc{vms}, o timestamp do arquivo está em hora
2646 local, logo, o @sc{cvs} no @sc{vms} deve usar hora
2647 local.  Esta regra é para que arquivos não pareçam estar
2648 modificados simplesmente por que o fuso horário mudou
2649 (por exemplo, saindo ou entrando no horário de verão).
2650 @c See comments and calls to gmtime() and friends in
2651 @c src/vers_ts.c (function time_stamp).
2652
2653 @c <en>If the first character of a line in @file{Entries} is
2654 @c <en>@samp{D}, then it indicates a subdirectory.  @samp{D}
2655 @c <en>on a line all by itself indicates that the program
2656 @c <en>which wrote the @file{Entries} file does record
2657 @c <en>subdirectories (therefore, if there is such a line and
2658 @c <en>no other lines beginning with @samp{D}, one knows there
2659 @c <en>are no subdirectories).  Otherwise, the line looks
2660 @c <en>like:
2661 Se o primeiro caractere de uma linha em @file{Entries}
2662 é @samp{D}, então ele indica um subdiretório.  @samp{D}
2663 sozinho em uma linha indica que o programa
2664 que escreveu o arquivo @file{Entries} registra
2665 subdiretórios (portanto, se existe tal linha e nenhuma
2666 outra linha começando com @samp{D}, conclui-se que não
2667 há subdiretórios).  Caso contrário, a linha vai se
2668 parecer com:
2669
2670 @example
2671 D/@var{name}/@var{filler1}/@var{filler2}/@var{filler3}/@var{filler4}
2672 @end example
2673
2674 @noindent
2675 @c <en>where @var{name} is the name of the subdirectory, and
2676 @c <en>all the @var{filler} fields should be silently ignored,
2677 @c <en>for future expansion.  Programs which modify
2678 @c <en>@code{Entries} files should preserve these fields.
2679 onde @var{name} é o nome do subdiretório, e todos os
2680 campos @var{filler} devem ser ignorados em silêncio,
2681 para expansões futuras.  Programas que modificam
2682 arquivos @code{Entries} devem manter estes campos.
2683
2684 @c <en>The lines in the @file{Entries} file can be in any order.
2685 As linhas no arquivo @file{Entries} podem estar em
2686 qualquer ordem.
2687
2688 @c <en>@cindex Entries.Log file, in CVS directory
2689 @cindex O arquivo Entries.Log, no diretório CVS
2690 @c <en>@cindex CVS/Entries.Log file
2691 @cindex O arquivo CVS/Entries.Log
2692 @c <en>@item Entries.Log
2693 @item Entries.Log
2694 @c <en>This file does not record any information beyond that
2695 @c <en>in @file{Entries}, but it does provide a way to update
2696 @c <en>the information without having to rewrite the entire
2697 @c <en>@file{Entries} file, including the ability to preserve
2698 @c <en>the information even if the program writing
2699 @c <en>@file{Entries} and @file{Entries.Log} abruptly aborts.
2700 @c <en>Programs which are reading the @file{Entries} file
2701 @c <en>should also check for @file{Entries.Log}.  If the latter
2702 @c <en>exists, they should read @file{Entries} and then apply
2703 @c <en>the changes mentioned in @file{Entries.Log}.  After
2704 @c <en>applying the changes, the recommended practice is to
2705 @c <en>rewrite @file{Entries} and then delete @file{Entries.Log}.
2706 @c <en>The format of a line in @file{Entries.Log} is a single
2707 @c <en>character command followed by a space followed by a
2708 @c <en>line in the format specified for a line in
2709 @c <en>@file{Entries}.  The single character command is
2710 @c <en>@samp{A} to indicate that the entry is being added,
2711 @c <en>@samp{R} to indicate that the entry is being removed,
2712 @c <en>or any other character to indicate that the entire line
2713 @c <en>in @file{Entries.Log} should be silently ignored (for
2714 @c <en>future expansion).  If the second character of the line
2715 @c <en>in @file{Entries.Log} is not a space, then it was
2716 @c <en>written by an older version of @sc{cvs} (not documented
2717 @c <en>here).
2718 Este arquivo não registra qualquer informação a mais
2719 que no @file{Entries}, mas fornece um jeito de
2720 atualizar a informação sem ter que reescrever todo o
2721 arquivo @file{Entries}, incluindo a habilidade de
2722 preservar a informação mesmo se o programa que estava
2723 escrevendo o @file{Entries} e o @file{Entries.Log}
2724 aborta abruptamente.  Programas que estão lendo o
2725 arquivo @file{Entries} devem também verificar pelo
2726 @file{Entries.Log}.  Se este último existe, eles devem
2727 ler o @file{Entries} e então aplicar as mudanças
2728 mencionadas no @file{Entries.Log}.  Depois de aplicar
2729 as mudanças, a prática recomendada é reescrever o
2730 @file{Entries} e depois apagar o @file{Entries.Log}.  O
2731 formato de uma linha no @file{Entries.Log} é um comando
2732 de um caractere seguido de um espaço seguido por uma
2733 linha no formato especificado para uma linha no
2734 @file{Entries}.  O caractere de comando é
2735 @samp{A} para indicar que a entrada está sendo
2736 adicionada, @samp{R} para indicar que a entrada está
2737 sendo removida, ou qualquer outro caractere para
2738 indicar que a linha inteira em @file{Entries.Log} deve
2739 ser ignorada em silêncio (para expansão futura).  Se o
2740 segundo caractere da linha em @file{Entries.Log} não é
2741 um espaço, então foi escrito por uma versão antiga do
2742 @sc{cvs} (não documentada aqui).
2743
2744 @c <en>Programs which are writing rather than reading can
2745 @c <en>safely ignore @file{Entries.Log} if they so choose.
2746 Programas que estão escrevendo ao invés de lendo podem
2747 seguramente ignorar @file{Entries.Log} se assim escolherem.
2748
2749 @c <en>@cindex Entries.Backup file, in CVS directory
2750 @cindex O arquivo Entries.Backup, no diretório CVS
2751 @c <en>@cindex CVS/Entries.Backup file
2752 @cindex O arquivo CVS/Entries.Backup
2753 @c <en>@item Entries.Backup
2754 @item Entries.Backup
2755 @c <en>This is a temporary file.  Recommended usage is to
2756 @c <en>write a new entries file to @file{Entries.Backup}, and
2757 @c <en>then to rename it (atomically, where possible) to @file{Entries}.
2758 Este é um arquivo temporário.  O uso recomendado é
2759 escrever um novo arquivo entries para o
2760 @file{Entries.Backup}, e então renomeá-lo
2761 (atomicamente, quando possível) para @file{Entries}.
2762
2763 @c <en>@cindex Entries.Static file, in CVS directory
2764 @cindex O arquivo Entries.Static, no diretório CVS
2765 @c <en>@cindex CVS/Entries.Static file
2766 @cindex O arquivo CVS/Entries.Static
2767 @c <en>@item Entries.Static
2768 @item Entries.Static
2769 @c <en>The only relevant thing about this file is whether it
2770 @c <en>exists or not.  If it exists, then it means that only
2771 @c <en>part of a directory was gotten and @sc{cvs} will
2772 @c <en>not create additional files in that directory.  To
2773 @c <en>clear it, use the @code{update} command with the
2774 @c <en>@samp{-d} option, which will get the additional files
2775 @c <en>and remove @file{Entries.Static}.
2776 A única coisa relevante sobre este arquivo é se ele
2777 existe ou não.  Se ele existe, então quer dizer que
2778 apenas parte de um diretório foi pego e o @sc{cvs} não
2779 vai criar arquivos adicionais neste diretório.  Para
2780 limpar isto, use o comando @code{update} com a opção
2781 @samp{-d}, a qual vai pegar os arquivos adicionais e
2782 remover @file{Entries.Static}.
2783 @c FIXME: This needs to be better documented, in places
2784 @c other than Working Directory Storage.
2785 @c FIXCVS: The fact that this setting exists needs to
2786 @c be more visible to the user.  For example "cvs
2787 @c status foo", in the case where the file would be
2788 @c gotten except for Entries.Static, might say
2789 @c something to distinguish this from other cases.
2790 @c One thing that periodically gets suggested is to
2791 @c have "cvs update" print something when it skips
2792 @c files due to Entries.Static, but IMHO that kind of
2793 @c noise pretty much makes the Entries.Static feature
2794 @c useless.
2795
2796 @c <en>@cindex Tag file, in CVS directory
2797 @cindex O arquivo Tag, no diretório CVS
2798 @c <en>@cindex CVS/Tag file
2799 @cindex O arquivo CVS/Tag
2800 @c <en>@cindex Sticky tags/dates, per-directory
2801 @cindex Por diretório, etiquetas/datas adesivas
2802 @c <en>@cindex Per-directory sticky tags/dates
2803 @cindex Etiquetas/datas adesivas por diretório
2804 @c <en>@item Tag
2805 @item Tag (Etiqueta)
2806 @c <en>This file contains per-directory sticky tags or dates.
2807 @c <en>The first character is @samp{T} for a branch tag,
2808 @c <en>@samp{N} for a non-branch tag, or @samp{D} for a date,
2809 @c <en>or another character to mean the file should be
2810 @c <en>silently ignored, for future expansion.  This character
2811 @c <en>is followed by the tag or date.  Note that
2812 @c <en>per-directory sticky tags or dates are used for things
2813 @c <en>like applying to files which are newly added; they
2814 @c <en>might not be the same as the sticky tags or dates on
2815 @c <en>individual files.  For general information on sticky
2816 @c <en>tags and dates, see @ref{Sticky tags}.
2817 Este arquivo contém as etiquetas (tags) ou datas
2818 adesivas por diretório.  O primeiro caractere é @samp{T}
2819 para uma etiqueta de ramo, @samp{N} para uma etiqueta
2820 que não é de ramo, ou @samp{D} para uma data, ou outro
2821 caractere que quer dizer que o arquivo deve ser
2822 ignorado em silêncio, para expansão futura.  Este
2823 caractere é seguido de uma etiqueta ou data.  Observe
2824 que etiquetas ou data adesivas por diretório são usadas
2825 para coisas como ???applying to??? arquivos que
2826 acabaram de ser adicionados; ???they (the tags or the files)???
2827 podem não ser os mesmos assim como as etiquetas
2828 adesivas ou datas em arquivos isolados.  Para
2829 informações gerais sobre etiquetas adesivas ou datas,
2830 veja em @ref{Etiquetas adesivas}.
2831 @c FIXME: This needs to be much better documented,
2832 @c preferably not in the context of "working directory
2833 @c storage".
2834 @c FIXME: The Sticky tags node needs to discuss, or xref to
2835 @c someplace which discusses, per-directory sticky
2836 @c tags and the distinction with per-file sticky tags.
2837
2838 @c <en>@cindex Notify file, in CVS directory
2839 @cindex O arquivo Notify, no diretório CVS
2840 @c <en>@cindex CVS/Notify file
2841 @cindex O arquivo CVS/Notify
2842 @c <en>@item Notify
2843 @item Notify
2844 @c <en>This file stores notifications (for example, for
2845 @c <en>@code{edit} or @code{unedit}) which have not yet been
2846 @c <en>sent to the server.  Its format is not yet documented
2847 @c <en>here.
2848 Este arquivo guarda notificações (por exemplo, sobre
2849 @code{edit} ou @code{unedit}) que ainda não foram
2850 mandadas para o servidor.  Seu formato ainda não está
2851 documentado aqui.
2852
2853 @c <en>@cindex Notify.tmp file, in CVS directory
2854 @cindex O arquivo Notify.tmp, no diretório CVS
2855 @c <en>@cindex CVS/Notify.tmp file
2856 @cindex O arquivo CVS/Notify.tmp
2857 @c <en>@item Notify.tmp
2858 @item Notify.tmp
2859 @c <en>This file is to @file{Notify} as @file{Entries.Backup}
2860 @c <en>is to @file{Entries}.  That is, to write @file{Notify},
2861 @c <en>first write the new contents to @file{Notify.tmp} and
2862 @c <en>then (atomically where possible), rename it to
2863 @c <en>@file{Notify}.
2864 Este arquivo está para @file{Notify} como o @file{Entries.Backup}
2865 está para @file{Entries}.  Ou seja, para escrever em
2866 @file{Notify}, escreva o novo conteúdo primeiro em
2867 @file{Notify.tmp} e então (atomicamente, quando
2868 possível), renomeie-o para @file{Notify}.
2869
2870 @c <en>@cindex Base directory, in CVS directory
2871 @cindex Diretório Base, no diretório CVS
2872 @c <en>@cindex CVS/Base directory
2873 @cindex Diretório CVS/Base
2874 @c <en>@item Base
2875 @item Base
2876 @c <en>If watches are in use, then an @code{edit} command
2877 @c <en>stores the original copy of the file in the @file{Base}
2878 @c <en>directory.  This allows the @code{unedit} command to
2879 @c <en>operate even if it is unable to communicate with the
2880 @c <en>server.
2881 Se os ???watches??? estão em uso, então um comando
2882 @code{edit} guarda a cópia original do arquivo no
2883 diretório @file{Base}.  Isto permite que o comando
2884 @code{unedit} opere mesmo se estiver sem comunicação
2885 com o servidor.
2886
2887 @c <en>@cindex Baserev file, in CVS directory
2888 @cindex O arquivo Baserev, no diretório CVS
2889 @c <en>@cindex CVS/Baserev file
2890 @cindex O arquivo CVS/Baserev
2891 @c <en>@item Baserev
2892 @item Baserev
2893 @c <en>The file lists the revision for each of the files in
2894 @c <en>the @file{Base} directory.  The format is:
2895 O arquivo lista a revisão de cada arquivo no diretório
2896 @file{Base}.  O formato é:
2897
2898 @example
2899 B@var{name}/@var{rev}/@var{expansion}
2900 @end example
2901
2902 @noindent
2903 @c <en>where @var{expansion} should be ignored, to allow for
2904 @c <en>future expansion.
2905 Onde @var{expansion} deve ser ignorada para permitir
2906 expansão futura.
2907
2908 @c <en>@cindex Baserev.tmp file, in CVS directory
2909 @cindex O arquivo Baserev.tmp, no diretório CVS
2910 @c <en>@cindex CVS/Baserev.tmp file
2911 @cindex O arquivo CVS/Baserev.tmp
2912 @c <en>@item Baserev.tmp
2913 @item Baserev.tmp
2914 @c <en>This file is to @file{Baserev} as @file{Entries.Backup}
2915 @c <en>is to @file{Entries}.  That is, to write @file{Baserev},
2916 @c <en>first write the new contents to @file{Baserev.tmp} and
2917 @c <en>then (atomically where possible), rename it to
2918 @c <en>@file{Baserev}.
2919 Este arquivo está para @file{Baserev} assim como
2920 @file{Entries.Backup} está para @file{Entries}.  Ou
2921 seja, para escrever em @file{Baserev}, escreva o novo
2922 conteúdo primeiro em @file{Baserev.tmp} e então
2923 (atomicamente, quando possível), renomei-o para @file{Baserev}.
2924
2925 @c <en>@cindex Template file, in CVS directory
2926 @cindex O arquivo Template, no diretório CVS
2927 @c <en>@cindex CVS/Template file
2928 @cindex O arquivo CVS/Template
2929 @c <en>@item Template
2930 @item Template
2931 @c <en>This file contains the template specified by the
2932 @c <en>@file{rcsinfo} file (@pxref{rcsinfo}).  It is only used
2933 @c <en>by the client; the non-client/server @sc{cvs} consults
2934 @c <en>@file{rcsinfo} directly.
2935 Este arquivo contém o modelo (template) especificado
2936 pelo arquivo @file{rcsinfo} (@pxref{rcsinfo}).  Ele é
2937 usado apenas pelo cliente; o ???non-client/server???
2938 @sc{cvs} consulta o @file{rcsinfo} diretamente.
2939 @end table
2940
2941 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2942 @c <en>@node Intro administrative files
2943 @node Intro aos arquivos administrativos
2944 @c <en>@section The administrative files
2945 @section Os arquivos administrativos
2946 @c <en>@cindex Administrative files (intro)
2947 @cindex Arquivos administrativos (intro)
2948 @c <en>@cindex Modules file
2949 @cindex O arquivo Modules
2950 @c <en>@cindex CVSROOT, module name
2951 @cindex CVSROOT, nome de módulo
2952 @c <en>@cindex Defining modules (intro)
2953 @cindex Definindo módulos (intro)
2954
2955 @c FIXME: this node should be reorganized into "general
2956 @c information about admin files" and put the "editing
2957 @c admin files" stuff up front rather than jumping into
2958 @c the details of modules right away.  Then the
2959 @c Administrative files node can go away, the information
2960 @c on each admin file distributed to a place appropriate
2961 @c to its function, and this node can contain a table
2962 @c listing each file and a @ref to its detailed description.
2963
2964 @c <en>The directory @file{$CVSROOT/CVSROOT} contains some @dfn{administrative
2965 @c <en>files}.  @xref{Administrative files}, for a complete description.
2966 @c <en>You can use @sc{cvs} without any of these files, but
2967 @c <en>some commands work better when at least the
2968 @c <en>@file{modules} file is properly set up.
2969 O diretório @file{$CVSROOT/CVSROOT} contém alguns
2970 @dfn{Arquivos administrativos}.  @xref{Arquivos
2971 administrativos}, para uma descrição completa.  Você
2972 pode usar o @sc{cvs} sem nenhum destes arquivos, mas
2973 alguns comandos funcionam melhor quando pelo menos o
2974 arquivo @file{modules} está bem configurado.
2975
2976 @c <en>The most important of these files is the @file{modules}
2977 @c <en>file.  It defines all modules in the repository.  This
2978 @c <en>is a sample @file{modules} file.
2979 O mais importante destes arquivos é o arquivo
2980 @file{modules}.  Ele define todos os módulos no
2981 repositório.  Este é um exemplo de um arquivo @file{modules}.
2982
2983 @c FIXME: The CVSROOT line is a goofy example now that
2984 @c mkmodules doesn't exist.
2985 @example
2986 CVSROOT         CVSROOT
2987 modules         CVSROOT modules
2988 cvs             gnu/cvs
2989 rcs             gnu/rcs
2990 diff            gnu/diff
2991 tc              yoyodyne/tc
2992 @end example
2993
2994 @c <en>The @file{modules} file is line oriented.  In its
2995 @c <en>simplest form each line contains the name of the
2996 @c <en>module, whitespace, and the directory where the module
2997 @c <en>resides.  The directory is a path relative to
2998 @c <en>@code{$CVSROOT}.  The last four lines in the example
2999 @c <en>above are examples of such lines.
3000 O arquivo @file{modules} é baseado em linha.  Na sua
3001 forma simples, cada linha contém o nome do módulo, um
3002 espaço e o diretório onde o módulo está.  O diretório é
3003 um caminho relativo em @code{$CVSROOT}.  As últimas
3004 quatro linhas no exemplo acima são exemplos de tais linhas.
3005
3006 @c FIXME: might want to introduce the concept of options in modules file
3007 @c (the old example which was here, -i mkmodules, is obsolete).
3008
3009 @c <en>The line that defines the module called @samp{modules}
3010 @c <en>uses features that are not explained here.
3011 @c <en>@xref{modules}, for a full explanation of all the
3012 @c <en>available features.
3013 A linha que define o módulo chamado @samp{modules} usa
3014 funcionalidades que não são explicadas
3015 aqui. @xref{modules}, para uma explicação completa
3016 destas funcionalidades.
3017
3018 @c FIXME: subsection without node is bogus
3019 @c <en>@subsection Editing administrative files
3020 @subsection Editando arquivos administrativos
3021 @c <en>@cindex Editing administrative files
3022 @cindex Editando arquivos administrativos
3023 @c <en>@cindex Administrative files, editing them
3024 @cindex Arquivos administrativos, editando
3025
3026 @c <en>You edit the administrative files in the same way that you would edit
3027 @c <en>any other module.  Use @samp{cvs checkout CVSROOT} to get a working
3028 @c <en>copy, edit it, and commit your changes in the normal way.
3029 Você edita os arquivos administrativos da mesma forma
3030 que você deve deve editar qualquer outro módulo.  Use
3031 @samp{cvs checkout CVSROOT} para obter uma cópia de
3032 trabalho, edite-a e ???commit??? suas mudanças normalmente.
3033
3034 @c <en>It is possible to commit an erroneous administrative
3035 @c <en>file.  You can often fix the error and check in a new
3036 @c <en>revision, but sometimes a particularly bad error in the
3037 @c <en>administrative file makes it impossible to commit new
3038 @c <en>revisions.
3039 É possível ???commit??? um arquivo administrativo
3040 corrompido.  Em geral, você pode consertar o erro e
3041 devolvê-lo numa nova revisão, mas às vezes um erro
3042 particularmente ruim nos arquivos administrativos torna
3043 impossível ???commit??? novas revisões.
3044 @c @xref{Bad administrative files} for a hint
3045 @c about how to solve such situations.
3046 @c -- administrative file checking--
3047
3048 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3049 @c <en>@node Multiple repositories
3050 @node Repositórios múltiplos
3051 @c <en>@section Multiple repositories
3052 @section Repositórios múltiplos
3053 @c <en>@cindex Multiple repositories
3054 @cindex Repositórios múltiplos
3055 @c <en>@cindex Repositories, multiple
3056 @cindex Repositórios, múltiplos
3057 @c <en>@cindex Many repositories
3058 @cindex Muitos repositórios
3059 @c <en>@cindex Parallel repositories
3060 @cindex Repositórios paralelos
3061 @c <en>@cindex Disjoint repositories
3062 @cindex Repositórios Disjuntos
3063 @c <en>@cindex CVSROOT, multiple repositories
3064 @cindex CVSROOT, Repositórios Múltiplos
3065
3066 @c <en>In some situations it is a good idea to have more than
3067 @c <en>one repository, for instance if you have two
3068 @c <en>development groups that work on separate projects
3069 @c <en>without sharing any code.  All you have to do to have
3070 @c <en>several repositories is to specify the appropriate
3071 @c <en>repository, using the @code{CVSROOT} environment
3072 @c <en>variable, the @samp{-d} option to @sc{cvs}, or (once
3073 @c <en>you have checked out a working directory) by simply
3074 @c <en>allowing @sc{cvs} to use the repository that was used
3075 @c <en>to check out the working directory
3076 @c <en>(@pxref{Specifying a repository}).
3077 Em algumas situações é uma boa idéia ter mais de um
3078 repositório.  Por exemplo, se você tem duas equipes de
3079 desenvolvimento que trabalham em projetos separados sem
3080 compartilhar nenhum código.  Tudo que você tem que
3081 fazer para ter vários repositórios é especificar o
3082 repositório apropriado, usando a variável de ambiente
3083 @code{CVSROOT} ou a opção @samp{-d} com o @sc{cvs}, ou
3084 (depois de ter pego um diretório de trabalho)
3085 simplesmente deixando o @sc{cvs} usar o repositório de
3086 onde veio o diretório de trabalho (@pxref{Especificando
3087 um repositório}).
3088
3089 @c <en>The big advantage of having multiple repositories is
3090 @c <en>that they can reside on different servers.  With @sc{cvs}
3091 @c <en>version 1.10, a single command cannot recurse into
3092 @c <en>directories from different repositories.  With development
3093 @c <en>versions of @sc{cvs}, you can check out code from multiple
3094 @c <en>servers into your working directory.  @sc{cvs} will
3095 @c <en>recurse and handle all the details of making
3096 @c <en>connections to as many server machines as necessary to
3097 @c <en>perform the requested command.  Here is an example of
3098 @c <en>how to set up a working directory:
3099 A grande vantagem de ter múltiplos repositórios é que
3100 eles podem residir em diferentes servidores.  Com o
3101 @sc{cvs} versão 1.10, um comando não pode fazer
3102 recursão ???into??? diretórios ???from??? repositórios
3103 diferentes.  Com ???development versions??? do
3104 @sc{cvs}, você pode obter código de múltiplos
3105 servidores para o seu diretório de trabalho.  @sc{cvs}
3106 vai fazer a recursão e cuidar dos detalhes para fazer
3107 conexão em quantas máquinas quantas forem necessárias
3108 para executar o comando pedido.  Aqui está um exemplo
3109 de como preparar um diretório de trabalho:
3110
3111 @example
3112 cvs -d server1:/cvs co dir1
3113 cd dir1
3114 cvs -d server2:/root co sdir
3115 cvs update
3116 @end example
3117
3118 @c <en>The @code{cvs co} commands set up the working
3119 @c <en>directory, and then the @code{cvs update} command will
3120 @c <en>contact server2, to update the dir1/sdir subdirectory,
3121 @c <en>and server1, to update everything else.
3122 Os comandos @code{cvs co} acima preparam o diretório de
3123 trabalho.  Depois de feitos, o comando @code{cvs update}
3124 vai contactar o server2, para atualizar o subdiretório
3125 dir1/sdir e o server1, para atualizar o resto.
3126
3127 @c FIXME: Does the FAQ have more about this?  I have a
3128 @c dim recollection, but I'm too lazy to check right now.
3129
3130 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3131 @c <en>@node Creating a repository
3132 @node Criando um repositório
3133 @c <en>@section Creating a repository
3134 @section Criando um repositório
3135
3136 @c <en>@cindex Repository, setting up
3137 @cindex Repositório, preparando
3138 @c <en>@cindex Creating a repository
3139 @cindex Criando um repositório
3140 @c <en>@cindex Setting up a repository
3141 @cindex Preparando um repositório
3142
3143 @c <en>To set up a @sc{cvs} repository, first choose the
3144 @c <en>machine and disk on which you want to store the
3145 @c <en>revision history of the source files.  CPU and memory
3146 @c <en>requirements are modest, so most machines should be
3147 @c <en>adequate.  For details see @ref{Server requirements}.
3148 Para preparar um repositório do @sc{cvs}, escolha
3149 primeiramente a máquina e o disco onde você deseja
3150 armazenar o histórico de revisões dos fontes.
3151 requisitos de CPU e memória são modestos.  Portanto,
3152 muitas máquinas serão adequadas.  Para detalhes, veja
3153 em @ref{Requisitos do servidor}.
3154 @c Possible that we should be providing a quick rule of
3155 @c thumb, like the 32M memory for the server.  That
3156 @c might increase the number of people who are happy
3157 @c with the answer, without following the xref.
3158
3159 @c <en>To estimate disk space
3160 @c <en>requirements, if you are importing RCS files from
3161 @c <en>another system, the size of those files is the
3162 @c <en>approximate initial size of your repository, or if you
3163 @c <en>are starting without any version history, a rule of
3164 @c <en>thumb is to allow for the server approximately three
3165 @c <en>times the size of the code to be under @sc{cvs} for the
3166 @c <en>repository (you will eventually outgrow this, but not
3167 @c <en>for a while).  On the machines on which the developers
3168 @c <en>will be working, you'll want disk space for
3169 @c <en>approximately one working directory for each developer
3170 @c <en>(either the entire tree or a portion of it, depending
3171 @c <en>on what each developer uses).
3172 Para estimar os requisitos de espaço em disco, se você
3173 estiver importando arquivos RCS de outro sistema, o
3174 tamanho destes arquivos vai ser o tamanho inicial do
3175 seu repositório, ou se você está começando sem nenhum
3176 histórico de versões, uma boa regra é reservar para o
3177 repositório do servidor três vezes o tamanho do código
3178 que estará sob os cuidados do @sc{cvs} (Isto vai
3179 eventualmente estourar, mas não por enquanto).
3180 Nas máquinas dos desenvolvedores, você vai pracisar de
3181 aproximadamente o espaço em disco de um diretório de
3182 trabalho para cada desenvolvedor (ou a árvore inteira
3183 ou uma porção dela, dependendo do que o desenvolvedor
3184 usa).
3185
3186 @c <en>The repository should be accessible
3187 @c <en>(directly or via a networked file system) from all
3188 @c <en>machines which want to use @sc{cvs} in server or local
3189 @c <en>mode; the client machines need not have any access to
3190 @c <en>it other than via the @sc{cvs} protocol.  It is not
3191 @c <en>possible to use @sc{cvs} to read from a repository
3192 @c <en>which one only has read access to; @sc{cvs} needs to be
3193 @c <en>able to create lock files (@pxref{Concurrency}).
3194 O repositório deve estar acessível (diretamente ou
3195 através de um sistema de arquivos de rede) ???from???
3196 @c from-translator-to-reviewer: "from" or "to"?
3197 todas as máquinas que queiram usar o @sc{cvs} em modo
3198 servidor ou localmente; a máquina cliente só precisa
3199 ter acesso a ele através do protocolo do @sc{cvs}.  Não
3200 é possível usar o @sc{cvs} para ler de um repositório
3201 onde só se tem permissão de leitura, pois o @sc{cvs}
3202 tem que ser capaz de criar arquivos de trava
3203 (@pxref{Concorrência}).
3204
3205 @c <en>@cindex init (subcommand)
3206 @cindex init (subcommand)
3207 @c <en>To create a repository, run the @code{cvs init}
3208 @c <en>command.  It will set up an empty repository in the
3209 @c <en>@sc{cvs} root specified in the usual way
3210 @c <en>(@pxref{Repository}).  For example,
3211 Para criar um repositório, rode o comando @code{cvs
3212 init}.  Ele vai criar um repositório vazio no raiz do
3213 @sc{cvs} especificado da forma usual
3214 (@pxref{Repositório}).  For example,
3215
3216 @example
3217 cvs -d /usr/local/cvsroot init
3218 @end example
3219
3220 @c <en>@code{cvs init} is careful to never overwrite any
3221 @c <en>existing files in the repository, so no harm is done if
3222 @c <en>you run @code{cvs init} on an already set-up
3223 @c <en>repository.
3224 O @code{cvs init} tem o cuidado de nunca sobreescrever
3225 nenhum arquivo no repositório, logo, não há perigo em
3226 rodar o @code{cvs init} num repositório já criado.
3227
3228 @c <en>@code{cvs init} will enable history logging; if you
3229 @c <en>don't want that, remove the history file after running
3230 @c <en>@code{cvs init}.  @xref{history file}.
3231 @code{cvs init} pode guardar um registro histórico
3232 (history log); se
3233 você não quer guardar isto, remova o arquivo history
3234 depois de rodar o @code{cvs init}.  @xref{arquivo
3235 history (histórico)}.
3236
3237 @c <en>@node Backing up
3238 @node Fazendo backup
3239 @c <en>@section Backing up a repository
3240 @section Fazendo backup de um repositório
3241 @c <en>@cindex Repository, backing up
3242 @cindex Repositório, fazendo backup
3243 @c <en>@cindex Backing up, repository
3244 @cindex Fazendo backup, repositório
3245
3246 @c <en>There is nothing particularly magical about the files
3247 @c <en>in the repository; for the most part it is possible to
3248 @c <en>back them up just like any other files.  However, there
3249 @c <en>are a few issues to consider.
3250 Não há nada particularmente mágico sobre os arquivos no
3251 repositório; Para a maior parte deles é possível fazer
3252 backup da mesma forma que com qualquer
3253 arquivo.  Entretanto, existem alguns fatos a considerar.
3254
3255 @c <en>@cindex Locks, cvs, and backups
3256 @cindex Travas, cvs e backups
3257 @c <en>@cindex #cvs.rfl, and backups
3258 @cindex #cvs.rfl, and backups
3259 @c <en>The first is that to be paranoid, one should either not
3260 @c <en>use @sc{cvs} during the backup, or have the backup
3261 @c <en>program lock @sc{cvs} while doing the backup.  To not
3262 @c <en>use @sc{cvs}, you might forbid logins to machines which
3263 @c <en>can access the repository, turn off your @sc{cvs}
3264 @c <en>server, or similar mechanisms.  The details would
3265 @c <en>depend on your operating system and how you have
3266 @c <en>@sc{cvs} set up.  To lock @sc{cvs}, you would create
3267 @c <en>@file{#cvs.rfl} locks in each repository directory.
3268 @c <en>See @ref{Concurrency}, for more on @sc{cvs} locks.
3269 @c <en>Having said all this, if you just back up without any
3270 @c <en>of these precautions, the results are unlikely to be
3271 @c <en>particularly dire.  Restoring from backup, the
3272 @c <en>repository might be in an inconsistent state, but this
3273 @c <en>would not be particularly hard to fix manually.
3274 Primeiramente, para ser paranóico, alguem não deve nem
3275 sequer usar o @sc{cvs} durante o backup, ou fazer o
3276 programa de backup travar o @sc{cvs} enquanto estiver
3277 executando.  Para o @sc{cvs} não ser usado, você deve
3278 proibir logins para máquinas que possam acessar o
3279 repositório ou desligar o seu servidor @sc{cvs} or
3280 algum mecanismo similar.  Os detalhes vão depender do
3281 seu sistema operacional e de como você configurou o seu
3282 @sc{cvs}.  Para travar o @sc{cvs}, você deve criar
3283 travas @file{#cvs.rfl} em cada diretório do
3284 repositório.  Veja em @ref{Concorrência}, para saber
3285 mais sobre travas no @sc{cvs}.  ???Having said all
3286 this???,
3287 @c from-translator-to-reviewer can I substitute for
3288 @c "nevertheless"?
3289 se você apenas fizer o backup sem nenhuma
3290 destas precauções, os resultados dificilmente vão ser
3291 catastróficos.  Ao recuperar do backup, o repositório
3292 pode estar em um estado inconsistente, mas isto não
3293 deve ser muito difícil de consertar manualmente.
3294
3295 @c <en>When you restore a repository from backup, assuming
3296 @c <en>that changes in the repository were made after the time
3297 @c <en>of the backup, working directories which were not
3298 @c <en>affected by the failure may refer to revisions which no
3299 @c <en>longer exist in the repository.  Trying to run @sc{cvs}
3300 @c <en>in such directories will typically produce an error
3301 @c <en>message.  One way to get those changes back into the
3302 @c <en>repository is as follows:
3303 Quando você recupera um repositório de um backup,
3304 supondo que mudanças no repositório foram feitas depois
3305 da criação do backup, diretório de trabalho que não
3306 foram afetados pela falha podem se referenciar a
3307 revisões que não mais existam no repositório.  Tentar
3308 rodar o @sc{cvs} em tais diretórios vai gerar uma
3309 mensagem de erro.  uma forma de desfazer estas mudanças
3310 no repositório é dada a seguir:
3311
3312 @itemize @bullet
3313 @item
3314 @c <en>Get a new working directory.
3315 Gere um novo diretório de trabalho.
3316
3317 @item
3318 @c <en>Copy the files from the working directory from before
3319 @c <en>the failure over to the new working directory (do not
3320 @c <en>copy the contents of the @file{CVS} directories, of
3321 @c <en>course).
3322 Copie os arquivos do diretório de trabalho de
3323 antes da falha para o novo diretório de trabalho (não
3324 copie o conteúdo dos diretórios @file{CVS}, obviamente).
3325
3326 @item
3327 @c <en>Working in the new working directory, use commands such
3328 @c <en>as @code{cvs update} and @code{cvs diff} to figure out
3329 @c <en>what has changed, and then when you are ready, commit
3330 @c <en>the changes into the repository.
3331 Mexa no novo diretório de trabalho, usando comandos
3332 como @code{cvs update} e @code{cvs diff} para descobrir
3333 o que mudou, e quando terminar, faça ???commit??? nas
3334 mudanças para o repositório.
3335 @end itemize
3336
3337 @c <en>@node Moving a repository
3338 @node Movendo um repositório
3339 @c <en>@section Moving a repository
3340 @section Movendo um repositório
3341 @c <en>@cindex Repository, moving
3342 @cindex  Repositório, movendo
3343 @c <en>@cindex Moving a repository
3344 @cindex  Movendo um repositório
3345 @c <en>@cindex Copying a repository
3346 @cindex Copiando um repositório
3347
3348 @c <en>Just as backing up the files in the repository is
3349 @c <en>pretty much like backing up any other files, if you
3350 @c <en>need to move a repository from one place to another it
3351 @c <en>is also pretty much like just moving any other
3352 @c <en>collection of files.
3353 Assim como fazer backup dos arquivos no repositório é
3354 muito parecido com fazer backup de quaisquer outros
3355 arquivos, se você precisar mover um repositório de um
3356 lugar para outro, é muito parecido com simplesmente
3357 mover uma coleção de arquivos.
3358
3359 @c <en>The main thing to consider is that working directories
3360 @c <en>point to the repository.  The simplest way to deal with
3361 @c <en>a moved repository is to just get a fresh working
3362 @c <en>directory after the move.  Of course, you'll want to
3363 @c <en>make sure that the old working directory had been
3364 @c <en>checked in before the move, or you figured out some
3365 @c <en>other way to make sure that you don't lose any
3366 @c <en>changes.  If you really do want to reuse the existing
3367 @c <en>working directory, it should be possible with manual
3368 @c <en>surgery on the @file{CVS/Repository} files.  You can
3369 @c <en>see @ref{Working directory storage}, for information on
3370 @c <en>the @file{CVS/Repository} and @file{CVS/Root} files, but
3371 @c <en>unless you are sure you want to bother, it probably
3372 @c <en>isn't worth it.
3373 O mais importante a se considerar é que diretórios de
3374 trabalho apontam para o repositório.  A forma mais
3375 simples de lidar com um repositório movido é
3376 simplesmente pegar um diretório de trabalho novo logo
3377 após da mudança.  É claro que você vai querer se
3378 certificar que o diretório de trabalho antigo foi
3379 devolvido antes da mudança, ou usar de qualquer outro
3380 artifício para se certificar de que não perderá nenhuma
3381 mudança.  Se você realmente quer reusar o antigo diretório de
3382 trabalho, é possível, desde que você faça uma operação
3383 manual nos arquivos @file{CVS/Repository}.  Você pode
3384 ver em @ref{Armazenamento do Diretório de trabalho},
3385 para informações sobre os arquivos
3386 @file{CVS/Repository} e @file{CVS/Root}, mas só se você
3387 quiser ter aborrecimentos, caso contrário esta opção
3388 não é boa.
3389 @c FIXME: Surgery on CVS/Repository should be avoided
3390 @c by making RELATIVE_REPOS the default.
3391 @c FIXME-maybe: might want some documented way to
3392 @c change the CVS/Root files in some particular tree.
3393 @c But then again, I don't know, maybe just having
3394 @c people do this in perl/shell/&c isn't so bad...
3395
3396 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3397 @c <en>@node Remote repositories
3398 @node Repositórios remotos
3399 @c <en>@section Remote repositories
3400 @section Repositórios remotos
3401 @c <en>@cindex Repositories, remote
3402 @cindex Repositórios, remotos
3403 @c <en>@cindex Remote repositories
3404 @cindex Repositórios remotos
3405 @c <en>@cindex Client/Server Operation
3406 @cindex Operação cliente/Servidor
3407 @c <en>@cindex Server, CVS
3408 @cindex Servidor, CVS
3409 @c <en>@cindex Remote repositories, port specification
3410 @cindex Repositórios remotos, especificação de porta
3411 @c <en>@cindex Repositories, remote, port specification
3412 @cindex Repositórios, remotos, especificação de porta
3413 @c <en>@cindex Client/Server Operation, port specification
3414 @cindex Operação cliente/Servidor, especificação de porta
3415 @c <en>@cindex pserver (client/server connection method), port specification
3416 @cindex pserver (método de conexão cliente/servidor), especificação de porta
3417 @c <en>@cindex kserver (client/server connection method), port specification
3418 @cindex kserver (método de conexão cliente/servidor), especificação de porta
3419 @c <en>@cindex gserver (client/server connection method), port specification
3420 @cindex gserver (método de conexão cliente/servidor), especificação de porta
3421 @c <en>@cindex port, specifying for remote repositories
3422 @cindex porta, especificação para repositórios remotos
3423
3424 @c <en>        Your working copy of the sources can be on a
3425 @c <en>different machine than the repository.  Using @sc{cvs}
3426 @c <en>in this manner is known as @dfn{client/server}
3427 @c <en>operation.  You run @sc{cvs} on a machine which can
3428 @c <en>mount your working directory, known as the
3429 @c <en>@dfn{client}, and tell it to communicate to a machine
3430 @c <en>which can mount the repository, known as the
3431 @c <en>@dfn{server}.  Generally, using a remote
3432 @c <en>repository is just like using a local one, except that
3433 @c <en>the format of the repository name is:
3434 Sua cópia de trabalho dos fontes pode estar em
3435 uma máquina diferente da do repositório.  Esta forma de
3436 usar o @sc{cvs} é chamada operação
3437 @dfn{client/server}.  Você roda o @sc{cvs} numa máquina
3438 que possa montar seu diretório de trabalho, conhecida
3439 como o @dfn{cliente}, e diz a ela para se comunicar com
3440 uma máquina que pode montar o repositório, chamada de
3441 @dfn{servidor}.  No geral, usar um repositório remoto
3442 é a mesma coisa que usar um local, exceto que o formato
3443 do nome do repositório é:
3444
3445 @example
3446 [:@var{method}:][[@var{user}][:@var{password}]@@]@var{hostname}[:[@var{port}]]/path/to/repository
3447 @end example
3448
3449 @c <en>Specifying a password in the repository name is not recommended during
3450 @c <en>checkout, since this will cause @sc{cvs} to store a cleartext copy of the
3451 @c <en>password in each created directory.  @code{cvs login} first instead
3452 @c <en>(@pxref{Password authentication client}).
3453 Colocar a senha no nome do repositório durante
3454 operações de checkout não é recomendado, já que isto
3455 vai fazer com que o @sc{cvs} guarde uma cópia da senha
3456 em texto em cada diretório criado.  Dê um @code{cvs
3457 login} primeiro ao invés disto
3458 (@pxref{Cliente de autenticação por senha}).
3459
3460 @c <en>The details of exactly what needs to be set up depend
3461 @c <en>on how you are connecting to the server.
3462 Os detalhes de exatamente o que precisa ser preparado
3463 depende de como você está conectado ao seu servidor.
3464
3465 @c <en>If @var{method} is not specified, and the repository
3466 @c <en>name contains @samp{:}, then the default is @code{ext}
3467 @c <en>or @code{server}, depending on your platform; both are
3468 @c <en>described in @ref{Connecting via rsh}.
3469 Se @var{method} não está especificado, e se o nome do
3470 repositório contém @samp{:}, então o padrão é
3471 @code{ext} ou @code{server}, dependendo de sua
3472 plataforma; ambos estão descritos em
3473 @ref{Se conectando via rsh}.
3474 @c Should we try to explain which platforms are which?
3475 @c Platforms like unix and VMS, which only allow
3476 @c privileged programs to bind to sockets <1024 lose on
3477 @c :server:
3478 @c Platforms like Mac and VMS, whose rsh program is
3479 @c unusable or nonexistent, lose on :ext:
3480 @c Platforms like OS/2 and NT probably could plausibly
3481 @c default either way (modulo -b troubles).
3482
3483 @c FIXME: We need to have a better way of explaining
3484 @c what method to use.  This presentation totally
3485 @c obscures the fact that :ext: and CVS_RSH is the way to
3486 @c use SSH, for example.  Plus it incorrectly implies
3487 @c that you need an @code{rsh} binary on the client to use
3488 @c :server:.
3489 @c Also note that rsh not pserver is the right choice if you want
3490 @c users to be able to create their own repositories
3491 @c (because of the --allow-root related issues).
3492 @menu
3493 @c <en>* Server requirements::         Memory and other resources for servers
3494 * Requisitos do servidor::         Memória e outros recursos para servidores
3495 @c <en>* Connecting via rsh::          Using the @code{rsh} program to connect
3496 * Se conectando via rsh::          Usando o programa @code{rsh} para se conectar
3497 @c <en>* Password authenticated::      Direct connections using passwords
3498 * Autenticação por senha::         Conexões diretas usando senhas
3499 @c <en>* GSSAPI authenticated::        Direct connections using GSSAPI
3500 * Autenticação GSSAPI::            Conexões diretas usando GSSAPI
3501 @c <en>* Kerberos authenticated::      Direct connections with kerberos
3502 * Autenticação kerberos::          Conexões diretas com kerberos
3503 @c <en>* Connecting via fork::         Using a forked @code{cvs server} to connect
3504 * Conectando via fork::         Usando um forked @code{cvs server} para conectar
3505 @end menu
3506
3507 @c <en>@node Server requirements
3508 @node Requisitos do servidor
3509 @c <en>@subsection Server requirements
3510 @subsection Requisitos do servidor
3511
3512 @c <en>The quick answer to what sort of machine is suitable as
3513 @c <en>a server is that requirements are modest---a server
3514 @c <en>with 32M of memory or even less can handle a fairly
3515 @c <en>large source tree with a fair amount of activity.
3516 A resposta rápida para que tipo de máquina é adequada
3517 para um servidor é que os requisitos são modestos---um
3518 servidor com 32M de memória ou até menos pode manipular
3519 uma árvore de fontes realmente grande com uma boa
3520 quantidade de atividade.
3521 @c Say something about CPU speed too?  I'm even less sure
3522 @c what to say on that subject...
3523
3524 @c <en>The real answer, of course, is more complicated.
3525 @c <en>Estimating the known areas of large memory consumption
3526 @c <en>should be sufficient to estimate memory requirements.
3527 @c <en>There are two such areas documented here; other memory
3528 @c <en>consumption should be small by comparison (if you find
3529 @c <en>that is not the case, let us know, as described in
3530 @c <en>@ref{BUGS}, so we can update this documentation).
3531 A resposta real, obviamente, é mais complicada.  Estimar
3532 as áreas conhecidas de grande consumo de memória deve
3533 ser suficiente para estimar os requisitos de
3534 memória.  Existem duas destas tais áreas documentadas
3535 aqui; Outros consumos de memória devem ser pequenos
3536 relativamente (se você notar que este não é o caso, nos
3537 faça saber, como descrito em @ref{Paus}, assim
3538 poderemos atualizar este documento).
3539
3540 @c <en>The first area of big memory consumption is large
3541 @c <en>checkouts, when using the @sc{cvs} server.  The server
3542 @c <en>consists of two processes for each client that it is
3543 @c <en>serving.  Memory consumption on the child process
3544 @c <en>should remain fairly small.  Memory consumption on the
3545 @c <en>parent process, particularly if the network connection
3546 @c <en>to the client is slow, can be expected to grow to
3547 @c <en>slightly more than the size of the sources in a single
3548 @c <en>directory, or two megabytes, whichever is larger.
3549 A primeira área de grande consumo de memória são os
3550 grandes checkouts, quando usando o servidor @sc{cvs}.
3551 O servidor consiste de dois processos para cada cliente
3552 que está servindo.  O consumo de memória no processo
3553 filho deve permanecer pequeno.  O consumo de memória no
3554 processo pai, perticularmente se a conexão de rede com
3555 o cliente é pequena, pode crescer para algo um pouco
3556 maior que o tamanho dos fontes num diretório, ou dois
3557 megabytes, o que for maior.
3558 @c "two megabytes" of course is SERVER_HI_WATER.  But
3559 @c we don't mention that here because we are
3560 @c documenting the default configuration of CVS.  If it
3561 @c is a "standard" thing to change that value, it
3562 @c should be some kind of run-time configuration.
3563 @c
3564 @c See cvsclient.texi for more on the design decision
3565 @c to not have locks in place while waiting for the
3566 @c client, which is what results in memory consumption
3567 @c as high as this.
3568
3569 @c <en>Multiplying the size of each @sc{cvs} server by the
3570 @c <en>number of servers which you expect to have active at
3571 @c <en>one time should give an idea of memory requirements for
3572 @c <en>the server.  For the most part, the memory consumed by
3573 @c <en>the parent process probably can be swap space rather
3574 @c <en>than physical memory.
3575 Multiplicando o tamanho de cada servidor @sc{cvs} pelo
3576 número de servidores que você espera ter ativos em cada
3577 momento deve dar uma idéia dos requisitos de memória
3578 para cada servidor.  Para a maior parte, a memória
3579 consumida pelo processo pai pode provavelmente ser
3580 espaço de troca ao invés de memória física.
3581 @c Has anyone verified that notion about swap space?
3582 @c I say it based pretty much on guessing that the
3583 @c ->text of the struct buffer_data only gets accessed
3584 @c in a first in, first out fashion, but I haven't
3585 @c looked very closely.
3586
3587 @c What about disk usage in /tmp on the server?  I think that
3588 @c it can be substantial, but I haven't looked at this
3589 @c again and tried to figure it out ("cvs import" is
3590 @c probably the worst case...).
3591
3592 @c <en>The second area of large memory consumption is
3593 @c <en>@code{diff}, when checking in large files.  This is
3594 @c <en>required even for binary files.  The rule of thumb is
3595 @c <en>to allow about ten times the size of the largest file
3596 @c <en>you will want to check in, although five times may be
3597 @c <en>adequate.  For example, if you want to check in a file
3598 @c <en>which is 10 megabytes, you should have 100 megabytes of
3599 @c <en>memory on the machine doing the checkin (the server
3600 @c <en>machine for client/server, or the machine running
3601 @c <en>@sc{cvs} for non-client/server).  This can be swap
3602 @c <en>space rather than physical memory.  Because the memory
3603 @c <en>is only required briefly, there is no particular need
3604 @c <en>to allow memory for more than one such checkin at a
3605 @c <en>time.
3606 A segunda área de grande consumo de memória é o
3607 @code{diff}, quando trazendo grandes arquivos.  Isto é
3608 preciso mesmo para arquivos binários.  A boa prática é
3609 permitir cerca de dez vezes o tamanho do maior arquivo
3610 que você vai devolver ao servidor, embora cinco vezes
3611 seja adequado.  Por exemplo, se você quer devolver um
3612 arquivo de 10 megabytes, você deve ter 100 megabytes of
3613 memory na máquina fazendo a devolução (o servidor para
3614 o caso cliente/servidor, ou a máquina rodando o
3615 @sc{cvs} para não-cliente/servidor).  Esta memória pode
3616 ser espaço de troca ao invés de memória física.  Já que
3617 a memória é requerida apenas brevemente, não existe
3618 necessidade especial para fornecer memória para mais
3619 de uma devolução ao mesmo tempo.
3620 @c The 5-10 times rule of thumb is from Paul Eggert for
3621 @c GNU diff.  I don't think it is in the GNU diff
3622 @c manual or anyplace like that.
3623 @c
3624 @c Probably we could be saying more about
3625 @c non-client/server CVS.
3626 @c I would guess for non-client/server CVS in an NFS
3627 @c environment the biggest issues are the network and
3628 @c the NFS server.
3629
3630 @c <en>Resource consumption for the client is even more
3631 @c <en>modest---any machine with enough capacity to run the
3632 @c <en>operating system in question should have little
3633 @c <en>trouble.
3634 O consumo de recursos no cliente é ainda mais
3635 modesto---qualquer máquina com capacidade suficiente
3636 para rodar o SO em questão não deve ter muitos
3637 problemas.
3638 @c Is that true?  I think the client still wants to
3639 @c (bogusly) store entire files in memory at times.
3640
3641 @c <en>For information on disk space requirements, see
3642 @c <en>@ref{Creating a repository}.
3643 Para informações sobre requisitos de espaço em disco,
3644 veja em @ref{Criando um repositório}.
3645
3646 @c <en>@node Connecting via rsh
3647 @node Se conectando via rsh
3648 @c <en>@subsection Connecting with rsh
3649 @subsection Se conectando via rsh
3650
3651 @c <en>@cindex rsh
3652 @cindex rsh
3653 @c <en>@sc{cvs} uses the @samp{rsh} protocol to perform these
3654 @c <en>operations, so the remote user host needs to have a
3655 @c <en>@file{.rhosts} file which grants access to the local
3656 @c <en>user. Note that the program that @sc{cvs} uses for this
3657 @c <en>purpose may be specified using the @file{--with-rsh}
3658 @c <en>flag to configure.
3659 O @sc{cvs} usa o protocolo @samp{rsh} para realizar
3660 estas operações, logo, a máquina do usuário remoto tem
3661 que ter um arquivo @file{.rhosts} que dê acesso para o
3662 usuário local.  Observe que o programa que o @sc{cvs}
3663 usa para este objetivo deve ser especificado usando a
3664 opção @file{--with-rsh} para configurar.
3665
3666 @c <en>For example, suppose you are the user @samp{mozart} on
3667 @c <en>the local machine @samp{toe.example.com}, and the
3668 @c <en>server machine is @samp{faun.example.org}.  On
3669 @c <en>faun, put the following line into the file
3670 @c <en>@file{.rhosts} in @samp{bach}'s home directory:
3671 Por exemplo, suponha que você é o usuário @samp{mozart}
3672 na máquina local @samp{toe.example.com}, e a máquina
3673 servidora é @samp{faun.example.org}.  Em faun, ponha a
3674 seguinte linha no arquivo @file{.rhosts} no diretório
3675 pessoal de @samp{bach}:
3676
3677 @example
3678 toe.example.com  mozart
3679 @end example
3680
3681 @noindent
3682 @c <en>Then test that @samp{rsh} is working with
3683 E faça o teste para ver que o @samp{rsh} está
3684 funcionando com
3685
3686 @example
3687 rsh -l bach faun.example.org 'echo $PATH'
3688 @end example
3689
3690 @c <en>@cindex CVS_SERVER, environment variable
3691 @cindex CVS_SERVER, variável de ambiente
3692 @c <en>Next you have to make sure that @code{rsh} will be able
3693 @c <en>to find the server.  Make sure that the path which
3694 @c <en>@code{rsh} printed in the above example includes the
3695 @c <en>directory containing a program named @code{cvs} which
3696 @c <en>is the server.  You need to set the path in
3697 @c <en>@file{.bashrc}, @file{.cshrc}, etc., not @file{.login}
3698 @c <en>or @file{.profile}.  Alternately, you can set the
3699 @c <en>environment variable @code{CVS_SERVER} on the client
3700 @c <en>machine to the filename of the server you want to use,
3701 @c <en>for example @file{/usr/local/bin/cvs-1.6}.
3702 A seguir você vai ter que se certificar que o
3703 @code{rsh} vai ser capaz de acessar o servidor.
3704 Verifique se o caminho que o @code{rsh} mostrou no
3705 exemplo acima inclui o diretório contendo um programa
3706 chamado @code{cvs} que está no servidor.  Você precisa
3707 ajustar o caminho no @file{.bashrc}, @file{.cshrc},
3708 etc., não no @file{.login} ou no @file{.profile}.
3709 Alternativamente, você pode ajustar a variável de
3710 ambiente @code{CVS_SERVER} na máquina cliente para o
3711 nome do arquivo do servidor que você quer usar, por
3712 exemplo @file{/usr/local/bin/cvs-1.6}.
3713 @c FIXME: there should be a way to specify the
3714 @c program in CVSROOT, not CVS_SERVER, so that one can use
3715 @c different ones for different roots.  e.g. ":server;cvs=cvs-1.6:"
3716 @c instead of ":server:".
3717
3718 @c <en>There is no need to edit @file{inetd.conf} or start a
3719 @c <en>@sc{cvs} server daemon.
3720 Não há necessidade de se editar o @file{inetd.conf} ou
3721 iniciar um daemon (serviço) servidor de @sc{cvs}.
3722
3723 @c <en>@cindex :server:, setting up
3724 @cindex :servidor:, ajustando
3725 @c <en>@cindex :ext:, setting up
3726 @cindex :ext:, ajustando
3727 @c <en>@cindex Kerberos, using kerberized rsh
3728 @cindex Kerberos, usando rsh kerberizado
3729 @c <en>@cindex SSH (rsh replacement)
3730 @cindex SSH (substituto do rsh)
3731 @c <en>@cindex rsh replacements (Kerberized, SSH, &c)
3732 @cindex Substitutos do rsh (Kerberizado, SSH, &c)
3733 @c <en>There are two access methods that you use in @code{CVSROOT}
3734 @c <en>for rsh.  @code{:server:} specifies an internal rsh
3735 @c <en>client, which is supported only by some @sc{cvs} ports.
3736 @c <en>@code{:ext:} specifies an external rsh program.  By
3737 @c <en>default this is @code{rsh} (unless otherwise specified
3738 @c <en>by the @file{--with-rsh} flag to configure) but you may set the
3739 @c <en>@code{CVS_RSH} environment variable to invoke another
3740 @c <en>program which can access the remote server (for
3741 @c <en>example, @code{remsh} on HP-UX 9 because @code{rsh} is
3742 @c <en>something different).  It must be a program which can
3743 @c <en>transmit data to and from the server without modifying
3744 @c <en>it; for example the Windows NT @code{rsh} is not
3745 @c <en>suitable since it by default translates between CRLF
3746 @c <en>and LF.  The OS/2 @sc{cvs} port has a hack to pass @samp{-b}
3747 @c <en>to @code{rsh} to get around this, but since this could
3748 @c <en>potentially cause problems for programs other than the
3749 @c <en>standard @code{rsh}, it may change in the future.  If
3750 @c <en>you set @code{CVS_RSH} to @code{SSH} or some other rsh
3751 @c <en>replacement, the instructions in the rest of this
3752 @c <en>section concerning @file{.rhosts} and so on are likely
3753 @c <en>to be inapplicable; consult the documentation for your rsh
3754 @c <en>replacement.
3755 Existem dois métodos de acesso que você pode usar no
3756 @code{CVSROOT} para rsh.  @code{:server:} especifica um
3757 cliente rsh interno, que é suportado apenas por
3758 alguns portes do @sc{cvs}.  @code{:ext:} especifica um
3759 programa rsh externo.  Por padrão é o @code{rsh} (a
3760 menos que se especifique o contrário pela opção
3761 @file{--with-rsh}) mas você pode ajustar a variável de
3762 ambiente @code{CVS_RSH} para invocar outro programa que
3763 pode acessar o servidor remoto (por exemplo,
3764 @code{remsh} num HP-UX 9 já que o @code{rsh} é de certa
3765 forma diferente).  Deve ser um programa que transmita
3766 dados de e para o servidor sem modificar nada; por
3767 exemplo, o @code{rsh} do Windows NT não é adequado já
3768 que por padrão ele permuta CRLF com LF.  O porte do
3769 @sc{cvs} para OS/2 tem um ???hack??? para passar
3770 @samp{-b} para o @code{rsh} para contornar isso, mas
3771 já que isso pode potencialmente causar problemas para
3772 outros programas que não sejam o @code{rsh} padrão,
3773 isso deve mudar no futuro.  Se você ajustar o
3774 @code{CVS_RSH} para @code{SSH} ou algum outro
3775 substituto do rsh, as instruções no restante desta seção a
3776 respeito do arquivo @file{.rhosts} e outros
3777 provavelmente não se aplicarão; consulte a documentação
3778 do seu substituto do rsh.
3779 @c FIXME: there should be a way to specify the
3780 @c program in CVSROOT, not CVS_RSH, so that one can use
3781 @c different ones for different roots.  e.g. ":ext;rsh=remsh:"
3782 @c instead of ":ext:".
3783 @c See also the comment in src/client.c for rationale
3784 @c concerning "rsh" being the default and never
3785 @c "remsh".
3786
3787 @c <en>Continuing our example, supposing you want to access
3788 @c <en>the module @file{foo} in the repository
3789 @c <en>@file{/usr/local/cvsroot/}, on machine
3790 @c <en>@file{faun.example.org}, you are ready to go:
3791 Continuando nosso exemplo, supondo que você quer
3792 acessar o módulo @file{foo} no repositório
3793 @file{/usr/local/cvsroot/}, da máquina
3794 @file{faun.example.org}, você está pronto para seguir:
3795
3796 @example
3797 cvs -d :ext:bach@@faun.example.org:/usr/local/cvsroot checkout foo
3798 @end example
3799
3800 @noindent
3801 @c <en>(The @file{bach@@} can be omitted if the username is
3802 @c <en>the same on both the local and remote hosts.)
3803 (O @file{bach@@} pode ser omitido se o nome de usuário
3804 é o mesmo tanto no servidor como no cliente.)
3805
3806 @c Should we mention "rsh host echo hi" and "rsh host
3807 @c cat" (the latter followed by typing text and ^D)
3808 @c as troubleshooting techniques?  Probably yes
3809 @c (people tend to have trouble setting this up),
3810 @c but this kind of thing can be hard to spell out.
3811
3812 @c <en>@node Password authenticated
3813 @node Autenticação por senha
3814 @c <en>@subsection Direct connection with password authentication
3815 @subsection Conexões diretas com autenticação por senha
3816
3817 @c <en>The @sc{cvs} client can also connect to the server
3818 @c <en>using a password protocol.  This is particularly useful
3819 @c <en>if using @code{rsh} is not feasible (for example,
3820 @c <en>the server is behind a firewall), and Kerberos also is
3821 @c <en>not available.
3822 O cliente @sc{cvs} também pode se conectar ao servidor
3823 usando um protocolo de senha.  Isto é particularmente
3824 útil se não se pode usar o @code{rsh} (por exemplo, se
3825 o servidor está atrás de um firewall), e o Kerberos
3826 também não está disponível.
3827
3828 @c <en>        To use this method, it is necessary to make
3829 @c <en>some adjustments on both the server and client sides.
3830         Para usar este método é necessário fazer
3831 ajustes tanto do lado do cliente como no do servidor.
3832
3833 @menu
3834 @c <en>* Password authentication server::     Setting up the server
3835 * Servidor de autenticação por senha::     Ajustando o servidor
3836 @c <en>* Password authentication client::     Using the client
3837 * Cliente de autenticação por senha::     Usando o cliente
3838 @c <en>* Password authentication security::   What this method does and does not do
3839 * Segurança com autenticação por senha::   O que este método faz e o que ele não faz
3840 @end menu
3841
3842 @c <en>@node Password authentication server
3843 @node Servidor de autenticação por senha
3844 @c <en>@subsubsection Setting up the server for password authentication
3845 @subsubsection Ajustando o servidor para autenticação por senha
3846
3847 @c <en>First of all, you probably want to tighten the
3848 @c <en>permissions on the @file{$CVSROOT} and
3849 @c <en>@file{$CVSROOT/CVSROOT} directories.  See @ref{Password
3850 @c <en>authentication security}, for more details.
3851 Antes de tudo, você provavelmente vai querer amarrar as
3852 permissões nos diretórios @file{$CVSROOT} e
3853 @file{$CVSROOT/CVSROOT}.  Veja em
3854 @ref{Segurança com autenticação por senha}
3855 para mais informações.
3856
3857 @c <en>@cindex pserver (subcommand)
3858 @cindex pserver (subcomando)
3859 @c <en>@cindex Remote repositories, port specification
3860 @cindex Repositórios remotos, especificação de porta
3861 @c <en>@cindex Repositories, remote, port specification
3862 @cindex Repositórios, remotos, especificação de porta
3863 @c <en>@cindex Client/Server Operation, port specification
3864 @cindex Operação cliente/Servidor, especificação de porta
3865 @c <en>@cindex pserver (client/server connection method), port specification
3866 @cindex pserver (método de conexão cliente/servidor), especificação de porta
3867 @c <en>@cindex kserver (client/server connection method), port specification
3868 @cindex kserver (método de conexão cliente/servidor), especificação de porta
3869 @c <en>@cindex gserver (client/server connection method), port specification
3870 @cindex gserver (método de conexão cliente/servidor), especificação de porta
3871 @c <en>@cindex port, specifying for remote repositories
3872 @cindex porta, especificação para repositórios remotos
3873 @c <en>@cindex Password server, setting up
3874 @cindex Servidor por senha, ajustando
3875 @c <en>@cindex Authenticating server, setting up
3876 @cindex Servidor por autenticação, ajustando
3877 @c <en>@cindex inetd, configuring for pserver
3878 @cindex inetd, configurando para pserver
3879 @c <en>@cindex xinetd, configuring for pserver
3880 @cindex xinetd, configurando para pserver
3881 @c FIXME: this isn't quite right regarding port
3882 @c numbers; CVS looks up "cvspserver" in
3883 @c /etc/services (on unix, but what about non-unix?).
3884 @c <en>On the server side, the file @file{/etc/inetd.conf}
3885 @c <en>needs to be edited so @code{inetd} knows to run the
3886 @c <en>command @code{cvs pserver} when it receives a
3887 @c <en>connection on the right port.  By default, the port
3888 @c <en>number is 2401; it would be different if your client
3889 @c <en>were compiled with @code{CVS_AUTH_PORT} defined to
3890 @c <en>something else, though.  This can also be specified in the CVSROOT variable
3891 @c <en>(@pxref{Remote repositories}) or overridden with the CVS_CLIENT_PORT
3892 @c <en>environment variable (@pxref{Environment variables}).
3893 No lado do servidor, o arquivo @file{/etc/inetd.conf}
3894 precisa ser editado para que o @code{inetd} saiba rodar
3895 o comando @code{cvs pserver} quando ele recebe uma
3896 conexão pela porta certa.  Por padrão, a porta de
3897 número 2401; entretanto, isto pode ser diferente se seu
3898 cliente foi compilado com @code{CVS_AUTH_PORT} definido
3899 para outra coisa.  Esta porta também pode ser
3900 especificada na variável CVSROOT
3901 (@pxref{Repositórios remotos}) ou sobreescrita com a variável de
3902 ambiente CVS_CLIENT_PORT (@pxref{Variáveis de ambiente}).
3903
3904 @c <en>        If your @code{inetd} allows raw port numbers in
3905 @c <en>@file{/etc/inetd.conf}, then the following (all on a
3906 @c <en>single line in @file{inetd.conf}) should be sufficient:
3907         Se seu @code{inetd} permite ???raw port
3908 numbers??? no @file{/etc/inetd.conf}, então o seguinte
3909 (tudo na mesma linha do @file{inetd.conf}) deve ser suficiente:
3910
3911 @example
3912 2401  stream  tcp  nowait  root  /usr/local/bin/cvs
3913 cvs -f --allow-root=/usr/cvsroot pserver
3914 @end example
3915
3916 @noindent
3917 @c <en>(You could also use the
3918 @c <en>@samp{-T} option to specify a temporary directory.)
3919 (Você pode usar também a opção @samp{-T} para
3920 especificar um diretório temporário.)
3921
3922 @c <en>The @samp{--allow-root} option specifies the allowable
3923 @c <en>@sc{cvsroot} directory.  Clients which attempt to use a
3924 @c <en>different @sc{cvsroot} directory will not be allowed to
3925 @c <en>connect.  If there is more than one @sc{cvsroot}
3926 @c <en>directory which you want to allow, repeat the option.
3927 @c <en>(Unfortunately, many versions of @code{inetd} have very small
3928 @c <en>limits on the number of arguments and/or the total length
3929 @c <en>of the command.  The usual solution to this problem is
3930 @c <en>to have @code{inetd} run a shell script which then invokes
3931 @c <en>@sc{cvs} with the necessary arguments.)
3932 A opção @samp{--allow-root} especifica o diretório
3933 @sc{cvsroot} permitido.  Clientes que tentem usar um
3934 diretório @sc{cvsroot} diferente não conseguirão se
3935 conectar.  Se você quer permitir mais de um diretório
3936 @sc{cvsroot}, repita a opção.
3937 (Infelismente, muitas versões do @code{inetd} têm um
3938 limite muito baixo do número de argumentos e/ou do
3939 comprimento total do comando.  A solução usual para
3940 este problema é fazer o @code{inetd} rodar um script de
3941 shell que invoque o @sc{cvs} com os argumentos
3942 necessários.)
3943
3944 @c <en>        If your @code{inetd} wants a symbolic service
3945 @c <en>name instead of a raw port number, then put this in
3946 @c <en>@file{/etc/services}:
3947         Se seu @code{inetd} precisa de um nome
3948 simbólico de serviço ao invés de um número de porta,
3949 ponha em @file{/etc/services}:
3950
3951 @example
3952 cvspserver      2401/tcp
3953 @end example
3954
3955 @noindent
3956 @c <en>and put @code{cvspserver} instead of @code{2401} in @file{inetd.conf}.
3957 e ponha @code{cvspserver} no lugar de @code{2401} no @file{inetd.conf}.
3958
3959 @c <en>If your system uses @code{xinetd} instead of @code{inetd},
3960 @c <en>the procedure is slightly different.
3961 @c <en>Create a file called @file{/etc/xinetd.d/cvspserver} containing the following:
3962 Se seu sistema usa @code{xinetd} no lugar de @code{inetd},
3963 o procedimento é um pouco diferente.  Crie um arquivo
3964 chamado @file{/etc/xinetd.d/cvspserver} contendo o seguinte:
3965
3966 @example
3967 service cvspserver
3968 @{
3969    port        = 2401
3970    socket_type = stream
3971    protocol    = tcp
3972    wait        = no
3973    user        = root
3974    passenv     = PATH
3975    server      = /usr/local/bin/cvs
3976    server_args = -f --allow-root=/usr/cvsroot pserver
3977 @}
3978 @end example
3979
3980 @noindent
3981 @c <en>(If @code{cvspserver} is defined in @file{/etc/services}, you can omit
3982 @c <en>the @code{port} line.)
3983 (Se @code{cvspserver} é definido no
3984 @file{/etc/services}, você pode omitir a linha @code{port}.)
3985
3986 @c <en>        Once the above is taken care of, restart your
3987 @c <en>@code{inetd}, or do whatever is necessary to force it
3988 @c <en>to reread its initialization files.
3989         Uma vez que as instruções acima foram seguidas,
3990 reinicie seu @code{inetd}, ou faça o que for necessário
3991 para forçá-lo a reler seus arquivos de inicialização.
3992
3993 @c <en>If you are having trouble setting this up, see
3994 @c <en>@ref{Connection}.
3995 Se você enfrentar problemas, veja em @ref{Conexão}.
3996
3997 @c <en>@cindex CVS passwd file
3998 @cindex Arquivo passwd do CVS
3999 @c <en>@cindex passwd (admin file)
4000 @cindex passwd (arquivo administrativo)
4001 @c <en>Because the client stores and transmits passwords in
4002 @c <en>cleartext (almost---see @ref{Password authentication
4003 @c <en>security}, for details), a separate @sc{cvs} password
4004 @c <en>file is generally used, so people don't compromise
4005 @c <en>their regular passwords when they access the
4006 @c <en>repository.  This file is
4007 @c <en>@file{$CVSROOT/CVSROOT/passwd} (@pxref{Intro
4008 @c <en>administrative files}).  It uses a colon-separated
4009 @c <en>format, similar to @file{/etc/passwd} on Unix systems,
4010 @c <en>except that it has fewer fields: @sc{cvs} username,
4011 @c <en>optional password, and an optional system username for
4012 @c <en>@sc{cvs} to run as if authentication succeeds.  Here is
4013 @c <en>an example @file{passwd} file with five entries:
4014 Como o cliente guarda e transmite as senhas em texto simples
4015 (praticamente---veja @ref{Segurança com autenticação por senha}
4016 para detalhes), um arquivo de senhas do @sc{cvs} é
4017 geralmente usado, de forma que as pessoas nao
4018 comprometam suas senhas regulares quando acessam o
4019 repositório.  Este arquivo é o
4020 @file{$CVSROOT/CVSROOT/passwd} (@pxref{Intro aos
4021 arquivos administrativos}).  Ele usa um formato
4022 separado por dois pontos, similar ao do
4023 @file{/etc/passwd} dos sistemas Unix, exceto que este
4024 tem menos campos: nome do usuário @sc{cvs}, senha
4025 opcional, e um nome de usuário de sistema opcional para
4026 o @sc{cvs} rodar como ele se ocorrer a autenticação.
4027 Aqui está um exemplo de arquivo @file{passwd} com cinco
4028 entradas:
4029
4030 @example
4031 anonymous:
4032 bach:ULtgRLXo7NRxs
4033 spwang:1sOp854gDF3DY
4034 melissa:tGX1fS8sun6rY:pubcvs
4035 qproj:XR4EZcEs0szik:pubcvs
4036 @end example
4037
4038 @noindent
4039 @c <en>(The passwords are encrypted according to the standard
4040 @c <en>Unix @code{crypt()} function, so it is possible to
4041 @c <en>paste in passwords directly from regular Unix
4042 @c <en>@file{/etc/passwd} files.)
4043 (As senhas são criptografadas de acordo com a função
4044 Unix @code{crypt()} padrão, portanto é possível copiar
4045 senhas diretamente de arquivos @file{/etc/passwd}
4046 normais do Unix.)
4047
4048 @c <en>The first line in the example will grant access to any
4049 @c <en>@sc{cvs} client attempting to authenticate as user
4050 @c <en>@code{anonymous}, no matter what password they use,
4051 @c <en>including an empty password.  (This is typical for
4052 @c <en>sites granting anonymous read-only access; for
4053 @c <en>information on how to do the "read-only" part, see
4054 @c <en>@ref{Read-only access}.)
4055 A primeira linha no exemplo vai dar acesso a qualquer
4056 cliente @sc{cvs} que tente se autenticar como o usuário
4057 @code{anonymous} (anônimo), qualquer que seja a senha
4058 que ele esteja usando, até mesmo uma senha vazia.
4059 (Isto é típico de sítios que dão acesso somente-leitura
4060 anônimo; para informações sobre como fazer a parte
4061 "somente-leitura", veja em @ref{Acesso somente-leitura}.)
4062
4063 @c <en>The second and third lines will grant access to
4064 @c <en>@code{bach} and @code{spwang} if they supply their
4065 @c <en>respective plaintext passwords.
4066 As segunda e terceira linhas vão fornecer acesso a
4067 @code{bach} e @code{spwang} se eles fornecerem suas
4068 respectivas senhas em texto simples.
4069
4070 @c <en>@cindex User aliases
4071 @cindex User aliases
4072 @c <en>The fourth line will grant access to @code{melissa}, if
4073 @c <en>she supplies the correct password, but her @sc{cvs}
4074 @c <en>operations will actually run on the server side under
4075 @c <en>the system user @code{pubcvs}.  Thus, there need not be
4076 @c <en>any system user named @code{melissa}, but there
4077 @c <en>@emph{must} be one named @code{pubcvs}.
4078 A quarta linha vai dar acesso a @code{melissa}, se ela
4079 fornecer a senha correta, mas suas opareções no
4080 @sc{cvs} vão ser rodadas, na verdade, como o usuário de
4081 sistema @code{pubcvs} no lado do servidor.  Logo, não
4082 há a necessidade de haver qualquer usuário chamado
4083 @code{melissa}, mas @emph{tem que} haver um chamado
4084 @code{pubcvs}.
4085
4086 @c <en>The fifth line shows that system user identities can be
4087 @c <en>shared: any client who successfully authenticates as
4088 @c <en>@code{qproj} will actually run as @code{pubcvs}, just
4089 @c <en>as @code{melissa} does.  That way you could create a
4090 @c <en>single, shared system user for each project in your
4091 @c <en>repository, and give each developer their own line in
4092 @c <en>the @file{$CVSROOT/CVSROOT/passwd} file.  The @sc{cvs}
4093 @c <en>username on each line would be different, but the
4094 @c <en>system username would be the same.  The reason to have
4095 @c <en>different @sc{cvs} usernames is that @sc{cvs} will log their
4096 @c <en>actions under those names: when @code{melissa} commits
4097 @c <en>a change to a project, the checkin is recorded in the
4098 @c <en>project's history under the name @code{melissa}, not
4099 @c <en>@code{pubcvs}.  And the reason to have them share a
4100 @c <en>system username is so that you can arrange permissions
4101 @c <en>in the relevant area of the repository such that only
4102 @c <en>that account has write-permission there.
4103 A quinta linha mostra que identidades de usuários de
4104 sistema podem ser compartilhadas: qualquer cliente que
4105 se autentique com sucesso como @code{qproj} vai na
4106 verdade rodar como @code{pubcvs}, da mesma forma que
4107 @code{melissa} faz.  Desta forma você pode criar um
4108 único e compartilhado usuário de sistema para cada
4109 projeto no seu repositório, e dar a cada desenvolvedor
4110 sua própria linha no arquivo
4111 @file{$CVSROOT/CVSROOT/passwd}.  O nome de usuário do
4112 @sc{cvs} em cada linha vai ser diferente, mas o usuário
4113 de sistema vai ser o mesmo.  A razão para se ter
4114 diferentes nomes de usuários do @sc{cvs} é que o
4115 @sc{cvs} vai registrar suas ações sob estes nomes:
4116 quando @code{melissa} submete (commit) uma mudança ao
4117 projeto, o checkin é gravado no histórico do projeto em
4118 nome de @code{melissa}, não de @code{pubcvs}.  E a
4119 razão para tê-los compartilhando um usuário de sistema
4120 é que você pode ajeitar as permissões da área relevante
4121 do repositório de forma que apenas aquela conta tenha
4122 permissão de leitura lá.
4123
4124 @c <en>If the system-user field is present, all
4125 @c <en>password-authenticated @sc{cvs} commands run as that
4126 @c <en>user; if no system user is specified, @sc{cvs} simply
4127 @c <en>takes the @sc{cvs} username as the system username and
4128 @c <en>runs commands as that user.  In either case, if there
4129 @c <en>is no such user on the system, then the @sc{cvs}
4130 @c <en>operation will fail (regardless of whether the client
4131 @c <en>supplied a valid password).
4132 Se o campo do usuário de sistema está presente, todos
4133 os comandos do @sc{cvs} com autenticação por senha
4134 rodarão como aquele usuário; se nenhum usuário é
4135 especificado, o @sc{cvs} simplesmente vai usar o nome
4136 de usuário do @sc{cvs} como o nome de usuário de
4137 sistema e rodar os comandos como este usuário.  Em
4138 qualquer caso, se não existir tal usuário no sistema, a
4139 operação do @sc{cvs} vai falhar (independente do
4140 cliente ter fornecido uma senha válida).
4141
4142 @c <en>The password and system-user fields can both be omitted
4143 @c <en>(and if the system-user field is omitted, then also
4144 @c <en>omit the colon that would have separated it from the
4145 @c <en>encrypted password).  For example, this would be a
4146 @c <en>valid @file{$CVSROOT/CVSROOT/passwd} file:
4147 Os campos de senha e usuário de sistema podem ser ambos
4148 omitidos (e se o campo de usuário de sistema for
4149 omitido, então a vírgula que o separava da senha
4150 criptografada também pode ser omitida).  Por exemplo,
4151 isto pode ser um arquivo @file{$CVSROOT/CVSROOT/passwd} válido:
4152
4153 @example
4154 anonymous::pubcvs
4155 fish:rKa5jzULzmhOo:kfogel
4156 sussman:1sOp854gDF3DY
4157 @end example
4158
4159 @noindent
4160 @c <en>When the password field is omitted or empty, then the
4161 @c <en>client's authentication attempt will succeed with any
4162 @c <en>password, including the empty string.  However, the
4163 @c <en>colon after the @sc{cvs} username is always necessary,
4164 @c <en>even if the password is empty.
4165 Quando o campo senha não existe ou é vazio, então uma
4166 tentativa de autenticação do cliente vai funcionar
4167 qualquer que seja a senha, inclusive a senha vazia.
4168 Entretanto, o dois pontos antes do nome de usuário do
4169 @sc{cvs} é sempre necessário, mesmo se a senha for vazia.
4170
4171 @c <en>@sc{cvs} can also fall back to use system authentication.
4172 @c <en>When authenticating a password, the server first checks
4173 @c <en>for the user in the @file{$CVSROOT/CVSROOT/passwd}
4174 @c <en>file.  If it finds the user, it will use that entry for
4175 @c <en>authentication as described above.  But if it does not
4176 @c <en>find the user, or if the @sc{cvs} @file{passwd} file
4177 @c <en>does not exist, then the server can try to authenticate
4178 @c <en>the username and password using the operating system's
4179 @c <en>user-lookup routines (this "fallback" behavior can be
4180 @c <en>disabled by setting @code{SystemAuth=no} in the
4181 @c <en>@sc{cvs} @file{config} file, @pxref{config}).
4182 O @sc{cvs} também pode recorrer à autenticação do
4183 sistema.  Quando autenticando uma senha, o servidor
4184 primeiro procura pelo usuário no arquivo
4185 @file{$CVSROOT/CVSROOT/passwd}.  Se ele encontra o
4186 usuário, ele vai usar aquela entrada para autenticar
4187 como descrito acima.  Mas se o usuário não for
4188 encontrado, ou se o arquivo @file{passwd} do  @sc{cvs}
4189 não existe, então o servidor pode tentar autenticar o
4190 nome de usuário e a senha usando as rotinas de
4191 ???user-lookup??? do sistema operacional (Este
4192 comportamento "alternativo" pode ser desabilitado ajustando
4193 o @code{SystemAuth=no} no arquivo @file{config} do
4194 @sc{cvs}, @pxref{config}).
4195
4196 @c <en>The default fallback behaviour is to look in 
4197 @c <en>@file{/etc/passwd} for this system password unless your
4198 @c <en>system has PAM (Pluggable Authentication Modules)
4199 @c <en>and your @sc{cvs} server executable was configured to
4200 @c <en>use it at compile time (using @code{./configure --enable-pam} - see the
4201 @c <en>INSTALL file for more).  In this case, PAM will be consulted instead.
4202 @c <en>This means that @sc{cvs} can be configured to use any password
4203 @c <en>authentication source PAM can be configured to use (possibilities
4204 @c <en>include a simple UNIX password, NIS, LDAP, and others) in its
4205 @c <en>global configuration file (usually @file{/etc/pam.conf}
4206 @c <en>or possibly @file{/etc/pam.d/cvs}).  See your PAM documentation
4207 @c <en>for more details on PAM configuration.
4208 O comportamento alternativo é procurar no
4209 @file{/etc/passwd} por este usuário de sistema a menos
4210 que seu sistema tenha PAM (Pluggable Authentication
4211 Modules) e seu servidor do @sc{cvs} executável foi
4212 configurado para usar PAM em tempo de compilação
4213 (usando @code{./configure --enable-pam} - veja no
4214 arquivo INSTALL para saber mais).  Neste caso, PAM é
4215 que vai autenticar.  Isto significa que o @sc{cvs} pode
4216 ser configurado para usar qualquer fonte de
4217 autenticação por senha que PAM possa ser configurada
4218 para usar (as possibilidades incluem senha simples de
4219 UNIX, NIS, LDAP, e outras) no seu arquivo de
4220 configuração global (em geral @file{/etc/pam.conf}
4221 ou possivelmente @file{/etc/pam.d/cvs}).  Veja em sua
4222 documentação do PAM para mais detalhes sobre a
4223 configuração do PAM.
4224
4225 @c <en>Note that PAM is an experimental feature in @sc{cvs} and feedback is
4226 @c <en>encouraged.  Please send a mail to one of the @sc{cvs} mailing lists
4227 @c <en>(@code{info-cvs@@nongnu.org} or @code{bug-cvs@@nongnu.org}) if you use the 
4228 @c <en>@sc{cvs} PAM support.
4229 Observe que PAM é uma funcionalidade experimental no
4230 @sc{cvs} e feedback é encorajado.  Por favor, mande
4231 e-mail para uma das listas do @sc{cvs}
4232 (@code{info-cvs@@nongnu.org} ou @code{bug-cvs@@nongnu.org})
4233 se você usa o suporte a PAM do @sc{cvs}.  As listas são
4234 em inglês.
4235
4236 @c <en>@strong{WARNING: Using PAM gives the system administrator much more 
4237 @c <en>flexibility about how @sc{cvs} users are authenticated but 
4238 @c <en>no more security than other methods.  See below for more.} 
4239 @strong{ATENÇÃO: Usar PAM dá ao administrador do
4240 sistema muito mais flexibilidade sobre como os usuários
4241 do @sc{cvs} são autenticados mas não dá mais segurança
4242 que outros métodos.  Veja abaixo mais detalhes.} 
4243
4244 @c <en>CVS needs an "auth" and "account" module in the 
4245 @c <en>PAM configuration file. A typical PAM configuration 
4246 @c <en>would therefore have the following lines 
4247 @c <en>in @file{/etc/pam.conf} to emulate the standard @sc{cvs} 
4248 @c <en>system @file{/etc/passwd} authentication:
4249 CVS precisa de um módulo "auth" e "account" no arquivo
4250 de configuração PAM.  Uma configuração PAM típica deve
4251 portanto ter as seguintes linhas no
4252 @file{/etc/pam.conf} para simular a autenticação
4253 @file{/etc/passwd} do sistema @sc{cvs} padrão:
4254
4255 @example
4256 cvs     auth        required    pam_unix.so
4257 cvs     account     required    pam_unix.so
4258 @end example
4259
4260 @c <en>The the equivalent @file{/etc/pam.d/cvs} would contain
4261 O @file{/etc/pam.d/cvs} equivalente deve conter
4262
4263 @example
4264 auth        required    pam_unix.so
4265 account     required    pam_unix.so
4266 @end example
4267
4268 @c <en>Some systems require a full path to the module so that
4269 @c <en>@file{pam_unix.so} (Linux) would become something like 
4270 @c <en>@file{/usr/lib/security/$ISA/pam_unix.so.1} (Sun Solaris).
4271 @c <en>See the @file{contrib/pam} subdirectory of the @sc{cvs}
4272 @c <en>source distribution for further example configurations.
4273 Alguns sistemas necessitam de um caminho completo para
4274 o módulo de forma que @file{pam_unix.so} (Linux) vai se
4275 tornar algo do tipo
4276 @file{/usr/lib/security/$ISA/pam_unix.so.1} (Sun
4277 Solaris).  Veja o subdiretório @file{contrib/pam} da
4278 distribuição em código fonte do @sc{cvs} para mais
4279 exemplos de configuração.
4280
4281 @c <en>The PAM service name given above as "cvs" is just
4282 @c <en>the service name in the default configuration amd can be
4283 @c <en>set using
4284 @c <en>@code{./configure --with-hardcoded-pam-service-name=<pam-service-name>}
4285 @c <en>before compiling.  @sc{cvs} can also be configured to use whatever
4286 @c <en>name it is invoked as as its PAM service name using
4287 @c <en>@code{./configure --without-hardcoded-pam-service-name}, but this
4288 @c <en>feature should not be used if you may not have control of the name
4289 @c <en>@sc{cvs} will be invoked as.
4290 O nome de serviço PAM dado abaixo como "cvs" é apenas o
4291 nome do serviço na configuração padrão e pode ser
4292 mudado usando
4293 @code{./configure --with-hardcoded-pam-service-name=<pam-service-name>}
4294 antes de compilar.  ??? @sc{cvs} can also be configured to use whatever
4295 name it is invoked as as its PAM service name using
4296 @code{./configure
4297 --without-hardcoded-pam-service-name}???, mas esta
4298 característica não deve ser usada se você não tiver
4299 controle do nome com o qual o @sc{cvs} será chamado.
4300
4301 @c <en>Be aware, also, that falling back to system
4302 @c <en>authentication might be a security risk: @sc{cvs}
4303 @c <en>operations would then be authenticated with that user's
4304 @c <en>regular login password, and the password flies across
4305 @c <en>the network in plaintext.  See @ref{Password
4306 @c <en>authentication security} for more on this.
4307 @c <en>This may be more of a problem with PAM authentication
4308 @c <en>because it is likely that the source of the system 
4309 @c <en>password is some central authentication service like
4310 @c <en>LDAP which is also used to authenticate other services.
4311 Esteja avisado, além disso, que recorrer a autenticação
4312 do sistema pode ser um risco de segurança: as operações
4313 do @sc{cvs} deveram ser autenticadas com a senha do
4314 usuário regular, e a senha vai passar pela rede em
4315 texto plano.  Veja em @ref{Segurança com autenticação por senha}
4316 para saber mais.  Isto pode ser um problema a mais com
4317 autenticação PAM por que é provável que a fonte do
4318 sistema de senhas é algum serviço de autenticação
4319 central como o LDAP, que é usado para autenticar outros
4320 serviços.
4321
4322 @c <en>On the other hand, PAM makes it very easy to change your password
4323 @c <en>regularly.  If they are given the option of a one-password system for
4324 @c <en>all of their activities, users are often more willing to change their
4325 @c <en>password on a regular basis.
4326 Por outro lado, PAM faz com que seja fácil mudar a
4327 senha regularmente.  Se os usuários têm um sistema de
4328 senha única, são mais fáceis de convencer a trocar de
4329 senha regularmente.
4330
4331 @c <en>In the non-PAM configuration where the password is stored in the
4332 @c <en>@file{CVSROOT/passwd} file, it is difficult to change passwords on a
4333 @c <en>regular basis since only administrative users (or in some cases
4334 @c <en>processes that act as an administrative user) are typicaly given
4335 @c <en>access to modify this file.  Either there needs to be some
4336 @c <en>hand-crafted web page or set-uid program to update the file, or the
4337 @c <en>update needs to be done by submitting a request to an administrator to
4338 @c <en>perform the duty by hand.  In the first case, having to remember to
4339 @c <en>update a separate password on a periodic basis can be difficult.  In
4340 @c <en>the second case, the manual nature of the change will typically mean
4341 @c <en>that the password will not be changed unless it is absolutely
4342 @c <en>necessary.
4343 Numa configuração não-PAM, onde a senha é guardada no
4344 arquivo @file{CVSROOT/passwd}, é difícil mudar as
4345 senhas regularmente já que apenas usuários
4346 administradores (ou em alguns casos, processos que agem
4347 como usuários administradores) têm acesso de escrita ao
4348 arquivo.  ???Either there needs to be some
4349 hand-crafted web page or set-uid program to update the file, or the
4350 update needs to be done by submitting a request to an administrator to
4351 perform the duty by hand???.  No primeiro caso, ter que
4352 lembrar de uma senha a parte periodicamente pode ser
4353 difícil.  No segundo caso, a natureza manual da mudança
4354 vai significar que a senha não vai ser mudada até que
4355 seja absolutamente necessário.
4356
4357 @c <en>Note that PAM administrators should probably avoid configuring
4358 @c <en>one-time-passwords (OTP) for @sc{cvs} authentication/authorization.  If
4359 @c <en>OTPs are desired, the administrator may wish to encourage the use of
4360 @c <en>one of the other Client/Server access methods.  See the section on
4361 @c <en>@pxref{Remote repositories} for a list of other methods.
4362 Observe que os administradores do PAM vão evitar
4363 configurar one-time-passwords (OTP) para
4364 autenticação/autorização do @sc{cvs}.  Se os OTPs são
4365 desejados, o administrador vai querer encorajar o uso
4366 de um dos outros métodos de acesso cliente/servidor.
4367 Veja a seção em @pxref{Repositórios remotos} para uma
4368 lista de outros métodos.
4369
4370 @c <en>Right now, the only way to put a password in the
4371 @c <en>@sc{cvs} @file{passwd} file is to paste it there from
4372 @c <en>somewhere else.  Someday, there may be a @code{cvs
4373 @c <en>passwd} command.
4374 Por agora, a única forma de botar uma senha no arquivo
4375 @file{passwd} do @sc{cvs} é colar de algum outro lugar.
4376 Algum dia vai haver um comando @code{cvs passwd}.
4377
4378 @c <en>Unlike many of the files in @file{$CVSROOT/CVSROOT}, it
4379 @c <en>is normal to edit the @file{passwd} file in-place,
4380 @c <en>rather than via @sc{cvs}.  This is because of the
4381 @c <en>possible security risks of having the @file{passwd}
4382 @c <en>file checked out to people's working copies.  If you do
4383 @c <en>want to include the @file{passwd} file in checkouts of
4384 @c <en>@file{$CVSROOT/CVSROOT}, see @ref{checkoutlist}.
4385 Ao contrário da maioria dos arquivos no
4386 @file{$CVSROOT/CVSROOT}, é normal editar o arquivo
4387 @file{passwd} in loco, ao invés de pelo @sc{cvs}.  Isto
4388 é devido a possíveis riscos de segurança ao se ter
4389 cópias do arquivo @file{passwd} baixadas para o
4390 diretório de trabalho das pessoas.  Se você quer
4391 incluir o arquivo @file{passwd} nos checkouts de
4392 @file{$CVSROOT/CVSROOT}, veja em @ref{checkoutlist}.
4393
4394 @c We might also suggest using the @code{htpasswd} command
4395 @c from freely available web servers as well, but that
4396 @c would open up a can of worms in that the users next
4397 @c questions are likely to be "where do I get it?" and
4398 @c "how do I use it?"
4399 @c Also note that htpasswd, at least the version I had,
4400 @c likes to clobber the third field.
4401
4402 @c <en>@node Password authentication client
4403 @node Cliente de autenticação por senha
4404 @c <en>@subsubsection Using the client with password authentication
4405 @subsubsection Usando o cliente com autenticação por senha
4406 @c <en>@cindex Login (subcommand)
4407 @cindex Login (subcomando)
4408 @c <en>@cindex Password client, using
4409 @cindex Cliente por senha, usando
4410 @c <en>@cindex Authenticated client, using
4411 @cindex Cliente autenticado, usando
4412 @c <en>@cindex :pserver:, setting up
4413 @cindex :pserver:, ajustando
4414 @c <en>To run a @sc{cvs} command on a remote repository via
4415 @c <en>the password-authenticating server, one specifies the
4416 @c <en>@code{pserver} protocol, optional username, repository host, an
4417 @c <en>optional port number, and path to the repository.  For example:
4418 Para rodar um comando @sc{cvs} num repositório remoto
4419 via servidor de autenticação por senha, deve-se
4420 espedificar o protocolo @code{pserver}, um nome de
4421 usuário opcional, a máquina do repositório, uma porta
4422 opcional, e o caminho para o repositório.  Por exemplo:
4423
4424 @example
4425 cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
4426 @end example
4427
4428 @noindent
4429 @c <en>or
4430 or
4431
4432 @example
4433 CVSROOT=:pserver:bach@@faun.example.org:2401/usr/local/cvsroot
4434 cvs checkout someproj
4435 @end example
4436
4437 @c <en>However, unless you're connecting to a public-access
4438 @c <en>repository (i.e., one where that username doesn't
4439 @c <en>require a password), you'll need to supply a password or @dfn{log in} first.
4440 @c <en>Logging in verifies your password with the repository and stores it in a file.
4441 @c <en>It's done with the @code{login} command, which will
4442 @c <en>prompt you interactively for the password if you didn't supply one as part of
4443 @c <en>@var{$CVSROOT}:
4444 Entretanto, a menos que você esteja conectado a um
4445 repositório de acesso público (i.e., um daqueles que o
4446 usuário não precisa de senha), você vai precisar
4447 fornecer uma senha ou @dfn{se logar} antes.  Ao se
4448 logar, a sua senha é comparada com a do repositório e
4449 guardada num arquivo.  Isto é feito com o comando
4450 @code{login}, que vai pedir a sua senha interativamente
4451 se você não forneceu ela como parte do @var{$CVSROOT}:
4452
4453 @example
4454 cvs -d :pserver:bach@@faun.example.org:/usr/local/cvsroot login
4455 CVS password:
4456 @end example
4457
4458 @noindent
4459 @c <en>or
4460 or
4461
4462 @example
4463 cvs -d :pserver:bach:p4ss30rd@@faun.example.org:/usr/local/cvsroot login
4464 @end example
4465
4466 @c <en>After you enter the password, @sc{cvs} verifies it with
4467 @c <en>the server.  If the verification succeeds, then that
4468 @c <en>combination of username, host, repository, and password
4469 @c <en>is permanently recorded, so future transactions with
4470 @c <en>that repository won't require you to run @code{cvs
4471 @c <en>login}.  (If verification fails, @sc{cvs} will exit
4472 @c <en>complaining that the password was incorrect, and
4473 @c <en>nothing will be recorded.)
4474 Depois de fornecer a senha, o @sc{cvs} a verifica no
4475 servidor.   Se a verificação procede, então esta
4476 combinação de usuário, máquina, repositório e senha é
4477 gravada permanentemente de forma que futuras transações
4478 com este repositório não vão requerer a execução de
4479 @code{cvs login}.  (Se a verificação falhar, @sc{cvs}
4480 vai sair avisando que a senha está incorreta e nada vai
4481 ser gravado.)
4482
4483 @c <en>The records are stored, by default, in the file
4484 @c <en>@file{$HOME/.cvspass}.  That file's format is
4485 @c <en>human-readable, and to a degree human-editable, but
4486 @c <en>note that the passwords are not stored in
4487 @c <en>cleartext---they are trivially encoded to protect them
4488 @c <en>from "innocent" compromise (i.e., inadvertent viewing
4489 @c <en>by a system administrator or other non-malicious
4490 @c <en>person).
4491 A gravação é feita, por padrão, no arquivo
4492 @file{$HOME/.cvspass}.  O arquivo tem formato
4493 legível, e num certo nível, editável, mas observe que
4494 as senhas não são guardadas em texto plano---elas são
4495 codificadas trivialmente para proteger contra
4496 ???compromise??? "inocente" (i.e., um administrador
4497 desavisado dar uma olhada ou outra pessoa sem segundas
4498 intenções).
4499
4500 @c <en>@cindex CVS_PASSFILE, environment variable
4501 @c <en>You can change the default location of this file by
4502 @c <en>setting the @code{CVS_PASSFILE} environment variable.
4503 @c <en>If you use this variable, make sure you set it
4504 @c <en>@emph{before} @code{cvs login} is run.  If you were to
4505 @c <en>set it after running @code{cvs login}, then later
4506 @c <en>@sc{cvs} commands would be unable to look up the
4507 @c <en>password for transmission to the server.
4508 @cindex CVS_PASSFILE, variável de ambiente
4509 Você pode  mudar o local padrão deste arquivo ajustando
4510 a variável de ambiente @code{CVS_PASSFILE}.  Se você
4511 usar esta variável, certifique-se de fazer isto
4512 @emph{antes} de rodar @code{cvs login}.  Se você fizer
4513 isto depois de rodar o @code{cvs login}, então mais
4514 tarde os comandos do @sc{cvs} vão ser incapazes de
4515 encontrar a senha para mandar para o servidor.
4516   
4517 @c <en>Once you have logged in, all @sc{cvs} commands using
4518 @c <en>that remote repository and username will authenticate
4519 @c <en>with the stored password.  So, for example
4520 Uma vez que você esteja autenticado, todos os comandos
4521 do @sc{cvs} que usam o repositório remoto e senha vão
4522 se autenticar com a senha armazenada.  Então, por exemplo
4523   
4524 @example
4525 cvs -d :pserver:bach@@faun.example.org:/usr/local/cvsroot checkout foo
4526 @end example
4527
4528 @c <en>@noindent
4529 @c <en>should just work (unless the password changes on the
4530 @c <en>server side, in which case you'll have to re-run
4531 @c <en>@code{cvs login}).
4532 @noindent
4533 vai funcionar (a menos que a senha mude no servidor,
4534 onde neste caso você vai ter que rodar de novo
4535 @code{cvs login}).
4536
4537 @c <en>Note that if the @samp{:pserver:} were not present in
4538 @c <en>the repository specification, @sc{cvs} would assume it
4539 @c <en>should use @code{rsh} to connect with the server
4540 @c <en>instead (@pxref{Connecting via rsh}).
4541 Observe que se o @samp{:pserver:} não estiver presente
4542 na especificação do repositório, o @sc{cvs} vai assumir
4543 que deve usar o @code{rsh} para se conectar com o
4544 servidor, neste caso (@pxref{Se conectando via rsh}).
4545
4546 @c <en>Of course, once you have a working copy checked out and
4547 @c <en>are running @sc{cvs} commands from within it, there is
4548 @c <en>no longer any need to specify the repository
4549 @c <en>explicitly, because @sc{cvs} can deduce the repository
4550 @c <en>from the working copy's @file{CVS} subdirectory.
4551 É claro que, uma vez que você tenha uma cópia de
4552 trabalho baixada e está rodando comandos @sc{cvs} de
4553 dentro dela, não existe mais a necessidade de
4554 explicitar o repositório, já que o @sc{cvs} pode
4555 deduzir o repositório a partir do subdiretório
4556 @file{CVS} da cópia de trabalho.
4557
4558 @c FIXME: seems to me this needs somewhat more
4559 @c explanation.
4560 @c <en>@cindex Logout (subcommand)
4561 @c <en>The password for a given remote repository can be
4562 @c <en>removed from the @code{CVS_PASSFILE} by using the
4563 @c <en>@code{cvs logout} command.
4564 @cindex Logout (subcomando)
4565 A senha para um dado repositório remoto pode ser
4566 removida do @code{CVS_PASSFILE} usando o comando
4567 @code{cvs logout}.
4568
4569 @c <en>@node Password authentication security
4570 @node Segurança com autenticação por senha
4571 @c <en>@subsubsection Security considerations with password authentication
4572 @subsubsection Considerações de segurança com autenticação por senha
4573
4574 @c <en>@cindex Security, of pserver
4575 @cindex Segurança com pserver
4576 @c <en>The passwords are stored on the client side in a
4577 @c <en>trivial encoding of the cleartext, and transmitted in
4578 @c <en>the same encoding.  The encoding is done only to
4579 @c <en>prevent inadvertent password compromises (i.e., a
4580 @c <en>system administrator accidentally looking at the file),
4581 @c <en>and will not prevent even a naive attacker from gaining
4582 @c <en>the password.
4583 As senhas são guardadas no cliente com uma codificação
4584 trivial de texto, e transmitidas na mesma codificação.
4585 Esta codificação é feita apenas para prevenir uma
4586 quebra de segredo inadvertida (i.e., um administrador
4587 de sistema acidentalmente olhar o arquivo), e não
4588 evita nem mesmo que um atacante ingênuo consiga a
4589 senha.
4590
4591 @c FIXME: The bit about "access to the repository
4592 @c implies general access to the system is *not* specific
4593 @c to pserver; it applies to kerberos and SSH and
4594 @c everything else too.  Should reorganize the
4595 @c documentation to make this clear.
4596 @c <en>The separate @sc{cvs} password file (@pxref{Password
4597 @c <en>authentication server}) allows people
4598 @c <en>to use a different password for repository access than
4599 @c <en>for login access.  On the other hand, once a user has
4600 @c <en>non-read-only
4601 @c <en>access to the repository, she can execute programs on
4602 @c <en>the server system through a variety of means.  Thus, repository
4603 @c <en>access implies fairly broad system access as well.  It
4604 @c <en>might be possible to modify @sc{cvs} to prevent that,
4605 @c <en>but no one has done so as of this writing.
4606 O arquivo de senhas do @sc{cvs} em separado
4607 (@pxref{Servidor de autenticação por senha}) permite
4608 que as pessoas usem uma senha de acesso ao repositório
4609 deferente da senha de login.  Por outro lado, uma vez
4610 que um usuário tenha acesso maior que somente-leitura,
4611 ele pode executar programas no sistema do servidor de
4612 várias formas.  Então, o acesso ao repositório implica
4613 acesso ao sistema como um todo.  É possível modificar o
4614 @sc{cvs} para evitar isto, mas até agora ninguem agiu
4615 neste sentido.
4616 @c OpenBSD uses chroot() and copies the repository to
4617 @c provide anonymous read-only access (for details see
4618 @c http://www.openbsd.org/anoncvs.shar).  While this
4619 @c closes the most obvious holes, I'm not sure it
4620 @c closes enough holes to recommend it (plus it is
4621 @c *very* easy to accidentally screw up a setup of this
4622 @c type).
4623
4624 @c <en>Note that because the @file{$CVSROOT/CVSROOT} directory
4625 @c <en>contains @file{passwd} and other files which are used
4626 @c <en>to check security, you must control the permissions on
4627 @c <en>this directory as tightly as the permissions on
4628 @c <en>@file{/etc}.  The same applies to the @file{$CVSROOT}
4629 @c <en>directory itself and any directory
4630 @c <en>above it in the tree.  Anyone who has write access to
4631 @c <en>such a directory will have the ability to become any
4632 @c <en>user on the system.  Note that these permissions are
4633 @c <en>typically tighter than you would use if you are not
4634 @c <en>using pserver.
4635 observe que já que o diretório @file{$CVSROOT/CVSROOT}
4636 contém o arquivo @file{passwd} e outros arquivos que
4637 são usados para verificações de segurança, você deve
4638 controlar as permissões neste diretório com o mesmo
4639 cuidado que tem com as permissões em @file{/etc}.  O
4640 mesmo se aplica ao próprio diretório @file{$CVSROOT} e
4641 qualquer diretório acima dele na árvore de diretórios.
4642 Qualquer pessoas que tenha permissão de escrita a algum
4643 destes diretórios vai ter a habilidade de se tornar
4644 qualquer usuário do sistema.  Observe que estas
4645 permissões são em geral mais rígidas que as que você
4646 usaria se você não estivesse usando o pserver.
4647 @c TODO: Would be really nice to document/implement a
4648 @c scheme where the CVS server can run as some non-root
4649 @c user, e.g. "cvs".  CVSROOT/passwd would contain a
4650 @c bunch of entries of the form foo:xxx:cvs (or the "cvs"
4651 @c would be implicit).  This would greatly reduce
4652 @c security risks such as those hinted at in the
4653 @c previous paragraph.  I think minor changes to CVS
4654 @c might be required but mostly this would just need
4655 @c someone who wants to play with it, document it, &c.
4656
4657 @c <en>In summary, anyone who gets the password gets
4658 @c <en>repository access (which may imply some measure of general system
4659 @c <en>access as well).  The password is available to anyone
4660 @c <en>who can sniff network packets or read a protected
4661 @c <en>(i.e., user read-only) file.  If you want real
4662 @c <en>security, get Kerberos.
4663 Resumindo, qualquer um que consiga as senhas vai ter
4664 acesso ao repositório (que implica de certa forma
4665 acesso ao sistema em geral).  A senha está disponível
4666 para qualquer um que possa ???sniff??? pacotes de rede
4667 ou ler um arquivo protegido (i.e., somente-leitura para
4668 usuários).  Se você quer segurança real, use Kerberos.
4669
4670 @c <en>@node GSSAPI authenticated
4671 @node Autenticação GSSAPI
4672 @c <en>@subsection Direct connection with GSSAPI
4673 @subsection Conexão direta com GSSAPI
4674
4675 @c <en>@cindex GSSAPI
4676 @cindex GSSAPI
4677 @c <en>@cindex Security, GSSAPI
4678 @cindex Segurança, GSSAPI
4679 @c <en>@cindex :gserver:, setting up
4680 @cindex :gserver:, ajustando
4681 @c <en>@cindex Kerberos, using :gserver:
4682 @cindex Kerberos, usando :gserver:
4683 @c <en>GSSAPI is a generic interface to network security
4684 @c <en>systems such as Kerberos 5.
4685 @c <en>If you have a working GSSAPI library, you can have
4686 @c <en>@sc{cvs} connect via a direct @sc{tcp} connection,
4687 @c <en>authenticating with GSSAPI.
4688 GSSAPI é uma interface genérica para sistemas de
4689 segurança em rede como o Kerberos 5.  Se você tem uma
4690 biblioteca GSSAPI funcionando, você pode ter seu
4691 @sc{cvs} conectado via uma conexão @sc{tcp} direta, se
4692 autenticando com GSSAPI.
4693
4694 @c <en>To do this, @sc{cvs} needs to be compiled with GSSAPI
4695 @c <en>support; when configuring @sc{cvs} it tries to detect
4696 @c <en>whether GSSAPI libraries using kerberos version 5 are
4697 @c <en>present.  You can also use the @file{--with-gssapi}
4698 @c <en>flag to configure.
4699 Para isto, o @sc{cvs} precisa ter sido compilado com
4700 suporte a GSSAPI; quando você estiver configurando o
4701 @sc{cvs} ele vai tentar detectar se as bibliotecas
4702 GSSAPI usando kerberos versão 5 estão presentes.  Você
4703 também pode configurar isto com opção @file{--with-gssapi}.
4704
4705 @c <en>The connection is authenticated using GSSAPI, but the
4706 @c <en>message stream is @emph{not} authenticated by default.
4707 @c <en>You must use the @code{-a} global option to request
4708 @c <en>stream authentication.
4709 A conexão é autenticada usando GSSAPI, mas o fluxo de
4710 mensagem @emph{não é} autenticado por padrão.  Você deve
4711 usar a opção global @code{-a} para pedir autenticação
4712 de fluxo.
4713
4714 @c <en>The data transmitted is @emph{not} encrypted by
4715 @c <en>default.  Encryption support must be compiled into both
4716 @c <en>the client and the server; use the
4717 @c <en>@file{--enable-encrypt} configure option to turn it on.
4718 @c <en>You must then use the @code{-x} global option to
4719 @c <en>request encryption.
4720 Os dados transmitidos @emph{não} são criptografados por
4721 padrão.  Suporte a criptografia deve ser compilado
4722 tanto no cliente quanto no servidor; use a opção de
4723 configuração @file{--enable-encrypt} para ativar isto.
4724 Com isto você deve usar a opção global @code{-x} para
4725 pedir criptografia.
4726
4727 @c <en>GSSAPI connections are handled on the server side by
4728 @c <en>the same server which handles the password
4729 @c <en>authentication server; see @ref{Password authentication
4730 @c <en>server}.  If you are using a GSSAPI mechanism such as
4731 @c <en>Kerberos which provides for strong authentication, you
4732 @c <en>will probably want to disable the ability to
4733 @c <en>authenticate via cleartext passwords.  To do so, create
4734 @c <en>an empty @file{CVSROOT/passwd} password file, and set
4735 @c <en>@code{SystemAuth=no} in the config file
4736 @c <en>(@pxref{config}).
4737 Conexões GSSAPI são tratadas no lado servidor pelo
4738 mesmo servidor que cuida de autenticação por senha;
4739 veja em @ref{Servidor de autenticação por senha}.  Se
4740 você está usando um mecanismo GSSAPI como o Kerberos,
4741 que fornece autenticação forte, você vai provavelmente
4742 querer impedir autenticação via senhas em texto plano.
4743 Para tal, crie um arquivo de senha
4744 @file{CVSROOT/passwd} vazio e faça @code{SystemAuth=no}
4745 no arquivo config (@pxref{config}).
4746
4747 @c <en>The GSSAPI server uses a principal name of
4748 @c <en>cvs/@var{hostname}, where @var{hostname} is the
4749 @c <en>canonical name of the server host.  You will have to
4750 @c <en>set this up as required by your GSSAPI mechanism.
4751 O servidor GSSAPI usa um nome principal de
4752 cvs/@var{hostname}, onde @var{hostname} é o nome
4753 canônico da máquina servidora.  Você vai ter que
4754 ajustar isto como é exigido pelo seu mecanismo GSSAPI.
4755
4756 @c <en>To connect using GSSAPI, use @samp{:gserver:}.  For
4757 @c <en>example,
4758 Para se conectar usando GSSAPI, use @samp{:gserver:}.  Por
4759 exemplo,
4760
4761 @example
4762 cvs -d :gserver:faun.example.org:/usr/local/cvsroot checkout foo
4763 @end example
4764
4765 @c <en>@node Kerberos authenticated
4766 @node Autenticação kerberos
4767 @c <en>@subsection Direct connection with kerberos
4768 @subsection Conexão direta com kerberos
4769
4770 @c <en>@cindex Kerberos, using :kserver:
4771 @cindex Kerberos, usando :kserver:
4772 @c <en>@cindex Security, kerberos
4773 @cindex Segurança, kerberos
4774 @c <en>@cindex :kserver:, setting up
4775 @cindex :kserver:, ajustando
4776 @c <en>The easiest way to use kerberos is to use the kerberos
4777 @c <en>@code{rsh}, as described in @ref{Connecting via rsh}.
4778 @c <en>The main disadvantage of using rsh is that all the data
4779 @c <en>needs to pass through additional programs, so it may be
4780 @c <en>slower.  So if you have kerberos installed you can
4781 @c <en>connect via a direct @sc{tcp} connection,
4782 @c <en>authenticating with kerberos.
4783 A forma mais fácil de usar kerberos é usar o @code{rsh}
4784 kerberos, como descrito em @ref{Se conectando via
4785 rsh}.  A principal desvantagem de usar rsh é que todos
4786 os dados precisam passar por outros programas, o que é
4787 mais lento.  Portanto, se você tem kerberos instalado,
4788 você pode se conectar via conexão @sc{tcp} direta,
4789 autenticando com kerberos.
4790
4791 @c <en>This section concerns the kerberos network security
4792 @c <en>system, version 4.  Kerberos version 5 is supported via
4793 @c <en>the GSSAPI generic network security interface, as
4794 @c <en>described in the previous section.
4795 Esta seção diz respeito ao sistema de segurança de rede
4796 kerberos (kerberos network security system), versão 4.
4797 Kerberos versão 5 é suportado pela interface de
4798 segurança de rede genérica GSSAPI, como descrito na
4799 seção anterior.
4800
4801 @c <en>To do this, @sc{cvs} needs to be compiled with kerberos
4802 @c <en>support; when configuring @sc{cvs} it tries to detect
4803 @c <en>whether kerberos is present or you can use the
4804 @c <en>@file{--with-krb4} flag to configure.
4805 Para isto, o @sc{cvs}  precisa ter sido compilado com
4806 suporte a kerberos; quando você estiver configurando o
4807 @sc{cvs} ele vai tentar detectar se as bibliotecas
4808 kerberos estão presentes ou você pode configurar isto
4809 com a opção @file{--with-krb4}.
4810
4811 @c <en>The data transmitted is @emph{not} encrypted by
4812 @c <en>default.  Encryption support must be compiled into both
4813 @c <en>the client and server; use the
4814 @c <en>@file{--enable-encryption} configure option to turn it
4815 @c <en>on.  You must then use the @code{-x} global option to
4816 @c <en>request encryption.
4817 Os dados transmitidos @emph{não} são criptografados por
4818 padrão.  Suporte a criptografia deve ser compilado
4819 tanto no cliente quanto no servidor; use a opção de
4820 configuração @file{--enable-encryption} para ativar
4821 isto.  Você deve então usar a opção global @code{-x}
4822 para pedir criptografia.
4823
4824 @c <en>@cindex CVS_CLIENT_PORT
4825 @cindex CVS_CLIENT_PORT
4826 @c <en>You need to edit @file{inetd.conf} on the server
4827 @c <en>machine to run @code{cvs kserver}.  The client uses
4828 @c <en>port 1999 by default; if you want to use another port
4829 @c <en>specify it in the @code{CVSROOT} (@pxref{Remote repositories})
4830 @c <en>or the @code{CVS_CLIENT_PORT} environment variable
4831 @c <en>(@pxref{Environment variables}) on the client.
4832 Você precisa editar o @file{inetd.conf} no servidor
4833 para rodar @code{cvs kserver}.  O cliente usa a porta
4834 1999 por padrão; se você quer usar outra porta
4835 especifique ela no @code{CVSROOT} (@pxref{Repositórios remotos})
4836 ou na variável de ambiente @code{CVS_CLIENT_PORT}
4837 (@pxref{Variáveis de ambiente}) no cliente.
4838
4839 @c <en>@cindex kinit
4840 @cindex kinit
4841 @c <en>When you want to use @sc{cvs}, get a ticket in the
4842 @c <en>usual way (generally @code{kinit}); it must be a ticket
4843 @c <en>which allows you to log into the server machine.  Then
4844 @c <en>you are ready to go:
4845 Quando você quiser usar o @sc{cvs}, pegue um tíquete da
4846 forma usual (geralmente @code{kinit}); ele pode ser um
4847 tíquete que te permite se autenticar na máquina
4848 servidora.  Então você estará pronto para seguir:
4849
4850 @example
4851 cvs -d :kserver:faun.example.org:/usr/local/cvsroot checkout foo
4852 @end example
4853
4854 @c <en>Previous versions of @sc{cvs} would fall back to a
4855 @c <en>connection via rsh; this version will not do so.
4856 Versões anteriores do @sc{cvs} podem recair numa
4857 conexão via rsh; esta versão não vai fazer isso.
4858
4859 @c <en>@node Connecting via fork
4860 @node Conectando via fork
4861 @c <en>@subsection Connecting with fork
4862 @subsection Conectando via fork
4863
4864 @c <en>@cindex fork, access method
4865 @cindex fork, método de acesso
4866 @c <en>@cindex :fork:, setting up
4867 @cindex :fork:, ajustando
4868 @c <en>This access method allows you to connect to a
4869 @c <en>repository on your local disk via the remote protocol.
4870 @c <en>In other words it does pretty much the same thing as
4871 @c <en>@code{:local:}, but various quirks, bugs and the like are
4872 @c <en>those of the remote @sc{cvs} rather than the local
4873 @c <en>@sc{cvs}.
4874 Este método de acesso permite a você conectar a um
4875 repositório no seu disco local via um protocolo
4876 remoto.  Em outras palavras, ele faz praticamente a
4877 mesma coisa que @code{:local:}, mas várias peduliaridades, paus
4878 e coisas do gênero são os mesmos do @sc{cvs} remoto ao
4879 invés do @sc{cvs} local.
4880
4881 @c <en>For day-to-day operations you might prefer either
4882 @c <en>@code{:local:} or @code{:fork:}, depending on your
4883 @c <en>preferences.  Of course @code{:fork:} comes in
4884 @c <en>particularly handy in testing or
4885 @c <en>debugging @code{cvs} and the remote protocol.
4886 @c <en>Specifically, we avoid all of the network-related
4887 @c <en>setup/configuration, timeouts, and authentication
4888 @c <en>inherent in the other remote access methods but still
4889 @c <en>create a connection which uses the remote protocol.
4890 Para trabalhar no dia-a-dia você vai preferir ou o
4891 @code{:local:} ou o @code{:fork:}, dependendo de suas
4892 preferências.  É claro que @code{:fork:} é bastante
4893 útil em testes ou depuração do @code{cvs} e o protocolo
4894 remoto.  Especificamente, nós evitamos todas as
4895 configurações/ajustes relacionados a redes, sessões
4896 expirando e autenticação inerentes de métodos de acesso
4897 remoto mas ainda assim criamos uma conexão que usa o
4898 protocolo remoto.
4899
4900 @c <en>To connect using the @code{fork} method, use
4901 @c <en>@samp{:fork:} and the pathname to your local
4902 @c <en>repository.  For example:
4903 Para se conectar usando o método @code{fork}, use
4904 @samp{:fork:} e o caminho para seu repositório local.
4905 Por exemplo:
4906
4907 @example
4908 cvs -d :fork:/usr/local/cvsroot checkout foo
4909 @end example
4910
4911 @c <en>@cindex CVS_SERVER, and :fork:
4912 @cindex CVS_SERVER, and :fork:
4913 @c <en>As with @code{:ext:}, the server is called @samp{cvs}
4914 @c <en>by default, or the value of the @code{CVS_SERVER}
4915 @c <en>environment variable.
4916 Assim como com @code{:ext:}, o servidor é chamado
4917 @samp{cvs} por padrão, ou o valor da variável de
4918 ambiente @code{CVS_SERVER}.
4919
4920 @c ---------------------------------------------------------------------
4921 @c <en>@node Read-only access
4922 @node Acesso somente-leitura
4923 @c <en>@section Read-only repository access
4924 @section Acesso somente-leitura ao repositório
4925 @c <en>@cindex Read-only repository access
4926 @cindex Acesso somente-leitura ao repositório
4927 @c <en>@cindex readers (admin file)
4928 @cindex readers (arquivo administrativo)
4929 @c <en>@cindex writers (admin file)
4930 @cindex writers (arquivo administrativo)
4931
4932 @c <en>        It is possible to grant read-only repository
4933 @c <en>access to people using the password-authenticated
4934 @c <en>server (@pxref{Password authenticated}).  (The
4935 @c <en>other access methods do not have explicit support for
4936 @c <en>read-only users because those methods all assume login
4937 @c <en>access to the repository machine anyway, and therefore
4938 @c <en>the user can do whatever local file permissions allow
4939 @c <en>her to do.)
4940         É possível permitir acesso somente-leitura ao
4941 repositório a pessoas usando o servidor de autenticação
4942 por senha (@pxref{Autenticação por senha}).  (Os outros
4943 métodos de acesso não tem suporte explícito para
4944 somente-leitura de usuários, já que todos estes métodos
4945 assumem acesso por login à máquina do repositório de
4946 qualquer forma, e portanto o usuário pode fazer o que
4947 as permissões de arquivos locais permitirem.)
4948
4949 @c <en>        A user who has read-only access can do only
4950 @c <en>those @sc{cvs} operations which do not modify the
4951 @c <en>repository, except for certain ``administrative'' files
4952 @c <en>(such as lock files and the history file).  It may be
4953 @c <en>desirable to use this feature in conjunction with
4954 @c <en>user-aliasing (@pxref{Password authentication server}).
4955 Um usuário que tem acesso somente-leitura pode realizar
4956 apenas as operações do @sc{cvs} que não modificam o
4957 repositório, exceto alguns arquivos ``administrativos''
4958 (tais como arquivos de trava e o arquivo history).
4959 Pode ser desejável usar esta habilidade em conjunto com
4960 ???``user-aliasing''??? (@pxref{Servidor de autenticação por
4961 senha}).
4962
4963 @c <en>Unlike with previous versions of @sc{cvs}, read-only
4964 @c <en>users should be able merely to read the repository, and
4965 @c <en>not to execute programs on the server or otherwise gain
4966 @c <en>unexpected levels of access.  Or to be more accurate,
4967 @c <en>the @emph{known} holes have been plugged.  Because this
4968 @c <en>feature is new and has not received a comprehensive
4969 @c <en>security audit, you should use whatever level of
4970 @c <en>caution seems warranted given your attitude concerning
4971 @c <en>security.
4972 Ao contrário de versões anteriores do @sc{cvs},
4973 usuários somente-leitura são capazes de simplesmente
4974 ler o repositório, e não de executar programas no
4975 servidor ou ainda conseguir níveis de acessos extras.
4976 Ou, para ser mais preciso, os papéis @emph{conhecidos}
4977 foram ???plugged???.  Pelo fato de esta característica
4978 ser nova e ainda não ter recebido uma auditoria de
4979 segurança abrangente, você deve usar quaisquer níveis
4980 de precaução que pareçam seguros de acordo com a sua
4981 forma de agir com respeito a segurança.
4982
4983 @c <en>        There are two ways to specify read-only access
4984 @c <en>for a user: by inclusion, and by exclusion.
4985         Existem duas formas de estabelecer acesso
4986 somente-leitura para um usuário: por inclusão ou por exclusão.
4987
4988 @c <en>        "Inclusion" means listing that user
4989 @c <en>specifically in the @file{$CVSROOT/CVSROOT/readers}
4990 @c <en>file, which is simply a newline-separated list of
4991 @c <en>users.  Here is a sample @file{readers} file:
4992         "Inclusão" significa botar aquele usuário
4993 específico no arquivo @file{$CVSROOT/CVSROOT/readers},
4994 que é simplesmente uma lista de usuários separados por
4995 quebra de linha.  Aqui está um exemplo do @file{readers}:
4996
4997 @example
4998 melissa
4999 splotnik
5000 jrandom
5001 @end example
5002
5003 @noindent
5004 @c <en>        (Don't forget the newline after the last user.)
5005         (Não esqueça a quebra de linha depois do último
5006 usuário.)
5007
5008 @c <en>        "Exclusion" means explicitly listing everyone
5009 @c <en>who has @emph{write} access---if the file
5010         "Exclusão" significa listar explicitamente
5011 todos que têm acesso de @emph{escrita}---se o arquivo
5012
5013 @example
5014 $CVSROOT/CVSROOT/writers
5015 @end example
5016
5017 @noindent
5018 @c <en>exists, then only
5019 @c <en>those users listed in it have write access, and
5020 @c <en>everyone else has read-only access (of course, even the
5021 @c <en>read-only users still need to be listed in the
5022 @c <en>@sc{cvs} @file{passwd} file).  The
5023 @c <en>@file{writers} file has the same format as the
5024 @c <en>@file{readers} file.
5025 existe, então apenas os usuários que constam nele teram
5026 acesso de escrita, e qualquer outra pessoa acesso
5027 somente-leitura (obviamente, mesmo os usuários
5028 somente-leitura devem ainda ser listados no arquivo
5029 @file{passwd} do @sc{cvs}).  O arquivo @file{writers}
5030 tem o mesmo formato do arquivo @file{readers}.
5031
5032 @c <en>        Note: if your @sc{cvs} @file{passwd}
5033 @c <en>file maps cvs users onto system users (@pxref{Password
5034 @c <en>authentication server}), make sure you deny or grant
5035 @c <en>read-only access using the @emph{cvs} usernames, not
5036 @c <en>the system usernames.  That is, the @file{readers} and
5037 @c <en>@file{writers} files contain cvs usernames, which may
5038 @c <en>or may not be the same as system usernames.
5039         Observação: se seu arquivo @file{passwd} do
5040 @sc{cvs} associa usuários do cvs com usuários do
5041 sistema (@pxref{Servidor de autenticação por
5042 senha}), certifique-se de que você esteja
5043 negando ou fornecendo acesso somente-leitura usando os
5044 usuários @emph{do cvs}, e não os do sistema.  Ou seja,
5045 os arquivos @file{readers} e @file{writers} contêm
5046 nomes de usuários do cvs, que não necessáriamente têm o
5047 mesmo nome que usuários do sistema.
5048
5049 @c <en>        Here is a complete description of the server's
5050 @c <en>behavior in deciding whether to grant read-only or
5051 @c <en>read-write access:
5052         Here is a complete description of the server's
5053 behavior in deciding whether to grant read-only or
5054 read-write access:
5055
5056 @c <en>        If @file{readers} exists, and this user is
5057 @c <en>listed in it, then she gets read-only access.  Or if
5058 @c <en>@file{writers} exists, and this user is NOT listed in
5059 @c <en>it, then she also gets read-only access (this is true
5060 @c <en>even if @file{readers} exists but she is not listed
5061 @c <en>there).  Otherwise, she gets full read-write access.
5062         If @file{readers} exists, and this user is
5063 listed in it, then she gets read-only access.  Or if
5064 @file{writers} exists, and this user is NOT listed in
5065 it, then she also gets read-only access (this is true
5066 even if @file{readers} exists but she is not listed
5067 there).  Otherwise, she gets full read-write access.
5068
5069 @c <en>        Of course there is a conflict if the user is
5070 @c <en>listed in both files.  This is resolved in the more
5071 @c <en>conservative way, it being better to protect the
5072 @c <en>repository too much than too little: such a user gets
5073 @c <en>read-only access.
5074         Of course there is a conflict if the user is
5075 listed in both files.  This is resolved in the more
5076 conservative way, it being better to protect the
5077 repository too much than too little: such a user gets
5078 read-only access.
5079
5080 @c <en>@node Server temporary directory
5081 @node Diretório temporário do servidor
5082 @c <en>@section Temporary directories for the server
5083 @section Temporary directories for the server
5084 @c <en>@cindex Temporary directories, and server
5085 @cindex Temporary directories, and server
5086 @c <en>@cindex Server, temporary directories
5087 @cindex Server, temporary directories
5088
5089 @c <en>While running, the @sc{cvs} server creates temporary
5090 @c <en>directories.  They are named
5091 While running, the @sc{cvs} server creates temporary
5092 directories.  They are named
5093
5094 @example
5095 cvs-serv@var{pid}
5096 @end example
5097
5098 @noindent
5099 @c <en>where @var{pid} is the process identification number of
5100 @c <en>the server.
5101 @c <en>They are located in the directory specified by 
5102 @c <en>the @samp{-T} global option (@pxref{Global options}), 
5103 @c <en>the @code{TMPDIR} environment variable (@pxref{Environment variables}), 
5104 @c <en>or, failing that, @file{/tmp}.
5105 where @var{pid} is the process identification number of
5106 the server.
5107 They are located in the directory specified by 
5108 the @samp{-T} global option (@pxref{Opções globais}), 
5109 the @code{TMPDIR} environment variable (@pxref{Variáveis de ambiente}), 
5110 or, failing that, @file{/tmp}.
5111
5112 @c <en>In most cases the server will remove the temporary
5113 @c <en>directory when it is done, whether it finishes normally
5114 @c <en>or abnormally.  However, there are a few cases in which
5115 @c <en>the server does not or cannot remove the temporary
5116 @c <en>directory, for example:
5117 In most cases the server will remove the temporary
5118 directory when it is done, whether it finishes normally
5119 or abnormally.  However, there are a few cases in which
5120 the server does not or cannot remove the temporary
5121 directory, for example:
5122
5123 @itemize @bullet
5124 @item
5125 @c <en>If the server aborts due to an internal server error,
5126 @c <en>it may preserve the directory to aid in debugging
5127 If the server aborts due to an internal server error,
5128 it may preserve the directory to aid in debugging
5129
5130 @item
5131 @c <en>If the server is killed in a way that it has no way of
5132 @c <en>cleaning up (most notably, @samp{kill -KILL} on unix).
5133 If the server is killed in a way that it has no way of
5134 cleaning up (most notably, @samp{kill -KILL} on unix).
5135
5136 @item
5137 @c <en>If the system shuts down without an orderly shutdown,
5138 @c <en>which tells the server to clean up.
5139 If the system shuts down without an orderly shutdown,
5140 which tells the server to clean up.
5141 @end itemize
5142
5143 @c <en>In cases such as this, you will need to manually remove
5144 @c <en>the @file{cvs-serv@var{pid}} directories.  As long as
5145 @c <en>there is no server running with process identification
5146 @c <en>number @var{pid}, it is safe to do so.
5147 In cases such as this, you will need to manually remove
5148 the @file{cvs-serv@var{pid}} directories.  As long as
5149 there is no server running with process identification
5150 number @var{pid}, it is safe to do so.
5151
5152 @c ---------------------------------------------------------------------
5153 @c <en>@node Starting a new project
5154 @node Começando um novo projeto
5155 @c <en>@chapter Starting a project with CVS
5156 @chapter Começando um projeto com o CVS
5157 @c <en>@cindex Starting a project with CVS
5158 @cindex Começando um projeto com CVS
5159 @c <en>@cindex Creating a project
5160 @cindex Criando um projeto
5161
5162 @comment --moduledb--
5163 @c <en>Because renaming files and moving them between
5164 @c <en>directories is somewhat inconvenient, the first thing
5165 @c <en>you do when you start a new project should be to think
5166 @c <en>through your file organization.  It is not impossible
5167 @c <en>to rename or move files, but it does increase the
5168 @c <en>potential for confusion and @sc{cvs} does have some
5169 @c <en>quirks particularly in the area of renaming
5170 @c <en>directories.  @xref{Moving files}.
5171 Já que renomear e mover arquivos entre diretórios é um
5172 tanto quanto inconveniente, a primeira coisa a fazer
5173 quando você começa um novo projeto deve ser ponderar a
5174 respeito da organização dos arquivos.  Não é impossível
5175 renomear ou mover arquivos, mas isto aumenta as chances
5176 de erro e o @sc{cvs} tem algumas idiossincrasias em
5177 especial quanto a renomear diretórios.  @xref{Movendo arquivos}.
5178
5179 @c <en>What to do next depends on the situation at hand.
5180 O que fazer depende da situação em que você está.
5181
5182 @menu
5183 @c <en>* Setting up the files::        Getting the files into the repository
5184 * Ajustando os arquivos::      Botando os arquivos no repositório
5185 @c <en>* Defining the module::         How to make a module of the files
5186 * Definindo o módulo::         How to make a module of the files
5187 @end menu
5188 @c -- File permissions!
5189
5190 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5191 @c <en>@node Setting up the files
5192 @node Ajustando os arquivos
5193 @c <en>@section Setting up the files
5194 @section Ajustando os arquivos
5195
5196 @c <en>The first step is to create the files inside the repository.  This can
5197 @c <en>be done in a couple of different ways.
5198 O primeiro passo é criar os arquivos dentro do
5199 repositório.  Isto pode ser feito de algumas maneiras diferentes.
5200
5201 @c -- The contributed scripts
5202 @menu
5203 @c <en>* From files::                  This method is useful with old projects
5204 @c <en>                                where files already exists.
5205 * De arquivos::                              Este método é útil para projetos
5206                                              antigos cujos arquivos já existem.
5207 @c <en>* From other version control systems::  Old projects where you want to
5208 @c <en>                                        preserve history from another system.
5209 * De outros sistemas de controle de versão:: Projetos antigos onde você quer
5210                                              preservar o histórico de outro sistema.
5211 @c <en>* From scratch::                Creating a directory tree from scratch.
5212 * Do zero::                                  Criando uma árvore de diretórios
5213                                              do zero.
5214 @end menu
5215
5216 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5217 @c <en>@node From files
5218 @node De arquivos
5219 @c <en>@subsection Creating a directory tree from a number of files
5220 @subsection Criando uma árvore de diretórios de uma quantidade de arquivos
5221 @c <en>@cindex Importing files
5222 @cindex Importando arquivos
5223
5224 @c <en>When you begin using @sc{cvs}, you will probably already have several
5225 @c <en>projects that can be
5226 @c <en>put under @sc{cvs} control.  In these cases the easiest way is to use the
5227 @c <en>@code{import} command.  An example is probably the easiest way to
5228 @c <en>explain how to use it.  If the files you want to install in
5229 @c <en>@sc{cvs} reside in @file{@var{wdir}}, and you want them to appear in the
5230 @c <en>repository as @file{$CVSROOT/yoyodyne/@var{rdir}}, you can do this:
5231 Quando você começa a usar o @sc{cvs}, provavelmente vai
5232 ter vários projetos que podem ser postos sob controle
5233 do @sc{cvs}.  Nestes casos a forma mais fácil é usar o
5234 comando @code{import}.  Um exemplo é provavelmente a
5235 forma mais fácil de explicar como se usa o
5236 @code{import}.  Se os arquivos que você quer instalar
5237 no @sc{cvs} estão em @file{@var{wdir}}, e você quer que
5238 eles estejam no repositório
5239 @file{$CVSROOT/yoyodyne/@var{rdir}}, você pode fazer isto:
5240
5241 @example
5242 $ cd @var{wdir}
5243 $ cvs import -m "Imported sources" yoyodyne/@var{rdir} yoyo start
5244 @end example
5245
5246 @c <en>Unless you supply a log message with the @samp{-m}
5247 @c <en>flag, @sc{cvs} starts an editor and prompts for a
5248 @c <en>message.  The string @samp{yoyo} is a @dfn{vendor tag},
5249 @c <en>and @samp{start} is a @dfn{release tag}.  They may fill
5250 @c <en>no purpose in this context, but since @sc{cvs} requires
5251 @c <en>them they must be present.  @xref{Tracking sources}, for
5252 @c <en>more information about them.
5253 A menos que você forneca uma mensagem de log (registro)
5254 com a opção @samp{-m}, o @sc{cvs} vai iniciar um editor
5255 e esperar uma mensagem.  A string @samp{yoyo} é uma
5256 @dfn{etiqueta de fornecedor} (vendor tag), e
5257 @samp{start} é uma @dfn{etiqueta de release} (release
5258 tag).  Eles podem não fazer sentido neste contexto, mas
5259 já que o @sc{cvs} exige, elas devem estar presentes.
5260 @xref{Acompanhando fontes}, para mais informações sobre
5261 isto.
5262
5263 @c <en>You can now verify that it worked, and remove your
5264 @c <en>original source directory.
5265 Você agora pode verificar se está funcionando, e então
5266 apagar seu diretório do código fonte original.
5267 @c FIXME: Need to say more about "verify that it
5268 @c worked".  What should the user look for in the output
5269 @c from "diff -r"?
5270
5271 @example
5272 $ cd ..
5273 @c <en>$ cvs checkout yoyodyne/@var{rdir}       # @r{Explanation below}
5274 $ cvs checkout yoyodyne/@var{rdir}       # @r{Explanation below}
5275 $ diff -r @var{wdir} yoyodyne/@var{rdir}
5276 $ rm -r @var{wdir}
5277 @end example
5278
5279 @noindent
5280 @c <en>Erasing the original sources is a good idea, to make sure that you do
5281 @c <en>not accidentally edit them in @var{wdir}, bypassing @sc{cvs}.
5282 @c <en>Of course, it would be wise to make sure that you have
5283 @c <en>a backup of the sources before you remove them.
5284 Erasing the original sources is a good idea, to make sure that you do
5285 not accidentally edit them in @var{wdir}, bypassing @sc{cvs}.
5286 Of course, it would be wise to make sure that you have
5287 a backup of the sources before you remove them.
5288
5289 @c <en>The @code{checkout} command can either take a module
5290 @c <en>name as argument (as it has done in all previous
5291 @c <en>examples) or a path name relative to @code{$CVSROOT},
5292 @c <en>as it did in the example above.
5293 The @code{checkout} command can either take a module
5294 name as argument (as it has done in all previous
5295 examples) or a path name relative to @code{$CVSROOT},
5296 as it did in the example above.
5297
5298 @c <en>It is a good idea to check that the permissions
5299 @c <en>@sc{cvs} sets on the directories inside @code{$CVSROOT}
5300 @c <en>are reasonable, and that they belong to the proper
5301 @c <en>groups.  @xref{File permissions}.
5302 It is a good idea to check that the permissions
5303 @sc{cvs} sets on the directories inside @code{$CVSROOT}
5304 are reasonable, and that they belong to the proper
5305 groups.  @xref{Permissões de arquivos}.
5306
5307 @c <en>If some of the files you want to import are binary, you
5308 @c <en>may want to use the wrappers features to specify which
5309 @c <en>files are binary and which are not.  @xref{Wrappers}.
5310 If some of the files you want to import are binary, you
5311 may want to use the wrappers features to specify which
5312 files are binary and which are not.  @xref{Wrappers}.
5313
5314 @c The node name is too long, but I am having trouble
5315 @c thinking of something more concise.
5316 @c <en>@node From other version control systems
5317 @node De outros sistemas de controle de versão
5318 @c <en>@subsection Creating Files From Other Version Control Systems
5319 @subsection Criando os Arquivos de Outros Sistemas de Controle de Versões
5320 @c <en>@cindex Importing files, from other version control systems
5321 @cindex Outros Sistemas de Controle de Versões, Importando Arquivos de
5322
5323 @c <en>If you have a project which you are maintaining with
5324 @c <en>another version control system, such as @sc{rcs}, you
5325 @c <en>may wish to put the files from that project into
5326 @c <en>@sc{cvs}, and preserve the revision history of the
5327 @c <en>files.
5328 If you have a project which you are maintaining with
5329 another version control system, such as @sc{rcs}, you
5330 may wish to put the files from that project into
5331 @sc{cvs}, and preserve the revision history of the
5332 files.
5333
5334 @table @asis
5335 @cindex RCS, importing files from
5336 @cindex RCS, importing files from
5337 @item From RCS
5338 @item From RCS
5339 @c <en>If you have been using @sc{rcs}, find the @sc{rcs}
5340 @c <en>files---usually a file named @file{foo.c} will have its
5341 @c <en>@sc{rcs} file in @file{RCS/foo.c,v} (but it could be
5342 @c <en>other places; consult the @sc{rcs} documentation for
5343 @c <en>details).  Then create the appropriate directories in
5344 @c <en>@sc{cvs} if they do not already exist.  Then copy the
5345 @c <en>files into the appropriate directories in the @sc{cvs}
5346 @c <en>repository (the name in the repository must be the name
5347 @c <en>of the source file with @samp{,v} added; the files go
5348 @c <en>directly in the appropriate directory of the repository,
5349 @c <en>not in an @file{RCS} subdirectory).  This is one of the
5350 @c <en>few times when it is a good idea to access the @sc{cvs}
5351 @c <en>repository directly, rather than using @sc{cvs}
5352 @c <en>commands.  Then you are ready to check out a new
5353 @c <en>working directory.
5354 If you have been using @sc{rcs}, find the @sc{rcs}
5355 files---usually a file named @file{foo.c} will have its
5356 @sc{rcs} file in @file{RCS/foo.c,v} (but it could be
5357 other places; consult the @sc{rcs} documentation for
5358 details).  Then create the appropriate directories in
5359 @sc{cvs} if they do not already exist.  Then copy the
5360 files into the appropriate directories in the @sc{cvs}
5361 repository (the name in the repository must be the name
5362 of the source file with @samp{,v} added; the files go
5363 directly in the appropriate directory of the repository,
5364 not in an @file{RCS} subdirectory).  This is one of the
5365 few times when it is a good idea to access the @sc{cvs}
5366 repository directly, rather than using @sc{cvs}
5367 commands.  Then you are ready to check out a new
5368 working directory.
5369 @c Someday there probably should be a "cvs import -t
5370 @c rcs" or some such.  It could even create magic
5371 @c branches.  It could also do something about the case
5372 @c where the RCS file had a (non-magic) "0" branch.
5373
5374 @c <en>The @sc{rcs} file should not be locked when you move it
5375 @c <en>into @sc{cvs}; if it is, @sc{cvs} will have trouble
5376 @c <en>letting you operate on it.
5377 The @sc{rcs} file should not be locked when you move it
5378 into @sc{cvs}; if it is, @sc{cvs} will have trouble
5379 letting you operate on it.
5380 @c What is the easiest way to unlock your files if you
5381 @c have them locked?  Especially if you have a lot of them?
5382 @c This is a CVS bug/misfeature; importing RCS files
5383 @c should ignore whether they are locked and leave them in
5384 @c an unlocked state.  Yet another reason for a separate
5385 @c "import RCS file" command.
5386
5387 @c How many is "many"? Or do they just import RCS files?
5388 @c <en>@item From another version control system
5389 @item From another version control system
5390 @c <en>Many version control systems have the ability to export
5391 @c <en>@sc{rcs} files in the standard format.  If yours does,
5392 @c <en>export the @sc{rcs} files and then follow the above
5393 @c <en>instructions.
5394 Many version control systems have the ability to export
5395 @sc{rcs} files in the standard format.  If yours does,
5396 export the @sc{rcs} files and then follow the above
5397 instructions.
5398
5399 @c <en>Failing that, probably your best bet is to write a
5400 @c <en>script that will check out the files one revision at a
5401 @c <en>time using the command line interface to the other
5402 @c <en>system, and then check the revisions into @sc{cvs}.
5403 @c <en>The @file{sccs2rcs} script mentioned below may be a
5404 @c <en>useful example to follow.
5405 Failing that, probably your best bet is to write a
5406 script that will check out the files one revision at a
5407 time using the command line interface to the other
5408 system, and then check the revisions into @sc{cvs}.
5409 The @file{sccs2rcs} script mentioned below may be a
5410 useful example to follow.
5411
5412 @c <en>@cindex SCCS, importing files from
5413 @cindex SCCS, importing files from
5414 @c <en>@item From SCCS
5415 @item From SCCS
5416 @c <en>There is a script in the @file{contrib} directory of
5417 @c <en>the @sc{cvs} source distribution called @file{sccs2rcs}
5418 @c <en>which converts @sc{sccs} files to @sc{rcs} files.
5419 @c <en>Note: you must run it on a machine which has both
5420 @c <en>@sc{sccs} and @sc{rcs} installed, and like everything
5421 @c <en>else in contrib it is unsupported (your mileage may
5422 @c <en>vary).
5423 There is a script in the @file{contrib} directory of
5424 the @sc{cvs} source distribution called @file{sccs2rcs}
5425 which converts @sc{sccs} files to @sc{rcs} files.
5426 Note: you must run it on a machine which has both
5427 @sc{sccs} and @sc{rcs} installed, and like everything
5428 else in contrib it is unsupported (your mileage may
5429 vary).
5430
5431 @c <en>@cindex PVCS, importing files from
5432 @cindex PVCS, importing files from
5433 @c <en>@item From PVCS
5434 @item From PVCS
5435 @c <en>There is a script in the @file{contrib} directory of
5436 @c <en>the @sc{cvs} source distribution called @file{pvcs_to_rcs}
5437 @c <en>which converts @sc{pvcs} archives to @sc{rcs} files.
5438 @c <en>You must run it on a machine which has both
5439 @c <en>@sc{pvcs} and @sc{rcs} installed, and like everything
5440 @c <en>else in contrib it is unsupported (your mileage may
5441 @c <en>vary).  See the comments in the script for details.
5442 There is a script in the @file{contrib} directory of
5443 the @sc{cvs} source distribution called @file{pvcs_to_rcs}
5444 which converts @sc{pvcs} archives to @sc{rcs} files.
5445 You must run it on a machine which has both
5446 @sc{pvcs} and @sc{rcs} installed, and like everything
5447 else in contrib it is unsupported (your mileage may
5448 vary).  See the comments in the script for details.
5449 @end table
5450 @c CMZ and/or PATCHY were systems that were used in the
5451 @c high energy physics community (especially for
5452 @c CERNLIB).  CERN has replaced them with CVS, but the
5453 @c CAR format seems to live on as a way to submit
5454 @c changes.  There is a program car2cvs which converts
5455 @c but I'm not sure where one gets a copy.
5456 @c Not sure it is worth mentioning here, since it would
5457 @c appear to affect only one particular community.
5458 @c Best page for more information is:
5459 @c http://wwwcn1.cern.ch/asd/cvs/index.html
5460 @c See also:
5461 @c http://ecponion.cern.ch/ecpsa/cernlib.html
5462
5463 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5464 @c <en>@node From scratch
5465 @node Do zero
5466 @c <en>@subsection Creating a directory tree from scratch
5467 @subsection Criando uma árvore de diretórios do zero
5468
5469 @c Also/instead should be documenting
5470 @c $ cvs co -l .
5471 @c $ mkdir tc
5472 @c $ cvs add tc
5473 @c $ cd tc
5474 @c $ mkdir man
5475 @c $ cvs add man
5476 @c etc.
5477 @c Using import to create the directories only is
5478 @c probably a somewhat confusing concept.
5479 @c <en>For a new project, the easiest thing to do is probably
5480 @c <en>to create an empty directory structure, like this:
5481 For a new project, the easiest thing to do is probably
5482 to create an empty directory structure, like this:
5483
5484 @example
5485 $ mkdir tc
5486 $ mkdir tc/man
5487 $ mkdir tc/testing
5488 @end example
5489
5490 @c <en>After that, you use the @code{import} command to create
5491 @c <en>the corresponding (empty) directory structure inside
5492 @c <en>the repository:
5493 After that, you use the @code{import} command to create
5494 the corresponding (empty) directory structure inside
5495 the repository:
5496
5497 @example
5498 $ cd tc
5499 @c <en>$ cvs import -m "Created directory structure" yoyodyne/@var{dir} yoyo start
5500 $ cvs import -m "Created directory structure" yoyodyne/@var{dir} yoyo start
5501 @end example
5502
5503 @c <en>Then, use @code{add} to add files (and new directories)
5504 @c <en>as they appear.
5505 Then, use @code{add} to add files (and new directories)
5506 as they appear.
5507
5508 @c <en>Check that the permissions @sc{cvs} sets on the
5509 @c <en>directories inside @code{$CVSROOT} are reasonable.
5510 Check that the permissions @sc{cvs} sets on the
5511 directories inside @code{$CVSROOT} are reasonable.
5512
5513 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5514 @c <en>@node Defining the module
5515 @node Definindo o módulo
5516 @c <en>@section Defining the module
5517 @section Definindo o módulo
5518 @c <en>@cindex Defining a module
5519 @cindex Defining a module
5520 @c <en>@cindex Editing the modules file
5521 @cindex Editing the modules file
5522 @c <en>@cindex Module, defining
5523 @cindex Module, defining
5524 @c <en>@cindex Modules file, changing
5525 @cindex Modules file, changing
5526
5527 @c <en>The next step is to define the module in the
5528 @c <en>@file{modules} file.  This is not strictly necessary,
5529 @c <en>but modules can be convenient in grouping together
5530 @c <en>related files and directories.
5531 The next step is to define the module in the
5532 @file{modules} file.  This is not strictly necessary,
5533 but modules can be convenient in grouping together
5534 related files and directories.
5535
5536 @c <en>In simple cases these steps are sufficient to define a module.
5537 In simple cases these steps are sufficient to define a module.
5538
5539 @enumerate
5540 @item
5541 @c <en>Get a working copy of the modules file.
5542 Get a working copy of the modules file.
5543
5544 @example
5545 $ cvs checkout CVSROOT/modules
5546 $ cd CVSROOT
5547 @end example
5548
5549 @item
5550 @c <en>Edit the file and insert a line that defines the module.  @xref{Intro
5551 @c <en>administrative files}, for an introduction.  @xref{modules}, for a full
5552 @c <en>description of the modules file.  You can use the
5553 @c <en>following line to define the module @samp{tc}:
5554 Edit the file and insert a line that defines the module.
5555 @xref{Intro aos arquivos administrativos}, for an
5556 introduction.  @xref{modules}, for a full description
5557 of the modules file.  You can use the following line to
5558 define the module @samp{tc}:
5559
5560 @example
5561 tc   yoyodyne/tc
5562 @end example
5563
5564 @item
5565 @c <en>Commit your changes to the modules file.
5566 Commit your changes to the modules file.
5567
5568 @example
5569 @c <en>$ cvs commit -m "Added the tc module." modules
5570 $ cvs commit -m "Added the tc module." modules
5571 @end example
5572
5573 @item
5574 @c <en>Release the modules module.
5575 Release the modules module.
5576
5577 @example
5578 $ cd ..
5579 $ cvs release -d CVSROOT
5580 @end example
5581 @end enumerate
5582
5583 @c ---------------------------------------------------------------------
5584 @c <en>@node Revisions
5585 @node Revisões
5586 @c <en>@chapter Revisions
5587 @chapter Revisões
5588
5589 @comment <en>For many uses of @sc{cvs}, one doesn't need to worry
5590 @comment <en>too much about revision numbers; @sc{cvs} assigns
5591 @comment <en>numbers such as @code{1.1}, @code{1.2}, and so on, and
5592 @comment <en>that is all one needs to know.  However, some people
5593 @comment <en>prefer to have more knowledge and control concerning
5594 @comment <en>how @sc{cvs} assigns revision numbers.
5595 Para muitos usos do @sc{cvs}, não é necessário se
5596 preocupar com o número de revisões; o @sc{cvs} atribui
5597 números tais como @code{1.1}, @code{1.2} e por aí vai,
5598 e isto é tudo que se precisa saber.  Entretanto,
5599 Algumas pessoas preferem ter mais conhecimento e
5600 controle a respeito de como o @sc{cvs} atribui números
5601 de revisão.
5602
5603 @c <en>If one wants to keep track of a set of revisions
5604 @c <en>involving more than one file, such as which revisions
5605 @c <en>went into a particular release, one uses a @dfn{tag},
5606 @c <en>which is a symbolic revision which can be assigned to a
5607 @c <en>numeric revision in each file.
5608 Se você quiser marcar um conjunto de revisões
5609 envolvendo mais de um arquivo, tais como as revisões
5610 que integram uma release, pode usar uma @dfn{etiqueta} (tag),
5611 que é uma revisão simbólica que pode ser associada a uma
5612 revisão numérica em cada um dos arquivos.
5613
5614 @menu
5615 @c <en>* Revision numbers::            The meaning of a revision number
5616 * Números de revisão::            O significado dos números de revisão
5617 @c <en>* Versions revisions releases::  Terminology used in this manual
5618 * Versões revisões releases::  Terminologia usada neste manual
5619 @c <en>* Assigning revisions::         Assigning revisions
5620 * Atribuindo revisões::         Atribuindo revisões
5621 @c <en>* Tags::                        Tags--Symbolic revisions
5622 * Etiquetas::                        Etiquetas (Tags)--Revisões Simbólicas
5623 @c <en>* Tagging the working directory::  The cvs tag command
5624 * Etiquetando o diretório de trabalho::  O comando cvs tag
5625 @c <en>* Tagging by date/tag::         The cvs rtag command
5626 * Etiquetando por data/etiqueta::         O comando cvs rtag
5627 @c <en>* Modifying tags::              Adding, renaming, and deleting tags
5628 * Modificando etiquetas::              Adicionando, renomeando e apagando etiquetas
5629 @c <en>* Tagging add/remove::          Tags with adding and removing files
5630 * Etiquetando adicionados/removidos::  Etiquetas com arquivos adicionados e removidos
5631 @c <en>* Sticky tags::                 Certain tags are persistent
5632 * Etiquetas adesivas::          Certas etiquetas são persistentes
5633 @end menu
5634
5635 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5636 @c <en>@node Revision numbers
5637 @node Números de revisão
5638 @c <en>@section Revision numbers
5639 @section Números de revisão
5640 @c <en>@cindex Revision numbers
5641 @cindex Números de revisão
5642 @c <en>@cindex Revision tree
5643 @cindex Árvore de revisão
5644 @c <en>@cindex Linear development
5645 @cindex Desenvolvimento linear
5646 @c <en>@cindex Number, revision-
5647 @cindex Revisão, número de
5648 @c <en>@cindex Decimal revision number
5649 @cindex Número de revisão decimal
5650 @c <en>@cindex Branch number
5651 @cindex Número de ramo
5652 @c <en>@cindex Number, branch
5653 @cindex Ramo, número de
5654
5655 @c <en>Each version of a file has a unique @dfn{revision
5656 @c <en>number}.  Revision numbers look like @samp{1.1},
5657 @c <en>@samp{1.2}, @samp{1.3.2.2} or even @samp{1.3.2.2.4.5}.
5658 @c <en>A revision number always has an even number of
5659 @c <en>period-separated decimal integers.  By default revision
5660 @c <en>1.1 is the first revision of a file.  Each successive
5661 @c <en>revision is given a new number by increasing the
5662 @c <en>rightmost number by one.  The following figure displays
5663 @c <en>a few revisions, with newer revisions to the right.
5664 Cada versão de um arquivo tem um @dfn{número de
5665 revisão} único.  Números de revisão são coisas do tipo
5666 @samp{1.1}, @samp{1.2}, @samp{1.3.2.2} ou até mesmo
5667 @samp{1.3.2.2.4.5}.  Um número de revisão sempre tem uma
5668 quantidade par de números inteiros na base dez
5669 separados por ponto.  Por padrão, a revisão 1.1 é a
5670 primeira revisão de um arquivo.  Cada revisão sucessiva
5671 ganha um novo número somando um ao número mais a
5672 direita.  A figura a seguir mostra mostra algumas
5673 revisões, com a revisão mais nova mais à direita.
5674
5675 @example
5676        +-----+    +-----+    +-----+    +-----+    +-----+
5677        ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
5678        +-----+    +-----+    +-----+    +-----+    +-----+
5679 @end example
5680
5681 @c <en>It is also possible to end up with numbers containing
5682 @c <en>more than one period, for example @samp{1.3.2.2}.  Such
5683 @c <en>revisions represent revisions on branches
5684 @c <en>(@pxref{Branching and merging}); such revision numbers
5685 @c <en>are explained in detail in @ref{Branches and
5686 @c <en>revisions}.
5687 Também é possível ter números com mais de um ponto, por
5688 exemplo @samp{1.3.2.2}.  Tais revisões representam
5689 revisões em ramos (@pxref{Ramificando e mesclando});
5690 estes números de revisão são explicados em detalhes em
5691 @ref{Ramos e revisões}.
5692
5693 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5694 @c <en>@node Versions revisions releases
5695 @node Versões revisões releases
5696 @c <en>@section Versions, revisions and releases
5697 @section Versões, revisões e releases
5698 @c <en>@cindex Revisions, versions and releases
5699 @cindex Revisões, versões e releases
5700 @c <en>@cindex Versions, revisions and releases
5701 @cindex Versões, revisões e releases
5702 @c <en>@cindex Releases, revisions and versions
5703 @cindex Releases, revisões e versões
5704
5705 @c <en>A file can have several versions, as described above.
5706 @c <en>Likewise, a software product can have several versions.
5707 @c <en>A software product is often given a version number such
5708 @c <en>as @samp{4.1.1}.
5709 Um arquivo pode ter várias versões, como descrito
5710 acima.  Da mesma forma, um produto de software também
5711 pode ter várias versões.  Frequentemente um produto de
5712 software recebe um número de versão, tal como @samp{4.1.1}.
5713
5714 @c <en>Versions in the first sense are called @dfn{revisions}
5715 @c <en>in this document, and versions in the second sense are
5716 @c <en>called @dfn{releases}.  To avoid confusion, the word
5717 @c <en>@dfn{version} is almost never used in this document.
5718 Versões, neste documento são chamadas, principalmente,
5719 de @dfn{revisões} , e também de @dfn{releases}.  Para evitar
5720 confusão, o termo @dfn{versão} praticamente não é usado
5721 neste documento.
5722
5723 @c <en>@node Assigning revisions
5724 @node Atribuindo revisões
5725 @c <en>@section Assigning revisions
5726 @section Atribuindo revisões
5727
5728 @c We avoid the "major revision" terminology.  It seems
5729 @c like jargon.  Hopefully "first number" is clear enough.
5730 @c
5731 @c Well, in the context of software release numbers,
5732 @c "major" and "minor" release or version numbers are
5733 @c documented in at least the GNU Coding Standards, but I'm
5734 @c still not sure I find that a valid reason to apply the
5735 @c terminology to RCS revision numbers.  "First", "Second",
5736 @c "subsequent", and so on is almost surely clearer,
5737 @c especially to a novice reader. -DRP
5738 @c <en>By default, @sc{cvs} will assign numeric revisions by
5739 @c <en>leaving the first number the same and incrementing the
5740 @c <en>second number.  For example, @code{1.1}, @code{1.2},
5741 @c <en>@code{1.3}, etc.
5742 Por padrão, @sc{cvs} vai atribuir revisões numéricas
5743 mantendo o primeiro número e aumentando o segundo.  Por
5744 exemplo, @code{1.1}, @code{1.2}, @code{1.3}, etc.
5745
5746 @c <en>When adding a new file, the second number will always
5747 @c <en>be one and the first number will equal the highest
5748 @c <en>first number of any file in that directory.  For
5749 @c <en>example, the current directory contains files whose
5750 @c <en>highest numbered revisions are @code{1.7}, @code{3.1},
5751 @c <en>and @code{4.12}, then an added file will be given the
5752 @c <en>numeric revision @code{4.1}.
5753 Quando um novo arquivo é adicionado, o segundo número
5754 vai ser sempre o um e o primeiro número vai ser igual
5755 ao maior primeiro número de qualquer arquivo no
5756 diretório.  Por exemplo, se o diretório atual contiver
5757 arquivos os quais o maior número de revisão seram
5758 @code{1.7}, @code{3.1} e @code{4.12}, então um arquivo
5759 adicionado vai receber a revisão numérica @code{4.1}.
5760
5761 @c This is sort of redundant with something we said a
5762 @c while ago.  Somewhere we need a better way of
5763 @c introducing how the first number can be anything
5764 @c except "1", perhaps.  Also I don't think this
5765 @c presentation is clear on why we are discussing releases
5766 @c and first numbers of numeric revisions in the same
5767 @c breath.
5768 @c <en>Normally there is no reason to care
5769 @c <en>about the revision numbers---it is easier to treat them
5770 @c <en>as internal numbers that @sc{cvs} maintains, and tags
5771 @c <en>provide a better way to distinguish between things like
5772 @c <en>release 1 versus release 2 of your product
5773 @c <en>(@pxref{Tags}).  However, if you want to set the
5774 @c <en>numeric revisions, the @samp{-r} option to @code{cvs
5775 @c <en>commit} can do that.  The @samp{-r} option implies the
5776 @c <en>@samp{-f} option, in the sense that it causes the
5777 @c <en>files to be committed even if they are not modified.
5778 Normalmente não há razão para se preocupar com números
5779 de revisão---é melhor tratá-los como numeração interna
5780 que o @sc{cvs} mantém, e etiquetas (tags) fornecem uma
5781 forma melhor de distinguir entre coisas tais como
5782 release 1 e release 2 de seu produto
5783 (@pxref{Etiquetas}).  Entretando, se você quiser
5784 ajustar as revisões numéricas, a opção @samp{-r} do
5785 @code{cvs commit} pode fazer isto.  A opção @samp{-r}
5786 implica na opção @samp{-f}, no sentido de que ela faz
5787 com que os arquivos sejam submetidos mesmo caso eles
5788 não estejam modificados.
5789
5790 @c <en>For example, to bring all your files up to
5791 @c <en>revision 3.0 (including those that haven't changed),
5792 @c <en>you might invoke:
5793 Por exemplo, para subir todos os arquivos para a
5794 revisão 3.0 (inclusive os que não sofreram mudanças),
5795 você deve invocar:
5796
5797 @example
5798 $ cvs commit -r 3.0
5799 @end example
5800
5801 @c <en>Note that the number you specify with @samp{-r} must be
5802 @c <en>larger than any existing revision number.  That is, if
5803 @c <en>revision 3.0 exists, you cannot @samp{cvs commit
5804 @c <en>-r 1.3}.  If you want to maintain several releases in
5805 @c <en>parallel, you need to use a branch (@pxref{Branching and merging}).
5806 Observe que o número que você especificar com a opção
5807 @samp{-r} deve ser maior que qualquer número de revisão
5808 existente.  Ou seja, se a revisão 3.0 existe, você não
5809 pode fazer @samp{cvs commit -r 1.3}.  Se você quiser
5810 manter várias releases em paralelo, você deve usar um ramo
5811 (@pxref{Ramificando e mesclando}).
5812
5813 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5814 @c <en>@node Tags
5815 @node Etiquetas
5816 @c <en>@section Tags--Symbolic revisions
5817 @section Etiquetas (Tags)--Revisões simbólicas
5818 @c <en>@cindex Tags
5819 @cindex Etiquetas
5820
5821 @c <en>The revision numbers live a life of their own.  They
5822 @c <en>need not have anything at all to do with the release
5823 @c <en>numbers of your software product.  Depending
5824 @c <en>on how you use @sc{cvs} the revision numbers might change several times
5825 @c <en>between two releases.  As an example, some of the
5826 @c <en>source files that make up @sc{rcs} 5.6 have the following
5827 @c <en>revision numbers:
5828 Os números de revisão tem uma vida a parte.  Eles não
5829 precisam ter nada a ver com os números de release de
5830 seu produto de software.  Dependendo de como você usa o
5831 @sc{cvs}, os números de revisão podem mudar várias
5832 vezes entre duas releases.  Como um exemplo, alguns dos
5833 arquivos fonte do @sc{rcs} 5.6 tinham os seguintes
5834 números de revisão:
5835 @c <en>@cindex RCS revision numbers
5836 @cindex números de revisão do RCS
5837
5838 @example
5839 ci.c            5.21
5840 co.c            5.9
5841 ident.c         5.3
5842 rcs.c           5.12
5843 rcsbase.h       5.11
5844 rcsdiff.c       5.10
5845 rcsedit.c       5.11
5846 rcsfcmp.c       5.9
5847 rcsgen.c        5.10
5848 rcslex.c        5.11
5849 rcsmap.c        5.2
5850 rcsutil.c       5.10
5851 @end example
5852
5853 @c <en>@cindex tag (subcommand), introduction
5854 @cindex tag (subcomando), introdução
5855 @c <en>@cindex Tags, symbolic name
5856 @cindex Etiquetas, nome simbólico
5857 @c <en>@cindex Symbolic name (tag)
5858 @cindex Nome simbólico (etiqueta)
5859 @c <en>@cindex Name, symbolic (tag)
5860 @cindex Simbólico, nome (etiqueta)
5861 @c <en>@cindex HEAD, as reserved tag name
5862 @cindex HEAD, nome de etiqueta reservado
5863 @c <en>@cindex BASE, as reserved tag name
5864 @cindex BASE, nome de etiqueta reservado
5865 @c <en>You can use the @code{tag} command to give a symbolic name to a
5866 @c <en>certain revision of a file.  You can use the @samp{-v} flag to the
5867 @c <en>@code{status} command to see all tags that a file has, and
5868 @c <en>which revision numbers they represent.  Tag names must
5869 @c <en>start with an uppercase or lowercase letter and can
5870 @c <en>contain uppercase and lowercase letters, digits,
5871 @c <en>@samp{-}, and @samp{_}.  The two tag names @code{BASE}
5872 @c <en>and @code{HEAD} are reserved for use by @sc{cvs}.  It
5873 @c <en>is expected that future names which are special to
5874 @c <en>@sc{cvs} will be specially named, for example by
5875 @c <en>starting with @samp{.}, rather than being named analogously to
5876 @c <en>@code{BASE} and @code{HEAD}, to avoid conflicts with
5877 @c <en>actual tag names.
5878 Você pode usar o comando @code{tag} para dar um nome
5879 simbólico para uma certa revisão de um arquivo.  Você
5880 pode usar a opção @samp{-v} com o comando @code{status}
5881 para ver todas as etiquetas que um arquivo possui, e
5882 que números de revisão elas representam.  Nomes de
5883 etiqueta devem começar com letra maiúscula ou minúscula
5884 e pode conter letras maiúsculas e minúsculas, dígitos,
5885 @samp{-} e @samp{_}.  Os dois nomes de etiqueta
5886 @code{BASE} e @code{HEAD} são reservados para o
5887 @sc{cvs}.  É esperado que nomes futuros que sejam
5888 especiais para o @sc{cvs} recebam nomes especiais, por
5889 exemplo começando com @samp{.}, sendo então nomeados de
5890 forma análoga a @code{BASE} e @code{HEAD}, para evitar
5891 conflitos com os nomes de etiqueta atuais.
5892 @c Including a character such as % or = has also been
5893 @c suggested as the naming convention for future
5894 @c special tag names.  Starting with . is nice because
5895 @c that is not a legal tag name as far as RCS is concerned.
5896 @c FIXME: CVS actually accepts quite a few characters
5897 @c in tag names, not just the ones documented above
5898 @c (see RCS_check_tag).  RCS
5899 @c defines legitimate tag names by listing illegal
5900 @c characters rather than legal ones.  CVS is said to lose its
5901 @c mind if you try to use "/" (try making such a tag sticky
5902 @c and using "cvs status" client/server--see remote
5903 @c protocol format for entries line for probable cause).
5904 @c TODO: The testsuite
5905 @c should test for whatever are documented above as
5906 @c officially-OK tag names, and CVS should at least reject
5907 @c characters that won't work, like "/".
5908
5909 @c <en>You'll want to choose some convention for naming tags,
5910 @c <en>based on information such as the name of the program
5911 @c <en>and the version number of the release.  For example,
5912 @c <en>one might take the name of the program, immediately
5913 @c <en>followed by the version number with @samp{.} changed to
5914 @c <en>@samp{-}, so that @sc{cvs} 1.9 would be tagged with the name
5915 @c <en>@code{cvs1-9}.  If you choose a consistent convention,
5916 @c <en>then you won't constantly be guessing whether a tag is
5917 @c <en>@code{cvs-1-9} or @code{cvs1_9} or what.  You might
5918 @c <en>even want to consider enforcing your convention in the
5919 @c <en>@file{taginfo} file (@pxref{taginfo}).
5920 Você vai querer definir algumas convenções para nomear
5921 etiquetas, baseado em informações tais como nome do
5922 programa e número da versão da release.  Por exemplo,
5923 algume pode pegar o nome do programa, seguindo pelo
5924 número de versão com o @samp{.} trocado por @samp{-},
5925 de forma que o @sc{cvs} 1.9 seja etiquetado com o nome
5926 de @code{cvs1-9}.  Se você escolhe uma convenção
5927 consistente, você não vai precisar ficar constantemente
5928 adivinhando se a etiqueta é @code{cvs-1-9} ou
5929 @code{cvs1_9} ou sei lá o que.  Você pode até mesmo
5930 considerar reforçar esta convenção no arquivo
5931 @file{taginfo} (@pxref{taginfo}).
5932 @c Might be nice to say more about using taginfo this
5933 @c way, like giving an example, or pointing out any particular
5934 @c issues which arise.
5935
5936 @c <en>@cindex Adding a tag
5937 @cindex Adicionando uma etiqueta
5938 @c <en>@cindex Tags, example
5939 @cindex Etiquetas, exemplo
5940 @c <en>The following example shows how you can add a tag to a
5941 @c <en>file.  The commands must be issued inside your working
5942 @c <en>directory.  That is, you should issue the
5943 @c <en>command in the directory where @file{backend.c}
5944 @c <en>resides.
5945 O exemplo seguinte mostra como você pode adicionar uma
5946 etiqueta a um arquivo.  Os comandos devem ser
5947 executados de dentro do seu diretório de trabalho.  Ou
5948 seja, você deve executar o comando no diretório onde @file{backend.c}
5949 fica.
5950
5951 @example
5952 $ cvs tag rel-0-4 backend.c
5953 T backend.c
5954 $ cvs status -v backend.c
5955 ===================================================================
5956 File: backend.c         Status: Up-to-date
5957
5958     Version:            1.4     Tue Dec  1 14:39:01 1992
5959     RCS Version:        1.4     /u/cvsroot/yoyodyne/tc/backend.c,v
5960     Sticky Tag:         (none)
5961     Sticky Date:        (none)
5962     Sticky Options:     (none)
5963
5964     Existing Tags:
5965         rel-0-4                     (revision: 1.4)
5966
5967 @end example
5968
5969 @c <en>For a complete summary of the syntax of @code{cvs tag},
5970 @c <en>including the various options, see @ref{Invoking CVS}.
5971 Para um resumo completo da sintaxe de @code{cvs tag},
5972 incluindo as várias opções, veja em @ref{Chamando o CVS}.
5973
5974 @c <en>There is seldom reason to tag a file in isolation.  A more common use is
5975 @c <en>to tag all the files that constitute a module with the same tag at
5976 @c <en>strategic points in the development life-cycle, such as when a release
5977 @c <en>is made.
5978 Existem poucas razões para etiquetar um arquivo em
5979 separado.  Um uso mais comum é etiquetar todos os
5980 arquivos que fazem parte de um módulo com a mesma
5981 etiqueta em momentos estratégicos do ciclo de vida do
5982 desenvolvimento, como por exemplo, quando fica pronta
5983 uma release.
5984
5985 @example
5986 $ cvs tag rel-1-0 .
5987 cvs tag: Tagging .
5988 T Makefile
5989 T backend.c
5990 T driver.c
5991 T frontend.c
5992 T parser.c
5993 @end example
5994
5995 @noindent
5996 @c <en>(When you give @sc{cvs} a directory as argument, it generally applies the
5997 @c <en>operation to all the files in that directory, and (recursively), to any
5998 @c <en>subdirectories that it may contain.  @xref{Recursive behavior}.)
5999 (Quando você passa um diretório para o @sc{cvs} como
6000 argumento, ele geralmente realiza a operação em todos
6001 os arquivos do diretório e (recursivamente) a todo
6002 subdiretório que ele contenha.
6003 @xref{Comportamento recursivo}.)
6004
6005 @c <en>@cindex Retrieving an old revision using tags
6006 @cindex Retrieving an old revision using tags
6007 @c <en>@cindex Tags, retrieving old revisions
6008 @cindex Tags, retrieving old revisions
6009 @c <en>The @code{checkout} command has a flag, @samp{-r}, that lets you check out
6010 @c <en>a certain revision of a module.  This flag makes it easy to
6011 @c <en>retrieve the sources that make up release 1.0 of the module @samp{tc} at
6012 @c <en>any time in the future:
6013 O comando @code{checkout} tem uma opção, @samp{-r}, que
6014 permite pegar uma certa revisão de um módulo.  Esta
6015 opção torna fácil recuperar as ontes que fizeram parte
6016 da release 1.0 do módulo @samp{tc} a qualquer momento
6017 no futuro:
6018
6019 @example
6020 $ cvs checkout -r rel-1-0 tc
6021 @end example
6022
6023 @noindent
6024 @c <en>This is useful, for instance, if someone claims that there is a bug in
6025 @c <en>that release, but you cannot find the bug in the current working copy.
6026 Isto pode ser útil, por exemplo, se alguem afirma que
6027 tem um pau naquela versão, mas você não acha o pau na
6028 cópia de trabalho mais recente.
6029
6030 @c <en>You can also check out a module as it was at any given date.
6031 @c <en>@xref{checkout options}.  When specifying @samp{-r} to
6032 @c <en>any of these commands, you will need beware of sticky
6033 @c <en>tags; see @ref{Sticky tags}.
6034 Você também pode pegar um módulo do jeito que ele
6035 estava em qualquer data.  @xref{checkout options}.
6036 Quando usar @samp{-r} em qualquer destes comandos, você
6037 vai precisar estar atento às etiquetas adesivas; veja
6038 em @ref{Etiquetas adesivas}.
6039
6040 @c <en>When you tag more than one file with the same tag you
6041 @c <en>can think about the tag as "a curve drawn through a
6042 @c <en>matrix of filename vs. revision number."  Say we have 5
6043 @c <en>files with the following revisions:
6044 Quando você etiqueta mais de um arquivo com a mesma
6045 etiqueta você pode pensar na etiqueta como "uma curva
6046 desenhada ao longo da matriz de nomes de arquivo por
6047 números de revisão".  Digamos que temos 5 arquivos com
6048 as seguintes revisões:
6049
6050 @example
6051 @group
6052         file1   file2   file3   file4   file5
6053
6054         1.1     1.1     1.1     1.1  /--1.1*      <-*-  TAG
6055         1.2*-   1.2     1.2    -1.2*-
6056         1.3  \- 1.3*-   1.3   / 1.3
6057         1.4          \  1.4  /  1.4
6058                       \-1.5*-   1.5
6059                         1.6
6060 @end group
6061 @end example
6062
6063 @c <en>At some time in the past, the @code{*} versions were tagged.
6064 @c <en>You can think of the tag as a handle attached to the curve
6065 @c <en>drawn through the tagged revisions.  When you pull on
6066 @c <en>the handle, you get all the tagged revisions.  Another
6067 @c <en>way to look at it is that you "sight" through a set of
6068 @c <en>revisions that is "flat" along the tagged revisions,
6069 @c <en>like this:
6070 Em algum momento no passado, as versões com @code{*}
6071 foram etiquetadas.  Você pode pensar na etiqueta como
6072 uma alça presa à curva que passa pelas revisões
6073 marcadas.  Quando você puxa a alça, vem as revisões
6074 etiquetadas.  outra maneira de perceber isto é ver
6075 através de um conjunto de revisões que foram alinhadas
6076 pelas revisões etiquetadas, como isto:
6077
6078 @example
6079 @group
6080         file1   file2   file3   file4   file5
6081
6082                         1.1
6083                         1.2
6084                 1.1     1.3                       _
6085         1.1     1.2     1.4     1.1              /
6086         1.2*----1.3*----1.5*----1.2*----1.1*    (--- <--- Look here
6087         1.3             1.6     1.3              \_
6088         1.4                     1.4
6089                                 1.5
6090 @end group
6091 @end example
6092
6093 @c <en>@node Tagging the working directory
6094 @node Etiquetando o diretório de trabalho
6095 @c <en>@section Specifying what to tag from the working directory
6096 @section Especificando o que etiquetar no diretório de trabalho
6097
6098 @c <en>@cindex tag (subcommand)
6099 @cindex tag (subcomando)
6100 @c <en>The example in the previous section demonstrates one of
6101 @c <en>the most common ways to choose which revisions to tag.
6102 @c <en>Namely, running the @code{cvs tag} command without
6103 @c <en>arguments causes @sc{cvs} to select the revisions which
6104 @c <en>are checked out in the current working directory.  For
6105 @c <en>example, if the copy of @file{backend.c} in working
6106 @c <en>directory was checked out from revision 1.4, then
6107 @c <en>@sc{cvs} will tag revision 1.4.  Note that the tag is
6108 @c <en>applied immediately to revision 1.4 in the repository;
6109 @c <en>tagging is not like modifying a file, or other
6110 @c <en>operations in which one first modifies the working
6111 @c <en>directory and then runs @code{cvs commit} to transfer
6112 @c <en>that modification to the repository.
6113 O exemplo na seção anterior  demonstra uma das formas
6114 mais comuns de escolher que revisões etiquetar.  A
6115 saber, rodando o comando @code{cvs tag} sem argumentos
6116 faz com que o @sc{cvs} selecione as revisões que estão
6117 presentes no diretório de trabalho atual.  Por exemplo,
6118 se a cópia do arquivo @file{backend.c} no diretório de
6119 trabalho foi pega da revisão 1.4, então o @sc{cvs} vai
6120 etiquetar a revisão 1.4.  Observe que a etiqueta é
6121 aplicada na revisão 1.4 no repositório imediatamente;
6122 Etiquetar não funciona como modificar arquivos ou
6123 outras operações nas quais primeiros você modifica o
6124 diretório de trabalho e então roda o @code{cvs commit}
6125 para mandar as modificações para o repositório.
6126
6127 @c <en>One potentially surprising aspect of the fact that
6128 @c <en>@code{cvs tag} operates on the repository is that you
6129 @c <en>are tagging the checked-in revisions, which may differ
6130 @c <en>from locally modified files in your working directory.
6131 @c <en>If you want to avoid doing this by mistake, specify the
6132 @c <en>@samp{-c} option to @code{cvs tag}.  If there are any
6133 @c <en>locally modified files, @sc{cvs} will abort with an
6134 @c <en>error before it tags any files:
6135 Um aspecto potencialmente confuso no fato de o comando
6136 @code{cvs tag} operar no repositório é que você está
6137 etiquetando revisões devolvidas, que podem diferir de
6138 arquivos localmente modificados no seu diretório de
6139 trabalho.  Se você quer evitar fazer isto por engano,
6140 use a opção @samp{-c} no @code{cvs tag}.  Se existe
6141 qualquer arquivo localmente modificado, o @sc{cvs} vai
6142 abortar com erro antes de etiquetar qualquer arquivo:
6143
6144 @example
6145 $ cvs tag -c rel-0-4
6146 cvs tag: backend.c is locally modified
6147 cvs [tag aborted]: correct the above errors first!
6148 @end example
6149
6150 @c <en>@node Tagging by date/tag
6151 @node Etiquetando por data/etiqueta
6152 @c <en>@section Specifying what to tag by date or revision
6153 @section Especificando o que etiquetar por data ou revisão
6154 @c <en>@cindex rtag (subcommand)
6155 @cindex rtag (subcomando)
6156
6157 @c <en>The @code{cvs rtag} command tags the repository as of a
6158 @c <en>certain date or time (or can be used to tag the latest
6159 @c <en>revision).  @code{rtag} works directly on the
6160 @c <en>repository contents (it requires no prior checkout and
6161 @c <en>does not look for a working directory).
6162 O comando @code{cvs rtag} etiqueta o repositório em uma
6163 certa data ou hora (ou pode ser usado para etiquetar a
6164 última revisão).  @code{rtag} trabalha diretamente no
6165 repositório (não requer um checkout e não procura por
6166 um diretório de trabalho).
6167
6168 @c <en>The following options specify which date or revision to
6169 @c <en>tag.  See @ref{Common options}, for a complete
6170 @c <en>description of them.
6171 As seguintes opções especificam que data ou revisão
6172 etiquetar.  Veja em @ref{Opções comuns}, para uma
6173 descrição completa delas.
6174
6175 @table @code
6176 @c <en>@item -D @var{data}
6177 @item -D @var{data}
6178 @c <en>Tag the most recent revision no later than @var{date}.
6179 Etiqueta a revisão mais recente que seja anterior a @var{data}.
6180
6181 @c <en>@item -f
6182 @item -f
6183 @c <en>Only useful with the @samp{-D @var{date}} or @samp{-r @var{tag}}
6184 @c <en>flags.  If no matching revision is found, use the most
6185 @c <en>recent revision (instead of ignoring the file).
6186 Útil apenas em conjunto com @samp{-D @var{data}} ou
6187 @samp{-r @var{etiqueta}}.  Se não encontrar uma revisã
6188 casando com o padrão, usar a revisão mais recente (ao
6189 invés de ignorar o arquivo).
6190
6191 @c <en>@item -r @var{tag}
6192 @item -r @var{etiqueta}
6193 @c <en>Only tag those files that contain existing tag @var{tag}.
6194 Etiqueta apenas os arquivos que contém a etiqueta
6195 @var{etiqueta} existente.
6196 @end table
6197
6198 @c <en>The @code{cvs tag} command also allows one to specify
6199 @c <en>files by revision or date, using the same @samp{-r},
6200 @c <en>@samp{-D}, and @samp{-f} options.  However, this
6201 @c <en>feature is probably not what you want.  The reason is
6202 @c <en>that @code{cvs tag} chooses which files to tag based on
6203 @c <en>the files that exist in the working directory, rather
6204 @c <en>than the files which existed as of the given tag/date.
6205 @c <en>Therefore, you are generally better off using @code{cvs
6206 @c <en>rtag}.  The exceptions might be cases like:
6207 O comando @code{cvs tag} também permite que você
6208 especifique arquivos por revisão ou data, usando as
6209 mesmas opções @samp{-r}, @samp{-D} e @samp{-f}.
6210 Entretanto, este característica não é provavelmente o
6211 que você quer.  A razão é que o @code{cvs tag} escolhe
6212 que arquivos etiquetar baseado nos arquivos que existem
6213 no diretório de trabalho, ao invés de arquivos que
6214 existem na dada etiqueta/data.  Portanto, você é
6215 geralmente ???better off??? usar @code{cvs rtag}.  As
6216 exceções devem ser casos como:
6217
6218 @example
6219 cvs tag -r 1.4 stable backend.c
6220 @end example
6221
6222 @c <en>@node Modifying tags
6223 @node Modificando etiquetas
6224 @c <en>@section Deleting, moving, and renaming tags
6225 @section Apagando, movendo e renomeando etiquetas
6226
6227 @c Also see:
6228 @c  "How do I move or rename a magic branch tag?"
6229 @c in the FAQ (I think the issues it talks about still
6230 @c apply, but this could use some sanity.sh work).
6231
6232 @c <en>Normally one does not modify tags.  They exist in order
6233 @c <en>to record the history of the repository and so deleting
6234 @c <en>them or changing their meaning would, generally, not be
6235 @c <en>what you want.
6236 Normalmente não se modificam etiquetas.  Elas existem
6237 para registrar o histórico do repositório e, portanto,
6238 apagá-las ou alterar o significado delas não é, em
6239 geral, o que você quer.
6240
6241 @c <en>However, there might be cases in which one uses a tag
6242 @c <en>temporarily or accidentally puts one in the wrong
6243 @c <en>place.  Therefore, one might delete, move, or rename a
6244 @c <en>tag.
6245 Entretanto, podem haver casos nos quais alguem usa a
6246 etiqueta temporariamente ou bota no lugar errado por
6247 acidente.  Logo, é possível apagar, mover, ou renomear
6248 uma etiqueta.
6249
6250 @noindent
6251 @c <en>@strong{WARNING: the commands in this section are
6252 @c <en>dangerous; they permanently discard historical
6253 @c <en>information and it can be difficult or impossible to
6254 @c <en>recover from errors.  If you are a @sc{cvs}
6255 @c <en>administrator, you may consider restricting these
6256 @c <en>commands with the @file{taginfo} file (@pxref{taginfo}).}
6257 @strong{ATENÇÃO: os comandos nesta seção são perigosos;
6258 eles apagam permanentemente informações históricas e
6259 pode ser difícil ou impossível recuperar tais
6260 informações em caso de erro.  Se você é um
6261 administrador do @sc{cvs}, você deve considerar
6262 restringir estes comandos com o arquivo @file{taginfo}
6263 (@pxref{taginfo}).}
6264
6265 @c <en>@cindex Deleting tags
6266 @cindex Apagando etiquetas
6267 @c <en>@cindex Deleting branch tags
6268 @cindex Apagando etiquetas de ramos
6269 @c <en>@cindex Removing tags
6270 @cindex Removendo etiquetas
6271 @c <en>@cindex Removing branch tags
6272 @cindex Removendo etiquetas de ramos
6273 @c <en>@cindex Tags, deleting
6274 @cindex Etiquetas, apagando
6275 @c <en>@cindex Branch tags, deleting
6276 @cindex Etiquetas de ramos, apagando
6277 @c <en>To delete a tag, specify the @samp{-d} option to either
6278 @c <en>@code{cvs tag} or @code{cvs rtag}.  For example:
6279 Para apagar uma etiqueta, especifique a opção @samp{-d}
6280 tanto para @code{cvs tag} quanto para @code{cvs rtag}.  Por exemplo:
6281
6282 @example
6283 cvs rtag -d rel-0-4 tc
6284 @end example
6285
6286 @noindent
6287 @c <en>deletes the non-branch tag @code{rel-0-4} from the module @code{tc}.
6288 @c <en>In the event that branch tags are encountered within the repository
6289 @c <en>with the given name, a warning message will be issued and the branch 
6290 @c <en>tag will not be deleted.  If you are absolutely certain you know what
6291 @c <en>you are doing, the @code{-B} option may be specified to allow deletion
6292 @c <en>of branch tags.  In that case, any non-branch tags encountered will
6293 @c <en>trigger warnings and will not be deleted.
6294 apaga a etiqueta ???non-branch??? @code{rel-0-4} do
6295 módulo @code{tc}.  No caso de etiquetas de ramos serem
6296 encontradas no repositório com o nome dado, uma
6297 mensagem de aviso vai ser mostrada e a etiqueta de ramo
6298 não vai ser apagada.  Se você está absolutamente certo
6299 de que sabe o que está fazendo, a opção @code{-B} pode
6300 ser especificada para permitir que se apague as
6301 etiquetas de ramos.  Neste caso, qualquer etiqueta
6302 ???non-branch??? encontrada vai disparar avisos e não
6303 vai ser apagada.
6304
6305 @noindent
6306 @c <en>@strong{WARNING: Moving branch tags is very dangerous!  If you think
6307 @c <en>you need the @code{-B} option, think again and ask your @sc{cvs}
6308 @c <en>administrator about it (if that isn't you).  There is almost certainly
6309 @c <en>another way to accomplish what you want to accomplish.}
6310 @strong{ATENÇÃO: Mover etiquetas de ramos é muito
6311 perigoso!  Se você pensa que precisa da opção
6312 @code{-B}, pense duas vezes e pergunte a seu
6313 administrador do @sc{cvs} sobre ela (se não for você).
6314 É quase certo que existe outra forma de alcançar o seu objetivo.}
6315
6316 @c <en>@cindex Moving tags
6317 @cindex Movendo etiquetas
6318 @c <en>@cindex Moving branch tags
6319 @cindex Movendo etiquetas de ramos
6320 @c <en>@cindex Tags, moving
6321 @cindex Etiquetas, movendo
6322 @c <en>@cindex Branch tags, moving
6323 @cindex Etiquetas de ramos, movendo
6324 @c <en>When we say @dfn{move} a tag, we mean to make the same
6325 @c <en>name point to different revisions.  For example, the
6326 @c <en>@code{stable} tag may currently point to revision 1.4
6327 @c <en>of @file{backend.c} and perhaps we want to make it
6328 @c <en>point to revision 1.6.  To move a non-branch tag, specify the
6329 @c <en>@samp{-F} option to either @code{cvs tag} or @code{cvs
6330 @c <en>rtag}.  For example, the task just mentioned might be
6331 @c <en>accomplished as:
6332 Quando falamos em @dfn{mover} uma etiqueta, queremos
6333 dizer fazer com que o mesmo nome aponte para diferentes
6334 revisões.  Por exemplo, a etiqueta @code{stable} pode
6335 atualmente apontar para a revisão 1.4 do arquivo
6336 @file{backend.c} e talvez nós queiramos fazé-la apontar
6337 para a revisão 1.6.  Para mover uma etiqueta
6338 ???non-branch???, Use a opção @samp{-F} tanto com o
6339 @code{cvs tag} oquanto com o @code{cvs rtag}.  Por
6340 exemplo, esta mudança pode ser alcançada com:
6341
6342 @example
6343 cvs tag -r 1.6 -F stable backend.c
6344 @end example
6345
6346 @noindent
6347 @c <en>If any branch tags are encountered in the repository 
6348 @c <en>with the given name, a warning is issued and the branch
6349 @c <en>tag is not disturbed.  If you are absolutely certain you
6350 @c <en>wish to move the branch tag, the @code{-B} option may be specified.
6351 @c <en>In that case, non-branch tags encountered with the given
6352 @c <en>name are ignored with a warning message.
6353 Se alguma etiqueta de ramo for encontrada no
6354 repositório com o nome dado, um aviso é mostrado e a
6355 etiqueta de ramo não é alterada.  Se você está
6356 absolutamente certo de que você quer mover a etiquta de
6357 ramo, a opção @code{-B} pode ser especificada.  Neste
6358 caso, etiquetas ???non-branch??? encontradas com o nome
6359 dado serão ignoradas com uma mensagem de aviso.
6360
6361 @noindent
6362 @c <en>@strong{WARNING: Moving branch tags is very dangerous!  If you think you
6363 @c <en>need the @code{-B} option, think again and ask your @sc{cvs}
6364 @c <en>administrator about it (if that isn't you).  There is almost certainly
6365 @c <en>another way to accomplish what you want to accomplish.}
6366 @strong{ATENÇÃO: Mover etiquetas de ramos é muito
6367 perigoso!  Se você pensa que precisa da opção
6368 @code{-B}, pense duas vezes e pergunte a seu
6369 administrador do @sc{cvs} sobre ela (se não for você).
6370 É quase certo que existe outra forma de alcançar o seu objetivo.}
6371
6372 @c <en>@cindex Renaming tags
6373 @cindex Renomeando etiquetas
6374 @c <en>@cindex Tags, renaming
6375 @cindex Etiquetas, renomeando
6376 @c <en>When we say @dfn{rename} a tag, we mean to make a
6377 @c <en>different name point to the same revisions as the old
6378 @c <en>tag.  For example, one may have misspelled the tag name
6379 @c <en>and want to correct it (hopefully before others are
6380 @c <en>relying on the old spelling).  To rename a tag, first
6381 @c <en>create a new tag using the @samp{-r} option to
6382 @c <en>@code{cvs rtag}, and then delete the old name.  (Caution:
6383 @c <en>this method will not work with branch tags.) 
6384 @c <en>This leaves the new tag on exactly the 
6385 @c <en>same files as the old tag.  For example:
6386 Quando falamos em @dfn{renomear} uma etiqueta, queremos
6387 dizer fazer com que um nome diferente aponte para para
6388 as mesmas revisões que a etiqueta antiga.  Por exemplo,
6389 alguem pode ter digitado errado o nome de uma etiqueta
6390 e quer corrigir isto (de preferência antes que outros
6391 caiam no mesmo erro).  Para renomear uma etiqueta,
6392 primeiro crie uma nova etiqueta usando a opção
6393 @samp{-r} para o @code{cvs rtag}, e então apague o nome
6394 antigo.  (Cuidado: este método não vai funcionar com
6395 etiquetas de ramos).  Isto deixa a nova etiqueta
6396 exatamente nos mesmos arquivos que a etiqueta antiga.
6397 Por exemplo:
6398
6399 @example
6400 cvs rtag -r old-name-0-4 rel-0-4 tc
6401 cvs rtag -d old-name-0-4 tc
6402 @end example
6403
6404 @c <en>@node Tagging add/remove
6405 @node Etiquetando adicionados/removidos
6406 @c <en>@section Tagging and adding and removing files
6407 @section Etiquetando e adicionando e removendo arquivos
6408
6409 @c <en>The subject of exactly how tagging interacts with
6410 @c <en>adding and removing files is somewhat obscure; for the
6411 @c <en>most part @sc{cvs} will keep track of whether files
6412 @c <en>exist or not without too much fussing.  By default,
6413 @c <en>tags are applied to only files which have a revision
6414 @c <en>corresponding to what is being tagged.  Files which did
6415 @c <en>not exist yet, or which were already removed, simply
6416 @c <en>omit the tag, and @sc{cvs} knows to treat the absence
6417 @c <en>of a tag as meaning that the file didn't exist as of
6418 @c <en>that tag.
6419 O tema a respeito de como exatamente etiquetas
6420 interagem com arquivos adicionados e removidos é de
6421 certa forma obscuro; Normalmente, o @sc{cvs} vai
6422 verificar quais arquivos existem ou não sem muita
6423 confusão.  Por padrão, etiquetas são aplicadas apenas a
6424 arquivos que tenham uma revisão correspondendo ao que
6425 está sendo etiquetado.  Arquivos que ainda não existem,
6426 ou que já foram removidos, simplesmente omitem a
6427 etiqueta, e o @sc{cvs} trata a ausência de uma
6428 etiqueta como significando que o arquivo não existia na
6429 criação da etiqueta.
6430
6431 @c <en>However, this can lose a small amount of information.
6432 @c <en>For example, suppose a file was added and then removed.
6433 @c <en>Then, if the tag is missing for that file, there is no
6434 @c <en>way to know whether the tag refers to the time before
6435 @c <en>the file was added, or the time after it was removed.
6436 @c <en>If you specify the @samp{-r} option to @code{cvs rtag},
6437 @c <en>then @sc{cvs} tags the files which have been removed,
6438 @c <en>and thereby avoids this problem.  For example, one
6439 @c <en>might specify @code{-r HEAD} to tag the head.
6440 Entretanto, Isto pode perder uma pequena quantidade de
6441 informação.  Por exemplo, suponha que um arquivo foi
6442 adicionado e então removido.  Então, se a etiqueta está
6443 faltando para aquele arquivo, não há como se descobrir
6444 se a data da etiqueta é posterior à adição ou anterior
6445 à remoção do arquivo.  Se você usa a opção @samp{-r}
6446 para @code{cvs rtag}, então o @sc{cvs} etiqueta os
6447 arquivos que foram removidos, e portanto remove este
6448 problema.  Por exemplo, alguem pode especificar @code{-r
6449 HEAD} para etiquetar a head.
6450
6451 @c <en>On the subject of adding and removing files, the
6452 @c <en>@code{cvs rtag} command has a @samp{-a} option which
6453 @c <en>means to clear the tag from removed files that would
6454 @c <en>not otherwise be tagged.  For example, one might
6455 @c <en>specify this option in conjunction with @samp{-F} when
6456 @c <en>moving a tag.  If one moved a tag without @samp{-a},
6457 @c <en>then the tag in the removed files might still refer to
6458 @c <en>the old revision, rather than reflecting the fact that
6459 @c <en>the file had been removed.  I don't think this is
6460 @c <en>necessary if @samp{-r} is specified, as noted above.
6461 A respeito de adicionar e remover arquivos, o comando
6462 @code{cvs rtag} tem a opção @samp{-a} que significa
6463 limpar a etiqueta de arquivos removidos que ???would
6464 not otherwise be tagged???.  Por exemplo, alguem pode
6465 especificar esta opção em conjunto com @samp{-F} quando
6466 mover uma etiqueta.  Se alguem mover uma etiqueta sem o
6467 @samp{-a}, então a etiqueta nos arquivos removidos vai
6468 continuar fazendo referência à revisão antiga, Ao invés
6469 de refletir o fato de que o arquivo foi removido.  Eu
6470 não acho que isto seja necessário se @samp{-r} é
6471 especificado, como falado acima.
6472
6473 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6474 @c <en>@node Sticky tags
6475 @node Etiquetas adesivas
6476 @c <en>@section Sticky tags
6477 @section Etiquetas adesivas
6478 @c <en>@cindex Sticky tags
6479 @cindex Etiquetas adesivas
6480 @c <en>@cindex Tags, sticky
6481 @cindex Adesivas, etiquetas
6482
6483 @c A somewhat related issue is per-directory sticky
6484 @c tags (see comment at CVS/Tag in node Working
6485 @c directory storage); we probably want to say
6486 @c something like "you can set a sticky tag for only
6487 @c some files, but you don't want to" or some such.
6488
6489 @c <en>Sometimes a working copy's revision has extra data
6490 @c <en>associated with it, for example it might be on a branch
6491 @c <en>(@pxref{Branching and merging}), or restricted to
6492 @c <en>versions prior to a certain date by @samp{checkout -D}
6493 @c <en>or @samp{update -D}.  Because this data persists --
6494 @c <en>that is, it applies to subsequent commands in the
6495 @c <en>working copy -- we refer to it as @dfn{sticky}.
6496 Algumas vezes, um cópia de tabalho de uma revisão tem
6497 dados extra associados a ela, por exemplo, ela pode
6498 estar num ramo (@pxref{Ramificando e mesclando}), ou
6499 restrita a uma versão anterior a uma certa data por
6500 @samp{checkout -D} ou @samp{update -D}.  Já que este
6501 dado persiste -- ou seja, ele se aplica a comandos
6502 subseqüentes na cópia de trabalho -- nós o chamamos de
6503 @dfn{adesivos}.
6504
6505 @c <en>Most of the time, stickiness is an obscure aspect of
6506 @c <en>@sc{cvs} that you don't need to think about.  However,
6507 @c <en>even if you don't want to use the feature, you may need
6508 @c <en>to know @emph{something} about sticky tags (for
6509 @c <en>example, how to avoid them!).
6510 Na maioria das vezes, ser adesivo é um aspecto obscuro
6511 do @sc{cvs} que você não precisa saber a respeito.
6512 Entretanto, mesmo se você não quiser usar esta
6513 habilidade, você  vai precisar saber @emph{alguma
6514 coisa} sobre etiquetas adesivas (sticky tags) (por
6515 exemplo, como evitá-las!).
6516
6517 @c <en>You can use the @code{status} command to see if any
6518 @c <en>sticky tags or dates are set:
6519 Você pode usar o comando @code{status} para ver se
6520 alguma etiqueta ou data adesiva estão ligadas:
6521
6522 @example
6523 $ cvs status driver.c
6524 ===================================================================
6525 File: driver.c          Status: Up-to-date
6526
6527     Version:            1.7.2.1 Sat Dec  5 19:35:03 1992
6528     RCS Version:        1.7.2.1 /u/cvsroot/yoyodyne/tc/driver.c,v
6529     Sticky Tag:         rel-1-0-patches (branch: 1.7.2)
6530     Sticky Date:        (none)
6531     Sticky Options:     (none)
6532
6533 @end example
6534
6535 @c <en>@cindex Resetting sticky tags
6536 @cindex Zerando etiquetas adesivas
6537 @c <en>@cindex Sticky tags, resetting
6538 @cindex Etiquetas adesivas, zerando
6539 @c <en>@cindex Deleting sticky tags
6540 @cindex Apagando etiquetas adesivas
6541 @c <en>The sticky tags will remain on your working files until
6542 @c <en>you delete them with @samp{cvs update -A}.  The
6543 @c <en>@samp{-A} option merges local changes into the version of the
6544 @c <en>file from the head of the trunk, removing any sticky tags,
6545 @c <en>dates, or options.  See @ref{update} for more on the operation
6546 @c <en>of @code{cvs update}.
6547 As etiquetas adesivas vão permanecer nos seus arquivos
6548 de trabalho até que você apague elas com @samp{cvs
6549 update -A}.  A opção @samp{-A} mescla as alterações
6550 locais na versão do arquivo na cabeça (head) do tronco,
6551 removendo qualquer etiqueta, data ou opção adesiva.
6552 Veja em @ref{update} para mais a respeito desta
6553 operação do @code{cvs update}.
6554
6555 @c <en>@cindex Sticky date
6556 @cindex Data adesiva
6557 @c <en>The most common use of sticky tags is to identify which
6558 @c <en>branch one is working on, as described in
6559 @c <en>@ref{Accessing branches}.  However, non-branch
6560 @c <en>sticky tags have uses as well.  For example,
6561 @c <en>suppose that you want to avoid updating your working
6562 @c <en>directory, to isolate yourself from possibly
6563 @c <en>destabilizing changes other people are making.  You
6564 @c <en>can, of course, just refrain from running @code{cvs
6565 @c <en>update}.  But if you want to avoid updating only a
6566 @c <en>portion of a larger tree, then sticky tags can help.
6567 @c <en>If you check out a certain revision (such as 1.4) it
6568 @c <en>will become sticky.  Subsequent @code{cvs update}
6569 @c <en>commands will
6570 @c <en>not retrieve the latest revision until you reset the
6571 @c <en>tag with @code{cvs update -A}.  Likewise, use of the
6572 @c <en>@samp{-D} option to @code{update} or @code{checkout}
6573 @c <en>sets a @dfn{sticky date}, which, similarly, causes that
6574 @c <en>date to be used for future retrievals.
6575 O uso mais comum de etiquetas adesivas é identificar em
6576 que ramo se está trabalhando, como descrito em
6577 @ref{Acessando ramos}.  Entretanto, etiquetas adesivas
6578 em ???non-branch??? também têm seu uso.  Por exemplo,
6579 suponha que você quer evitar atualizar seu diretório de
6580 trabalho, para se isolar de mudanças que outras pessoas
6581 estão fazendo que possam que possam desestabilizar seu
6582 trabalho.  Você pode, claro, simplesmente não rodar o @code{cvs
6583 update}.  Mas se você quer evitar atualizar (fazer
6584 update) apenas uma parte de uma grande árvore, então
6585 etiquetas adesivas podem ajudar.  Se você pega uma certa
6586 revsão (como a 1.4) ela vai se tornar adesiva.
6587 comandos @code{cvs update} subsequentes não vão trazer
6588 a revisão mais nova até que você limpe a etiqueta com os
6589 comandos @code{cvs update -A}.  Da mesma forma, o uso da
6590 opção @samp{-D} em @code{update} ou @code{checkout}
6591 define uma @dfn{data adesiva}, que, similarmente, faz
6592 com que a data seja usada para futuras ???retrievals???.
6593
6594 @c <en>People often want to retrieve an old version of
6595 @c <en>a file without setting a sticky tag.  This can
6596 @c <en>be done with the @samp{-p} option to @code{checkout} or
6597 @c <en>@code{update}, which sends the contents of the file to
6598 @c <en>standard output.  For example:
6599 É normal as pessoas quererem recuperar uma versão
6600 antiga de um arquivo sem definir uma etiqueta adesiva.
6601 Isto pode ser feito com a opção @samp{-p} no
6602 @code{checkout} ou @code{update}, que manda o conteúdo
6603 do arquivo para a saída padrão.  Por exemplo:
6604 @example
6605 $ cvs update -p -r 1.1 file1 >file1
6606 ===================================================================
6607 Checking out file1
6608 RCS:  /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
6609 VERS: 1.1
6610 ***************
6611 $
6612 @end example
6613
6614 @c <en>However, this isn't the easiest way, if you are asking
6615 @c <en>how to undo a previous checkin (in this example, put
6616 @c <en>@file{file1} back to the way it was as of revision
6617 @c <en>1.1).  In that case you are better off using the
6618 @c <en>@samp{-j} option to @code{update}; for further
6619 @c <en>discussion see @ref{Merging two revisions}.
6620 Entretanto, esta não é a forma mais fácil, se você está
6621 querendo desfazer um envio anterior (neste exemplo,
6622 devolver o arquivo @file{file1} ao que ele era na
6623 revisão 1.1).  Neste caso é melhor usar a opção
6624 @samp{-j} com o @code{update}; Para maiores detalhes,
6625 veja em @ref{Mesclando duas revisões}.
6626
6627 @c ---------------------------------------------------------------------
6628 @c <en>@node Branching and merging
6629 @node Ramificando e mesclando
6630 @c <en>@chapter Branching and merging
6631 @chapter Ramificando e mesclando
6632 @c <en>@cindex Branching
6633 @cindex Ramificando
6634 @c <en>@cindex Merging
6635 @cindex Mesclando
6636 @c <en>@cindex Copying changes
6637 @cindex Copying changes
6638 @c <en>@cindex Main trunk and branches
6639 @cindex Tronco principal e ramos
6640 @c <en>@cindex Revision tree, making branches
6641 @cindex Revision tree, making branches
6642 @c <en>@cindex Branches, copying changes between
6643 @cindex Branches, copying changes between
6644 @c <en>@cindex Changes, copying between branches
6645 @cindex Changes, copying between branches
6646 @c <en>@cindex Modifications, copying between branches
6647 @cindex Modifications, copying between branches
6648
6649 @c <en>@sc{cvs} allows you to isolate changes onto a separate
6650 @c <en>line of development, known as a @dfn{branch}.  When you
6651 @c <en>change files on a branch, those changes do not appear
6652 @c <en>on the main trunk or other branches.
6653 O @sc{cvs} permite isolar mudanças em uma linha de
6654 desenvolvimento separada, chamada de @dfn{ramo}.
6655 Quando você muda os arquivos de um ramo, aquelas
6656 mudanças não aparecem no tronco principal ou em outros ramos.
6657
6658 @c <en>Later you can move changes from one branch to another
6659 @c <en>branch (or the main trunk) by @dfn{merging}.  Merging
6660 @c <en>involves first running @code{cvs update -j}, to merge
6661 @c <en>the changes into the working directory.
6662 @c <en>You can then commit that revision, and thus effectively
6663 @c <en>copy the changes onto another branch.
6664 Mais tarde você pode mover as mudanças de um ramo para
6665 outro (ou para o tronco principal) com uma
6666 @dfn{mesclagem}.  Mesclar é primeiro rodar um @code{cvs
6667 update -j}, para mesclar as mudanças no seu diretório
6668 de trabalho.  Depois efetivar (commit) esta revisão, e
6669 finalmente fazer a efetiva destas mudanças de um ramo
6670 para outro.
6671
6672 @menu
6673 @c <en>* Branches motivation::         What branches are good for
6674 * Motivação para ramos::              Para que ramos são bons
6675 @c <en>* Creating a branch::           Creating a branch
6676 * Criando um ramo::                   Criando um ramo
6677 @c <en>* Accessing branches::          Checking out and updating branches
6678 * Acessando ramos::                   Pegando e devolvendo ramos
6679 @c <en>* Branches and revisions::      Branches are reflected in revision numbers
6680 * Ramos e revisões::                  Ramificar se reflete nos números de revisão
6681 @c <en>* Magic branch numbers::        Magic branch numbers
6682 * Números de ramos mágicos::          Magic branch numbers
6683 @c <en>* Merging a branch::            Merging an entire branch
6684 * Mesclando um ramo::                 Mesclando um ramo inteiro
6685 @c <en>* Merging more than once::      Merging from a branch several times
6686 * Mesclando mais de uma vez::         Mesclando a partir de um ramo várias vezes
6687 @c <en>* Merging two revisions::       Merging differences between two revisions
6688 * Mesclando duas revisões::           Mesclando diferenças entre duas revisões
6689 @c <en>* Merging adds and removals::   What if files are added or removed?
6690 * Mesclando adicionados e removidos:: E se arquivos forem adicionados ou removidos?
6691 @c <en>* Merging and keywords::        Avoiding conflicts due to keyword substitution
6692 * Mesclagem e palavras-chave::        Evitando conflitos devido a substituição de palavras-chave
6693 @end menu
6694
6695 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6696 @c <en>@node Branches motivation
6697 @node Motivação para ramos
6698 @c <en>@section What branches are good for
6699 @section Para que ramos são bons
6700 @c <en>@cindex Branches motivation
6701 @cindex Motivação para ramos
6702 @c <en>@cindex What branches are good for
6703 @cindex Para que ramos são bons
6704 @c <en>@cindex Motivation for branches
6705 @cindex Motivation for branches
6706
6707 @c FIXME: this node mentions one way to use branches,
6708 @c but it is by no means the only way.  For example,
6709 @c the technique of committing a new feature on a branch,
6710 @c until it is ready for the main trunk.  The whole
6711 @c thing is generally speaking more akin to the
6712 @c "Revision management" node although it isn't clear to
6713 @c me whether policy matters should be centralized or
6714 @c distributed throughout the relevant sections.
6715 @c <en>Suppose that release 1.0 of tc has been made.  You are continuing to
6716 @c <en>develop tc, planning to create release 1.1 in a couple of months.  After a
6717 @c <en>while your customers start to complain about a fatal bug.  You check
6718 @c <en>out release 1.0 (@pxref{Tags}) and find the bug
6719 @c <en>(which turns out to have a trivial fix).  However, the current revision
6720 @c <en>of the sources are in a state of flux and are not expected to be stable
6721 @c <en>for at least another month.  There is no way to make a
6722 @c <en>bugfix release based on the newest sources.
6723 Suponha que a release 1.0 de tc está pronta.  Você está
6724 continua desenvolvendo tc, e planeja lançar a release
6725 1.1 em alguns meses.  Depois de um tempo seus
6726 consumidores começam a reclamar de um erro fatal.  Você
6727 baixa a release 1.0 (@pxref{Etiquetas}) e encontra o
6728 erro (que tem um conserto fácil).  Entretanto, a
6729 revisão atual dos fontes está num estado do fluxo de
6730 desenvolvimento que você não espera que estaja estável
6731 em pelo menos um mês.  Não tem jeito de lançar uma
6732 release baseada nos fontes mais novos.
6733
6734 @c <en>The thing to do in a situation like this is to create a @dfn{branch} on
6735 @c <en>the revision trees for all the files that make up
6736 @c <en>release 1.0 of tc.  You can then make
6737 @c <en>modifications to the branch without disturbing the main trunk.  When the
6738 @c <en>modifications are finished you can elect to either incorporate them on
6739 @c <en>the main trunk, or leave them on the branch.
6740 O que se há para fazer numa situação como esta é criar
6741 um @dfn{ramo} na árvore de revisões para todos os
6742 arquivos que integram a release 1.0 de tc.  Você pode
6743 então fazer modificações no ramo sem perturbar o tronco
6744 principal.  Quando as modificações terminarem você pode
6745 decidir se incorporam elas ao tronco ou deixa elas no ramo.
6746
6747 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6748 @c <en>@node Creating a branch
6749 @node Criando um ramo
6750 @c <en>@section Creating a branch
6751 @section Criando um ramo
6752 @c <en>@cindex Creating a branch
6753 @cindex Criando um ramo
6754 @c <en>@cindex Branch, creating a
6755 @cindex Ramo, criando um
6756 @c <en>@cindex tag (subcommand), creating a branch using
6757 @cindex tag (subcomando), criando um ramo usando
6758 @c <en>@cindex rtag (subcommand), creating a branch using
6759 @cindex rtag (subcomando), criando um ramo usando
6760
6761 @c <en>You can create a branch with @code{tag -b}; for
6762 @c <en>example, assuming you're in a working copy:
6763 Você pode criar um ramo com @code{tag -b}; por exemplo,
6764 supondo que você está numa cópia de trabalho:
6765
6766 @example
6767 $ cvs tag -b rel-1-0-patches
6768 @end example
6769
6770 @c FIXME: we should be more explicit about the value of
6771 @c having a tag on the branchpoint.  For example
6772 @c "cvs tag rel-1-0-patches-branchpoint" before
6773 @c the "cvs tag -b".  This points out that
6774 @c rel-1-0-patches is a pretty awkward name for
6775 @c this example (more so than for the rtag example
6776 @c below).
6777
6778 @c <en>This splits off a branch based on the current revisions
6779 @c <en>in the working copy, assigning that branch the name
6780 @c <en>@samp{rel-1-0-patches}.
6781 Isto inicia um ramo baseado nas revisões atuais na
6782 cópia de trabalho, dando a este ramo o nome
6783 @samp{rel-1-0-patches}.
6784
6785 @c <en>It is important to understand that branches get created
6786 @c <en>in the repository, not in the working copy.  Creating a
6787 @c <en>branch based on current revisions, as the above example
6788 @c <en>does, will @emph{not} automatically switch the working
6789 @c <en>copy to be on the new branch.  For information on how
6790 @c <en>to do that, see @ref{Accessing branches}.
6791 É importante entender que ramos são criados no
6792 repositório, e não na cópia de tarbalho.  Criar um ramo
6793 baseado nas revisões atuais, como no exemplo acima,
6794 @emph{Não} vai mudar automaticamente a cópia de
6795 trabalho para o novo ramo.  Para informações sobre
6796 como fazer isto, veja em @ref{Acessando ramos}.
6797
6798 @c <en>You can also create a branch without reference to any
6799 @c <en>working copy, by using @code{rtag}:
6800 Você também pode criar um ramo sem referência a
6801 qualquer cópia de trabalho usando @code{rtag}:
6802
6803 @example
6804 $ cvs rtag -b -r rel-1-0 rel-1-0-patches tc
6805 @end example
6806
6807 @c <en>@samp{-r rel-1-0} says that this branch should be
6808 @c <en>rooted at the revision that
6809 @c <en>corresponds to the tag @samp{rel-1-0}.  It need not
6810 @c <en>be the most recent revision -- it's often useful to
6811 @c <en>split a branch off an old revision (for example, when
6812 @c <en>fixing a bug in a past release otherwise known to be
6813 @c <en>stable).
6814 @samp{-r rel-1-0} diz que este ramo deve ser iniciado
6815 na revisão que corresponde à etiqueta (tag)
6816 @samp{rel-1-0}.  Não precisa ser a revisão mais recente
6817 -- é útil às vezes separar um ramo a partir de uma
6818 revisão antiga (por exemplo, quando se está consertando
6819 um erro numa release anterior que se pensava estar
6820 estável).
6821
6822 @c <en>As with @samp{tag}, the @samp{-b} flag tells
6823 @c <en>@code{rtag} to create a branch (rather than just a
6824 @c <en>symbolic revision name).  Note that the numeric
6825 @c <en>revision number that matches @samp{rel-1-0} will
6826 @c <en>probably be different from file to file.
6827 Assim como no @samp{tag}, a opção @samp{-b} diz ao
6828 @code{rtag} para criar um ramo (ao invés de
6829 simplesmente um nome de revisão simbólico).  Observe
6830 que o número de revisão simbólico que casa com
6831 @samp{rel-1-0} provavelmente ser diferente de arquivo
6832 para arquivo.
6833
6834 @c <en>So, the full effect of the command is to create a new
6835 @c <en>branch -- named @samp{rel-1-0-patches} -- in module
6836 @c <en>@samp{tc}, rooted in the revision tree at the point tagged
6837 @c <en>by @samp{rel-1-0}.
6838 Então, O efeito total do comando é criar um novo ramo
6839 -- chamado @samp{rel-1-0-patches} -- no módulo
6840 @samp{tc}, partindo da árvore de revisão no ponto
6841 etiquetado como @samp{rel-1-0}.
6842
6843 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6844 @c <en>@node Accessing branches
6845 @node Acessando ramos
6846 @c <en>@section Accessing branches
6847 @section Acessando ramos
6848 @c <en>@cindex Check out a branch
6849 @cindex Check out a branch
6850 @c <en>@cindex Retrieve a branch
6851 @cindex Retrieve a branch
6852 @c <en>@cindex Access a branch
6853 @cindex Access a branch
6854 @c <en>@cindex Identifying a branch
6855 @cindex Identifying a branch
6856 @c <en>@cindex Branch, check out
6857 @cindex Branch, check out
6858 @c <en>@cindex Branch, retrieving
6859 @cindex Branch, retrieving
6860 @c <en>@cindex Branch, accessing
6861 @cindex Branch, accessing
6862 @c <en>@cindex Branch, identifying
6863 @cindex Branch, identifying
6864
6865 @c <en>You can retrieve a branch in one of two ways: by
6866 @c <en>checking it out fresh from the repository, or by
6867 @c <en>switching an existing working copy over to the branch.
6868 Você pode recuperar um ramo de duas formas: pegando um
6869 cópia zerada dele do repositório, ou alternando de uma
6870 cópia de trabalho já existente para o ramo.
6871
6872 @c <en>To check out a branch from the repository, invoke
6873 @c <en>@samp{checkout} with the @samp{-r} flag, followed by
6874 @c <en>the tag name of the branch (@pxref{Creating a branch}):
6875 Para pegar um ramo do repositório, chame o
6876 @samp{checkout} com a opção @samp{-r}, seguida pelo
6877 nome da etiqueta do ramo (@pxref{Criando um ramo}):
6878
6879 @example
6880 $ cvs checkout -r rel-1-0-patches tc
6881 @end example
6882
6883 @c <en>Or, if you already have a working copy, you can switch
6884 @c <en>it to a given branch with @samp{update -r}:
6885 Ou, se você já tem uma cópia de trabalho, você pode
6886 alternar dela para um dado ramo com @samp{update -r}:
6887
6888 @example
6889 $ cvs update -r rel-1-0-patches tc
6890 @end example
6891
6892 @noindent
6893 @c <en>or equivalently:
6894 ou equivalentemente:
6895
6896 @example
6897 $ cd tc
6898 $ cvs update -r rel-1-0-patches
6899 @end example
6900
6901 @c <en>It does not matter if the working copy was originally
6902 @c <en>on the main trunk or on some other branch -- the above
6903 @c <en>command will switch it to the named branch.  And
6904 @c <en>similarly to a regular @samp{update} command,
6905 @c <en>@samp{update -r} merges any changes you have made,
6906 @c <en>notifying you of conflicts where they occur.
6907 Não importa se a cópia de tabalho estava originalmente
6908 no tronco principal ou em algum outro ramo -- o comando
6909 acima vai alternar ela para o ramo dado.  E
6910 similarmente ao comando @samp{update} normal,
6911 @samp{update -r} mescla quaisquer mudanças que você
6912 tenha feito, notificando você sobre conflitos onde eles
6913 ocorrerem.
6914
6915 @c <en>Once you have a working copy tied to a particular
6916 @c <en>branch, it remains there until you tell it otherwise.
6917 @c <en>This means that changes checked in from the working
6918 @c <en>copy will add new revisions on that branch, while
6919 @c <en>leaving the main trunk and other branches unaffected.
6920 Uma vez que você tenha uma cópia de trabalho referente
6921 a um dado, ela continua no ramo até que se diga o
6922 contrário.  Isto significa que mudanças inseridas a
6923 partir da cópia de trabalho vão adicionar novas
6924 revisões naquele ramo, enquanto que não afeta o tronco
6925 principal nem os outros ramos.
6926
6927 @c <en>@cindex Branches, sticky
6928 @cindex Ramos, adesivos
6929 @c <en>To find out what branch a working copy is on, you can
6930 @c <en>use the @samp{status} command.  In its output, look for
6931 @c <en>the field named @samp{Sticky tag} (@pxref{Sticky tags})
6932 @c <en>-- that's @sc{cvs}'s way of telling you the branch, if
6933 @c <en>any, of the current working files:
6934 Para saber em qual ramo uma cópia de trabalho está,
6935 você precisa usar o comando @samp{status}.  Na saída do
6936 comando procure pelo campo chamado @samp{Sticky tag}
6937 (etiqueta adesiva) (@pxref{Etiquetas adesivas})
6938 -- esta é a forma do @sc{cvs} de dizer a você o ramo,
6939 se é que se está num, dos arquivos de trabalho atuais:
6940
6941 @example
6942 $ cvs status -v driver.c backend.c
6943 ===================================================================
6944 File: driver.c          Status: Up-to-date
6945
6946     Version:            1.7     Sat Dec  5 18:25:54 1992
6947     RCS Version:        1.7     /u/cvsroot/yoyodyne/tc/driver.c,v
6948     Sticky Tag:         rel-1-0-patches (branch: 1.7.2)
6949     Sticky Date:        (none)
6950     Sticky Options:     (none)
6951
6952     Existing Tags:
6953         rel-1-0-patches             (branch: 1.7.2)
6954         rel-1-0                     (revision: 1.7)
6955
6956 ===================================================================
6957 File: backend.c         Status: Up-to-date
6958
6959     Version:            1.4     Tue Dec  1 14:39:01 1992
6960     RCS Version:        1.4     /u/cvsroot/yoyodyne/tc/backend.c,v
6961     Sticky Tag:         rel-1-0-patches (branch: 1.4.2)
6962     Sticky Date:        (none)
6963     Sticky Options:     (none)
6964
6965     Existing Tags:
6966         rel-1-0-patches             (branch: 1.4.2)
6967         rel-1-0                     (revision: 1.4)
6968         rel-0-4                     (revision: 1.4)
6969
6970 @end example
6971
6972 @c <en>Don't be confused by the fact that the branch numbers
6973 @c <en>for each file are different (@samp{1.7.2} and
6974 @c <en>@samp{1.4.2} respectively).  The branch tag is the
6975 @c <en>same, @samp{rel-1-0-patches}, and the files are
6976 @c <en>indeed on the same branch.  The numbers simply reflect
6977 @c <en>the point in each file's revision history at which the
6978 @c <en>branch was made.  In the above example, one can deduce
6979 @c <en>that @samp{driver.c} had been through more changes than
6980 @c <en>@samp{backend.c} before this branch was created.
6981 Não se confunda pelo fato de que os números de ramo de
6982 cada arquivo serem diferentes (@samp{1.7.2} e
6983 @samp{1.4.2} respectivamente).  A etiqueta do ramo é a
6984 mesma, @samp{rel-1-0-patches}, e os arquivos estão na
6985 verdade no mesmo ramo.  Os números simplesmente
6986 refletem o ponto em que cada arquivo estava no
6987 histórico de revisão quando o ramo foi criado.  No
6988 exemplo acima, pode-se deduzir que @samp{driver.c}
6989 tinha tido mais alterações que @samp{backend.c} antes
6990 do ramo ter sido criado.
6991
6992 @c <en>See @ref{Branches and revisions} for details about how
6993 @c <en>branch numbers are constructed.
6994 Veja em @ref{Ramos e revisões} para detalhes a respeito
6995 de como números de ramos são criados.
6996
6997 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
6998 @c <en>@node Branches and revisions
6999 @node Ramos e revisões
7000 @c <en>@section Branches and revisions
7001 @section Ramos e revisões
7002 @c <en>@cindex Branch number
7003 @cindex Número de ramo
7004 @c <en>@cindex Number, branch
7005 @cindex Ramo, número de
7006 @c <en>@cindex Revision numbers (branches)
7007 @cindex Números de revisão (ramos)
7008
7009 @c <en>Ordinarily, a file's revision history is a linear
7010 @c <en>series of increments (@pxref{Revision numbers}):
7011 Normalmente, um histórico da revisão do arquivo é uma
7012 séria linear de incrementos (@pxref{Números de
7013 revisão}):
7014
7015 @example
7016        +-----+    +-----+    +-----+    +-----+    +-----+
7017        ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
7018        +-----+    +-----+    +-----+    +-----+    +-----+
7019 @end example
7020
7021 @c <en>However, @sc{cvs} is not limited to linear development.  The
7022 @c <en>@dfn{revision tree} can be split into @dfn{branches},
7023 @c <en>where each branch is a self-maintained line of
7024 @c <en>development.  Changes made on one branch can easily be
7025 @c <en>moved back to the main trunk.
7026 Entretanto, o @sc{cvs} não está limitado a
7027 desenvolvimento linear.  A @dfn{árvore de revisões}
7028 pode ser separada em @dfn{ramos},
7029 onde cada ramo é uma linha de desenvolvimento que se
7030 mantém.  Mudanças feitas em um ramo podem ser facilmente
7031 movidas para o tronco principal.
7032
7033 @c <en>Each branch has a @dfn{branch number}, consisting of an
7034 @c <en>odd number of period-separated decimal integers.  The
7035 @c <en>branch number is created by appending an integer to the
7036 @c <en>revision number where the corresponding branch forked
7037 @c <en>off.  Having branch numbers allows more than one branch
7038 @c <en>to be forked off from a certain revision.
7039 Cada ramo tem um @dfn{número de ramo}, formado por uma
7040 quantidade ímpar de números inteiros decimais separados
7041 por ponto.  O número do ramo é criado anexando um
7042 inteiro ao número de revisão de onde o ramo
7043 correpondente saiu.  Com números de ramo é possível se
7044 ter mais de uma ramificação partindo de uma certa revisão.
7045
7046 @need 3500
7047 @c <en>All revisions on a branch have revision numbers formed
7048 @c <en>by appending an ordinal number to the branch number.
7049 @c <en>The following figure illustrates branching with an
7050 @c <en>example.
7051 Todas as revisões num ramo têm números de revisão
7052 formados pela anexação de um número ordinal ao número
7053 do ramo.  A figura seguinte ilustra a ramificação com um exemplo.
7054
7055 @example
7056 @c This example used to have a 1.2.2.4 revision, which
7057 @c might help clarify that development can continue on
7058 @c 1.2.2.  Might be worth reinstating if it can be done
7059 @c without overfull hboxes.
7060 @group
7061                                                       +-------------+
7062                            Branch 1.2.2.3.2 ->        ! 1.2.2.3.2.1 !
7063                                                     / +-------------+
7064                                                    /
7065                                                   /
7066                  +---------+    +---------+    +---------+
7067 Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
7068                / +---------+    +---------+    +---------+
7069               /
7070              /
7071 +-----+    +-----+    +-----+    +-----+    +-----+
7072 ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !  <- The main trunk
7073 +-----+    +-----+    +-----+    +-----+    +-----+
7074                 !
7075                 !
7076                 !   +---------+    +---------+    +---------+
7077 Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
7078                     +---------+    +---------+    +---------+
7079
7080 @end group
7081 @end example
7082
7083 @c --   However, at least for me the figure is not enough.  I suggest more
7084 @c --   text to accompany it.  "A picture is worth a thousand words", so you
7085 @c --   have to make sure the reader notices the couple of hundred words
7086 @c --   *you* had in mind more than the others!
7087
7088 @c --   Why an even number of segments?  This section implies that this is
7089 @c --   how the main trunk is distinguished from branch roots, but you never
7090 @c --   explicitly say that this is the purpose of the [by itself rather
7091 @c --   surprising] restriction to an even number of segments.
7092
7093 @c <en>The exact details of how the branch number is
7094 @c <en>constructed is not something you normally need to be
7095 @c <en>concerned about, but here is how it works: When
7096 @c <en>@sc{cvs} creates a branch number it picks the first
7097 @c <en>unused even integer, starting with 2.  So when you want
7098 @c <en>to create a branch from revision 6.4 it will be
7099 @c <en>numbered 6.4.2.  All branch numbers ending in a zero
7100 @c <en>(such as 6.4.0) are used internally by @sc{cvs}
7101 @c <en>(@pxref{Magic branch numbers}).  The branch 1.1.1 has a
7102 @c <en>special meaning.  @xref{Tracking sources}.
7103 Os detalhes exatos de como o número de ramo é
7104 construído não são algo com os quais você precisa estar
7105 preocupado, mas aqui vai como a coisa funciona: quando
7106 o @sc{cvs} cria um número de ramo ele pega o primeiro
7107 número par não usado, a partir de 2.  Logo, quando você
7108 quer criar um ramo a partir da revisão 6.4 ele vai ser
7109 numerado 6.4.2.  Todos os números de ramos terminados
7110 com um zero (tal como 6.4.0) são usados internamente
7111 pelo @sc{cvs} (@pxref{Números de ramos mágicos}).  O
7112 ramo 1.1.1 tem um significado especial.
7113 @xref{Acompanhando fontes}.
7114
7115 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7116 @c <en>@node Magic branch numbers
7117 @node Números de ramos mágicos
7118 @c <en>@section Magic branch numbers
7119 @section Números de ramos mágicos
7120
7121 @c Want xref to here from "log"?
7122
7123 @c <en>This section describes a @sc{cvs} feature called
7124 @c <en>@dfn{magic branches}.  For most purposes, you need not
7125 @c <en>worry about magic branches; @sc{cvs} handles them for
7126 @c <en>you.  However, they are visible to you in certain
7127 @c <en>circumstances, so it may be useful to have some idea of
7128 @c <en>how it works.
7129 Esta seção descreve uma habilidade do @sc{cvs} chamada
7130 @dfn{ramos mágicos}.  Para a maioria dos casos, você
7131 não precisa se preocupar com os ramos mágicos; o
7132 @sc{cvs} cuida deles para você.  Entretanto, eles
7133 aparecem em algumas situações, sendo importante se ter
7134 alguma idéia de como eles funcionam.
7135
7136 @c <en>Externally, branch numbers consist of an odd number of
7137 @c <en>dot-separated decimal integers.  @xref{Revision
7138 @c <en>numbers}.  That is not the whole truth, however.  For
7139 @c <en>efficiency reasons @sc{cvs} sometimes inserts an extra 0
7140 @c <en>in the second rightmost position (1.2.4 becomes
7141 @c <en>1.2.0.4, 8.9.10.11.12 becomes 8.9.10.11.0.12 and so
7142 @c <en>on).
7143 Externamente, números de ramos consistem de uma quantidade
7144 ímpar de inteiros decimais separados por
7145 ponto.  @xref{Números de revisão}.  Isto não é toda a
7146 verdade, entretanto.  Por questões de eficiência, o
7147 @sc{cvs} insere, em alguns momentos, um 0 extra na
7148 segunda posição da direita para a esquerda (1.2.4 se torna
7149 1.2.0.4, 8.9.10.11.12 se torna 8.9.10.11.0.12 e assim
7150 por diante).
7151
7152 @c <en>@sc{cvs} does a pretty good job at hiding these so
7153 @c <en>called magic branches, but in a few places the hiding
7154 @c <en>is incomplete:
7155 O @sc{cvs} faz um bom trabalho escondendo estes tais
7156 ramos mágicos, mas em alguns lugares alguma coisa aparece:
7157
7158 @itemize @bullet
7159 @ignore
7160 @c This is in ignore as I'm taking their word for it,
7161 @c that this was fixed
7162 @c a long time ago.  But before deleting this
7163 @c entirely, I'd rather verify it (and add a test
7164 @c case to the testsuite).
7165 @item
7166 @c <en>The magic branch can appear in the output from
7167 @c <en>@code{cvs status} in vanilla @sc{cvs} 1.3.  This is
7168 @c <en>fixed in @sc{cvs} 1.3-s2.
7169 The magic branch can appear in the output from
7170 @code{cvs status} in vanilla @sc{cvs} 1.3.  This is
7171 fixed in @sc{cvs} 1.3-s2.
7172
7173 @end ignore
7174 @item
7175 @c <en>The magic branch number appears in the output from
7176 @c <en>@code{cvs log}.
7177 O número de ramo mágico aparece na saída do
7178 @code{cvs log}.
7179 @c What output should appear instead?
7180
7181 @item
7182 @c <en>You cannot specify a symbolic branch name to @code{cvs
7183 @c <en>admin}.
7184 Você não pode especificar um nome de ramo simbólico
7185 para o @code{cvs admin}.
7186
7187 @end itemize
7188
7189 @c Can CVS do this automatically the first time
7190 @c you check something in to that branch?  Should
7191 @c it?
7192 @c <en>You can use the @code{admin} command to reassign a
7193 @c <en>symbolic name to a branch the way @sc{rcs} expects it
7194 @c <en>to be.  If @code{R4patches} is assigned to the branch
7195 @c <en>1.4.2 (magic branch number 1.4.0.2) in file
7196 @c <en>@file{numbers.c} you can do this:
7197 Você pode usar o comando @code{admin} para reatribuir
7198 um nome simbólico para um ramo da forma que o @sc{rcs}
7199 espera que seja.  Se o @code{R4patches} está atribuído
7200 para o ramo 1.4.2 (número de ramo mágico 1.4.0.2) no
7201 arquivo @file{numbers.c} você pode fazer isto:
7202
7203 @example
7204 $ cvs admin -NR4patches:1.4.2 numbers.c
7205 @end example
7206
7207 @c <en>It only works if at least one revision is already
7208 @c <en>committed on the branch.  Be very careful so that you
7209 @c <en>do not assign the tag to the wrong number.  (There is
7210 @c <en>no way to see how the tag was assigned yesterday).
7211 Isto apenas funciona se pelo menos uma revisão já está
7212 efetivada no ramo.  Seja bastante cuidadoso para não
7213 atribuir a etiqueta ao número errado.  (Não existe
7214 jeito de ver como a etiqueta estava atribuída ontem).
7215
7216 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7217 @c <en>@node Merging a branch
7218 @node Mesclando um ramo
7219 @c <en>@section Merging an entire branch
7220 @section Mesclando um ramo inteiro
7221 @c <en>@cindex Merging a branch
7222 @cindex Mesclando um ramo
7223 @c <en>@cindex -j (merging branches)
7224 @cindex -j (mesclando ramos)
7225
7226 @c <en>You can merge changes made on a branch into your working copy by giving
7227 @c <en>the @samp{-j @var{branchname}} flag to the @code{update} subcommand.  With one
7228 @c <en>@samp{-j @var{branchname}} option it merges the changes made between the
7229 @c <en>greatest common ancestor (GCA) of the branch and the destination revision (in
7230 @c <en>the simple case below the GCA is the point where the branch forked) and the
7231 @c <en>newest revision on that branch into your working copy.
7232 Você pode mesclar mudanças feitas num ramo em seu
7233 diretório de trabalho passando a opção @samp{-j
7234 @var{nome_do_ramo}} para o subcomando @code{update}.
7235 Com uma opção @samp{-j @var{nome_do_ramo}} ele mescla
7236 as mudançãs feitas entre o maior ancestral comum
7237 (greatest common ancestor - GCA) do ramo e a revisão de
7238 destino (no caso mais simples abaixo, o GCA é o ponto
7239 onde o ramo bifurcou) e a nova revisão neste ramo na
7240 sua cópia de trabalho.
7241
7242 @cindex Join
7243 @c <en>The @samp{-j} stands for ``join''.
7244 O @samp{-j} significa ``join'', ``juntar''.
7245
7246 @c <en>@cindex Branch merge example
7247 @cindex Exemplo de mesclagem de ramo
7248 @c <en>@cindex Example, branch merge
7249 @cindex Mesclagem de ramo, exemplo
7250 @c <en>@cindex Merge, branch example
7251 @cindex Mesclagem, de ramo, exemplo
7252 @c <en>Consider this revision tree:
7253 Considere esta árvore de revisão:
7254
7255 @example
7256 +-----+    +-----+    +-----+    +-----+
7257 ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !      <- The main trunk
7258 +-----+    +-----+    +-----+    +-----+
7259                 !
7260                 !
7261                 !   +---------+    +---------+
7262 Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
7263                     +---------+    +---------+
7264 @end example
7265
7266 @noindent
7267 @c <en>The branch 1.2.2 has been given the tag (symbolic name) @samp{R1fix}.  The
7268 @c <en>following example assumes that the module @samp{mod} contains only one
7269 @c <en>file, @file{m.c}.
7270 O ramo 1.2.2 recebeu a etiqueta (nome simbólico)
7271 @samp{R1fix}.  O exemplo seguinte assume que o módulo
7272 @samp{mod} contém apenas um arquivo, @file{m.c}.
7273
7274 @example
7275 $ cvs checkout mod               # @r{Retrieve the latest revision, 1.4}
7276
7277 $ cvs update -j R1fix m.c        # @r{Merge all changes made on the branch,}
7278                                  # @r{i.e. the changes between revision 1.2}
7279                                  # @r{and 1.2.2.2, into your working copy}
7280                                  # @r{of the file.}
7281
7282 $ cvs commit -m "Included R1fix" # @r{Create revision 1.5.}
7283 @end example
7284
7285 @c <en>A conflict can result from a merge operation.  If that
7286 @c <en>happens, you should resolve it before committing the
7287 @c <en>new revision.  @xref{Conflicts example}.
7288 Um conflito pode resultar de uma operação de mesclagem.
7289 Se isto acontecer, você deve resolver isto antes de
7290 efetivar a nova revisão.  @xref{Exemplo de conflitos}.
7291
7292 @c <en>If your source files contain keywords (@pxref{Keyword substitution}),
7293 @c <en>you might be getting more conflicts than strictly necessary.  See
7294 @c <en>@ref{Merging and keywords}, for information on how to avoid this.
7295 Se seu código fonte contém palavras-chave
7296 (@pxref{Substituição de palavra-chave}), você deve
7297 obter mais conflitos que os ???strictly necessary???.
7298 Veja em @ref{Mesclagem e palavras-chave}, para saber
7299 como evitar isto.
7300
7301 @c <en>The @code{checkout} command also supports the @samp{-j @var{branchname}} flag.  The
7302 @c <en>same effect as above could be achieved with this:
7303 O comando @code{checkout} também suporta a opção
7304 @samp{-j @var{branchname}}.  O mesmo efeito que o visto
7305 logo acima pode ser obtido com isto:
7306
7307 @example
7308 $ cvs checkout -j R1fix mod
7309 $ cvs commit -m "Included R1fix"
7310 @end example
7311
7312 @c <en>It should be noted that @code{update -j @var{tagname}} will also work but may
7313 @c <en>not produce the desired result.  @xref{Merging adds and removals}, for more.
7314 Observe que o @code{update -j @var{tagname}} também vai
7315 funcionar mas pode não produzir o efeito desejado.
7316 @xref{Mesclando adicionados e removidos}, para mais informações.
7317
7318 @c <en>@node Merging more than once
7319 @node Mesclando mais de uma vez
7320 @c <en>@section Merging from a branch several times
7321 @section Mesclando a partir de um ramo várias vezes
7322
7323 @c <en>Continuing our example, the revision tree now looks
7324 @c <en>like this:
7325 Continuando nosso exemplo, a árvore de revisão agora
7326 vai parecer com isto:
7327
7328 @example
7329 +-----+    +-----+    +-----+    +-----+    +-----+
7330 ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !   <- The main trunk
7331 +-----+    +-----+    +-----+    +-----+    +-----+
7332                 !                           *
7333                 !                          *
7334                 !   +---------+    +---------+
7335 Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
7336                     +---------+    +---------+
7337 @end example
7338
7339 @noindent
7340 @c <en>where the starred line represents the merge from the
7341 @c <en>@samp{R1fix} branch to the main trunk, as just
7342 @c <en>discussed.
7343 Onde a linha de asteriscos representa a mescla entre o
7344 ramo @samp{R1fix} e o tronco principal, como acabamos
7345 de ver.
7346
7347 @c <en>Now suppose that development continues on the
7348 @c <en>@samp{R1fix} branch:
7349 Agora suponha que o desenvolvimento continua no ramo @samp{R1fix}:
7350
7351 @example
7352 +-----+    +-----+    +-----+    +-----+    +-----+
7353 ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !   <- The main trunk
7354 +-----+    +-----+    +-----+    +-----+    +-----+
7355                 !                           *
7356                 !                          *
7357                 !   +---------+    +---------+    +---------+
7358 Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
7359                     +---------+    +---------+    +---------+
7360 @end example
7361
7362 @noindent
7363 @c <en>and then you want to merge those new changes onto the
7364 @c <en>main trunk.  If you just use the @code{cvs update -j
7365 @c <en>R1fix m.c} command again, @sc{cvs} will attempt to
7366 @c <en>merge again the changes which you have already merged,
7367 @c <en>which can have undesirable side effects.
7368 e então você quer mesclar as novas mudanças dentro do
7369 tronco principal.  Se você usar simplesmente o comando
7370 @code{cvs update -j R1fix m.c} de novo, o @sc{cvs} vai
7371 tentar mesclar de novo as mudanças que você já mesclou,
7372 o que pode gerar efeitos indesejados.
7373
7374 @c <en>So instead you need to specify that you only want to
7375 @c <en>merge the changes on the branch which have not yet been
7376 @c <en>merged into the trunk.  To do that you specify two
7377 @c <en>@samp{-j} options, and @sc{cvs} merges the changes from
7378 @c <en>the first revision to the second revision.  For
7379 @c <en>example, in this case the simplest way would be
7380 Então, ao invés disto, você precisa especificar que você
7381 quer apenas mesclar no tronco as mudanças que ainda não
7382 foram mescladas.  Para fazer isto você especifica duas
7383 opções @samp{-j}, e o @sc{cvs} mescla as mudanças da
7384 primeira revisão na segunda revisão.  Por exemplo,
7385 neste caso a forma mais simples será
7386
7387 @example
7388 cvs update -j 1.2.2.2 -j R1fix m.c    # @r{Merge changes from 1.2.2.2 to the}
7389                                       # @r{head of the R1fix branch}
7390 @end example
7391
7392 @c <en>The problem with this is that you need to specify the
7393 @c <en>1.2.2.2 revision manually.  A slightly better approach
7394 @c <en>might be to use the date the last merge was done:
7395 O problema com isto é que você precisa especificar a
7396 revisão 1.2.2.2 manualmente.  Uma abordagem um pouco
7397 melhor seria usar a data em que a última mesclagem foi
7398 feita:
7399
7400 @example
7401 cvs update -j R1fix:yesterday -j R1fix m.c
7402 @end example
7403
7404 @c <en>Better yet, tag the R1fix branch after every merge into
7405 @c <en>the trunk, and then use that tag for subsequent merges:
7406 Ou ainda melhor, etiquete o ramo R1fix depois de cada
7407 mesclagem no tronco, e então use a etiqueta para
7408 mesclagens subseqüentes:
7409
7410 @example
7411 cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c
7412 @end example
7413
7414 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7415 @c <en>@node Merging two revisions
7416 @node Mesclando duas revisões
7417 @c <en>@section Merging differences between any two revisions
7418 @section Mesclando diferenças entre duas revisões quaisquer
7419 @c <en>@cindex Merging two revisions
7420 @cindex Mesclando duas revisões
7421 @c <en>@cindex Revisions, merging differences between
7422 @cindex Revisões, mesclando diferenças entre
7423 @c <en>@cindex Differences, merging
7424 @cindex Diferenças, mesclando
7425
7426 @c <en>With two @samp{-j @var{revision}} flags, the @code{update}
7427 @c <en>(and @code{checkout}) command can merge the differences
7428 @c <en>between any two revisions into your working file.
7429 Com duas opções @samp{-j @var{revisão}}, o comando @code{update}
7430 (e @code{checkout}) pode mesclar as diferenças entre
7431 quaisquer duas revisões no arquivo do diretório de trabalho.
7432
7433 @c <en>@cindex Undoing a change
7434 @cindex Desfazendo uma alteração
7435 @c <en>@cindex Removing a change
7436 @cindex Removendo uma alteração
7437 @example
7438 $ cvs update -j 1.5 -j 1.3 backend.c
7439 @end example
7440
7441 @noindent
7442 @c <en>will undo all changes made between revision
7443 @c <en>1.3 and 1.5.  Note the order of the revisions!
7444 vai desfazer todas as alterações feitas entre as
7445 revisões 1.3 e 1.5.  Observe a ordem das revisões!
7446
7447 @c <en>If you try to use this option when operating on
7448 @c <en>multiple files, remember that the numeric revisions will
7449 @c <en>probably be very different between the various files.
7450 @c <en>You almost always use symbolic
7451 @c <en>tags rather than revision numbers when operating on
7452 @c <en>multiple files.
7453 Se você tentar usar esta opção quando estiver agindo em
7454 vários arquivos, lembre-se que as revisões numéricas
7455 provavelmente vão ser bastante diferentes nos vários
7456 arquivos.  Você vai quase sempre usar etiquetas
7457 simbólicas ao invés de números de revisão quando
7458 estiver operando em vários arquivos.
7459
7460 @c <en>@cindex Restoring old version of removed file
7461 @cindex Recuperando uma versão antiga de um arquivo removido
7462 @c <en>@cindex Resurrecting old version of dead file
7463 @cindex Ressucitando uma versão antiga de um arquivo morto
7464 @c <en>Specifying two @samp{-j} options can also undo file
7465 @c <en>removals or additions.  For example, suppose you have
7466 @c <en>a file
7467 @c <en>named @file{file1} which existed as revision 1.1, and
7468 @c <en>you then removed it (thus adding a dead revision 1.2).
7469 @c <en>Now suppose you want to add it again, with the same
7470 @c <en>contents it had previously.  Here is how to do it:
7471 Ao especificar duas opções @samp{-j} você pode também
7472 desfazer uma remoção ou adição de arquivo.  Por
7473 exemplo, suponhao que você tem um arquivo chamado
7474 @file{file1} que existia numa revisão 1.1, e você
7475 removeu ele (adicionando então uma revisão morta 1.2).
7476 Agora suponha que você quer adicioná-lo novamente, com
7477 o mesmo conteúdo que ele tinha anteriormente.  Aqui
7478 está como fazer isto:
7479
7480 @example
7481 $ cvs update -j 1.2 -j 1.1 file1
7482 U file1
7483 $ cvs commit -m test
7484 Checking in file1;
7485 /tmp/cvs-sanity/cvsroot/first-dir/file1,v  <--  file1
7486 new revision: 1.3; previous revision: 1.2
7487 done
7488 $
7489 @end example
7490
7491 @c <en>@node Merging adds and removals
7492 @node Mesclando adicionados e removidos
7493 @c <en>@section Merging can add or remove files
7494 @section Mesclar pode adicionar ou remover arquivos
7495
7496 @c <en>If the changes which you are merging involve removing
7497 @c <en>or adding some files, @code{update -j} will reflect
7498 @c <en>such additions or removals.
7499 Se as mudanças que você está mesclando envolvem remover
7500 ou adicionar alguns arquivos, @code{update -j} vai
7501 resultar em algumas adições ou remoções.
7502
7503 @c FIXME: This example needs a lot more explanation.
7504 @c We also need other examples for some of the other
7505 @c cases (not all--there are too many--as long as we present a
7506 @c coherent general principle).
7507 @c <en>For example:
7508 Por exemplo:
7509 @example
7510 cvs update -A
7511 touch a b c
7512 cvs add a b c ; cvs ci -m "added" a b c
7513 cvs tag -b branchtag
7514 cvs update -r branchtag
7515 touch d ; cvs add d
7516 rm a ; cvs rm a
7517 cvs ci -m "added d, removed a"
7518 cvs update -A
7519 cvs update -jbranchtag
7520 @end example
7521
7522 @c <en>After these commands are executed and a @samp{cvs commit} is done,
7523 @c <en>file @file{a} will be removed and file @file{d} added in the main branch.
7524 Depois destes comandos terem sido executados e um
7525 @samp{cvs commit} ser feito, o arquivo @file{a} vai ser
7526 removido e o arquivo @file{d} adicionado no ramo principal.
7527 @c (which was determined by trying it)
7528
7529 @c <en>Note that using a single static tag (@samp{-j @var{tagname}})
7530 @c <en>rather than a dynamic tag (@samp{-j @var{branchname}}) to merge
7531 @c <en>changes from a branch will usually not remove files which were removed on the
7532 @c <en>branch since @sc{cvs} does not automatically add static tags to dead revisions.
7533 @c <en>The exception to this rule occurs when
7534 @c <en>a static tag has been attached to a dead revision manually.  Use the branch tag
7535 @c <en>to merge all changes from the branch or use two static tags as merge endpoints
7536 @c <en>to be sure that all intended changes are propagated in the merge.
7537 Observe que ao se usar uma única etiqueta estática
7538 (@samp{-j @var{tagname}}) ao invés de uma etiqueta
7539 dinâmica (@samp{-j @var{branchname}}) para mesclar
7540 mudanças a partir de um ramo normalmente não vai
7541 remover arquivos que foram removidos do ramo, já que o
7542 @sc{cvs} não adiona etiquetas estáticas a revisões
7543 mortas.  A exceção a esta regra ocorre quando uma
7544 etiqueta estática foi colocada numa revisão morta
7545 manualmente.  Use a etiqueta do ramo para mesclar todas
7546 as mudanças a partir do ramo ou use duas etiquetas
7547 estáticas como limites da mescla para ter certeza que
7548 todas as mudanças pretendidas vão ser propagadas na mesclagem.
7549
7550 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7551 @c <en>@node Merging and keywords
7552 @node Mesclagem e palavras-chave
7553 @c <en>@section Merging and keywords
7554 @section Mesclagem e palavras-chave
7555 @c <en>@cindex Merging, and keyword substitution
7556 @cindex Mesclagem, e substituição de palavra-chave
7557 @c <en>@cindex Keyword substitution, and merging
7558 @cindex Substituição de palavra-chave, e mesclagem
7559 @c <en>@cindex -j (merging branches), and keyword substitution
7560 @cindex -j (mesclando ramos), e substituição de palavra-chave
7561 @c <en>@cindex -kk, to avoid conflicts during a merge
7562 @cindex -kk, para evitar conflitos durante uma mesclagem
7563
7564 @c <en>If you merge files containing keywords (@pxref{Keyword
7565 @c <en>substitution}), you will normally get numerous
7566 @c <en>conflicts during the merge, because the keywords are
7567 @c <en>expanded differently in the revisions which you are
7568 @c <en>merging.
7569 Se você mescla arquivos contendo palavras-chave
7570 (@pxref{Substituição de palavra-chave}), você
7571 normalmente vai ter muitos conflitos durante a
7572 mesclagem, já que as palavras-chave são expandidas de
7573 forma diferente nas revisões que você está mesclando.
7574
7575 @c <en>Therefore, you will often want to specify the
7576 @c <en>@samp{-kk} (@pxref{Substitution modes}) switch to the
7577 @c <en>merge command line.  By substituting just the name of
7578 @c <en>the keyword, not the expanded value of that keyword,
7579 @c <en>this option ensures that the revisions which you are
7580 @c <en>merging will be the same as each other, and avoid
7581 @c <en>spurious conflicts.
7582 Portanto, você vai freqüentemente querer especificar a opção
7583 @samp{-kk} (@pxref{Modos de substituição}) na linha de
7584 comando do merge.  Simplesmente substituindo o nome da
7585 palavra-chave, e não o valor expandido dela, vai
7586 garantir que as revisões que você vai estar mesclando
7587 ???will be the same as each other???, e assim evitar
7588 conflitos falsos.
7589
7590 @c <en>For example, suppose you have a file like this:
7591 Por exemplo, suponha que você tenha um arquivo como este:
7592
7593 @example
7594        +---------+
7595       _! 1.1.2.1 !   <-  br1
7596      / +---------+
7597     /
7598    /
7599 +-----+    +-----+
7600 ! 1.1 !----! 1.2 !
7601 +-----+    +-----+
7602 @end example
7603
7604 @noindent
7605 @c <en>and your working directory is currently on the trunk
7606 @c <en>(revision 1.2).  Then you might get the following
7607 @c <en>results from a merge:
7608 E seu diretório de trabalho está no momento no tronco
7609 (revisão 1.2).  Então pode acontecer de você obter os
7610 seguintes resultados de uma mescla:
7611
7612 @example
7613 $ cat file1
7614 key $@splitrcskeyword{}Revision: 1.2 $
7615 . . .
7616 $ cvs update -j br1
7617 U file1
7618 RCS file: /cvsroot/first-dir/file1,v
7619 retrieving revision 1.1
7620 retrieving revision 1.1.2.1
7621 Merging differences between 1.1 and 1.1.2.1 into file1
7622 rcsmerge: warning: conflicts during merge
7623 $ cat file1
7624 @asis{}<<<<<<< file1
7625 key $@splitrcskeyword{}Revision: 1.2 $
7626 @asis{}=======
7627 key $@splitrcskeyword{}Revision: 1.1.2.1 $
7628 @asis{}>>>>>>> 1.1.2.1
7629 . . .
7630 @end example
7631
7632 @c <en>What happened was that the merge tried to merge the
7633 @c <en>differences between 1.1 and 1.1.2.1 into your working
7634 @c <en>directory.  So, since the keyword changed from
7635 @c <en>@code{Revision: 1.1} to @code{Revision: 1.1.2.1},
7636 @c <en>@sc{cvs} tried to merge that change into your working
7637 @c <en>directory, which conflicted with the fact that your
7638 @c <en>working directory had contained @code{Revision: 1.2}.
7639 O que aconteceu é que a mesclagem tentou mesclar as
7640 diferenças entre 1.1 e 1.1.2.1 dentro de seu diretório
7641 de trabalho.  Então, uma vez que a palavra-chave mudou
7642 de @code{Revision: 1.1} para @code{Revision: 1.1.2.1},
7643 o @sc{cvs} tentou mesclar esta mudança no seu diretório
7644 de trabalho, o que gerou um conflito com o fato de seu
7645 diretório de trabalho continha @code{Revision: 1.2}.
7646
7647 @c <en>Here is what happens if you had used @samp{-kk}:
7648 Isto é o que aconteceria se você tivesse usado @samp{-kk}:
7649
7650 @example
7651 $ cat file1
7652 key $@splitrcskeyword{}Revision: 1.2 $
7653 . . .
7654 $ cvs update -kk -j br1
7655 U file1
7656 RCS file: /cvsroot/first-dir/file1,v
7657 retrieving revision 1.1
7658 retrieving revision 1.1.2.1
7659 Merging differences between 1.1 and 1.1.2.1 into file1
7660 $ cat file1
7661 key $@splitrcskeyword{}Revision$
7662 . . .
7663 @end example
7664
7665 @c <en>What is going on here is that revision 1.1 and 1.1.2.1
7666 @c <en>both expand as plain @code{Revision}, and therefore
7667 @c <en>merging the changes between them into the working
7668 @c <en>directory need not change anything.  Therefore, there
7669 @c <en>is no conflict.
7670 O que está acontecendo aqui é que ambas as revisões 1.1
7671 e 1.1.2.1 expandem em um simples @code{Revision}, e
7672 consequentemente, não há nenhuma mudança para mesclar entre elas no
7673 diretório de trabalho.  Portanto, não há conflito.
7674
7675 @c <en>@strong{WARNING: In versions of @sc{cvs} prior to 1.12.2, there was a
7676 @c <en>major problem with using @samp{-kk} on merges.  Namely, @samp{-kk}
7677 @c <en>overrode any default keyword expansion mode set in the archive file in
7678 @c <en>the repository.  This could, unfortunately for some users, cause data
7679 @c <en>corruption in binary files (with a default keyword expansion mode set
7680 @c <en>to @samp{-kb}).  Therefore, when a repository contained binary files,
7681 @c <en>conflicts had to be dealt with manually rather than using @samp{-kk} in
7682 @c <en>a merge command.}
7683 @strong{WARNING: Em versões do @sc{cvs} anteriores à
7684 1.12.2, existia um grande problema ao usar @samp{-kk}
7685 em mesclagens.  A saber, @samp{-kk} sobreescrevia
7686 qualquer modo de expansão de palavra-chave padrão
7687 ajustado no arquivo do repositório.  Isto podia,
7688 infelizmente para alguns usuários, corromper arquivos
7689 binários (com um modo de expansão de palavra-chave
7690 padrão em @samp{-kb}).  Portanto, quando um repositório
7691 contém arquivos binários, conflitos têm que ser
7692 tratados manualmente ao invés de serem tratados com
7693 @samp{-kk} no comando de mescla.}
7694
7695 @c <en>In @sc{cvs} version 1.12.2 and later, the keyword expansion mode
7696 @c <en>provided on the command line to any @sc{cvs} command no longer
7697 @c <en>overrides the @samp{-kb} keyword expansion mode setting for binary
7698 @c <en>files, though it will still override other default keyword expansion
7699 @c <en>modes.  You can now safely merge using @samp{-kk} to avoid spurious conflicts
7700 @c <en>on lines containing RCS keywords, even when your repository contains
7701 @c <en>binary files.
7702 Da versão 1.12.2 para frente do @sc{cvs}, a expansão
7703 por palavra-chave disponível na linha de comando para
7704 qualquer comando do @sc{cvs} não mais sobreescreve o
7705 modo de expansão de palavra-chave @samp{-kb} para
7706 arquivos binários, embora ainda sobreescreva os outros
7707 modos de expansão de palavra-chave.  Você pode agora
7708 mesclar com tranquilidade usando @samp{-kk} para evitar
7709 conflitos falsos em linhas contendo palavras-chave do
7710 RCS, mesmo quando seu repositório contém arquivos binários.
7711
7712 @c ---------------------------------------------------------------------
7713 @c <en>@node Recursive behavior
7714 @node Comportamento recursivo
7715 @c <en>@chapter Recursive behavior
7716 @chapter Comportamento recursivo
7717 @c <en>@cindex Recursive (directory descending)
7718 @cindex Recursivo (directory descending)
7719 @c <en>@cindex Directory, descending
7720 @cindex Directory, descending
7721 @c <en>@cindex Descending directories
7722 @cindex Descending directories
7723 @c <en>@cindex Subdirectories
7724 @cindex Subdiretórios
7725
7726 @c <en>Almost all of the subcommands of @sc{cvs} work
7727 @c <en>recursively when you specify a directory as an
7728 @c <en>argument.  For instance, consider this directory
7729 @c <en>structure:
7730 Quase todos os subcomandos do @sc{cvs} trabalham de
7731 forma recursiva quando você passa um diretório como
7732 argumento.  Por exemplo, considere esta estrutura:
7733
7734 @example
7735       @code{$HOME}
7736         |
7737         +--@t{tc}
7738         |   |
7739             +--@t{CVS}
7740 @c <en>            |      (internal @sc{cvs} files)
7741             |      (internal @sc{cvs} files)
7742             +--@t{Makefile}
7743             +--@t{backend.c}
7744             +--@t{driver.c}
7745             +--@t{frontend.c}
7746             +--@t{parser.c}
7747             +--@t{man}
7748             |    |
7749             |    +--@t{CVS}
7750 @c <en>            |    |  (internal @sc{cvs} files)
7751             |    |  (internal @sc{cvs} files)
7752             |    +--@t{tc.1}
7753             |
7754             +--@t{testing}
7755                  |
7756                  +--@t{CVS}
7757 @c <en>                 |  (internal @sc{cvs} files)
7758                  |  (internal @sc{cvs} files)
7759                  +--@t{testpgm.t}
7760                  +--@t{test2.t}
7761 @end example
7762
7763 @noindent
7764 @c <en>If @file{tc} is the current working directory, the
7765 @c <en>following is true:
7766 Se @file{tc} é o diretório atual, então é verdade que:
7767
7768 @itemize @bullet
7769 @item
7770 @c <en>@samp{cvs update testing} is equivalent to
7771 @samp{cvs update testing} é equivalente a
7772
7773 @example
7774 cvs update testing/testpgm.t testing/test2.t
7775 @end example
7776
7777 @item
7778 @c <en>@samp{cvs update testing man} updates all files in the
7779 @c <en>subdirectories
7780 @samp{cvs update testing man} atualiza todos os
7781 arquivos nos subdiretórios
7782
7783 @item
7784 @c <en>@samp{cvs update .} or just @samp{cvs update} updates
7785 @c <en>all files in the @code{tc} directory
7786 @samp{cvs update .} ou simplesmente @samp{cvs update}
7787 atualiza todos os arquivos no diretório @code{tc}
7788 @end itemize
7789
7790 @c <en>If no arguments are given to @code{update} it will
7791 @c <en>update all files in the current working directory and
7792 @c <en>all its subdirectories.  In other words, @file{.} is a
7793 @c <en>default argument to @code{update}.  This is also true
7794 @c <en>for most of the @sc{cvs} subcommands, not only the
7795 @c <en>@code{update} command.
7796 Se nenhum argumento é dado ao @code{update} ele
7797 atualiza todos os arquivos no diretório atual e nos
7798 seus subdiretórios recursivamente.  Em outras palavras,
7799 O @file{.} é um argumento padrão para o @code{update}.
7800 O mesmo vale para a maioria dos subcomandos do
7801 @sc{cvs}, e não apenas para o @code{update}.
7802
7803 @c <en>The recursive behavior of the @sc{cvs} subcommands can be
7804 @c <en>turned off with the @samp{-l} option.
7805 @c <en>Conversely, the @samp{-R} option can be used to force recursion if
7806 @c <en>@samp{-l} is specified in @file{~/.cvsrc} (@pxref{~/.cvsrc}).
7807 O comportamento recursivo dos subcomandos do @sc{cvs}
7808 pode ser desligado com a opção @samp{-l}.  De forma
7809 oposta, a opção @samp{-R} pode ser usada para forçar a
7810 recursão se o @samp{-l} estiver especificado no
7811 @file{~/.cvsrc} (@pxref{~/.cvsrc}).
7812
7813 @example
7814 $ cvs update -l         # @r{Don't update files in subdirectories}
7815 @end example
7816
7817 @c ---------------------------------------------------------------------
7818 @c <en>@node Adding and removing
7819 @node Adicionando e removendo
7820 @c <en>@chapter Adding, removing, and renaming files and directories
7821 @chapter Adicionando, removendo e renomeando arquivos e diretórios
7822
7823 @c <en>In the course of a project, one will often add new
7824 @c <en>files.  Likewise with removing or renaming, or with
7825 @c <en>directories.  The general concept to keep in mind in
7826 @c <en>all these cases is that instead of making an
7827 @c <en>irreversible change you want @sc{cvs} to record the
7828 @c <en>fact that a change has taken place, just as with
7829 @c <en>modifying an existing file.  The exact mechanisms to do
7830 @c <en>this in @sc{cvs} vary depending on the situation.
7831 No decorrer de um projeto, normalmente se adicionam
7832 arquivos.  Da mesma forma se remove e se renomeia.  E
7833 tudo isto também para diretórios.  O conceito geral que
7834 se deve ter em mente em todos estes casos é que ao
7835 invés de fazer uma mudança irreversível você vai querer
7836 que o @sc{cvs} registre o fato de que uma mudança
7837 ocorreu, da mesma forma que é feito com a modificação
7838 de um arquivo existente.  O mecanismo exato para se
7839 fazer isto com o @sc{cvs} varia conforme o caso.
7840
7841 @menu
7842 @c <en>* Adding files::                Adding files
7843 * Adicionando arquivos::          Adicionando arquivos
7844 @c <en>* Removing files::              Removing files
7845 * Removendo arquivos::            Removendo arquivos
7846 @c <en>* Removing directories::        Removing directories
7847 * Removendo diretórios::          Removendo diretórios
7848 @c <en>* Moving files::                Moving and renaming files
7849 * Movendo arquivos::              Movendo e renomeando arquivos
7850 @c <en>* Moving directories::          Moving and renaming directories
7851 * Movendo diretórios::            Movendo e renomeando diretórios
7852 @end menu
7853
7854 @c <en>@node Adding files
7855 @node Adicionando arquivos
7856 @c <en>@section Adding files to a directory
7857 @section Adicionando arquivos a um diretório
7858 @c <en>@cindex Adding files
7859 @cindex Adicionando arquivos
7860
7861 @c <en>To add a new file to a directory, follow these steps.
7862 Para adicionar um novo arquivo a um diretório, siga
7863 estes passos.
7864
7865 @itemize @bullet
7866 @item
7867 @c <en>You must have a working copy of the directory.
7868 @c <en>@xref{Getting the source}.
7869 Você deve ter uma cópia de trabalho do diretório.
7870 @xref{Obtendo os fontes}.
7871
7872 @item
7873 @c <en>Create the new file inside your working copy of the directory.
7874 Crie o novo arquivo dentro da cópia local do diretório.
7875
7876 @item
7877 @c <en>Use @samp{cvs add @var{filename}} to tell @sc{cvs} that you
7878 @c <en>want to version control the file.  If the file contains
7879 @c <en>binary data, specify @samp{-kb} (@pxref{Binary files}).
7880 Use @samp{cvs add @var{filename}} para dizer ao
7881 @sc{cvs} que você quer fazer controle de versões no
7882 arquivo.  Se o arquivo contém dados em binário,
7883 especifique @samp{-kb} (@pxref{Arquivos binários}).
7884
7885 @item
7886 @c <en>Use @samp{cvs commit @var{filename}} to actually check
7887 @c <en>in the file into the repository.  Other developers
7888 @c <en>cannot see the file until you perform this step.
7889 Use @samp{cvs commit @var{filename}} para de fato
7890 colocar o arquivo no repositório.  Outros
7891 desenvolvedores não poderam ver o arquivo até que você
7892 tenha feito isto.
7893 @end itemize
7894
7895 @c <en>You can also use the @code{add} command to add a new
7896 @c <en>directory.
7897 Você também pode usar o comando @code{add} para
7898 adicionar um novo diretório.
7899 @c FIXCVS and/or FIXME: Adding a directory doesn't
7900 @c require the commit step.  This probably can be
7901 @c considered a CVS bug, but it is possible we should
7902 @c warn people since this behavior probably won't be
7903 @c changing right away.
7904
7905 @c <en>Unlike most other commands, the @code{add} command is
7906 @c <en>not recursive.  You cannot even type @samp{cvs add
7907 @c <en>foo/bar}!  Instead, you have to
7908 Ao contrário da maioria dos outros comandos, o comando
7909 @code{add} não é recursivo.  Você não pode sequer digitar @samp{cvs add
7910 foo/bar}!  Ao invés disso, você tem que fazer
7911 @c FIXCVS: This is, of course, not a feature.  It is
7912 @c just that no one has gotten around to fixing "cvs add
7913 @c foo/bar".
7914
7915 @example
7916 $ cd foo
7917 $ cvs add bar
7918 @end example
7919
7920 @c <en>@cindex add (subcommand)
7921 @cindex add (subcomando)
7922 @c <en>@deffn Command {cvs add} [@code{-k} kflag] [@code{-m} message] files @dots{}
7923 @deffn Comando {cvs add} [@code{-k} kflag] [@code{-m} mensagem] arquivos @dots{}
7924
7925 @c <en>Schedule @var{files} to be added to the repository.
7926 @c <en>The files or directories specified with @code{add} must
7927 @c <en>already exist in the current directory.  To add a whole
7928 @c <en>new directory hierarchy to the source repository (for
7929 @c <en>example, files received from a third-party vendor), use
7930 @c <en>the @code{import} command instead.  @xref{import}.
7931 Agenda @var{arquivos} para serem adicionados ao repositório.
7932 Os arquivos ou diretórios especificados com @code{add}
7933 já devem existir no diretório atual.  Para adicionar
7934 toda uma estrutura de diretórios nova ao repositório
7935 de fontes (por exemplo, arquivos recebidos de um
7936 fornecedor terceiro), use o comando @code{import} ao
7937 invés do @code{add}.  @xref{import}.
7938
7939 @c <en>The added files are not placed in the source repository
7940 @c <en>until you use @code{commit} to make the change
7941 @c <en>permanent.  Doing an @code{add} on a file that was
7942 @c <en>removed with the @code{remove} command will undo the
7943 @c <en>effect of the @code{remove}, unless a @code{commit}
7944 @c <en>command intervened.  @xref{Removing files}, for an
7945 @c <en>example.
7946 Os arquivos adicionados não são colocados no
7947 repositório de fontes até que você use o @code{commit}
7948 para tornar a mudança permanente.  Aplicar um
7949 @code{add} num arquivo que foi removido com o comando
7950 @code{remove} vai desfazer o efeito do @code{remove}, a
7951 menos que haja um @code{commit} entre os dois.
7952 @xref{Removendo arquivos}, para um exemplo.
7953
7954 @c <en>The @samp{-k} option specifies the default way that
7955 @c <en>this file will be checked out; for more information see
7956 @c <en>@ref{Substitution modes}.
7957 A opção @samp{-k} especifica a forma padrão como este
7958 arquivo vai ser ???checked out???; para mais
7959 informações veja @ref{Modos de substituição}.
7960
7961 @c As noted in BUGS, -m is broken client/server (Nov
7962 @c 96).  Also see testsuite log2-* tests.
7963 @c <en>The @samp{-m} option specifies a description for the
7964 @c <en>file.  This description appears in the history log (if
7965 @c <en>it is enabled, @pxref{history file}).  It will also be
7966 @c <en>saved in the version history inside the repository when
7967 @c <en>the file is committed.  The @code{log} command displays
7968 @c <en>this description.  The description can be changed using
7969 @c <en>@samp{admin -t}.  @xref{admin}.  If you omit the
7970 @c <en>@samp{-m @var{description}} flag, an empty string will
7971 @c <en>be used.  You will not be prompted for a description.
7972 A opção @samp{-m} especifica uma descrição para o
7973 arquivo.  Esta descrição aparece no registro histórico (history log)
7974 (se este estiver habilitado, @pxref{arquivo history (histórico)}).
7975 Ela também vai ser guardada no histórico de versões
7976 dentro do repositório quando o arquivo é
7977 ???committed???.  O comando @code{log} mostra esta
7978 descrição.  A descrição pode ser alterada usando-se
7979 @samp{admin -t}.  @xref{admin}.  Se você omitir a opção
7980 @samp{-m @var{description}}, uma string vazia vai ser
7981 usada.  Não vai ser pedido a você uma descrição.
7982 @end deffn
7983
7984 @c <en>For example, the following commands add the file
7985 @c <en>@file{backend.c} to the repository:
7986 Por exemplo, os seguintes comandos adicionam o arquivo
7987 @file{backend.c} ao repositório:
7988
7989 @c This example used to specify
7990 @c     -m "Optimizer and code generation passes."
7991 @c to the cvs add command, but that doesn't work
7992 @c client/server (see log2 in sanity.sh).  Should fix CVS,
7993 @c but also seems strange to document things which
7994 @c don't work...
7995 @example
7996 $ cvs add backend.c
7997 $ cvs commit -m "Early version. Not yet compilable." backend.c
7998 @end example
7999
8000 @c <en>When you add a file it is added only on the branch
8001 @c <en>which you are working on (@pxref{Branching and merging}).  You can
8002 @c <en>later merge the additions to another branch if you want
8003 @c <en>(@pxref{Merging adds and removals}).
8004 Quando você adiciona um arquivo ele é adicionado apenas
8005 no ramo no qual você está trabalhando
8006 (@pxref{Ramificando e mesclando}).  Você pode mais
8007 tarde mesclar as adições a outro ramo se você quiser
8008 (@pxref{Mesclando adicionados e removidos}).
8009 @c Should we mention that earlier versions of CVS
8010 @c lacked this feature (1.3) or implemented it in a buggy
8011 @c way (well, 1.8 had many bugs in cvs update -j)?
8012 @c Should we mention the bug/limitation regarding a
8013 @c file being a regular file on one branch and a directory
8014 @c on another?
8015 @c FIXME: This needs an example, or several, here or
8016 @c elsewhere, for it to make much sense.
8017 @c Somewhere we need to discuss the aspects of death
8018 @c support which don't involve branching, I guess.
8019 @c Like the ability to re-create a release from a tag.
8020
8021 @c ---------------------------------------------------------------------
8022 @c <en>@node Removing files
8023 @node Removendo arquivos
8024 @c <en>@section Removing files
8025 @section Removendo arquivos
8026 @c <en>@cindex Removing files
8027 @cindex Removendo arquivos
8028 @c <en>@cindex Deleting files
8029 @cindex Apagando arquivos
8030
8031 @c FIXME: this node wants to be split into several
8032 @c smaller nodes.  Could make these children of
8033 @c "Adding and removing", probably (death support could
8034 @c be its own section, for example, as could the
8035 @c various bits about undoing mistakes in adding and
8036 @c removing).
8037 @c <en>Directories change.  New files are added, and old files
8038 @c <en>disappear.  Still, you want to be able to retrieve an
8039 @c <en>exact copy of old releases.
8040 Diretórios mudam.  Novos arquivos são adicionados, e
8041 arquivos velhos somem.  Ainda assim, você vai querer
8042 poder recuperar uma cópia exata de releases antigas.
8043
8044 @c <en>Here is what you can do to remove a file,
8045 @c <en>but remain able to retrieve old revisions:
8046 Aqui está o que você pode fazer para remover um
8047 arquivo, mas continuar sendo capaz de recuperar
8048 revisões antigas dele:
8049
8050 @itemize @bullet
8051 @c FIXME: should probably be saying something about
8052 @c having a working directory in the first place.
8053 @item
8054 @c <en>Make sure that you have not made any uncommitted
8055 @c <en>modifications to the file.  @xref{Viewing differences},
8056 @c <en>for one way to do that.  You can also use the
8057 @c <en>@code{status} or @code{update} command.  If you remove
8058 @c <en>the file without committing your changes, you will of
8059 @c <en>course not be able to retrieve the file as it was
8060 @c <en>immediately before you deleted it.
8061 Certifique-se de não ter feito nenhuma alteração que
8062 falte fazer ???commit??? nele.  @xref{Vendo as diferenças},
8063 para uma forma de fazer isto.  Você também pode usar o comando
8064 @code{status} ou o @code{update}.  Se você remove o
8065 arquivo sem fazer ???commit??? nas suas mudanças,
8066 obviamente você não vai ser capaz de recuperar o
8067 arquivo na forma como ele era imediatamente antes da remoção.
8068
8069 @item
8070 @c <en>Remove the file from your working copy of the directory.
8071 @c <en>You can for instance use @code{rm}.
8072 Remova o arquivo da cópia local do seu diretório.
8073 Você pode usar o @code{rm}, por exemplo.
8074
8075 @item
8076 @c <en>Use @samp{cvs remove @var{filename}} to tell @sc{cvs} that
8077 @c <en>you really want to delete the file.
8078 Use @samp{cvs remove @var{filename}} para dizer ao
8079 @sc{cvs} que você quer realmente apagar o arquivo.
8080
8081 @item
8082 @c <en>Use @samp{cvs commit @var{filename}} to actually
8083 @c <en>perform the removal of the file from the repository.
8084 Use @samp{cvs commit @var{filename}} para realizar a
8085 remoção de fato do arquivo do repositório.
8086 @end itemize
8087
8088 @c FIXME: Somehow this should be linked in with a more
8089 @c general discussion of death support.  I don't know
8090 @c whether we want to use the term "death support" or
8091 @c not (we can perhaps get by without it), but we do
8092 @c need to discuss the "dead" state in "cvs log" and
8093 @c related subjects.  The current discussion is
8094 @c scattered around, and not xref'd to each other.
8095 @c FIXME: I think this paragraph wants to be moved
8096 @c later down, at least after the first example.
8097 @c <en>When you commit the removal of the file, @sc{cvs}
8098 @c <en>records the fact that the file no longer exists.  It is
8099 @c <en>possible for a file to exist on only some branches and
8100 @c <en>not on others, or to re-add another file with the same
8101 @c <en>name later.  @sc{cvs} will correctly create or not create
8102 @c <en>the file, based on the @samp{-r} and @samp{-D} options
8103 @c <en>specified to @code{checkout} or @code{update}.
8104 Quando você faz ???commit??? na remoção do arquivo, o
8105 @sc{cvs} registra o fato de que o arquivo não existe
8106 mais.  É possível para um arquivo existir apenas em
8107 alguns ramos e não em outros, ou re-adicionar outro
8108 arquivo com o mesmo nome depois.  O @sc{cvs} vai de
8109 forma correta criar ou não criar o arquivo, baseado nas
8110 opões @samp{-r} e @samp{-D} especificadas no
8111 @code{checkout} ou no @code{update}.
8112
8113 @c FIXME: This style seems to clash with how we
8114 @c document things in general.
8115 @c <en>@cindex Remove (subcommand)
8116 @cindex Remove (subcomando)
8117 @c <en>@deffn Command {cvs remove} [options] files @dots{}
8118 @deffn Comando {cvs remove} [options] files @dots{}
8119
8120 @c <en>Schedule file(s) to be removed from the repository
8121 @c <en>(files which have not already been removed from the
8122 @c <en>working directory are not processed).  This command
8123 @c <en>does not actually remove the file from the repository
8124 @c <en>until you commit the removal.  For a full list of
8125 @c <en>options, see @ref{Invoking CVS}.
8126 Prepara arquivo(s) para ser removido do reporitório
8127 (arquivos que ainda não foram removidos do diretório de
8128 trabalho não são processados).  Na verdade este comando
8129 não remove o arquivo do repositório até que você faça
8130 ???commit??? no removido.  Para uma lista completa de
8131 opções, veja em @ref{Chamando o CVS}.
8132 @end deffn
8133
8134 @c <en>Here is an example of removing several files:
8135 Aqui está um exemplo de remoção de vários arquivos:
8136
8137 @example
8138 $ cd test
8139 $ rm *.c
8140 $ cvs remove
8141 cvs remove: Removing .
8142 cvs remove: scheduling a.c for removal
8143 cvs remove: scheduling b.c for removal
8144 cvs remove: use 'cvs commit' to remove these files permanently
8145 $ cvs ci -m "Removed unneeded files"
8146 cvs commit: Examining .
8147 cvs commit: Committing .
8148 @end example
8149
8150 @c <en>As a convenience you can remove the file and @code{cvs
8151 @c <en>remove} it in one step, by specifying the @samp{-f}
8152 @c <en>option.  For example, the above example could also be
8153 @c <en>done like this:
8154 Por conveniência você pode remover o arquivo e fazer @code{cvs
8155 remove} nele de uma só vez, especificando a opção
8156 @samp{-f}.  Por exemplo, o exemplo acima poderia ser
8157 feito assim:
8158
8159 @example
8160 $ cd test
8161 $ cvs remove -f *.c
8162 cvs remove: scheduling a.c for removal
8163 cvs remove: scheduling b.c for removal
8164 cvs remove: use 'cvs commit' to remove these files permanently
8165 $ cvs ci -m "Removed unneeded files"
8166 cvs commit: Examining .
8167 cvs commit: Committing .
8168 @end example
8169
8170 @c <en>If you execute @code{remove} for a file, and then
8171 @c <en>change your mind before you commit, you can undo the
8172 @c <en>@code{remove} with an @code{add} command.
8173 Se você executa @code{remove} para um arquivo, e então
8174 muda de idéia antes do ???commit???, você pode desfazer
8175 o @code{remove} com um @code{add}.
8176 @ignore
8177 @c is this worth saying or not?  Somehow it seems
8178 @c confusing to me.
8179 @c <en>Of course,
8180 @c <en>since you have removed your copy of file in the working
8181 @c <en>directory, @sc{cvs} does not necessarily bring back the
8182 @c <en>contents of the file from right before you executed
8183 @c <en>@code{remove}; instead it gets the file from the
8184 @c <en>repository again.
8185 Obviamente, uma vez que você removeu a sua cópia local
8186 do arquivo no diretório de trabalho, o @sc{cvs} não vai
8187 trazer de volta necessariamente o conteúdo do arquivo
8188 exatamente como estava antes do @code{remove}; No lugar
8189 disto ele vai buscar o arquivo no repositório de novo.
8190 @end ignore
8191
8192 @c FIXME: what if you change your mind after you commit
8193 @c it?  (answer is also "cvs add" but we don't say that...).
8194 @c We need some index entries for thinks like "undoing
8195 @c removal" too.
8196
8197 @example
8198 $ ls
8199 CVS   ja.h  oj.c
8200 $ rm oj.c
8201 $ cvs remove oj.c
8202 cvs remove: scheduling oj.c for removal
8203 cvs remove: use 'cvs commit' to remove this file permanently
8204 $ cvs add oj.c
8205 U oj.c
8206 cvs add: oj.c, version 1.1.1.1, resurrected
8207 @end example
8208
8209 @c <en>If you realize your mistake before you run the
8210 @c <en>@code{remove} command you can use @code{update} to
8211 @c <en>resurrect the file:
8212 Se você notar  o erro antes de rodar o comando
8213 @code{remove} você pode usar o @code{update} para
8214 resuscitar o arquivo:
8215
8216 @example
8217 $ rm oj.c
8218 $ cvs update oj.c
8219 cvs update: warning: oj.c was lost
8220 U oj.c
8221 @end example
8222
8223 @c <en>When you remove a file it is removed only on the branch
8224 @c <en>which you are working on (@pxref{Branching and merging}).  You can
8225 @c <en>later merge the removals to another branch if you want
8226 @c <en>(@pxref{Merging adds and removals}).
8227 Quando você remove um arquivo ele é removido apenas do
8228 ramo no qual você está trabalhando (@pxref{Ramificando
8229 e mesclando}).  Você pode depois mesclar as remoções em
8230 outro ramo se quiser
8231 (@pxref{Mesclando adicionados e removidos}).
8232
8233 @c <en>@node Removing directories
8234 @node Removendo diretórios
8235 @c <en>@section Removing directories
8236 @section Removendo diretórios
8237 @c <en>@cindex Removing directories
8238 @cindex Removendo diretórios
8239 @c <en>@cindex Directories, removing
8240 @cindex Diretórios, removendo
8241
8242 @c <en>In concept removing directories is somewhat similar to
8243 @c <en>removing files---you want the directory to not exist in
8244 @c <en>your current working directories, but you also want to
8245 @c <en>be able to retrieve old releases in which the directory
8246 @c <en>existed.
8247 Conceitualmente, remover diretórios é num certo sentido
8248 similar a remover arquivos---você quer que o diretório
8249 não exista mais  no seu diretório de trabalho atual,
8250 mas você também quer ser capaz de recuperar releases
8251 antigas nas quais o diretório existe.
8252
8253 @c <en>The way that you remove a directory is to remove all
8254 @c <en>the files in it.  You don't remove the directory
8255 @c <en>itself; there is no way to do that.
8256 @c <en>Instead you specify the @samp{-P} option to
8257 @c <en>@code{cvs update} or @code{cvs checkout},
8258 @c <en>which will cause @sc{cvs} to remove empty
8259 @c <en>directories from working directories.
8260 @c <en>(Note that @code{cvs export} always removes empty directories.)
8261 @c <en>Probably the
8262 @c <en>best way to do this is to always specify @samp{-P}; if
8263 @c <en>you want an empty directory then put a dummy file (for
8264 @c <en>example @file{.keepme}) in it to prevent @samp{-P} from
8265 @c <en>removing it.
8266 A forma de remover um diretório é removendo todos os
8267 arquivos nele.  Você não remove o diretório mesmo; não
8268 há jeito de fazer isto.  Ao invés disto você especifica
8269 a opção @samp{-P} no @code{cvs update} ou no @code{cvs
8270 checkout}, que vai fazer com que o @sc{cvs} remova
8271 diretórios vazios de seus diretórios de
8272 trabalho.  (Observe que o @code{cvs export} sempre
8273 remove diretórios vazios.) Provavelmente, a melhor
8274 maneira de fazer isto é sempre usar o @samp{-P}; se
8275 você quiser manter um diretório vazio, ponha um arquivo
8276 sem importância nele (por exemplo @file{.keepme}) para
8277 evitar que o @samp{-P} apague o diretório.
8278
8279 @c I'd try to give a rationale for this, but I'm not
8280 @c sure there is a particularly convincing one.  What
8281 @c we would _like_ is for CVS to do a better job of version
8282 @c controlling whether directories exist, to eliminate the
8283 @c need for -P and so that a file can be a directory in
8284 @c one revision and a regular file in another.
8285 @c <en>Note that @samp{-P} is implied by the @samp{-r} or @samp{-D}
8286 @c <en>options of @code{checkout}.  This way
8287 @c <en>@sc{cvs} will be able to correctly create the directory
8288 @c <en>or not depending on whether the particular version you
8289 @c <en>are checking out contains any files in that directory.
8290 Observe que o @samp{-P} está implícito nas opções
8291 @samp{-r} ou @samp{-D} do @code{checkout}.  Desta forma
8292 o @sc{cvs} vai ser capaz de criar ou não criar corretamente o
8293 diretório dependendo de ter ou não algum arquivo na
8294 versão que você está fazendo ???check out???.
8295
8296 @c ---------------------------------------------------------------------
8297 @c <en>@node Moving files
8298 @node Movendo arquivos
8299 @c <en>@section Moving and renaming files
8300 @section Movendo e renomeando arquivos
8301 @c <en>@cindex Moving files
8302 @cindex Movendo arquivos
8303 @c <en>@cindex Renaming files
8304 @cindex Renomeando arquivos
8305 @c <en>@cindex Files, moving
8306 @cindex Arquivos, movendo
8307
8308 @c <en>Moving files to a different directory or renaming them
8309 @c <en>is not difficult, but some of the ways in which this
8310 @c <en>works may be non-obvious.  (Moving or renaming a
8311 @c <en>directory is even harder.  @xref{Moving directories}.).
8312 Mover arquivos para um diretório diferente ou
8313 renomeá-los não é difícil, mas algumas das formas de
8314 faze-lo podem não ser óbvias.  (Mover ou renomear
8315 diretórios é ainda mais difícil.  @xref{Movendo
8316 diretórios}.).
8317
8318 @c <en>The examples below assume that the file @var{old} is renamed to
8319 @c <en>@var{new}.
8320 O exemplos abaixo assumem que o arquivo @var{antigo} foi
8321 renomeado para @var{novo}.
8322
8323 @menu
8324 @c <en>* Outside::                     The normal way to Rename
8325 * Outside::                     A forma normal de renomear
8326 @c <en>* Inside::                      A tricky, alternative way
8327 * Inside::                      Uma forma ???tricky???, alternativa
8328 @c <en>* Rename by copying::           Another tricky, alternative way
8329 * Renomeando na base da cópia:: Outra forma ???tricky???, alternativa
8330 @end menu
8331
8332 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8333 @c <en>@node Outside
8334 @node Outside
8335 @c <en>@subsection The Normal way to Rename
8336 @subsection A forma normal de renomear
8337
8338 @c More rename issues.  Not sure whether these are
8339 @c worth documenting; I'm putting them here because
8340 @c it seems to be as good a place as any to try to
8341 @c set down the issues.
8342 @c * "cvs annotate" will annotate either the new
8343 @c file or the old file; it cannot annotate _each
8344 @c line_ based on whether it was last changed in the
8345 @c new or old file.  Unlike "cvs log", where the
8346 @c consequences of having to select either the new
8347 @c or old name seem fairly benign, this may be a
8348 @c real advantage to having CVS know about renames
8349 @c other than as a deletion and an addition.
8350
8351 @c <en>The normal way to move a file is to copy @var{old} to
8352 @c <en>@var{new}, and then issue the normal @sc{cvs} commands
8353 @c <en>to remove @var{old} from the repository, and add
8354 @c <en>@var{new} to it.
8355 A forma normal de mover um arquivo é copiar
8356 @var{antigo} para @var{novo}, e então aplicar os
8357 comandos normais do @sc{cvs} para, no repositório,
8358 remover @var{antigo} e adicionar @var{novo}.
8359 @c The following sentence is not true: one must cd into
8360 @c the directory to run "cvs add".
8361 @c  (Both @var{old} and @var{new} could
8362 @c contain relative paths, for example @file{foo/bar.c}).
8363
8364 @example
8365 $ mv @var{old} @var{new}
8366 $ cvs remove @var{old}
8367 $ cvs add @var{new}
8368 $ cvs commit -m "Renamed @var{old} to @var{new}" @var{old} @var{new}
8369 @end example
8370
8371 @c <en>This is the simplest way to move a file, it is not
8372 @c <en>error-prone, and it preserves the history of what was
8373 @c <en>done.  Note that to access the history of the file you
8374 @c <en>must specify the old or the new name, depending on what
8375 @c <en>portion of the history you are accessing.  For example,
8376 @c <en>@code{cvs log @var{old}} will give the log up until the
8377 @c <en>time of the rename.
8378 Esta é a forma mais simples de mover um arquivo, não é
8379 anti-falhas, e vai preservar o histórico do que foi
8380 feito.  Observe que para acessar o histórico do arquivo
8381 você vai precisar especificar o nome antigo ou o novo,
8382 dependendo de que porção do histórico você vai estar
8383 acessando.  Por exemplo, @code{cvs log @var{antigo}}
8384 vai mostrar o registro (log) até o momento onde o
8385 arquivo foi renomeado.
8386
8387 @c <en>When @var{new} is committed its revision numbers will
8388 @c <en>start again, usually at 1.1, so if that bothers you,
8389 @c <en>use the @samp{-r rev} option to commit.  For more
8390 @c <en>information see @ref{Assigning revisions}.
8391 Quando @var{novo} é ???committed??? seus números de
8392 revisão vão recomeçar, normalmente em 1.1.  Portanto, se
8393 isto te incomoda, lembre de usar a opção @samp{-r rev}
8394 na hora do ???commit???.  Para mais informações veja em
8395 @ref{Atribuindo revisões}.
8396
8397 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8398 @c <en>@node Inside
8399 @node Inside
8400 @c <en>@subsection Moving the history file
8401 @subsection Movendo o arquivo com o histórico
8402
8403 @c <en>This method is more dangerous, since it involves moving
8404 @c <en>files inside the repository.  Read this entire section
8405 @c <en>before trying it out!
8406 Este método é mais perigoso, já que envolve
8407 movimentação de arquivos no repositório.  Leia a seção
8408 toda antes de sair tentando!
8409
8410 @example
8411 $ cd $CVSROOT/@var{dir}
8412 $ mv @var{old},v @var{new},v
8413 @end example
8414
8415 @noindent
8416 @c <en>Advantages:
8417 Vantagens:
8418
8419 @itemize @bullet
8420 @item
8421 @c <en>The log of changes is maintained intact.
8422 O registro (log) de alterações permanece intacto.
8423
8424 @item
8425 @c <en>The revision numbers are not affected.
8426 Os números de revisão não são alterados.
8427 @end itemize
8428
8429 @noindent
8430 @c <en>Disadvantages:
8431 Desvantagens:
8432
8433 @itemize @bullet
8434 @item
8435 @c <en>Old releases cannot easily be fetched from the
8436 @c <en>repository.  (The file will show up as @var{new} even
8437 @c <en>in revisions from the time before it was renamed).
8438 Releases antigas não serão mais facilmente recuperadas
8439 a partir do repositório.  (O arquivo vai aparecer como
8440 @var{novo} mesmo em revisões do tempo anterior a ter
8441 sido renomeado).
8442
8443 @item
8444 @c <en>There is no log information of when the file was renamed.
8445 Não há informação nos registros de quando o arquivo foi
8446 renomeado.
8447
8448 @item
8449 @c <en>Nasty things might happen if someone accesses the history file
8450 @c <en>while you are moving it.  Make sure no one else runs any of the @sc{cvs}
8451 @c <en>commands while you move it.
8452 Coisas ???Nasty??? podem acontecer se alguém acessar o
8453 arquivo de histórico enquanto você estier movendo ele.
8454 Certifique-se de que ninguém mais rode qualquer dos
8455 comandos do @sc{cvs} durante a movimentação.
8456 @end itemize
8457
8458 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8459 @c <en>@node Rename by copying
8460 @node Renomeando na base da cópia
8461 @c <en>@subsection Copying the history file
8462 @subsection Copiando o arquivo de histórico
8463
8464 @c <en>This way also involves direct modifications to the
8465 @c <en>repository.  It is safe, but not without drawbacks.
8466 Esta forma também envolve modificações diretas no
8467 repositório.  É segura, mas tem seus incovenientes.
8468
8469 @example
8470 # @r{Copy the @sc{rcs} file inside the repository}
8471 $ cd $CVSROOT/@var{dir}
8472 $ cp @var{old},v @var{new},v
8473 # @r{Remove the old file}
8474 $ cd ~/@var{dir}
8475 $ rm @var{old}
8476 $ cvs remove @var{old}
8477 $ cvs commit @var{old}
8478 # @r{Remove all tags from @var{new}}
8479 $ cvs update @var{new}
8480 $ cvs log @var{new}             # @r{Remember the non-branch tag names}
8481 $ cvs tag -d @var{tag1} @var{new}
8482 $ cvs tag -d @var{tag2} @var{new}
8483 @dots{}
8484 @end example
8485
8486 @c <en>By removing the tags you will be able to check out old
8487 @c <en>revisions.
8488 Ao remover as etiquetas você vai ser capaz de ???check
8489 out??? revisões antigas.
8490
8491 @noindent
8492 @c <en>Advantages:
8493 Vantagens:
8494
8495 @itemize @bullet
8496 @item
8497 @c FIXME: Is this true about -D now that we have death
8498 @c support?  See 5B.3 in the FAQ.
8499 @c <en>Checking out old revisions works correctly, as long as
8500 @c <en>you use @samp{-r@var{tag}} and not @samp{-D@var{date}}
8501 @c <en>to retrieve the revisions.
8502 O ???check out??? de revisões antigas funciona corretamente,
8503 ???as long as??? você usa @samp{-r@var{tag}} e não
8504 @samp{-D@var{date}} para recuperar as revisões.
8505
8506 @item
8507 @c <en>The log of changes is maintained intact.
8508 O registro (log) de mudanças é mantido intacto.
8509
8510 @item
8511 @c <en>The revision numbers are not affected.
8512 Os números de revisão não são afetados.
8513 @end itemize
8514
8515 @noindent
8516 @c <en>Disadvantages:
8517 Desvantagens:
8518
8519 @itemize @bullet
8520 @item
8521 @c <en>You cannot easily see the history of the file across the rename.
8522 Você não pode ver de forma fácil os histórico do
8523 arquivo através das ações de renomear.
8524
8525 @ignore
8526 @c Is this true?  I don't see how the revision numbers
8527 @c _could_ start over, when new,v is just old,v with
8528 @c the tags deleted.
8529 @c If there is some need to reinstate this text,
8530 @c it is "usually 1.1", not "1.0" and it needs an
8531 @c xref to Assigning revisions
8532 @item
8533 @c <en>Unless you use the @samp{-r rev} (@pxref{commit
8534 @c <en>options}) flag when @var{new} is committed its revision
8535 @c <en>numbers will start at 1.0 again.
8536 A menos que você use a opção @samp{-r rev} (@pxref{commit
8537 options}) quando o @var{new} for ???committed??? seus
8538 números de revisão vão sempre recomeçar com 1.0.
8539 @end ignore
8540 @end itemize
8541
8542 @c ---------------------------------------------------------------------
8543 @c <en>@node Moving directories
8544 @node Movendo diretórios
8545 @c <en>@section Moving and renaming directories
8546 @section Movendo e renomeando diretórios
8547 @c <en>@cindex Moving directories
8548 @cindex Movendo diretórios
8549 @c <en>@cindex Renaming directories
8550 @cindex Renomeando diretórios
8551 @c <en>@cindex Directories, moving
8552 @cindex Diretórios, movendo
8553
8554 @c <en>The normal way to rename or move a directory is to
8555 @c <en>rename or move each file within it as described in
8556 @c <en>@ref{Outside}.  Then check out with the @samp{-P}
8557 @c <en>option, as described in @ref{Removing directories}.
8558 A forma normal de renomear ou mover um diretório é
8559 renomear ou mover cada arquivo dentro dele como
8560 descrito em @ref{Outside}.  Então fazer um ???check
8561 out??? com a opção @samp{-P}, como descrito em
8562 @ref{Removendo diretórios}.
8563
8564 @c <en>If you really want to hack the repository to rename or
8565 @c <en>delete a directory in the repository, you can do it
8566 @c <en>like this:
8567 Se você realmente quer ???to hack??? o repositório para
8568 renomear ou apagar um diretório no repositório, você
8569 pode fazê-lo da seguinte forma:
8570
8571 @enumerate
8572 @item
8573 @c <en>Inform everyone who has a checked out copy of the directory that the
8574 @c <en>directory will be renamed.  They should commit all
8575 @c <en>their changes, and remove their working copies,
8576 @c <en>before you take the steps below.
8577 Avise a todos que fizeram checkout do diretório que o
8578 diretório vai ser renomeado.  Eles vão ter que fazer
8579 ???commit??? de todas as mudanças, e remover suas
8580 cópias de trabalho antes que você faça os passos
8581 seguintes.
8582
8583 @item
8584 @c <en>Rename the directory inside the repository.
8585 Renomeie o diretório dentro do repositório.
8586
8587 @example
8588 $ cd $CVSROOT/@var{parent-dir}
8589 $ mv @var{old-dir} @var{new-dir}
8590 @end example
8591
8592 @item
8593 @c <en>Fix the @sc{cvs} administrative files, if necessary (for
8594 @c <en>instance if you renamed an entire module).
8595 Conserte os arquivos administrativos do @sc{cvs}, se
8596 necessário (por exemplo, se você está renomeando um
8597 módulo inteiro).
8598
8599 @item
8600 @c <en>Tell everyone that they can check out again and continue
8601 @c <en>working.
8602 Diga a todo mundo que  eles podem fazer check out
8603 novamente e continuar o trabalho.
8604
8605 @end enumerate
8606
8607 @c <en>If someone had a working copy the @sc{cvs} commands will
8608 @c <en>cease to work for him, until he removes the directory
8609 @c <en>that disappeared inside the repository.
8610 Se alguém manteve uma cópia de trabalho, os comandos do
8611 @sc{cvs} vão parar de funcionar para esta pessoa até
8612 que ela remova o diretório que desapareceu do repositório.
8613
8614 @c <en>It is almost always better to move the files in the
8615 @c <en>directory instead of moving the directory.  If you move the
8616 @c <en>directory you are unlikely to be able to retrieve old
8617 @c <en>releases correctly, since they probably depend on the
8618 @c <en>name of the directories.
8619 Na maioria das vezes é melhor mover os arquivos do
8620 diretório ao invés de mover o diretório.  Se você mover
8621 o diretório não há garantias de que você seja capaz de
8622 recuperar releases antigas corretamente, já que elas
8623 dependem provavelmente do nome dos diretórios.
8624
8625 @c ---------------------------------------------------------------------
8626 @c <en>@node History browsing
8627 @node Navegação no Histórico
8628 @c <en>@chapter History browsing
8629 @chapter Navegação no Histórico
8630 @c <en>@cindex History browsing
8631 @cindex Navegação no Histórico
8632 @c <en>@cindex Traceability
8633 @cindex Rastreabilidade
8634 @c <en>@cindex Isolation
8635 @cindex Isolamento
8636
8637 @ignore
8638 @c This is too long for an introduction (goal is
8639 @c one 20x80 character screen), and also mixes up a
8640 @c variety of issues (parallel development, history,
8641 @c maybe even touches on process control).
8642
8643 @c -- @quote{To lose ones history is to lose ones soul.}
8644 @c -- ///
8645 @c -- ///Those who cannot remember the past are condemned to repeat it.
8646 @c -- ///               -- George Santayana
8647 @c -- ///
8648
8649 @c <en>@sc{cvs} tries to make it easy for a group of people to work
8650 @c <en>together.  This is done in two ways:
8651 O @sc{cvs} tenta ajudar um grupo a trabalhar junto.
8652 Isto é feito de duas formas:
8653
8654 @itemize @bullet
8655 @item
8656 @c <en>Isolation---You have your own working copy of the
8657 @c <en>source.  You are not affected by modifications made by
8658 @c <en>others until you decide to incorporate those changes
8659 @c <en>(via the @code{update} command---@pxref{update}).
8660 Isolamento---Você tem a sua própria cópia de trabalho
8661 dos fontes.  Você não é afetado por modificações feitas
8662 por outros até que você decida incorporar estas
8663 modificações (através do comando
8664 @code{update}---@pxref{update}).
8665
8666 @item
8667 @c <en>Traceability---When something has changed, you can
8668 @c <en>always see @emph{exactly} what changed.
8669 Rastreabilidade---Quando alguma coisa mudou, você pode
8670 ver @emph{exatamente} o que mudou.
8671 @end itemize
8672
8673 @c <en>There are several features of @sc{cvs} that together lead
8674 @c <en>to traceability:
8675 Existem várias características do @sc{cvs} que juntas
8676 possibilitam a rastreabilidade:
8677
8678 @itemize @bullet
8679 @item
8680 @c <en>Each revision of a file has an accompanying log
8681 @c <en>message.
8682 Each revision of a file has an accompanying log
8683 message.
8684
8685 @item
8686 @c <en>All commits are optionally logged to a central history
8687 @c <en>database.
8688 All commits are optionally logged to a central history
8689 database.
8690
8691 @item
8692 @c <en>Logging information can be sent to a user-defined
8693 @c <en>program (@pxref{loginfo}).
8694 Logging information can be sent to a user-defined
8695 program (@pxref{loginfo}).
8696 @end itemize
8697
8698 @c -- More text here.
8699
8700 @c <en>This chapter should talk about the history file, the
8701 @c <en>@code{log} command, the usefulness of ChangeLogs
8702 @c <en>even when you run @sc{cvs}, and things like that.
8703 This chapter should talk about the history file, the
8704 @code{log} command, the usefulness of ChangeLogs
8705 even when you run @sc{cvs}, and things like that.
8706
8707 @end ignore
8708
8709 @c kind of lame, in a lot of ways the above text inside
8710 @c the @ignore motivates this chapter better
8711 @c <en>Once you have used @sc{cvs} to store a version control
8712 @c <en>history---what files have changed when, how, and by
8713 @c <en>whom, there are a variety of mechanisms for looking
8714 @c <en>through the history.
8715 Uma vez usando o @sc{cvs} para guardar um histórico do
8716 controle de versões---que arquivos foram mudandos,
8717 quando, como e por quem, existe uma variedade de
8718 mecanismos para procurar ao longo do histórico.
8719
8720 @c FIXME: should also be talking about how you look at
8721 @c old revisions (e.g. "cvs update -p -r 1.2 foo.c").
8722 @menu
8723 @c <en>* log messages::                Log messages
8724 * mensagens de registro::       Mensagens de registro (log)
8725 @c <en>* history database::            The history database
8726 * history database::            The history database
8727 @c <en>* user-defined logging::        User-defined logging
8728 * user-defined logging::        User-defined logging
8729 @c <en>* annotate::                    What revision modified each line of a file?
8730 * annotate::                    Que revisão modificou cada linha de um arquivo?
8731 @end menu
8732
8733 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8734 @c <en>@node log messages
8735 @node mensagens de registro
8736 @c <en>@section Log messages
8737 @section Mensagens de registro (log)
8738
8739 @c FIXME: @xref to place where we talk about how to
8740 @c specify message to commit.
8741 @c <en>Whenever you commit a file you specify a log message.
8742 Sempre que você ???commit??? um arquivo você especifica
8743 uma mensagem de registro (log).
8744
8745 @c FIXME: bring the information here, and get rid of or
8746 @c greatly shrink the "log" node.
8747 @c <en>To look through the log messages which have been
8748 @c <en>specified for every revision which has been committed,
8749 @c <en>use the @code{cvs log} command (@pxref{log}).
8750 Para ver todas as mensagens de registro que foram
8751 especificadas para cada revisão que foi
8752 ???committed???, use o comando @code{cvs log}
8753 (@pxref{log}).
8754
8755 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8756 @c <en>@node history database
8757 @node history database
8758 @c <en>@section The history database
8759 @section The history database
8760
8761 @c FIXME: bring the information from the history file
8762 @c and history nodes here.  Rewrite it to be motivated
8763 @c better (start out by clearly explaining what gets
8764 @c logged in history, for example).
8765 @c <en>You can use the history file (@pxref{history file}) to
8766 @c <en>log various @sc{cvs} actions.  To retrieve the
8767 @c <en>information from the history file, use the @code{cvs
8768 @c <en>history} command (@pxref{history}).
8769 Você pode usar o arquivo history (@pxref{arquivo
8770 history (histórico)}) para registrar várias ações do @sc{cvs}.
8771 Para recuperar a informação do arquivo history, use o
8772 comando @code{cvs history} (@pxref{history}).
8773
8774 @c <en>Note: you can control what is logged to this file by using the
8775 @c <en>@samp{LogHistory} keyword in the @file{CVSROOT/config} file
8776 @c <en>(@pxref{config}).
8777 Observação: você pode controlar o que vai ser
8778 registrado neste arquivo usando a palavra-chave
8779 @samp{LogHistory} no arquivo @file{CVSROOT/config}
8780 (@pxref{config}).
8781
8782 @c
8783 @c The history database has many problems:
8784 @c * It is very unclear what field means what.  This
8785 @c could be improved greatly by better documentation,
8786 @c but there are still non-orthogonalities (for
8787 @c example, tag does not record the "repository"
8788 @c field but most records do).
8789 @c * Confusion about files, directories, and modules.
8790 @c Some commands record one, some record others.
8791 @c * File removal is not logged.  There is an 'R'
8792 @c record type documented, but CVS never uses it.
8793 @c * Tags are only logged for the "cvs rtag" command,
8794 @c not "cvs tag".  The fix for this is not completely
8795 @c clear (see above about modules vs. files).
8796 @c * Are there other cases of operations that are not
8797 @c logged?  One would hope for all changes to the
8798 @c repository to be logged somehow (particularly
8799 @c operations like tagging, "cvs admin -k", and other
8800 @c operations which do not record a history that one
8801 @c can get with "cvs log").  Operations on the working
8802 @c directory, like export, get, and release, are a
8803 @c second category also covered by the current "cvs
8804 @c history".
8805 @c * The history file does not record the options given
8806 @c to a command.  The most serious manifestation of
8807 @c this is perhaps that it doesn't record whether a command
8808 @c was recursive.  It is not clear to me whether one
8809 @c wants to log at a level very close to the command
8810 @c line, as a sort of way of logging each command
8811 @c (more or less), or whether one wants
8812 @c to log more at the level of what was changed (or
8813 @c something in between), but either way the current
8814 @c information has pretty big gaps.
8815 @c * Further details about a tag--like whether it is a
8816 @c branch tag or, if a non-branch tag, which branch it
8817 @c is on.  One can find out this information about the
8818 @c tag as it exists _now_, but if the tag has been
8819 @c moved, one doesn't know what it was like at the time
8820 @c the history record was written.
8821 @c * Whether operating on a particular tag, date, or
8822 @c options was implicit (sticky) or explicit.
8823 @c
8824 @c Another item, only somewhat related to the above, is a
8825 @c way to control what is logged in the history file.
8826 @c This is probably the only good way to handle
8827 @c different people having different ideas about
8828 @c information/space tradeoffs.
8829 @c
8830 @c It isn't really clear that it makes sense to try to
8831 @c patch up the history file format as it exists now to
8832 @c include all that stuff.  It might be better to
8833 @c design a whole new CVSROOT/nhistory file and "cvs
8834 @c nhistory" command, or some such, or in some other
8835 @c way trying to come up with a clean break from the
8836 @c past, which can address the above concerns.  Another
8837 @c open question is how/whether this relates to
8838 @c taginfo/loginfo/etc.
8839
8840 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
8841 @c <en>@node user-defined logging
8842 @node user-defined logging
8843 @c <en>@section User-defined logging
8844 @section User-defined logging
8845
8846 @c FIXME: should probably also mention the fact the -l
8847 @c global option can disable most of the mechanisms
8848 @c discussed here (why?  What is the -l global option for?).
8849 @c
8850 @c FIXME: probably should centralize this information
8851 @c here, at least to some extent.  Maybe by moving the
8852 @c loginfo, etc., nodes here and replacing
8853 @c the "user-defined logging" node with one node for
8854 @c each method.
8855 @c <en>You can customize @sc{cvs} to log various kinds of
8856 @c <en>actions, in whatever manner you choose.  These
8857 @c <en>mechanisms operate by executing a script at various
8858 @c <en>times.  The script might append a message to a file
8859 @c <en>listing the information and the programmer who created
8860 @c <en>it, or send mail to a group of developers, or, perhaps,
8861 @c <en>post a message to a particular newsgroup.  To log
8862 @c <en>commits, use the @file{loginfo} file (@pxref{loginfo}).
8863 @c <en>To log tags, use the @file{taginfo} file (@pxref{taginfo}).
8864 Você pode personalizar o @sc{cvs} para registrar vários
8865 tipos de ação, da forma que você escolher.  Estes
8866 mecanismos operam executando um script várias vezes.  O
8867 script deve anexar uma mensagem a um arquivo que lista
8868 as informações e o programador que as criou, ou mandar
8869 um e-mail para um grupo de desenvolvedores, ou, talvez,
8870 mandar uma mensagem para um newsgroup em particular.
8871 Para registrar os commits, usar o arquivo
8872 @file{loginfo} (@pxref{loginfo}).  Para registrar
8873 etiquetamentos, use o comando @file{taginfo}
8874 (@pxref{taginfo}).
8875 @c FIXME: What is difference between doing it in the
8876 @c modules file and using loginfo/taginfo?  Why should
8877 @c user use one or the other?
8878 @c <en>To log commits, checkouts, exports, and tags,
8879 @c <en>respectively, you can also use the @samp{-i},
8880 @c <en>@samp{-o}, @samp{-e}, and @samp{-t} options in the
8881 @c <en>modules file.  For a more flexible way of giving
8882 @c <en>notifications to various users, which requires less in
8883 @c <en>the way of keeping centralized scripts up to date, use
8884 @c <en>the @code{cvs watch add} command (@pxref{Getting
8885 @c <en>Notified}); this command is useful even if you are not
8886 @c <en>using @code{cvs watch on}.
8887 Para registrar ???commits???, ???checkouts???,
8888 exportações, e etiquetagens, você pode
8889 usar, respectivamente, as opções @samp{-i}, @samp{-o},
8890 @samp{-e} e @samp{-t} no arquivo modules.  Para uma
8891 forma mais flexível de notificar vários usuários, ???which requires less in
8892 the way of??? manter scripts centralizados atualizados,
8893 use o comando @code{cvs watch add} (@pxref{Recebendo
8894 Notificações}); este comando é útil mesmo se você não
8895 estiver usando @code{cvs watch on}.
8896
8897 @c <en>@node annotate
8898 @node annotate
8899 @c <en>@section Annotate command
8900 @section O comando annotate
8901 @c <en>@cindex annotate (subcommand)
8902 @cindex annotate (subcomando)
8903
8904 @c <en>@deffn Command {cvs annotate} [@code{-FflR}] [@code{-r rev}|@code{-D date}] files @dots{}
8905 @deffn Comando {cvs annotate} [@code{-FflR}] [@code{-r revisão}|@code{-D data}] arquivos @dots{}
8906
8907 @c <en>For each file in @var{files}, print the head revision
8908 @c <en>of the trunk, together with information on the last
8909 @c <en>modification for each line.  For example:
8910 Para cada arquivo em @var{arquivos}, imprime a revisão no topo
8911  do tronco, junto com informações a respeito
8912 da última modificação em cada linha.  Por exemplo:
8913
8914 @example
8915 $ cvs annotate ssfile
8916 Annotations for ssfile
8917 ***************
8918 1.1          (mary     27-Mar-96): ssfile line 1
8919 1.2          (joe      28-Mar-96): ssfile line 2
8920 @end example
8921
8922 @c <en>The file @file{ssfile} currently contains two lines.
8923 @c <en>The @code{ssfile line 1} line was checked in by
8924 @c <en>@code{mary} on March 27.  Then, on March 28, @code{joe}
8925 @c <en>added a line @code{ssfile line 2}, without modifying
8926 @c <en>the @code{ssfile line 1} line.  This report doesn't
8927 @c <en>tell you anything about lines which have been deleted
8928 @c <en>or replaced; you need to use @code{cvs diff} for that
8929 @c <en>(@pxref{diff}).
8930 O arquivo @file{ssfile} atualmente contém duas
8931 linhas.  A @code{linha 1 de ssfile} foi submetida por
8932 @code{mary} em March 27 (27 de março).  Então, em March
8933 28 (28 de março), @code{joe} adicionou a
8934 @code{linha 2 de ssfile}, sem modificar a
8935 @code{linha 1 de ssfile}.  Este relatório não te diz nada a
8936 respeito de linhas que foram deletadas ou substituídas;
8937 Você precisa usar o @code{cvs diff} para isto
8938 (@pxref{diff}).
8939
8940 @end deffn
8941
8942 @c <en>The options to @code{cvs annotate} are listed in
8943 @c <en>@ref{Invoking CVS}, and can be used to select the files
8944 @c <en>and revisions to annotate.  The options are described
8945 @c <en>in more detail there and in @ref{Common options}.
8946 As opções para o @code{cvs annotate} são listadas em
8947 @ref{Chamando o CVS} e podem ser usadas para selecionar
8948 os arquivos e revisões para o annotate.  As opções
8949 são descritas com mais detalhes lá e em @ref{Opções comuns}.
8950
8951 @c FIXME: maybe an example using the options?  Just
8952 @c what it means to select a revision might be worth a
8953 @c few words of explanation ("you want to see who
8954 @c changed this line *before* 1.4"...).
8955
8956 @c ---------------------------------------------------------------------
8957 @c <en>@node Binary files
8958 @node Arquivos binários
8959 @c <en>@chapter Handling binary files
8960 @chapter Manipulando arquivos binários
8961 @c <en>@cindex Binary files
8962 @cindex Arquivos binários
8963
8964 @c <en>The most common use for @sc{cvs} is to store text
8965 @c <en>files.  With text files, @sc{cvs} can merge revisions,
8966 @c <en>display the differences between revisions in a
8967 @c <en>human-visible fashion, and other such operations.
8968 @c <en>However, if you are willing to give up a few of these
8969 @c <en>abilities, @sc{cvs} can store binary files.  For
8970 @c <en>example, one might store a web site in @sc{cvs}
8971 @c <en>including both text files and binary images.
8972 O @sc{cvs} é usado normalmente para guardar arquivos
8973 texto.  Com arquivos texto o @sc{cvs} pode mesclar
8974 revisões, mostrar diferenças entre revisões de uma
8975 forma legível para humanos, e outras operações do
8976 tipo.  Entretanto, se você está disposto a abrir mão de
8977 algumas destas habilidades, o @sc{cvs} pode guardar
8978 arquivos binários.  Por exemplo, pode-se guardar um
8979 site no @sc{cvs} incluindo tanto os arquivos texto
8980 quanto as imagens em binário.
8981
8982 @menu
8983 @c <en>* Binary why::     More details on issues with binary files
8984 * Binary why::     Mais detalhes no que concerne a arquivos binários
8985 @c <en>* Binary howto::   How to store them
8986 * Binary howto::   Como guardá-los
8987 @end menu
8988
8989 @c <en>@node Binary why
8990 @node Binary why
8991 @c <en>@section The issues with binary files
8992 @section The issues with binary files
8993
8994 @c <en>While the need to manage binary files may seem obvious
8995 @c <en>if the files that you customarily work with are binary,
8996 @c <en>putting them into version control does present some
8997 @c <en>additional issues.
8998 ???While??? a necessidade de armazenar arquivos
8999 binários se mostra óbvia se os arquivos com os quais
9000 você normalmente trabalha são binários, botá-los
9001 dentro do controle de versões requer alguns cuidados
9002 adicionais.
9003
9004 @c <en>One basic function of version control is to show the
9005 @c <en>differences between two revisions.  For example, if
9006 @c <en>someone else checked in a new version of a file, you
9007 @c <en>may wish to look at what they changed and determine
9008 @c <en>whether their changes are good.  For text files,
9009 @c <en>@sc{cvs} provides this functionality via the @code{cvs
9010 @c <en>diff} command.  For binary files, it may be possible to
9011 @c <en>extract the two revisions and then compare them with a
9012 @c <en>tool external to @sc{cvs} (for example, word processing
9013 @c <en>software often has such a feature).  If there is no
9014 @c <en>such tool, one must track changes via other mechanisms,
9015 @c <en>such as urging people to write good log messages, and
9016 @c <en>hoping that the changes they actually made were the
9017 @c <en>changes that they intended to make.
9018 Uma habilidade básica de um controle de versões é mostrar
9019 as diferenças entre duas revisões.  Por exemplo, se
9020 outra pessoa submete (check in) uma nova versão de um
9021 arquivo, você pode querer ver o que foi mudado e
9022 determinar quais destas mudanças foram boas.  Para
9023 arquivos texto, o @sc{cvs} oferece esta funcionalidade
9024 através do comando @code{cvs diff}.  Para arquivos
9025 binários, existe uma chance de  extrair as duas
9026 revisões e então compará-las com uma ferramenta externa
9027 ao @sc{cvs} (por exemplo, alguns processadores de texto
9028 têm esta habilidade).  Se não existe tal ferramenta, é
9029 possível rastrear mudanças por outros meios, como por
9030 exemplo convencendo as pessoas a escreverem boas
9031 mensagens de registro (log), e torcendo para que as
9032 mudanças que eles realmente fizeram foram as que eles
9033 tinham intenção de fazer.
9034
9035 @c <en>Another ability of a version control system is the
9036 @c <en>ability to merge two revisions.  For @sc{cvs} this
9037 @c <en>happens in two contexts.  The first is when users make
9038 @c <en>changes in separate working directories
9039 @c <en>(@pxref{Multiple developers}).  The second is when one
9040 @c <en>merges explicitly with the @samp{update -j} command
9041 @c <en>(@pxref{Branching and merging}).
9042 Outra habilidade de um sistema de controle de versões é
9043 a capacidade de mesclar duas revisões.  No @sc{cvs}
9044 isto acontece em dois contextos.  O primeiro é quando
9045 os usuáriso fazem mudanças em diretórios de trabalho
9046 separados (@pxref{Múltiplos desenvolvedores}).  A
9047 segunda é quando alguém mescla explicitamente com o
9048 comando @samp{update -j} (@pxref{Ramificando e mesclando}).
9049
9050 @c <en>In the case of text
9051 @c <en>files, @sc{cvs} can merge changes made independently,
9052 @c <en>and signal a conflict if the changes conflict.  With
9053 @c <en>binary files, the best that @sc{cvs} can do is present
9054 @c <en>the two different copies of the file, and leave it to
9055 @c <en>the user to resolve the conflict.  The user may choose
9056 @c <en>one copy or the other, or may run an external merge
9057 @c <en>tool which knows about that particular file format, if
9058 @c <en>one exists.
9059 @c <en>Note that having the user merge relies primarily on the
9060 @c <en>user to not accidentally omit some changes, and thus is
9061 @c <en>potentially error prone.
9062 No caso de arquivos texto, o @sc{cvs} pode mesclar
9063 mudanças feitas independentemente, e avisar sobre um
9064 conflito se as mudanças conflitarem.  Com arquivos
9065 binários, o melhor que o @sc{cvs} pode fazer é
9066 fornecer as duas cópias diferentes do arquivo, e deixar
9067 a cargo do usuário a resolução do conflito.  O usuário
9068 pode escolher uma cópia ou a outra, ou pode rodar uma
9069 ferramenta externa de mesclagem que entenda aquele
9070 formato de arquivo em particular, se é que tal
9071 ferramenta exista. Observe que mesclagem feita pelo
9072 usuário se baseia no fato de o usuário não omitir
9073 acidentalmente algumas mudanças, e portanto é sujeita a erros.
9074
9075 @c <en>If this process is thought to be undesirable, the best
9076 @c <en>choice may be to avoid merging.  To avoid the merges
9077 @c <en>that result from separate working directories, see the
9078 @c <en>discussion of reserved checkouts (file locking) in
9079 @c <en>@ref{Multiple developers}.  To avoid the merges
9080 @c <en>resulting from branches, restrict use of branches.
9081 Se você acha que este processo é indesejável, a melhor
9082 escolha é evitar mesclagem.  Para evitar mesclagens
9083 resultantes de diretórios de trabalho separados, veja a
9084 discussão a respeito de ???reserved checkouts??? (travas
9085 de arquivo) em @ref{Múltiplos desenvolvedores}.  Para
9086 ecitar mesclagens resultantes de ramificações,
9087 restrinja o uso de ramos.
9088
9089 @c <en>@node Binary howto
9090 @node Binary howto
9091 @c <en>@section How to store binary files
9092 @section Como guardar arquivos binários
9093
9094 @c <en>There are two issues with using @sc{cvs} to store
9095 @c <en>binary files.  The first is that @sc{cvs} by default
9096 @c <en>converts line endings between the canonical form in
9097 @c <en>which they are stored in the repository (linefeed
9098 @c <en>only), and the form appropriate to the operating system
9099 @c <en>in use on the client (for example, carriage return
9100 @c <en>followed by line feed for Windows NT).
9101 Existem dois aspectos a considerar quando se usa o
9102 @sc{cvs} para guardar arquivos binários.  O primeiro é
9103 que o @sc{cvs}, por padrão, converte quebras de linhas
9104 entre a forma canônica na qual elas são guardadas no
9105 repositório (apenas ???linefeed???), e a forma
9106 apropriada para o sistema operacional no qual o cliente
9107 é usado (por exemplo, carriage return (retorno do
9108 carro) seguido por line feed (alimentação de linha)
9109 para o Windows NT).
9110
9111 @c <en>The second is that a binary file might happen to
9112 @c <en>contain data which looks like a keyword (@pxref{Keyword
9113 @c <en>substitution}), so keyword expansion must be turned
9114 @c <en>off.
9115 O segundo aspecto é que um arquivo binário pode conter
9116 dados que se pareçam com uma palavra-chave
9117 (@pxref{Substituição de palavra-chave}). Logo, a
9118 expansão de palavra-chave deve ser desativada.
9119
9120 @c FIXME: the third is that one can't do merges with
9121 @c binary files.  xref to Multiple Developers and the
9122 @c reserved checkout issues.
9123
9124 @c <en>The @samp{-kb} option available with some @sc{cvs}
9125 @c <en>commands insures that neither line ending conversion
9126 @c <en>nor keyword expansion will be done.
9127 A opção @samp{-kb} disponível com alguns comandos do
9128 @sc{cvs} garante que nem conversão de terminação de
9129 linha nem expansão de palavra-chave sejam usadas.
9130
9131 @c <en>Here is an example of how you can create a new file
9132 @c <en>using the @samp{-kb} flag:
9133 Aqui está um exemplo de como você pode criar um novo
9134 arquivo usando a opção @samp{-kb}:
9135
9136 @example
9137 $ echo '$@splitrcskeyword{}Id$' > kotest
9138 $ cvs add -kb -m"A test file" kotest
9139 $ cvs ci -m"First checkin; contains a keyword" kotest
9140 @end example
9141
9142 @c <en>If a file accidentally gets added without @samp{-kb},
9143 @c <en>one can use the @code{cvs admin} command to recover.
9144 @c <en>For example:
9145 Se um arquivo for acidentalmente adicionado sem o
9146 @samp{-kb}, é possível usar o comando @code{cvs admin}
9147 para reverter. Por exemplo:
9148
9149 @example
9150 $ echo '$@splitrcskeyword{}Id$' > kotest
9151 $ cvs add -m"A test file" kotest
9152 $ cvs ci -m"First checkin; contains a keyword" kotest
9153 $ cvs admin -kb kotest
9154 $ cvs update -A kotest
9155 # @r{For non-unix systems:}
9156 # @r{Copy in a good copy of the file from outside CVS}
9157 $ cvs commit -m "make it binary" kotest
9158 @end example
9159
9160 @c Trying to describe this for both unix and non-unix
9161 @c in the same description is very confusing.  Might
9162 @c want to split the two, or just ditch the unix "shortcut"
9163 @c (unixheads don't do much with binary files, anyway).
9164 @c This used to say "(Try the above example, and do a
9165 @c @code{cat kotest} after every command)".  But that
9166 @c only really makes sense for the unix case.
9167 @c <en>When you check in the file @file{kotest} the file is
9168 @c <en>not preserved as a binary file, because you did not
9169 @c <en>check it in as a binary file.  The @code{cvs
9170 @c <en>admin -kb} command sets the default keyword
9171 @c <en>substitution method for this file, but it does not
9172 @c <en>alter the working copy of the file that you have.  If you need to
9173 @c <en>cope with line endings (that is, you are using
9174 @c <en>@sc{cvs} on a non-unix system), then you need to
9175 @c <en>check in a new copy of the file, as shown by the
9176 @c <en>@code{cvs commit} command above.
9177 @c <en>On unix, the @code{cvs update -A} command suffices.
9178 Quando você submete o arquivo @file{kotest} o arquivo
9179 não é mantido como um arquivo binário, por que você não
9180 o submeteu como arquivo binário.  O comando @code{cvs
9181 admin -kb} ajusta o método de substituição da
9182 palavra-chave padrão para este arquivo, mas não altera
9183 a cópia de trabalho que você tem.  Se você tem que
9184 lidar com terminações de linha (ou seja, você está usando
9185 o @sc{cvs} em um sistema não-unix), então você precisa
9186 submeter uma nova cópia do arquivo, como mostrado no comando
9187 @code{cvs commit} acima. No unix, o comando @code{cvs
9188 update -A} basta.
9189 @c FIXME: should also describe what the *other users*
9190 @c need to do, if they have checked out copies which
9191 @c have been corrupted by lack of -kb.  I think maybe
9192 @c "cvs update -kb" or "cvs
9193 @c update -A" would suffice, although the user who
9194 @c reported this suggested removing the file, manually
9195 @c removing it from CVS/Entries, and then "cvs update"
9196 @c <en>(Note that you can use @code{cvs log} to determine the default keyword
9197 @c <en>substitution method for a file and @code{cvs status} to determine
9198 @c <en>the keyword substitution method for a working copy.)
9199 (Note que você pode usar o @code{cvs log} para
9200 determinar o métido de substituição de palavra-chave
9201 padrão para um arquivo e @code{cvs status} para
9202 determinar o método de substituição de palavra-chave
9203 para uma cópia de trabalho.)
9204
9205 @c <en>However, in using @code{cvs admin -k} to change the
9206 @c <en>keyword expansion, be aware that the keyword expansion
9207 @c <en>mode is not version controlled.  This means that, for
9208 @c <en>example, that if you have a text file in old releases,
9209 @c <en>and a binary file with the same name in new releases,
9210 @c <en>@sc{cvs} provides no way to check out the file in text
9211 @c <en>or binary mode depending on what version you are
9212 @c <en>checking out.  There is no good workaround for this
9213 @c <en>problem.
9214 Entretanto, ao usar @code{cvs admin -k} para mudar a
9215 expansão de palavra-chave, esteja atento para o fato de
9216 que o modo de expansão de palavra-chave não tem
9217 controle de versão.  Isto significa que, por exemplo,
9218 se você tem um arquivo texto em versões antigas, e um
9219 arquivo binário com o mesmo nome em novos releases,
9220 o @sc{cvs} não fornece uma forma de obter o arquivo em
9221 formato texto, ou binário, dependendo da versão que
9222 você estpa pegando.  Não existe uma boa solução
9223 alternativa para este problema.
9224
9225 @c <en>You can also set a default for whether @code{cvs add}
9226 @c <en>and @code{cvs import} treat a file as binary based on
9227 @c <en>its name; for example you could say that files who
9228 @c <en>names end in @samp{.exe} are binary.  @xref{Wrappers}.
9229 @c <en>There is currently no way to have @sc{cvs} detect
9230 @c <en>whether a file is binary based on its contents.  The
9231 @c <en>main difficulty with designing such a feature is that
9232 @c <en>it is not clear how to distinguish between binary and
9233 @c <en>non-binary files, and the rules to apply would vary
9234 @c <en>considerably with the operating system.
9235 Você também pode ajustar um padrão para quando o
9236 @code{cvs add} e o @code{cvs import} tratarem um
9237 arquivo como binário de acordo como o seu nome; por
9238 exemplo, você pode dizer que arquivos cujos nomes
9239 terminem com @samp{.exe} são binário.  @xref{Wrappers}.
9240 Não existe atualmente uma forma de fazer o @sc{cvs}
9241 detectar quando um arquivo é binário baseado em seu
9242 conteúdo.  A dificuldade principal em fazer isto é que
9243 não é claro como se faz para distinguir entre arquivos
9244 binários e não-binários, e as regras para serem
9245 aplicadas variam consideravelmente com o sistema
9246 operacional.
9247 @c For example, it would be good on MS-DOS-family OSes
9248 @c for anything containing ^Z to be binary.  Having
9249 @c characters with the 8th bit set imply binary is almost
9250 @c surely a bad idea in the context of ISO-8859-* and
9251 @c other such character sets.  On VMS or the Mac, we
9252 @c could use the OS's file typing.  This is a
9253 @c commonly-desired feature, and something of this sort
9254 @c may make sense.  But there are a lot of pitfalls here.
9255 @c
9256 @c Another, probably better, way to tell is to read the
9257 @c file in text mode, write it to a temp file in text
9258 @c mode, and then do a binary mode compare of the two
9259 @c files.  If they differ, it is a binary file.  This
9260 @c might have problems on VMS (or some other system
9261 @c with several different text modes), but in general
9262 @c should be relatively portable.  The only other
9263 @c downside I can think of is that it would be fairly
9264 @c slow, but that is perhaps a small price to pay for
9265 @c not having your files corrupted.  Another issue is
9266 @c what happens if you import a text file with bare
9267 @c linefeeds on Windows.  Such files will show up on
9268 @c Windows sometimes (I think some native windows
9269 @c programs even write them, on occasion).  Perhaps it
9270 @c is reasonable to treat such files as binary; after
9271 @c all it is something of a presumption to assume that
9272 @c the user would want the linefeeds converted to CRLF.
9273
9274 @c ---------------------------------------------------------------------
9275 @c <en>@node Multiple developers
9276 @node Múltiplos desenvolvedores
9277 @c <en>@chapter Multiple developers
9278 @chapter Múltiplos desenvolvedores
9279 @c <en>@cindex Multiple developers
9280 @cindex Múltiplos desenvolvedores
9281 @c <en>@cindex Team of developers
9282 @cindex Team of developers
9283 @c <en>@cindex File locking
9284 @cindex File locking
9285 @c <en>@cindex Locking files
9286 @cindex Locking files
9287 @c <en>@cindex Working copy
9288 @cindex Working copy
9289 @c <en>@cindex Reserved checkouts
9290 @cindex Reserved checkouts
9291 @c <en>@cindex Unreserved checkouts
9292 @cindex checkouts não-reservados
9293 @c <en>@cindex RCS-style locking
9294 @cindex RCS-style locking
9295
9296 @c <en>When more than one person works on a software project
9297 @c <en>things often get complicated.  Often, two people try to
9298 @c <en>edit the same file simultaneously.  One solution, known
9299 @c <en>as @dfn{file locking} or @dfn{reserved checkouts}, is
9300 @c <en>to allow only one person to edit each file at a time.
9301 @c <en>This is the only solution with some version control
9302 @c <en>systems, including @sc{rcs} and @sc{sccs}.  Currently
9303 @c <en>the usual way to get reserved checkouts with @sc{cvs}
9304 @c <en>is the @code{cvs admin -l} command (@pxref{admin
9305 @c <en>options}).  This is not as nicely integrated into
9306 @c <en>@sc{cvs} as the watch features, described below, but it
9307 @c <en>seems that most people with a need for reserved
9308 @c <en>checkouts find it adequate.
9309 Quando mais de uma pessoa trabalham em um projeto de
9310 software freqüentemente surgem complicações.  Às vezes
9311 duas pessoas tentam editar o mesmo arquivo
9312 simultaneamente.  Uma solução, conhecida como
9313 @dfn{trava de arquivo} ou @dfn{???checkout???
9314 reservado}, é permitir, para cada arquivo, que apenas
9315 uma pessoa por vez edite o arquivo. Esta é a única
9316 solução em alguns sistemas de controle de versão,
9317 incluindo @sc{rcs} e @sc{sccs}.  Atualmente, a forma
9318 normal de se ter ???checkouts??? reservados com o @sc{cvs}
9319 é com o comando @code{cvs admin -l} (@pxref{admin
9320 options}).  Isto não é tão integrado com o @sc{cvs}
9321 quanto a habilidade de ???watch???, descrita abaixo,
9322 mas vemos que a maioria das pessoas que necessitam de
9323 ???checkouts??? reservados acham isto adequado.
9324 @c Or "find it better than worrying about implementing
9325 @c nicely integrated reserved checkouts" or ...?
9326 @c <en>It also may be possible to use the watches
9327 @c <en>features described below, together with suitable
9328 @c <en>procedures (not enforced by software), to avoid having
9329 @c <en>two people edit at the same time.
9330 Também é possível usar a habilidade de trabalhar com
9331 descrita a seguir, junto com alguns procedimentos
9332 adequados (que o sotware não obriga), para evitar que
9333 duas pessoas editem o mesmo arquivo ao mesmo tempo.
9334
9335 @c Our unreserved checkout model might not
9336 @c be quite the same as others.  For example, I
9337 @c think that some systems will tend to create a branch
9338 @c in the case where CVS prints "up-to-date check failed".
9339 @c It isn't clear to me whether we should try to
9340 @c explore these subtleties; it could easily just
9341 @c confuse people.
9342 @c <en>The default model with @sc{cvs} is known as
9343 @c <en>@dfn{unreserved checkouts}.  In this model, developers
9344 @c <en>can edit their own @dfn{working copy} of a file
9345 @c <en>simultaneously.  The first person that commits his
9346 @c <en>changes has no automatic way of knowing that another
9347 @c <en>has started to edit it.  Others will get an error
9348 @c <en>message when they try to commit the file.  They must
9349 @c <en>then use @sc{cvs} commands to bring their working copy
9350 @c <en>up to date with the repository revision.  This process
9351 @c <en>is almost automatic.
9352 O modelo padrão no @sc{cvs} é conhecido como
9353 @dfn{???checkouts??? não-reservados}.  Neste modelo, os
9354 desenvolvedores podem editar sua própria @dfn{cópia de
9355 trabalho} de um arquivo simultaneamente.  A primeira
9356 pessoa que ???commits??? suas mudanças não tem uma
9357 forma automática de saber que outra pessoa começou a
9358 editar o mesmo arquivo.  Os outros vão receber uma
9359 mensagem de erro quando tentarem ???commit??? o
9360 arquivo.  Eles então terão que usar comandos do
9361 @sc{cvs} para tornar sua cópia local atualizada em
9362 relação à revisão no repositório.  Este processo é
9363 quase automático.
9364
9365 @c FIXME? should probably use the word "watch" here, to
9366 @c tie this into the text below and above.
9367 @c <en>@sc{cvs} also supports mechanisms which facilitate
9368 @c <en>various kinds of communication, without actually
9369 @c <en>enforcing rules like reserved checkouts do.
9370 O @sc{cvs} também dá suporte a mecanismos que facilitam
9371 várias formas de comunicação, sem regras realmente
9372 obrigatórias como acontece com os ???checkouts??? reservados.
9373
9374 @c <en>The rest of this chapter describes how these various
9375 @c <en>models work, and some of the issues involved in
9376 @c <en>choosing between them.
9377 O restante deste capítulo descreve como estes vários
9378 modelos funcionam, e alguns dos aspectos envolvidos na
9379 hora de escolher entre eles.
9380
9381 @ignore
9382 @c <en>Here is a draft reserved checkout design or discussion
9383 @c <en>of the issues.  This seems like as good a place as any
9384 @c <en>for this.
9385 Here is a draft reserved checkout design or discussion
9386 of the issues.  This seems like as good a place as any
9387 for this.
9388
9389 @c <en>Might want a cvs lock/cvs unlock--in which the names
9390 @c <en>differ from edit/unedit because the network must be up
9391 @c <en>for these to work.  unedit gives an error if there is a
9392 @c <en>reserved checkout in place (so that people don't
9393 @c <en>accidentally leave locks around); unlock gives an error
9394 @c <en>if one is not in place (this is more arguable; perhaps
9395 @c <en>it should act like unedit in that case).
9396 Might want a cvs lock/cvs unlock--in which the names
9397 differ from edit/unedit because the network must be up
9398 for these to work.  unedit gives an error if there is a
9399 reserved checkout in place (so that people don't
9400 accidentally leave locks around); unlock gives an error
9401 if one is not in place (this is more arguable; perhaps
9402 it should act like unedit in that case).
9403
9404 @c <en>On the other hand, might want it so that emacs,
9405 @c <en>scripts, etc., can get ready to edit a file without
9406 @c <en>having to know which model is in use.  In that case we
9407 @c <en>would have a "cvs watch lock" (or .cvsrc?) (that is,
9408 @c <en>three settings, "on", "off", and "lock").  Having cvs
9409 @c <en>watch lock set would cause a get to record in the CVS
9410 @c <en>directory which model is in use, and cause "cvs edit"
9411 @c <en>to change behaviors.  We'd want a way to query which
9412 @c <en>setting is in effect (this would be handy even if it is
9413 @c <en>only "on" or "off" as presently).  If lock is in
9414 @c <en>effect, then commit would require a lock before
9415 @c <en>allowing a checkin; chmod wouldn't suffice (might be
9416 @c <en>debatable--see chmod comment below, in watches--but it
9417 @c <en>is the way people expect RCS to work and I can't think
9418 @c <en>of any significant downside.  On the other hand, maybe
9419 @c <en>it isn't worth bothering, because people who are used
9420 @c <en>to RCS wouldn't think to use chmod anyway).
9421 On the other hand, might want it so that emacs,
9422 scripts, etc., can get ready to edit a file without
9423 having to know which model is in use.  In that case we
9424 would have a "cvs watch lock" (or .cvsrc?) (that is,
9425 three settings, "on", "off", and "lock").  Having cvs
9426 watch lock set would cause a get to record in the CVS
9427 directory which model is in use, and cause "cvs edit"
9428 to change behaviors.  We'd want a way to query which
9429 setting is in effect (this would be handy even if it is
9430 only "on" or "off" as presently).  If lock is in
9431 effect, then commit would require a lock before
9432 allowing a checkin; chmod wouldn't suffice (might be
9433 debatable--see chmod comment below, in watches--but it
9434 is the way people expect RCS to work and I can't think
9435 of any significant downside.  On the other hand, maybe
9436 it isn't worth bothering, because people who are used
9437 to RCS wouldn't think to use chmod anyway).
9438
9439 @c <en>Implementation: use file attributes or use RCS
9440 @c <en>locking.  The former avoids more dependence on RCS
9441 @c <en>behaviors we will need to reimplement as we librarify
9442 @c <en>RCS, and makes it easier to import/export RCS files (in
9443 @c <en>that context, want to ignore the locker field).  But
9444 @c <en>note that RCS locks are per-branch, which is the
9445 @c <en>correct behavior (this is also an issue for the "watch
9446 @c <en>on" features; they should be per-branch too).
9447 Implementation: use file attributes or use RCS
9448 locking.  The former avoids more dependence on RCS
9449 behaviors we will need to reimplement as we librarify
9450 RCS, and makes it easier to import/export RCS files (in
9451 that context, want to ignore the locker field).  But
9452 note that RCS locks are per-branch, which is the
9453 correct behavior (this is also an issue for the "watch
9454 on" features; they should be per-branch too).
9455
9456 @c <en>Here are a few more random notes about implementation
9457 @c <en>details, assuming "cvs watch lock" and
9458 Here are a few more random notes about implementation
9459 details, assuming "cvs watch lock" and
9460
9461 @c <en>CVS/Watched file?  Or try to fit this into CVS/Entries somehow?
9462 @c <en>Cases: (1) file is checked out (unreserved or with watch on) by old
9463 @c <en>version of @sc{cvs}, now we do something with new one, (2) file is checked
9464 @c <en>out by new version, now we do something with old one.
9465 CVS/Watched file?  Or try to fit this into CVS/Entries somehow?
9466 Cases: (1) file is checked out (não-reservado or with watch on) by old
9467 version of @sc{cvs}, now we do something with new one, (2) file is checked
9468 out by new version, now we do something with old one.
9469
9470 @c <en>Remote protocol would have a "Watched" analogous to "Mode".  Of course
9471 @c <en>it would apply to all Updated-like requests.  How do we keep this
9472 @c <en>setting up to date?  I guess that there wants to be a Watched request,
9473 @c <en>and the server would send a new one if it isn't up to date? (Ugh--hard
9474 @c <en>to implement and slows down "cvs -q update"--is there an easier way?)
9475 Remote protocol would have a "Watched" analogous to "Mode".  Of course
9476 it would apply to all Updated-like requests.  How do we keep this
9477 setting up to date?  I guess that there wants to be a Watched request,
9478 and the server would send a new one if it isn't up to date? (Ugh--hard
9479 to implement and slows down "cvs -q update"--is there an easier way?)
9480
9481 @c <en>"cvs edit"--checks CVS/Watched, and if watch lock, then sends
9482 @c <en>"edit-lock" request.  Which comes back with a Checked-in with
9483 @c <en>appropriate Watched (off, on, lock, locked, or some such?), or error
9484 @c <en>message if already locked.
9485 "cvs edit"--checks CVS/Watched, and if watch lock, then sends
9486 "edit-lock" request.  Which comes back with a Checked-in with
9487 appropriate Watched (off, on, lock, locked, or some such?), or error
9488 message if already locked.
9489
9490 @c <en>"cvs commit"--only will commit if off/on/locked.  lock is not OK.
9491 "cvs commit"--only will commit if off/on/locked.  lock is not OK.
9492
9493 @c <en>Doc:
9494 @c <en>note that "cvs edit" must be connected to network if watch lock is in
9495 @c <en>effect.
9496 Doc:
9497 note that "cvs edit" must be connected to network if watch lock is in
9498 effect.
9499
9500 @c <en>Talk about what to do if someone has locked a file and you want to
9501 @c <en>edit that file.  (breaking locks, or lack thereof).
9502 Talk about what to do if someone has locked a file and you want to
9503 edit that file.  (breaking locks, or lack thereof).
9504
9505
9506 @c <en>One other idea (which could work along with the
9507 @c <en>existing "cvs admin -l" reserved checkouts, as well as
9508 @c <en>the above):
9509 One other idea (which could work along with the
9510 existing "cvs admin -l" reserved checkouts, as well as
9511 the above):
9512
9513 @c <en>"cvs editors" could show who has the file locked, if
9514 @c <en>someone does.
9515 "cvs editors" could show who has the file locked, if
9516 someone does.
9517
9518 @end ignore
9519
9520 @menu
9521 @c <en>* File status::                 A file can be in several states
9522 * Estado de arquivo::           Um arquivo pode ter vários estados
9523 @c <en>* Updating a file::             Bringing a file up-to-date
9524 * Atualizando um arquivo::      Deixando um arquivo atualizado
9525 @c <en>* Conflicts example::           An informative example
9526 * Exemplo de conflitos::        Um exemplo informativo
9527 @c <en>* Informing others::            To cooperate you must inform
9528 * Informando os outros::        Para cooperar você deve informar
9529 @c <en>* Concurrency::                 Simultaneous repository access
9530 * Concorrência::                Acesso simultâneo ao repositório
9531 @c <en>* Watches::                     Mechanisms to track who is editing files
9532 * ???Watches???::               Mecanismos para rastrear quem está editando arquivos
9533 @c <en>* Choosing a model::            Reserved or unreserved checkouts?
9534 * Escolhendo um modelo::        ???checkout??? reservado ou não-reservado?
9535 @end menu
9536
9537 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9538 @c <en>@node File status
9539 @node Estado de arquivo
9540 @c <en>@section File status
9541 @section Estado de arquivo
9542 @c <en>@cindex File status
9543 @cindex Estado de arquivo
9544 @c <en>@cindex Status of a file
9545 @cindex Estado de um arquivo
9546
9547 @c Shouldn't this start with an example or something,
9548 @c introducing the unreserved checkout model?  Before we
9549 @c dive into listing states?
9550 @c <en>Based on what operations you have performed on a
9551 @c <en>checked out file, and what operations others have
9552 @c <en>performed to that file in the repository, one can
9553 @c <en>classify a file in a number of states.  The states, as
9554 @c <en>reported by the @code{status} command, are:
9555 Baseado em quais operações você realizou num arquivo
9556 ???checked out???, e quais operações outros realizaram
9557 neste arquivo no repositório, podemos classificar o
9558 arquivo em vários estados.  Os estados, como são
9559 mostrados pelo comando @code{status}, são:
9560
9561 @c The order of items is chosen to group logically
9562 @c similar outputs together.
9563 @c People who want alphabetical can use the index...
9564 @table @asis
9565 @c <en>@cindex Up-to-date
9566 @cindex Up-to-date (Atualizado)
9567 @c <en>@item Up-to-date
9568 @item Up-to-date (Atualizado)
9569 @c <en>The file is identical with the latest revision in the
9570 @c <en>repository for the branch in use.
9571 O arquivo é identico à última revisão no repositório,
9572 para o ramo em questão.
9573 @c FIXME: should we clarify "in use"?  The answer is
9574 @c sticky tags, and trying to distinguish branch sticky
9575 @c tags from non-branch sticky tags seems rather awkward
9576 @c here.
9577 @c FIXME: What happens with non-branch sticky tags?  Is
9578 @c a stuck file "Up-to-date" or "Needs checkout" or what?
9579
9580 @c <en>@item Locally Modified
9581 @item Locally Modified (Modificado localmente)
9582 @c <en>@cindex Locally Modified
9583 @cindex Locally Modified (Modificado localmente)
9584 @c <en>You have edited the file, and not yet committed your changes.
9585 Você alterou o arquivo, e ainda não ???committed???
9586 suas mudanças.
9587
9588 @c <en>@item Locally Added
9589 @item Locally Added (Adicionado localmente)
9590 @c <en>@cindex Locally Added
9591 @cindex Locally Added (Adicionado localmente)
9592 @c <en>You have added the file with @code{add}, and not yet
9593 @c <en>committed your changes.
9594 Você adicionou o arquivo com @code{add}, e ainda não
9595 ???committed??? suas mudanças.
9596 @c There are many cases involving the file being
9597 @c added/removed/modified in the working directory, and
9598 @c added/removed/modified in the repository, which we
9599 @c don't try to describe here.  I'm not sure that "cvs
9600 @c status" produces a non-confusing output in most of
9601 @c those cases.
9602
9603 @c <en>@item Locally Removed
9604 @item Locally Removed (Removido localmente)
9605 @c <en>@cindex Locally Removed
9606 @cindex Locally Removed (Removido localmente)
9607 @c <en>You have removed the file with @code{remove}, and not yet
9608 @c <en>committed your changes.
9609 Você removeu o arquivo com @code{remove}, e ainda não
9610 ???committed??? suas mudanças.
9611
9612 @c <en>@item Needs Checkout
9613 @item Needs Checkout (Precisa de ???checkout???)
9614 @c <en>@cindex Needs Checkout
9615 @cindex Needs Checkout (Precisa de ???checkout???)
9616 @c <en>Someone else has committed a newer revision to the
9617 @c <en>repository.  The name is slightly misleading; you will
9618 @c <en>ordinarily use @code{update} rather than
9619 @c <en>@code{checkout} to get that newer revision.
9620 Alguém ???committed??? uma revisão nova no repositório.
9621 O nome está um pouco confuso; você normalmente vai usar
9622 @code{update} ao invés de @code{checkout} para obter a
9623 nova revisão.
9624
9625 @c <en>@item Needs Patch
9626 @item Needs Patch (Precisa de ???patch???)
9627 @c <en>@cindex Needs Patch
9628 @cindex Needs Patch (Precisa de ???patch???)
9629 @c See also newb-123j0 in sanity.sh (although that case
9630 @c should probably be changed rather than documented).
9631 @c <en>Like Needs Checkout, but the @sc{cvs} server will send
9632 @c <en>a patch rather than the entire file.  Sending a patch or
9633 @c <en>sending an entire file accomplishes the same thing.
9634 Igual a 'Needs Checkout', mas o servidor do @sc{cvs}
9635 vai mandar um ???patch??? ao invés de um arquivo
9636 inteiro.  Mandar um ???patch??? ou um arquivo inteiro
9637 dá no mesmo.
9638
9639 @c <en>@item Needs Merge
9640 @item Needs Merge (Precisa mesclar)
9641 @c <en>@cindex Needs Merge
9642 @cindex Needs Merge (Precisa mesclar)
9643 @c <en>Someone else has committed a newer revision to the repository, and you
9644 @c <en>have also made modifications to the file.
9645 Outra pessoa ???committed??? uma nova revisão no
9646 repositório, e você fez modificações no arquivo.
9647
9648 @c <en>@item Unresolved Conflict
9649 @item Unresolved Conflict (Conflito não-solucionado)
9650 @c <en>@cindex Unresolved Conflict
9651 @cindex Unresolved Conflict (Conflito não-solucionado)
9652 @c FIXCVS - This file status needs to be changed to some more informative
9653 @c text that distinguishes it more clearly from each of the Locally Added,
9654 @c File had conflicts on merge, and Unknown status types, but an exact and
9655 @c succinct wording escapes me at the moment.
9656 @c <en>A file with the same name as this new file has been added to the repository
9657 @c <en>from a second workspace.  This file will need to be moved out of the way
9658 @c <en>to allow an @code{update} to complete.
9659 Um arquivo com o mesmo nome deste arquivo novo foi
9660 adicionado ao repositório a partir de outra área de
9661 trabalho.  Este arquivo vai ter que ser movido para que
9662 não atrapalhe um @code{update} de completar.
9663
9664 @c <en>@item File had conflicts on merge
9665 @item File had conflicts on merge (Arquivo teve conflitos na mescla)
9666 @c <en>@cindex File had conflicts on merge
9667 @cindex File had conflicts on merge (Arquivo teve conflitos na mescla)
9668 @c is it worth saying that this message was "Unresolved
9669 @c Conflict" in CVS 1.9 and earlier?  I'm inclined to
9670 @c think that is unnecessarily confusing to new users.
9671 @c <en>This is like Locally Modified, except that a previous
9672 @c <en>@code{update} command gave a conflict.  If you have not
9673 @c <en>already done so, you need to
9674 @c <en>resolve the conflict as described in @ref{Conflicts example}.
9675 Isto é parecido com 'Locally Modified', com a diferença que o comando
9676 @code{update} anterior produziu um conflito.  Se você
9677 ainda não o fez, precisa resolver o conflito, como é
9678 descrito em @ref{Exemplo de conflitos}.
9679
9680 @c <en>@item Unknown
9681 @item Unknown (Desconhecido)
9682 @c <en>@cindex Unknown
9683 @cindex Unknown (Desconhecido)
9684 @c <en>@sc{cvs} doesn't know anything about this file.  For
9685 @c <en>example, you have created a new file and have not run
9686 @c <en>@code{add}.
9687 O @sc{cvs} não sabe nada a respeito deste arquivo.  Por
9688 exemplo, você criou um novo arquivo e não rodou um
9689 @code{add}.
9690 @c
9691 @c "Entry Invalid" and "Classify Error" are also in the
9692 @c status.c.  The latter definitely indicates a CVS bug
9693 @c (should it be worded more like "internal error" so
9694 @c people submit bug reports if they see it?).  The former
9695 @c I'm not as sure; I haven't tracked down whether/when it
9696 @c appears in "cvs status" output.
9697
9698 @end table
9699
9700 @c <en>To help clarify the file status, @code{status} also
9701 @c <en>reports the @code{Working revision} which is the
9702 @c <en>revision that the file in the working directory derives
9703 @c <en>from, and the @code{Repository revision} which is the
9704 @c <en>latest revision in the repository for the branch in
9705 @c <en>use.
9706 Para facilitar o entendimento do estado do arquivo, o
9707 comando @code{status} também relata a @code{revisão de
9708 trabalho}, que é a revisão da qual o arquivo no
9709 diretório de trabalho deriva, e a @code{Revisão de
9710 repositório} que é a mais recente revisão no
9711 repositório, para o ramo em uso.
9712 @c FIXME: should we clarify "in use"?  The answer is
9713 @c sticky tags, and trying to distinguish branch sticky
9714 @c tags from non-branch sticky tags seems rather awkward
9715 @c here.
9716 @c FIXME: What happens with non-branch sticky tags?
9717 @c What is the Repository Revision there?  See the
9718 @c comment at vn_rcs in cvs.h, which is kind of
9719 @c confused--we really need to document better what this
9720 @c field contains.
9721 @c Q: Should we document "New file!" and other such
9722 @c outputs or are they self-explanatory?
9723 @c FIXME: what about the date to the right of "Working
9724 @c revision"?  It doesn't appear with client/server and
9725 @c seems unnecessary (redundant with "ls -l") so
9726 @c perhaps it should be removed for non-client/server too?
9727 @c FIXME: Need some examples.
9728 @c FIXME: Working revision can also be something like
9729 @c "-1.3" for a locally removed file.  Not at all
9730 @c self-explanatory (and it is possible that CVS should
9731 @c be changed rather than documenting this).
9732
9733 @c Would be nice to have an @example showing output
9734 @c from cvs status, with comments showing the xref
9735 @c where each part of the output is described.  This
9736 @c might fit in nicely if it is desirable to split this
9737 @c node in two; one to introduce "cvs status" and one
9738 @c to list each of the states.
9739 @c <en>The options to @code{status} are listed in
9740 @c <en>@ref{Invoking CVS}.  For information on its @code{Sticky tag}
9741 @c <en>and @code{Sticky date} output, see @ref{Sticky tags}.
9742 @c <en>For information on its @code{Sticky options} output,
9743 @c <en>see the @samp{-k} option in @ref{update options}.
9744 As opções para o comando @code{status} são listadas em
9745 @ref{Chamando o CVS}.  Para informações sobre suas
9746 saídas @code{Sticky tag (Etiqueta adesiva)} e
9747 @code{Sticky date (data adesiva)} veja em
9748 @ref{Etiquetas adesivas}. Para informações na saída
9749 @code{Sticky options (Opções adesivas)}, veja a
9750 opção @samp{-k} em @ref{update options}.
9751
9752 @c <en>You can think of the @code{status} and @code{update}
9753 @c <en>commands as somewhat complementary.  You use
9754 @c <en>@code{update} to bring your files up to date, and you
9755 @c <en>can use @code{status} to give you some idea of what an
9756 @c <en>@code{update} would do (of course, the state of the
9757 @c <en>repository might change before you actually run
9758 @c <en>@code{update}).  In fact, if you want a command to
9759 @c <en>display file status in a more brief format than is
9760 @c <en>displayed by the @code{status} command, you can invoke
9761 Você pode pensar nos comandos @code{status} e
9762 @code{update} como complementares.  Você usa o
9763 @code{update} para atualizar seus arquivos, e você pode
9764 usar o @code{status} para ter idéia do que um
9765 @code{update} deve fazer (obviamente, o estado do
9766 repositório pode mudar depois que você rodar o
9767 @code{update}).  De fato, se você quiser um comando
9768 para mostrar o estado de arquivos num formato mais
9769 conciso do que o comando @code{status} mostra, você
9770 pode invocar
9771
9772 @c <en>@cindex update, to display file status
9773 @cindex update, para mostrar o estado dos arquivos
9774 @example
9775 $ cvs -n -q update
9776 @end example
9777
9778 @c <en>The @samp{-n} option means to not actually do the
9779 @c <en>update, but merely to display statuses; the @samp{-q}
9780 @c <en>option avoids printing the name of each directory.  For
9781 @c <en>more information on the @code{update} command, and
9782 @c <en>these options, see @ref{Invoking CVS}.
9783 A opção @samp{-n} significa fingir que faz a
9784 atualização, mas simplesmente mostrar o estado; a opção
9785 @samp{-q} suprime a exibição do nome de cada
9786 diretório.  Para mais informações sobre o comando
9787 @code{update}, e opções, veja em @ref{Chamando o CVS}.
9788
9789 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9790 @c <en>@node Updating a file
9791 @node Atualizando um arquivo
9792 @c <en>@section Bringing a file up to date
9793 @section Deixando um arquivo atualizado
9794 @c <en>@cindex Bringing a file up to date
9795 @cindex Deixando um arquivo atualizado
9796 @c <en>@cindex Updating a file
9797 @cindex Atualizando um arquivo
9798 @c <en>@cindex Merging a file
9799 @cindex Mesclando um arquivo
9800 @c <en>@cindex Update, introduction
9801 @cindex Update, introdução
9802
9803 @c <en>When you want to update or merge a file, use the @code{update}
9804 @c <en>command.  For files that are not up to date this is roughly equivalent
9805 @c <en>to a @code{checkout} command: the newest revision of the file is
9806 @c <en>extracted from the repository and put in your working directory.
9807 Quando você quiser atualizar ou mesclar um arquivo, use o
9808 comando @code{update}.  Para arquivos que não estão
9809 atualizados isto é mais ou menos equivalente ao comando
9810 @code{checkout}: a revisão mais nova do arquivo é
9811 extraída do repositório e posta no diretório de trabalho.
9812
9813 @c <en>Your modifications to a file are never lost when you
9814 @c <en>use @code{update}.  If no newer revision exists,
9815 @c <en>running @code{update} has no effect.  If you have
9816 @c <en>edited the file, and a newer revision is available,
9817 @c <en>@sc{cvs} will merge all changes into your working copy.
9818 Suas modificações num arquivo nunca são perdidas quando
9819 você usa @code{update}.  Se não existe uma revisão mais
9820 nova, o @code{update} não faz nada.  Se você
9821 editou o arquivo, e uma nova revisão está disponível, o
9822 @sc{cvs} vai mesclar todas as alterações na sua cópia
9823 de trabalho.
9824
9825 @c <en>For instance, imagine that you checked out revision 1.4 and started
9826 @c <en>editing it.  In the meantime someone else committed revision 1.5, and
9827 @c <en>shortly after that revision 1.6.  If you run @code{update} on the file
9828 @c <en>now, @sc{cvs} will incorporate all changes between revision 1.4 and 1.6 into
9829 @c <en>your file.
9830 Por exemplo, imagine que você ???checked out??? a
9831 revisão 1.4 e começou a editá-la.  Enquanto isto, outra
9832 pessoa ???committed??? a revisão 1.5, e logo depois a
9833 revisão 1.6.  Se você rodar @code{update} no arquivo
9834 agora, o @sc{cvs} vai incorporar todas as mudanças
9835 entre a revisão 1.4 e 1.6 no seu arquivo.
9836
9837 @c <en>@cindex Overlap
9838 @cindex Sobreposição
9839 @c <en>If any of the changes between 1.4 and 1.6 were made too
9840 @c <en>close to any of the changes you have made, an
9841 @c <en>@dfn{overlap} occurs.  In such cases a warning is
9842 @c <en>printed, and the resulting file includes both
9843 @c <en>versions of the lines that overlap, delimited by
9844 @c <en>special markers.
9845 @c <en>@xref{update}, for a complete description of the
9846 @c <en>@code{update} command.
9847 Se quaisquer das mudanças entre 1.4 e 1.6 ocorreram
9848 suficientemente próximas de quaisquer das suas
9849 mudanças, uma @dfn{sobreposição} ocorre.  Nestes casos
9850 um aviso é mostrado, e o arquivo resultante contém
9851 ambas as versões das linhas que se sobrepuseram,
9852 delimitadas por marcadores especiais. @xref{update},
9853 para uma descrição completa do comando @code{update}.
9854
9855 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9856 @c <en>@node Conflicts example
9857 @node Exemplo de conflitos
9858 @c <en>@section Conflicts example
9859 @section Exemplo de conflitos
9860 @c <en>@cindex Merge, an example
9861 @cindex Merge, an example
9862 @c <en>@cindex Example of merge
9863 @cindex Example of merge
9864 @c <en>@cindex driver.c (merge example)
9865 @cindex driver.c (merge example)
9866
9867 @c <en>Suppose revision 1.4 of @file{driver.c} contains this:
9868 Suponha que a revisão 1.4 de @file{driver.c} contém isto:
9869
9870 @example
9871 #include <stdio.h>
9872
9873 void main()
9874 @{
9875     parse();
9876     if (nerr == 0)
9877         gencode();
9878     else
9879         fprintf(stderr, "No code generated.\n");
9880     exit(nerr == 0 ? 0 : 1);
9881 @}
9882 @end example
9883
9884 @noindent
9885 @c <en>Revision 1.6 of @file{driver.c} contains this:
9886 A revisão 1.6 de @file{driver.c} contém isto:
9887
9888 @example
9889 #include <stdio.h>
9890
9891 int main(int argc,
9892          char **argv)
9893 @{
9894     parse();
9895     if (argc != 1)
9896     @{
9897         fprintf(stderr, "tc: No args expected.\n");
9898         exit(1);
9899     @}
9900     if (nerr == 0)
9901         gencode();
9902     else
9903         fprintf(stderr, "No code generated.\n");
9904     exit(!!nerr);
9905 @}
9906 @end example
9907
9908 @noindent
9909 @c <en>Your working copy of @file{driver.c}, based on revision
9910 @c <en>1.4, contains this before you run @samp{cvs update}:
9911 @c <en>@c -- Really include "cvs"?
9912 Sua cópia de trabalho de @file{driver.c}, baseada na
9913 revisão 1.4, contém isto, antes de você rodar um @samp{cvs update}:
9914 @c -- Really include "cvs"?
9915
9916 @example
9917 #include <stdlib.h>
9918 #include <stdio.h>
9919
9920 void main()
9921 @{
9922     init_scanner();
9923     parse();
9924     if (nerr == 0)
9925         gencode();
9926     else
9927         fprintf(stderr, "No code generated.\n");
9928     exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
9929 @}
9930 @end example
9931
9932 @noindent
9933 @c <en>You run @samp{cvs update}:
9934 @c <en>@c -- Really include "cvs"?
9935 Então você roda o @samp{cvs update}:
9936 @c -- Really include "cvs"?
9937
9938 @example
9939 $ cvs update driver.c
9940 RCS file: /usr/local/cvsroot/yoyodyne/tc/driver.c,v
9941 retrieving revision 1.4
9942 retrieving revision 1.6
9943 Merging differences between 1.4 and 1.6 into driver.c
9944 rcsmerge warning: overlaps during merge
9945 cvs update: conflicts found in driver.c
9946 C driver.c
9947 @end example
9948
9949 @noindent
9950 @c <en>@cindex Conflicts (merge example)
9951 @cindex Conflitos (exemplo de mesclagem)
9952 @c <en>@sc{cvs} tells you that there were some conflicts.
9953 @c <en>Your original working file is saved unmodified in
9954 @c <en>@file{.#driver.c.1.4}.  The new version of
9955 @c <en>@file{driver.c} contains this:
9956 O @sc{cvs} disse a você que existem conflitos.
9957 Seu arquivo de trabalho original é guardado sem
9958 modificações em @file{.#driver.c.1.4}.  A nova versão
9959 de @file{driver.c} contém isto:
9960
9961 @example
9962 #include <stdlib.h>
9963 #include <stdio.h>
9964
9965 int main(int argc,
9966          char **argv)
9967 @{
9968     init_scanner();
9969     parse();
9970     if (argc != 1)
9971     @{
9972         fprintf(stderr, "tc: No args expected.\n");
9973         exit(1);
9974     @}
9975     if (nerr == 0)
9976         gencode();
9977     else
9978         fprintf(stderr, "No code generated.\n");
9979 @asis{}<<<<<<< driver.c
9980     exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
9981 @asis{}=======
9982     exit(!!nerr);
9983 @asis{}>>>>>>> 1.6
9984 @}
9985 @end example
9986
9987 @noindent
9988 @c <en>@cindex Markers, conflict
9989 @cindex Marcadores, conflito
9990 @c <en>@cindex Conflict markers
9991 @cindex Marcadores de conflito
9992 @c <en>@cindex <<<<<<<
9993 @cindex <<<<<<<
9994 @c <en>@cindex >>>>>>>
9995 @cindex >>>>>>>
9996 @c <en>@cindex =======
9997 @cindex =======
9998
9999 @c <en>Note how all non-overlapping modifications are incorporated in your working
10000 @c <en>copy, and that the overlapping section is clearly marked with
10001 @c <en>@samp{<<<<<<<}, @samp{=======} and @samp{>>>>>>>}.
10002 Observe como todas as modificações sem sobreposição
10003 foram incorporadas na sua cópia de trabalho, e que as
10004 seções com sobreposição são marcadas de forma clara com
10005 @samp{<<<<<<<}, @samp{=======} e @samp{>>>>>>>}.
10006
10007 @c <en>@cindex Resolving a conflict
10008 @cindex Resolvendo um conflito
10009 @c <en>@cindex Conflict resolution
10010 @cindex Resolução de conflitos
10011 @c <en>You resolve the conflict by editing the file, removing the markers and
10012 @c <en>the erroneous line.  Suppose you end up with this file:
10013 @c <en>@c -- Add xref to the pcl-cvs manual when it talks
10014 @c <en>@c -- about this.
10015 Você resolve o conflito editando o arquivo, removendo os
10016 marcadores e as linhas erradas.  Suponha que você ficou
10017 com este arquivo:
10018 @c -- Add xref to the pcl-cvs manual when it talks
10019 @c -- about this.
10020 @example
10021 #include <stdlib.h>
10022 #include <stdio.h>
10023
10024 int main(int argc,
10025          char **argv)
10026 @{
10027     init_scanner();
10028     parse();
10029     if (argc != 1)
10030     @{
10031         fprintf(stderr, "tc: No args expected.\n");
10032         exit(1);
10033     @}
10034     if (nerr == 0)
10035         gencode();
10036     else
10037         fprintf(stderr, "No code generated.\n");
10038     exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
10039 @}
10040 @end example
10041
10042 @noindent
10043 @c <en>You can now go ahead and commit this as revision 1.7.
10044 Você agora pode seguir em frente e ???commit??? ele
10045 como a revisão 1.7.
10046
10047 @example
10048 $ cvs commit -m "Initialize scanner. Use symbolic exit values." driver.c
10049 Checking in driver.c;
10050 /usr/local/cvsroot/yoyodyne/tc/driver.c,v  <--  driver.c
10051 new revision: 1.7; previous revision: 1.6
10052 done
10053 @end example
10054
10055 @c <en>For your protection, @sc{cvs} will refuse to check in a
10056 @c <en>file if a conflict occurred and you have not resolved
10057 @c <en>the conflict.  Currently to resolve a conflict, you
10058 @c <en>must change the timestamp on the file.  In previous
10059 @c <en>versions of @sc{cvs}, you also needed to
10060 @c <en>insure that the file contains no conflict markers.
10061 @c <en>Because
10062 @c <en>your file may legitimately contain conflict markers (that
10063 @c <en>is, occurrences of @samp{>>>>>>> } at the start of a
10064 @c <en>line that don't mark a conflict), the current
10065 @c <en>version of @sc{cvs} will print a warning and proceed to
10066 @c <en>check in the file.
10067 Para sua segurança, o @sc{cvs} não vai aceitar o check
10068 in de um arquivo se um conflito ocorreu e você não
10069 resolveu o conflito.  Atualmente, para resolver um
10070 conflito, você deve mudar a data do arquivo.  Em
10071 versões anteriores do @sc{cvs}, você também precisava
10072 ter certeza de que o arquivo não continha marcadores de
10073 conflito.  Já que seu arquivo pode conter marcadores de
10074 conflito ???de forma legítima??? (isto é, a ocorrência
10075 de @samp{>>>>>>> } no começo de uma linha que não marca
10076 um conflito), a versão atual do @sc{cvs} vai mostrar um
10077 aviso e continuar a fazer o ???check in??? do arquivo.
10078 @c The old behavior was really icky; the only way out
10079 @c was to start hacking on
10080 @c the @code{CVS/Entries} file or other such workarounds.
10081 @c
10082 @c If the timestamp thing isn't considered nice enough,
10083 @c maybe there should be a "cvs resolved" command
10084 @c which clears the conflict indication.  For a nice user
10085 @c interface, this should be invoked by an interactive
10086 @c merge tool like emerge rather than by the user
10087 @c directly--such a tool can verify that the user has
10088 @c really dealt with each conflict.
10089
10090 @c <en>@cindex emerge
10091 @cindex emerge
10092 @c <en>If you use release 1.04 or later of pcl-cvs (a @sc{gnu}
10093 @c <en>Emacs front-end for @sc{cvs}) you can use an Emacs
10094 @c <en>package called emerge to help you resolve conflicts.
10095 @c <en>See the documentation for pcl-cvs.
10096 Se você usa a release 1.04 ou posterior do pcl-cvs (uma
10097 interface amigável para o  @sc{cvs} de dentro do
10098 @sc{gnu} Emacs) você pode usar um pacote do Emacs
10099 chamado emerge para te ajudar a resolver os
10100 conflitos. Veja na documentação do pcl-cvs.
10101
10102 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
10103 @c <en>@node Informing others
10104 @node Informando os outros
10105 @c <en>@section Informing others about commits
10106 @section Informando os outros sobre ???commits???
10107 @c <en>@cindex Informing others
10108 @cindex Informando os outros
10109 @c <en>@cindex Spreading information
10110 @cindex Divulgando informação
10111 @c <en>@cindex Mail, automatic mail on commit
10112 @cindex e-mail, mensagens automáticas no ???commit???
10113
10114 @c <en>It is often useful to inform others when you commit a
10115 @c <en>new revision of a file.  The @samp{-i} option of the
10116 @c <en>@file{modules} file, or the @file{loginfo} file, can be
10117 @c <en>used to automate this process.  @xref{modules}.
10118 @c <en>@xref{loginfo}.  You can use these features of @sc{cvs}
10119 @c <en>to, for instance, instruct @sc{cvs} to mail a
10120 @c <en>message to all developers, or post a message to a local
10121 @c <en>newsgroup.
10122 Às vezes é útil informar os outros quando você
10123 ???commit??? uma nova revisão de um arquivo.  A opção
10124 @samp{-i} do arquivo @file{modules}, ou do arquivo
10125 @file{loginfo}, pode ser usada para automatizar este
10126 processo.  @xref{modules}.  @xref{loginfo}.  Você pode
10127 usar estas funcionalidades do @sc{cvs} para, por
10128 exemplo, instruir o @sc{cvs} a enviar uma mensagem a
10129 todos os desenvolvedores, ou enviar uma mensagem para
10130 um newsgroup local.
10131 @c -- More text would be nice here.
10132
10133 @c <en>@node Concurrency
10134 @node Concorrência
10135 @c <en>@section Several developers simultaneously attempting to run CVS
10136 @section Vários desenvolvedores tentando rodar o CVS simultâneamente
10137
10138 @c <en>@cindex Locks, cvs, introduction
10139 @cindex Locks, cvs, introdução
10140 @c For a discussion of *why* CVS creates locks, see
10141 @c the comment at the start of src/lock.c
10142 @c <en>If several developers try to run @sc{cvs} at the same
10143 @c <en>time, one may get the following message:
10144 Se vários desenvolvedores tentam rodar o @sc{cvs} no
10145 mesmo momento, alguém vai receber esta mensagem:
10146
10147 @example
10148 [11:43:23] waiting for bach's lock in /usr/local/cvsroot/foo
10149 @end example
10150
10151 @c <en>@cindex #cvs.rfl, removing
10152 @cindex #cvs.rfl, removendo
10153 @c <en>@cindex #cvs.wfl, removing
10154 @cindex #cvs.wfl, removendo
10155 @c <en>@cindex #cvs.lock, removing
10156 @cindex #cvs.lock, removendo
10157 @c <en>@sc{cvs} will try again every 30 seconds, and either
10158 @c <en>continue with the operation or print the message again,
10159 @c <en>if it still needs to wait.  If a lock seems to stick
10160 @c <en>around for an undue amount of time, find the person
10161 @c <en>holding the lock and ask them about the cvs command
10162 @c <en>they are running.  If they aren't running a cvs
10163 @c <en>command, look in the repository directory mentioned in
10164 @c <en>the message and remove files which they own whose names
10165 @c <en>start with @file{#cvs.rfl},
10166 @c <en>@file{#cvs.wfl}, or @file{#cvs.lock}.
10167 O @sc{cvs} vai tentar de novo a cada 30 segundos, e vai
10168 ou continuar com a operação ou mostrar a mensagem de
10169 novo, se ainda precisar esperar.  Se uma trava (lock)
10170 permanece por muito tempo, procure a pessoa que é dona
10171 da trava e pergunte que comando do cvs ele está
10172 rodando.  Se ele/ela não estiver rodando um comando do
10173 cvs, procure no diretório do repositório que está
10174 referenciado na mensagem e remova os arquivos cujos
10175 nomes começam com @file{#cvs.rfl},
10176 @file{#cvs.wfl}, or @file{#cvs.lock}.
10177
10178 @c <en>Note that these locks are to protect @sc{cvs}'s
10179 @c <en>internal data structures and have no relationship to
10180 @c <en>the word @dfn{lock} in the sense used by
10181 @c <en>@sc{rcs}---which refers to reserved checkouts
10182 @c <en>(@pxref{Multiple developers}).
10183 Observe que estas travas são feitas para proteger a
10184 estrutura de dados interna do @sc{cvs} e não tem
10185 relação com a palavra @dfn{lock (trava)} no sentido
10186 usado pelo @sc{rcs}---que se refere a ???checkouts???
10187 reservados (@pxref{Múltiplos desenvolvedores}).
10188
10189 @c <en>Any number of people can be reading from a given
10190 @c <en>repository at a time; only when someone is writing do
10191 @c <en>the locks prevent other people from reading or writing.
10192 Qualquer quantidade de pessoas pode ler de um
10193 repositório num determinado momento; apenas quando
10194 alguém está gravando é que as travas evitam que outras
10195 pessoas leiam ou gravem.
10196
10197 @c <en>@cindex Atomic transactions, lack of
10198 @cindex Transações atômicas, falta de
10199 @c <en>@cindex Transactions, atomic, lack of
10200 @cindex Atômicas, transações, falta de
10201 @c the following talks about what one might call commit/update
10202 @c atomicity.
10203 @c Probably also should say something about
10204 @c commit/commit atomicity, that is, "An update will
10205 @c not get partial versions of more than one commit".
10206 @c CVS currently has this property and I guess we can
10207 @c make it a documented feature.
10208 @c For example one person commits
10209 @c a/one.c and b/four.c and another commits a/two.c and
10210 @c b/three.c.  Then an update cannot get the new a/one.c
10211 @c and a/two.c and the old b/four.c and b/three.c.
10212 @c <en>One might hope for the following property:
10213 Espera-se que a seguinte propriedade valha:
10214
10215 @quotation
10216 @c <en>If someone commits some changes in one cvs command,
10217 @c <en>then an update by someone else will either get all the
10218 @c <en>changes, or none of them.
10219 Se alguém ???commits??? algumas mudanças com um comando
10220 cvs, então um ???update??? por outra pessoa vai obter
10221 ou todas as mudanças, ou nenhuma.
10222 @end quotation
10223
10224 @noindent
10225 @c <en>but @sc{cvs} does @emph{not} have this property.  For
10226 @c <en>example, given the files
10227 mas o @sc{cvs} @emph{não} tem esta propriedade.  Por
10228 exemplo, dados os arquivos
10229
10230 @example
10231 a/one.c
10232 a/two.c
10233 b/three.c
10234 b/four.c
10235 @end example
10236
10237 @noindent
10238 @c <en>if someone runs
10239 se alguém rodar
10240
10241 @example
10242 cvs ci a/two.c b/three.c
10243 @end example
10244
10245 @noindent
10246 @c <en>and someone else runs @code{cvs update} at the same
10247 @c <en>time, the person running @code{update} might get only
10248 @c <en>the change to @file{b/three.c} and not the change to
10249 @c <en>@file{a/two.c}.
10250 e outra pessoa rodar @code{cvs update} no mesmo
10251 momento, a pessoa rodando @code{update} pode receber
10252 apenas as alterações feitas em @file{b/three.c} e não
10253 receber as feitas em @file{a/two.c}.
10254
10255 @c <en>@node Watches
10256 @node ???Watches???
10257 @c <en>@section Mechanisms to track who is editing files
10258 @section Mechanisms to track who is editing files
10259 @c <en>@cindex Watches
10260 @cindex ???Watches???
10261
10262 @c <en>For many groups, use of @sc{cvs} in its default mode is
10263 @c <en>perfectly satisfactory.  Users may sometimes go to
10264 @c <en>check in a modification only to find that another
10265 @c <en>modification has intervened, but they deal with it and
10266 @c <en>proceed with their check in.  Other groups prefer to be
10267 @c <en>able to know who is editing what files, so that if two
10268 @c <en>people try to edit the same file they can choose to
10269 @c <en>talk about who is doing what when rather than be
10270 @c <en>surprised at check in time.  The features in this
10271 @c <en>section allow such coordination, while retaining the
10272 @c <en>ability of two developers to edit the same file at the
10273 @c <en>same time.
10274 Para muitos grupos, o uso do @sc{cvs} em sua forma
10275 padrão é perfeitamente satisfatório.  Os usuários vão
10276 algumas vezes ???check in??? uma modificação e
10277 descobrir que outras intervenções foram feitas, mas
10278 eles tratam isto e seguem em frente com o ???check
10279 in???.  Outros grupos preferem ser capazes de saber
10280 quem está editando quais arquivos, de forma que se duas
10281 pessoas tentam editar o mesmo arquivo elas podem
10282 conversar sobre quem vai editar o que ao invés de serem
10283 surpreendidos na hora do ???check in???.  As
10284 funcionalidades nesta seção permitem tal nível de
10285 coordenação, sem abrir mão da possibilidade de que dois
10286 desenvolvedores editem o mesmo arquivo ao mesmo tempo.
10287
10288 @c Some people might ask why CVS does not enforce the
10289 @c rule on chmod, by requiring a cvs edit before a cvs
10290 @c commit.  The main reason is that it could always be
10291 @c circumvented--one could edit the file, and
10292 @c then when ready to check it in, do the cvs edit and put
10293 @c in the new contents and do the cvs commit.  One
10294 @c implementation note: if we _do_ want to have cvs commit
10295 @c require a cvs edit, we should store the state on
10296 @c whether the cvs edit has occurred in the working
10297 @c directory, rather than having the server try to keep
10298 @c track of what working directories exist.
10299 @c FIXME: should the above discussion be part of the
10300 @c manual proper, somewhere, not just in a comment?
10301 @c <en>For maximum benefit developers should use @code{cvs
10302 @c <en>edit} (not @code{chmod}) to make files read-write to
10303 @c <en>edit them, and @code{cvs release} (not @code{rm}) to
10304 @c <en>discard a working directory which is no longer in use,
10305 @c <en>but @sc{cvs} is not able to enforce this behavior.
10306 Para um máximo apreveitamento, os desenvolvedores devem
10307 usar @code{cvs edit} (e não @code{chmod}) para tornar
10308 os arquivos com permissão de leitura e escrita para
10309 editá-los, e @code{cvs release} (não @code{rm}) para
10310 descartar um diretório de trabalho que não está mais em
10311 uso, mas o @sc{cvs} não é capaz de obrigar tal
10312 comportamento.
10313
10314 @c I'm a little dissatisfied with this presentation,
10315 @c because "watch on"/"edit"/"editors" are one set of
10316 @c functionality, and "watch add"/"watchers" is another
10317 @c which is somewhat orthogonal even though they interact in
10318 @c various ways.  But I think it might be
10319 @c confusing to describe them separately (e.g. "watch
10320 @c add" with loginfo).  I don't know.
10321
10322 @menu
10323 @c <en>* Setting a watch::             Telling CVS to watch certain files
10324 * Ajustando um ???watch???::    Dizendo ao CVS para ???watch??? certos arquivos
10325 @c <en>* Getting Notified::            Telling CVS to notify you
10326 * Recebendo Notificações::      Dizendo ao CVS para te notificar
10327 @c <en>* Editing files::               How to edit a file which is being watched
10328 * Editando arquivos::           Como editar um arquivo que está sendo ???watched???
10329 @c <en>* Watch information::           Information about who is watching and editing
10330 * Informações de ???Watch???::  Informações a respeito de quem
10331                                 está ???watching??? e quem está editando
10332 @c <en>* Watches Compatibility::       Watches interact poorly with CVS 1.6 or earlier
10333 * Compatibilidade de ???Watches???::   ???Watches??? interagem fracamente
10334                                        com CVS 1.6 ou anteriores
10335 @end menu
10336
10337 @c <en>@node Setting a watch
10338 @node Ajustando um ???watch???
10339 @c <en>@subsection Telling CVS to watch certain files
10340 @subsection Dizendo ao CVS para ???watch??? certos arquivos
10341
10342 @c <en>To enable the watch features, you first specify that
10343 @c <en>certain files are to be watched.
10344 Para habilitar a funcionalidade de ???watch???, você
10345 deve primeiro especificar que certos arquivos devem ser
10346 ???watched???.
10347
10348 @c <en>@cindex watch on (subcommand)
10349 @cindex watch on (subcomando)
10350 @c <en>@deffn Command {cvs watch on} [@code{-lR}] [@var{files}]@dots{}
10351 @deffn Comando {cvs watch on} [@code{-lR}] [@var{arquivos}]@dots{}
10352
10353 @c <en>@cindex Read-only files, and watches
10354 @cindex Arquivos somente leitura, e ???watches???
10355 @c <en>Specify that developers should run @code{cvs edit}
10356 @c <en>before editing @var{files}.  @sc{cvs} will create working
10357 @c <en>copies of @var{files} read-only, to remind developers
10358 @c <en>to run the @code{cvs edit} command before working on
10359 @c <en>them.
10360 Especifique que os desenvolvedores devem rodar o
10361 @code{cvs edit} antes de editar arquivos
10362 @var{arquivos}.  O @sc{cvs} vai criar cópias de
10363 trabalho dos @var{arquivos} como somente-leitura, para
10364 lembrar os desenvolvedores de rodarem o comando
10365 @code{cvs edit} antes de trabalhar neles.
10366
10367 @c <en>If @var{files} includes the name of a directory, @sc{cvs}
10368 @c <en>arranges to watch all files added to the corresponding
10369 @c <en>repository directory, and sets a default for files
10370 @c <en>added in the future; this allows the user to set
10371 @c <en>notification policies on a per-directory basis.  The
10372 @c <en>contents of the directory are processed recursively,
10373 @c <en>unless the @code{-l} option is given.
10374 @c <en>The @code{-R} option can be used to force recursion if the @code{-l}
10375 @c <en>option is set in @file{~/.cvsrc} (@pxref{~/.cvsrc}).
10376 Se @var{arquivos} inclui o nome de uma diretório, o
10377 @sc{cvs} faz ???watch??? em todos os arquivos
10378 adicionados ao diretório correspondente do repositório,
10379 e ajusta um padrão para arquivos adicionados no futuro;
10380 isto permite que o usuário ajuste as políticas de
10381 notificação baseada em diretórios.  O conteúdo do
10382 diretório é processado recursivamente, a menos que a
10383 opção @code{-l} seja dada. A opção @code{-R} pode ser
10384 usada para forçar recursão se a opção @code{-l} está
10385 ativada em @file{~/.cvsrc} (@pxref{~/.cvsrc}).
10386
10387 @c <en>If @var{files} is omitted, it defaults to the current directory.
10388 Se @var{arquivos} é omitido, o padrão é o diretório atual.
10389
10390 @c <en>@cindex watch off (subcommand)
10391 @cindex watch off (subcomando)
10392 @end deffn
10393
10394 @c <en>@deffn Command {cvs watch off} [@code{-lR}] [@var{files}]@dots{}
10395 @deffn Comando {cvs watch off} [@code{-lR}] [@var{arquivos}]@dots{}
10396
10397 @c <en>Do not create @var{files} read-only on checkout; thus,
10398 @c <en>developers will not be reminded to use @code{cvs edit}
10399 @c <en>and @code{cvs unedit}.
10400 Não cria @var{arquivos} somente-leitura no
10401 ???checkout???; portanto, os desenvolvedores não serão
10402 lembrados de usar @code{cvs edit} e @code{cvs unedit}.
10403 @ignore
10404 @sc{cvs} will check out @var{files}
10405 read-write as usual, unless other permissions override
10406 due to the @code{PreservePermissions} option being
10407 enabled in the @file{config} administrative file
10408 (@pxref{Special Files}, @pxref{config})
10409 @end ignore
10410
10411 @c <en>The @var{files} and options are processed as for @code{cvs
10412 @c <en>watch on}.
10413 Os @var{arquivos} e opções são processados como no
10414 @code{cvs watch on}.
10415
10416 @end deffn
10417
10418 @c <en>@node Getting Notified
10419 @node Recebendo Notificações
10420 @c <en>@subsection Telling CVS to notify you
10421 @subsection Dizendo ao CVS para te notificar
10422
10423 @c <en>You can tell @sc{cvs} that you want to receive
10424 @c <en>notifications about various actions taken on a file.
10425 @c <en>You can do this without using @code{cvs watch on} for
10426 @c <en>the file, but generally you will want to use @code{cvs
10427 @c <en>watch on}, to remind developers to use the @code{cvs edit}
10428 @c <en>command.
10429 Você pode dizer ao @sc{cvs} que você quer receber
10430 notificações sobre várias ações tomadas em um
10431 arquivo. Você pode fazer isto sem usar o @code{cvs
10432 watch on} para o arquivo, mas geralmente você vai
10433 querer usar @code{cvs watch on}, para lembrar os
10434 desenvolvedores de usar o comando @code{cvs edit}.
10435
10436 @c <en>@cindex watch add (subcommand)
10437 @cindex watch add (subcomando)
10438 @c <en>@deffn Command {cvs watch add} [@code{-lR}] [@code{-a} @var{action}]@dots{} [@var{files}]@dots{}
10439 @deffn Comando {cvs watch add} [@code{-lR}] [@code{-a} @var{ação}]@dots{} [@var{arquivos}]@dots{}
10440
10441 @c <en>Add the current user to the list of people to receive notification of
10442 @c <en>work done on @var{files}.
10443 Adiciona o usuário atual à lista de pessoas que recebem
10444 notificações sobre o trabalho feito em @var{arquivos}.
10445
10446 @c <en>The @code{-a} option specifies what kinds of events @sc{cvs} should notify
10447 @c <en>the user about.  @var{action} is one of the following:
10448 A opção @code{-a} especifica quais tipos de eventos o
10449 @sc{cvs} deve notificar o usuário.  @var{ação} é uma
10450 das seguintes:
10451
10452 @table @code
10453
10454 @c <en>@item edit
10455 @item edit
10456 @c <en>Another user has applied the @code{cvs edit} command (described
10457 @c <en>below) to a watched file.
10458 Outro usuário executou o comando @code{cvs edit}
10459 (descrito abaixo) para um arquivo ???watched???.
10460
10461 @c <en>@item commit
10462 @item commit
10463 @c <en>Another user has committed changes to one of the named @var{files}.
10464 Outro usuário fez ???commit??? em mudanças em um dos @var{arquivos}.
10465
10466 @c <en>@item unedit
10467 @item unedit
10468 @c <en>Another user has abandoned editing a file (other than by committing changes).
10469 @c <en>They can do this in several ways, by:
10470 Outro usuário abandonou a edição de um arquivo (sem ser
10471 por ???committing??? mudanças). Eles podem fazer isto
10472 de várias maneiras:
10473
10474 @itemize @bullet
10475
10476 @item
10477 @c <en>applying the @code{cvs unedit} command (described below) to the file
10478 rodando o comando @code{cvs unedit} (descrito abaixo)
10479 no arquivo
10480
10481 @item
10482 @c <en>applying the @code{cvs release} command (@pxref{release}) to the file's parent directory
10483 @c <en>(or recursively to a directory more than one level up)
10484 rodando o comando @code{cvs release} (@pxref{release})
10485 no diretório pai do arquivo
10486 (ou num diretório mais acima recursivamente)
10487
10488 @item
10489 @c <en>deleting the file and allowing @code{cvs update} to recreate it
10490 apagando o arquivo e permitindo que o @code{cvs update} o recrie
10491
10492 @end itemize
10493
10494 @c <en>@item all
10495 @item all
10496 @c <en>All of the above.
10497 Todos acima.
10498
10499 @c <en>@item none
10500 @item none
10501 @c <en>None of the above.  (This is useful with @code{cvs edit},
10502 @c <en>described below.)
10503 Nenhum dos acima.  (Isto é útil com o @code{cvs edit},
10504 descrito abaixo.)
10505
10506 @end table
10507
10508 @c <en>The @code{-a} option may appear more than once, or not at all.  If
10509 @c <en>omitted, the action defaults to @code{all}.
10510 A opção @code{-a} pode aparecer mais de uma vez, ou
10511 nenhuma vez.  Se não aparecer, a ação padrão é @code{all}.
10512
10513 @c <en>The @var{files} and options are processed as for
10514 @c <en>@code{cvs watch on}.
10515 Os @var{arquivos} e opções são processados como no
10516 @code{cvs watch on}.
10517
10518 @end deffn
10519
10520
10521 @c <en>@cindex watch remove (subcommand)
10522 @cindex watch remove (subcomando)
10523 @c <en>@deffn Command {cvs watch remove} [@code{-lR}] [@code{-a} @var{action}]@dots{} [@var{files}]@dots{}
10524 @deffn Comando {cvs watch remove} [@code{-lR}] [@code{-a} @var{ação}]@dots{} [@var{arquivos}]@dots{}
10525
10526 @c <en>Remove a notification request established using @code{cvs watch add};
10527 @c <en>the arguments are the same.  If the @code{-a} option is present, only
10528 @c <en>watches for the specified actions are removed.
10529 Remove um pedido de notificação posto por um @code{cvs
10530 watch add}; Os argumentos são os mesmos.  Se a opção
10531 @code{-a} está presente, apenas os ???watches??? para as
10532 ações especificadas são removidos.
10533
10534 @end deffn
10535
10536 @c <en>@cindex notify (admin file)
10537 @cindex notify (arquivo administrativo)
10538 @c <en>When the conditions exist for notification, @sc{cvs}
10539 @c <en>calls the @file{notify} administrative file.  Edit
10540 @c <en>@file{notify} as one edits the other administrative
10541 @c <en>files (@pxref{Intro administrative files}).  This
10542 @c <en>file follows the usual conventions for administrative
10543 @c <en>files (@pxref{syntax}), where each line is a regular
10544 @c <en>expression followed by a command to execute.  The
10545 @c <en>command should contain a single occurrence of @samp{%s}
10546 @c <en>which will be replaced by the user to notify; the rest
10547 @c <en>of the information regarding the notification will be
10548 @c <en>supplied to the command on standard input.  The
10549 @c <en>standard thing to put in the @code{notify} file is the
10550 @c <en>single line:
10551 Quando as condições existem para a notificação, o
10552 @sc{cvs} chama o arquivo administrativo @file{notify}.
10553 Edite o @file{notify} da mesma forma que se edita os
10554 outros arquivos administrativos (@pxref{Intro aos
10555 arquivos administrativos}).  Este arquivo segue as
10556 convenções usuais para arquivos administrativos
10557 (@pxref{syntax}), onde cada linha é uma expressão
10558 regular seguida de um comando para executar.  O comando
10559 pode conter uma única ocorrência de @samp{%s} que é
10560 substituída pelo usuário a ser notificado; o resto da
10561 informação a respeito  da notificação vai ser fornecida
10562 ao comando na entrada padrão.  O padrão para botar no
10563 arquivo @code{notify} é esta única linha:
10564
10565 @example
10566 ALL mail %s -s "CVS notification"
10567 @end example
10568
10569 @noindent
10570 @c <en>This causes users to be notified by electronic mail.
10571 Isto faz com que os usuários sejam avisados por correio
10572 eletrônico.
10573 @c FIXME: should it be this hard to set up this
10574 @c behavior (and the result when one fails to do so,
10575 @c silent failure to notify, so non-obvious)?  Should
10576 @c CVS give a warning if no line in notify matches (and
10577 @c document the use of "DEFAULT :" for the case where
10578 @c skipping the notification is indeed desired)?
10579
10580 @c <en>@cindex users (admin file)
10581 @cindex users (arquivo administrativo)
10582 @c <en>Note that if you set this up in the straightforward
10583 @c <en>way, users receive notifications on the server machine.
10584 @c <en>One could of course write a @file{notify} script which
10585 @c <en>directed notifications elsewhere, but to make this
10586 @c <en>easy, @sc{cvs} allows you to associate a notification
10587 @c <en>address for each user.  To do so create a file
10588 @c <en>@file{users} in @file{CVSROOT} with a line for each
10589 @c <en>user in the format @var{user}:@var{value}.  Then
10590 @c <en>instead of passing the name of the user to be notified
10591 @c <en>to @file{notify}, @sc{cvs} will pass the @var{value}
10592 @c <en>(normally an email address on some other machine).
10593 Observe que se você ajusta isto na forma que está, os
10594 usuários vão receber as notificações na máquina
10595 servidora.  Alguém pode escrever um script
10596 @file{notify} que direcione notificações para outro
10597 lugar, mas para tornar isto fácil, o @sc{cvs} permite
10598 associar um endereço de notificação para cada usuário.
10599 Para isto crie um arquivo @file{users} em
10600 @file{CVSROOT} com uma linha para cada usuário no
10601 formato @var{usuário}:@var{valor}.  Então, ao invés de
10602 passar o nome do usuário a ser notificado para
10603 @file{notify}, o @sc{cvs} vai passar @var{valor}
10604 (normalmente um endereço de email em alguma outra máquina).
10605
10606 @c <en>@sc{cvs} does not notify you for your own changes.
10607 @c <en>Currently this check is done based on whether the user
10608 @c <en>name of the person taking the action which triggers
10609 @c <en>notification matches the user name of the person
10610 @c <en>getting notification.  In fact, in general, the watches
10611 @c <en>features only track one edit by each user.  It probably
10612 @c <en>would be more useful if watches tracked each working
10613 @c <en>directory separately, so this behavior might be worth
10614 @c <en>changing.
10615 O @sc{cvs} não notifica você de suas próprias
10616 mudanças.  Atualmente esta checagem é feita baseada
10617 comparando o nome de usuário da pessoa que executou a
10618 ação que disparou a notificação com o nome de usuário
10619 da pessoa sendo notificada.  De fato, em geral, as
10620 funcionalidades de ???watches??? ???only track one
10621 edit??? para cada usuário.  Seria provavelmente mais
10622 útil se ???watches??? ???tracked??? cada diretório de
10623 trabalho separadamente, logo este comportamento ???might be worth
10624 changing???.
10625 @c "behavior might be worth changing" is an effort to
10626 @c point to future directions while also not promising
10627 @c that "they" (as in "why don't they fix CVS to....")
10628 @c will do this.
10629 @c one implementation issue is identifying whether a
10630 @c working directory is same or different.  Comparing
10631 @c pathnames/hostnames is hopeless, but having the server
10632 @c supply a serial number which the client stores in the
10633 @c CVS directory as a magic cookie should work.
10634
10635 @c <en>@node Editing files
10636 @node Editando arquivos
10637 @c <en>@subsection How to edit a file which is being watched
10638 @subsection Como editar um arquivo que está sendo ???watched???
10639
10640 @c <en>@cindex Checkout, as term for getting ready to edit
10641 @cindex Checkout, as term for getting ready to edit
10642 @c <en>Since a file which is being watched is checked out
10643 @c <en>read-only, you cannot simply edit it.  To make it
10644 @c <en>read-write, and inform others that you are planning to
10645 @c <en>edit it, use the @code{cvs edit} command.  Some systems
10646 @c <en>call this a @dfn{checkout}, but @sc{cvs} uses that term
10647 @c <en>for obtaining a copy of the sources (@pxref{Getting the
10648 @c <en>source}), an operation which those systems call a
10649 @c <en>@dfn{get} or a @dfn{fetch}.
10650 Já que um arquivo que está sendo ???watched??? é
10651 ???checked out??? somente-leitura, você não pode
10652 simplesmente editá-lo.  Para torná-lo leitura-escrita,
10653 e informaar outros que você está planejando editá-lo,
10654 use o comando @code{cvs edit}.  Alguns sistemas chamam
10655 isto de @dfn{checkout}, mas o @sc{cvs} usa este termo
10656 para obter uma cópia dos fontes (@pxref{Obtendo os
10657 fontes}), uma operação que estes sistemas chamam de
10658 @dfn{get} ou @dfn{fetch}.
10659 @c Issue to think about: should we transition CVS
10660 @c towards the "get" terminology?  "cvs get" is already a
10661 @c synonym for "cvs checkout" and that section of the
10662 @c manual refers to "Getting the source".  If this is
10663 @c done, needs to be done gingerly (for example, we should
10664 @c still accept "checkout" in .cvsrc files indefinitely
10665 @c even if the CVS's messages are changed from "cvs checkout: "
10666 @c to "cvs get: ").
10667 @c There is a concern about whether "get" is not as
10668 @c good for novices because it is a more general term
10669 @c than "checkout" (and thus arguably harder to assign
10670 @c a technical meaning for).
10671
10672 @c <en>@cindex edit (subcommand)
10673 @cindex edit (subcomando)
10674 @c <en>@deffn Command {cvs edit} [@code{-lR}] [@code{-a} @var{action}]@dots{} [@var{files}]@dots{}
10675 @deffn Comando {cvs edit} [@code{-lR}] [@code{-a} @var{ação}]@dots{} [@var{arquivos}]@dots{}
10676
10677 @c <en>Prepare to edit the working files @var{files}.  @sc{cvs} makes the
10678 @c <en>@var{files} read-write, and notifies users who have requested
10679 @c <en>@code{edit} notification for any of @var{files}.
10680 Prepara para serem editados os @var{files} do diretório
10681 de trabalho.  O @sc{cvs} faz os @var{arquivos}
10682 leitura-escrita, e notifica os usuários que pediram
10683 notificação de @code{edit} para quaisquer dos @var{arquivos}.
10684
10685 @c <en>The @code{cvs edit} command accepts the same options as the
10686 @c <en>@code{cvs watch add} command, and establishes a temporary watch for the
10687 @c <en>user on @var{files}; @sc{cvs} will remove the watch when @var{files} are
10688 @c <en>@code{unedit}ed or @code{commit}ted.  If the user does not wish to
10689 @c <en>receive notifications, she should specify @code{-a none}.
10690 O comando @code{cvs edit} acita as mesmas opções que o
10691 comando @code{cvs watch add}, e estabelece um
10692 ???watch??? temporário para o usuário nos
10693 @var{arquivos}; @sc{cvs} vai remover o ???watch??? quando @var{arquivos} forem
10694 @code{unedit}ados ou @code{commit}ados (argh!!!,
10695 ''commitados'' é horrível).  Se o usuário não deseja
10696 receber notificações, deve especificar @code{-a none}.
10697
10698 @c <en>The @var{files} and the options are processed as for the @code{cvs
10699 @c <en>watch} commands.
10700 Os @var{arquivos} e as opções são processadas como nos comandos @code{cvs
10701 watch}.
10702
10703 @ignore
10704 @strong{Caution: If the @code{PreservePermissions}
10705 option is enabled in the repository (@pxref{config}),
10706 @sc{cvs} will not change the permissions on any of the
10707 @var{files}.  The reason for this change is to ensure
10708 that using @samp{cvs edit} does not interfere with the
10709 ability to store file permissions in the @sc{cvs}
10710 repository.}
10711 @end ignore
10712
10713 @end deffn
10714
10715 @c <en>Normally when you are done with a set of changes, you
10716 @c <en>use the @code{cvs commit} command, which checks in your
10717 @c <en>changes and returns the watched files to their usual
10718 @c <en>read-only state.  But if you instead decide to abandon
10719 @c <en>your changes, or not to make any changes, you can use
10720 @c <en>the @code{cvs unedit} command.
10721 Normalmente quando você termina com um conjunto de
10722 mudanças, você usa o comando @code{cvs commit}, que
10723 ???checks in??? suas mudanças e retorna os arquivos
10724 ???watched??? a seus estados usuais de somente-leitura.
10725 Mas se você ao invés disto decide abandonar suas
10726 mudanças, ou não fazer nenhuma mudança, você pode usar
10727 o comando @code{cvs unedit}.
10728
10729 @c <en>@cindex unedit (subcommand)
10730 @cindex unedit (subcomando)
10731 @c <en>@cindex Abandoning work
10732 @cindex Abandonando o trabalho
10733 @c <en>@cindex Reverting to repository version
10734 @cindex Revertendo para a versão do repositório
10735 @c <en>@deffn Command {cvs unedit} [@code{-lR}] [@var{files}]@dots{}
10736 @deffn Comando {cvs unedit} [@code{-lR}] [@var{arquivos}]@dots{}
10737
10738 @c <en>Abandon work on the working files @var{files}, and revert them to the
10739 @c <en>repository versions on which they are based.  @sc{cvs} makes those
10740 @c <en>@var{files} read-only for which users have requested notification using
10741 @c <en>@code{cvs watch on}.  @sc{cvs} notifies users who have requested @code{unedit}
10742 @c <en>notification for any of @var{files}.
10743 Abandona o trabalho nos @var{arquivos} no diretório de
10744 tabalho, e reverte eles às versões do repositório nas
10745 quais eles foram baseados.  O @sc{cvs} faz estes
10746 @var{arquivos} somente-leitura ???for which users have
10747 requested notification??? usando @code{cvs watch on}.
10748 @sc{cvs} notifica os usuários que pediram notificações
10749 do tipo @code{unedit} para quaisquer dos @var{arquivos}.
10750
10751 @c <en>The @var{files} and options are processed as for the
10752 @c <en>@code{cvs watch} commands.
10753 Os @var{arquivos} e opções são processados como nos comandos
10754 @code{cvs watch}.
10755
10756 @c <en>If watches are not in use, the @code{unedit} command
10757 @c <en>probably does not work, and the way to revert to the
10758 @c <en>repository version is with the command @code{cvs update -C file}
10759 @c <en>(@pxref{update}).
10760 @c <en>The meaning is
10761 @c <en>not precisely the same; the latter may also
10762 @c <en>bring in some changes which have been made in the
10763 @c <en>repository since the last time you updated.
10764 Se ???watches??? não estão em uso, o comando
10765 @code{unedit} provavelmente não vai fazer nada, e a
10766 forma de reverter à versão do repositório é com o
10767 comando @code{cvs update -C arquivo} (@pxref{update}).
10768 O significado não é exatamente o mesmo; a última forma
10769 pode também trazer algumas mudanças que foram feitas no
10770 repositório desde a última vez que você atualizou (fez
10771 update).
10772 @c It would be a useful enhancement to CVS to make
10773 @c unedit work in the non-watch case as well.
10774 @end deffn
10775
10776 @c <en>When using client/server @sc{cvs}, you can use the
10777 @c <en>@code{cvs edit} and @code{cvs unedit} commands even if
10778 @c <en>@sc{cvs} is unable to successfully communicate with the
10779 @c <en>server; the notifications will be sent upon the next
10780 @c <en>successful @sc{cvs} command.
10781 Quando usando o @sc{cvs} como cliente/servidor, você
10782 pode usar os comandos @code{cvs edit} e @code{cvs
10783 unedit} mesmo se o @sc{cvs} é incapaz de estabelecer
10784 comunicação com o servidor; as notificações vão ser
10785 mandadas junto com o próximo comando bem sucedido do
10786 @sc{cvs}.
10787
10788 @c <en>@node Watch information
10789 @node Informações de ???Watch???
10790 @c <en>@subsection Information about who is watching and editing
10791 @subsection Informações sobre quem está ???watching??? e editando
10792
10793 @c <en>@cindex watchers (subcommand)
10794 @cindex watchers (subcomando)
10795 @c <en>@deffn Command {cvs watchers} [@code{-lR}] [@var{files}]@dots{}
10796 @deffn Comando {cvs watchers} [@code{-lR}] [@var{arquivos}]@dots{}
10797
10798 @c <en>List the users currently watching changes to @var{files}.  The report
10799 @c <en>includes the files being watched, and the mail address of each watcher.
10800 Lista os usuários que estão atualmente ???watching???
10801 mudanças em @var{arquivos}.  O relatório inclui os
10802 arquivos sendo ???watched???, e o endereço de e-mail de
10803 cada ???watcher???.
10804
10805 @c <en>The @var{files} and options are processed as for the
10806 @c <en>@code{cvs watch} commands.
10807 Os @var{arquivos} e opções são processados como nos comandos
10808 @code{cvs watch}.
10809
10810 @end deffn
10811
10812
10813 @c <en>@cindex editors (subcommand)
10814 @cindex editors (subcommand)
10815 @c <en>@deffn Command {cvs editors} [@code{-lR}] [@var{files}]@dots{}
10816 @deffn Command {cvs editors} [@code{-lR}] [@var{files}]@dots{}
10817
10818 @c <en>List the users currently working on @var{files}.  The report
10819 @c <en>includes the mail address of each user, the time when the user began
10820 @c <en>working with the file, and the host and path of the working directory
10821 @c <en>containing the file.
10822 Lista os usuários atualmente trabalhando em
10823 @var{arquivos}.  O relatório inclui o endereço de
10824 e-mail de cada usuário, o momento no qual o usuário
10825 começou a trabalhar com o arquivo, e a máquina e
10826 caminho do diretório de trabalho contendo o arquivo.
10827
10828 @c <en>The @var{files} and options are processed as for the
10829 @c <en>@code{cvs watch} commands.
10830 Os @var{arquivos} e opções são processados como nos comandos
10831 @code{cvs watch}.
10832
10833 @end deffn
10834
10835 @c <en>@node Watches Compatibility
10836 @node Compatibilidade de ???Watches???
10837 @c <en>@subsection Using watches with old versions of CVS
10838 @subsection Using watches with old versions of CVS
10839
10840 @c <en>@cindex CVS 1.6, and watches
10841 @cindex CVS 1.6, and watches
10842 @c <en>If you use the watch features on a repository, it
10843 @c <en>creates @file{CVS} directories in the repository and
10844 @c <en>stores the information about watches in that directory.
10845 @c <en>If you attempt to use @sc{cvs} 1.6 or earlier with the
10846 @c <en>repository, you get an error message such as the
10847 @c <en>following (all on one line):
10848 If you use the watch features on a repository, it
10849 creates @file{CVS} directories in the repository and
10850 stores the information about watches in that directory.
10851 If you attempt to use @sc{cvs} 1.6 or earlier with the
10852 repository, you get an error message such as the
10853 following (all on one line):
10854
10855 @example
10856 cvs update: cannot open CVS/Entries for reading:
10857 No such file or directory
10858 @end example
10859
10860 @noindent
10861 @c <en>and your operation will likely be aborted.  To use the
10862 @c <en>watch features, you must upgrade all copies of @sc{cvs}
10863 @c <en>which use that repository in local or server mode.  If
10864 @c <en>you cannot upgrade, use the @code{watch off} and
10865 @c <en>@code{watch remove} commands to remove all watches, and
10866 @c <en>that will restore the repository to a state which
10867 @c <en>@sc{cvs} 1.6 can cope with.
10868 and your operation will likely be aborted.  To use the
10869 watch features, you must upgrade all copies of @sc{cvs}
10870 which use that repository in local or server mode.  If
10871 you cannot upgrade, use the @code{watch off} and
10872 @code{watch remove} commands to remove all watches, and
10873 that will restore the repository to a state which
10874 @sc{cvs} 1.6 can cope with.
10875
10876 @c <en>@node Choosing a model
10877 @node Escolhendo um modelo
10878 @c <en>@section Choosing between reserved or unreserved checkouts
10879 @section Escolhendo entre ???checkouts??? reservados ou não-reservados
10880 @c <en>@cindex Choosing, reserved or unreserved checkouts
10881 @cindex Escolhendo, ???checkouts??? reservados ou não-reservados
10882
10883 @c <en>Reserved and unreserved checkouts each have pros and
10884 @c <en>cons.  Let it be said that a lot of this is a matter of
10885 @c <en>opinion or what works given different groups' working
10886 @c <en>styles, but here is a brief description of some of the
10887 @c <en>issues.  There are many ways to organize a team of
10888 @c <en>developers.  @sc{cvs} does not try to enforce a certain
10889 @c <en>organization.  It is a tool that can be used in several
10890 @c <en>ways.
10891 ???Checkouts??? reservados e não-reservados têem cada
10892 um prós e contras.  Digamos que muito disto é
10893 uma questão de opinião ou que funciona dependendo dos
10894 diferentes estilos de trabalho em grupo, mas aqui está
10895 uma breve descrição de alguns dos aspectos.  Existem
10896 muitas formas de organizar um time de desenvolvedores.
10897 O @sc{cvs} não tenta induzir uma determinada forma de se
10898 organizar.  Ele é uma ferramenta que pode ser usada de
10899 várias maneiras.
10900
10901 @c <en>Reserved checkouts can be very counter-productive.  If
10902 @c <en>two persons want to edit different parts of a file,
10903 @c <en>there may be no reason to prevent either of them from
10904 @c <en>doing so.  Also, it is common for someone to take out a
10905 @c <en>lock on a file, because they are planning to edit it,
10906 @c <en>but then forget to release the lock.
10907 Checkout reservado pode ser bastante improdutivo.  Se
10908 duas pessoas quiserem editar diferentes partes de um
10909 mesmo arquivo, não há motivos para proibir nenhuma
10910 delas.  Além disto, é normal alguém travar um arquivo
10911 por que planeja editá-lo, mas então esquecer de destravar.
10912
10913 @c "many groups"?  specifics?  cites to papers on this?
10914 @c some way to weasel-word it a bit more so we don't
10915 @c need facts :-)?
10916 @c <en>People, especially people who are familiar with
10917 @c <en>reserved checkouts, often wonder how often conflicts
10918 @c <en>occur if unreserved checkouts are used, and how
10919 @c <en>difficult they are to resolve.  The experience with
10920 @c <en>many groups is that they occur rarely and usually are
10921 @c <en>relatively straightforward to resolve.
10922 As pessoas, especialmente aquelas acostumadas com
10923 ???checkouts??? reservados, freqüentemente pensam sobre
10924 a freqüencia com que conlitos acontecem quando
10925 ???checkouts??? não-reservados estão em uso, e o quão
10926 difíceis eles são de resolver.  A experiência de muitos
10927 grupos é que os conflitos ocorrem raramente e em geral
10928 são relativamente fáceis de resolver.
10929
10930 @c <en>The rarity of serious conflicts may be surprising, until one realizes
10931 @c <en>that they occur only when two developers disagree on the proper design
10932 @c <en>for a given section of code; such a disagreement suggests that the
10933 @c <en>team has not been communicating properly in the first place.  In order
10934 @c <en>to collaborate under @emph{any} source management regimen, developers
10935 @c <en>must agree on the general design of the system; given this agreement,
10936 @c <en>overlapping changes are usually straightforward to merge.
10937 A dificuldade para encontrar conflitos sérios pode ser
10938 surpreendente, até se perceber que eles ocorrem apenas
10939 quando dois desenvolvedores discordam mesmo é no
10940 projeto de uma dada seção do código; tal desacordo
10941 indica a princípio que a equipe não está se comunicando
10942 direito.  Para colaborar em @emph{qualquer} regime de
10943 gerenciamento de código, os desenvolvedores devem
10944 concordar com o projeto geral do sistema; com este
10945 acordo, mudanças sobrepostas são em geral simples de
10946 mesclar.
10947
10948 @c <en>In some cases unreserved checkouts are clearly
10949 @c <en>inappropriate.  If no merge tool exists for the kind of
10950 @c <en>file you are managing (for example word processor files
10951 @c <en>or files edited by Computer Aided Design programs), and
10952 @c <en>it is not desirable to change to a program which uses a
10953 @c <en>mergeable data format, then resolving conflicts is
10954 @c <en>going to be unpleasant enough that you generally will
10955 @c <en>be better off to simply avoid the conflicts instead, by
10956 @c <en>using reserved checkouts.
10957 Em alguns casos, ???checkouts??? não-reservados são
10958 claramente inapropriados.  Se não existe uma ferramenta
10959 de mescla para o tipo de arquivo que você está lidando
10960 (por exemplo, arquivos de processadores de texto ou
10961 arquivos editados por programas de ???Computer Aided
10962 Design???), e não é desejável mudar para um programa
10963 que usa um formato de dados que se possa mesclar, então
10964 resolver conflitos se torna tão desagradável que você
10965 vai estar melhor simplesmente evitando-os, com o uso de
10966 ???checkouts??? não-reservados.
10967
10968 @c <en>The watches features described above in @ref{Watches}
10969 @c <en>can be considered to be an intermediate model between
10970 @c <en>reserved checkouts and unreserved checkouts.  When you
10971 @c <en>go to edit a file, it is possible to find out who else
10972 @c <en>is editing it.  And rather than having the system
10973 @c <en>simply forbid both people editing the file, it can tell
10974 @c <en>you what the situation is and let you figure out
10975 @c <en>whether it is a problem in that particular case or not.
10976 @c <en>Therefore, for some groups it can be considered the
10977 @c <en>best of both the reserved checkout and unreserved
10978 @c <en>checkout worlds.
10979 As funcionalidade de ???watches??? descritas acima em
10980 @ref{???Watches???} podem ser consideradas um modelo
10981 intermediário entre ???checkouts??? reservados e
10982 ???checkouts??? não-reservados.  Quando você vai editar
10983 um arquivo, é possível descobrir quem o está editando.
10984 E ao invés de simplesmente o sistema proibir os dois de
10985 trabalhar, ele pode dizer como está a situação e deixar
10986 você decidir se isto é ou não é um problema neste caso
10987 específico. Portanto, para alguns grupos esta é o
10988 melhor dos dois mundos de ???checkouts??? reservados e
10989 ???checkouts??? não-reservados.
10990
10991 @c ---------------------------------------------------------------------
10992 @c <en>@node Revision management
10993 @node Gerenciamento de revisões
10994 @c <en>@chapter Revision management
10995 @chapter Gerenciamento de revisões
10996 @c <en>@cindex Revision management
10997 @cindex Gerenciamento de revisões
10998
10999 @c -- This chapter could be expanded a lot.
11000 @c -- Experiences are very welcome!
11001
11002 @c <en>If you have read this far, you probably have a pretty
11003 @c <en>good grasp on what @sc{cvs} can do for you.  This
11004 @c <en>chapter talks a little about things that you still have
11005 @c <en>to decide.
11006 Se você leu até este ponto, você provavelmente tem uma
11007 boa noção do que o @sc{cvs} pode fazer por você.  Este
11008 capítulo fala um pouco sobre coisas que ainda cabe a
11009 você decidir.
11010
11011 @c <en>If you are doing development on your own using @sc{cvs}
11012 @c <en>you could probably skip this chapter.  The questions
11013 @c <en>this chapter takes up become more important when more
11014 @c <en>than one person is working in a repository.
11015 Se você está desenvolvendo sozinho com o @sc{cvs}, você
11016 provavelmente pode pular este capítulo.  As questões
11017 que este capítulo levanta são mais importante quando
11018 mais de uma pessoa está trabalhando num mesmo repositório.
11019
11020 @menu
11021 @c <en>* When to commit::              Some discussion on the subject
11022 * Quando ???commit???::        Alguma discussão sobre o assunto
11023 @end menu
11024
11025 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11026 @c <en>@node When to commit
11027 @node Quando ???commit???
11028 @c <en>@section When to commit?
11029 @section Quando ???commit??? ?
11030 @c <en>@cindex When to commit
11031 @cindex Quando ???commit???
11032 @c <en>@cindex Committing, when to
11033 @cindex ???Committing???, quando
11034 @c <en>@cindex Policy
11035 @cindex Política
11036
11037 @c <en>Your group should decide which policy to use regarding
11038 @c <en>commits.  Several policies are possible, and as your
11039 @c <en>experience with @sc{cvs} grows you will probably find
11040 @c <en>out what works for you.
11041 Seu grupo deve decidir qual vai ser a política a
11042 respeito de ???commits???.  Várias políticas são
11043 possíveis, e à medida que sua experiência com o
11044 @sc{cvs} crescer, você provavelmente vai encontrar a
11045 que funciona com você.
11046
11047 @c <en>If you commit files too quickly you might commit files
11048 @c <en>that do not even compile.  If your partner updates his
11049 @c <en>working sources to include your buggy file, he will be
11050 @c <en>unable to compile the code.  On the other hand, other
11051 @c <en>persons will not be able to benefit from the
11052 @c <en>improvements you make to the code if you commit very
11053 @c <en>seldom, and conflicts will probably be more common.
11054 Se você ???commit??? arquivos muito rapidamente
11055 provavelmente você vai ???commit??? arquivos que nem
11056 mesmo compilam.  Se seu parceiro atualiza as cópias de
11057 trabalho dele e inclui seu arquivo bichado, ele não vai
11058 conseguir compilar o código.  Por outro lado, as outras
11059 pessoas não vão poder se beneficiar das melhorias que
11060 você fizer no código se você ???commit??? muito
11061 raramente, e os conflitos provavelmente vão aumentar.
11062
11063 @c <en>It is common to only commit files after making sure
11064 @c <en>that they can be compiled.  Some sites require that the
11065 @c <en>files pass a test suite.  Policies like this can be
11066 @c <en>enforced using the commitinfo file
11067 @c <en>(@pxref{commitinfo}), but you should think twice before
11068 @c <en>you enforce such a convention.  By making the
11069 @c <en>development environment too controlled it might become
11070 @c <en>too regimented and thus counter-productive to the real
11071 @c <en>goal, which is to get software written.
11072 É comum apenas ???commit??? arquivos depois de se
11073 certificar que eles podem ser compilados.  Alguns
11074 lugares exigem que os arquivos passem num conjunto de
11075 testes.  Políticas deste tipo podem ser impostas usando
11076 o arquivo commitinfo (@pxref{commitinfo}), mas você
11077 deve pensar duas vezes antes de impor tal convenção.
11078 Tornando o ambiente de desenvolvimento muito controlado
11079 ele se torna muito rígido e contraprodutivo para o
11080 objetivo real, que é ter o software escrito.
11081
11082 @c ---------------------------------------------------------------------
11083 @c <en>@node Keyword substitution
11084 @node Substituição de palavra-chave
11085 @c <en>@chapter Keyword substitution
11086 @chapter Substituição de palavra-chave
11087 @c <en>@cindex Keyword substitution
11088 @cindex Substituição de palavra-chave
11089 @c <en>@cindex Keyword expansion
11090 @cindex Expansão de palavra-chave
11091 @c <en>@cindex Identifying files
11092 @cindex Identificando arquivos
11093
11094 @comment   Be careful when editing this chapter.
11095 @comment   Remember that this file is kept under
11096 @comment   version control, so we must not accidentally
11097 @comment   include a valid keyword in the running text.
11098
11099 @c <en>As long as you edit source files inside a working
11100 @c <en>directory you can always find out the state of
11101 @c <en>your files via @samp{cvs status} and @samp{cvs log}.
11102 @c <en>But as soon as you export the files from your
11103 @c <en>development environment it becomes harder to identify
11104 @c <en>which revisions they are.
11105 À medida em que você edita arquivos fonte dentro de um
11106 diretório de trabalho você pode sempre obter o estado
11107 de seus arquivos via @samp{cvs status} e @samp{cvs
11108 log}.  Mas assim que você exporta os arquivos de seu
11109 ambiente de desenvolvimento se torna mais difícil dizer
11110 de quais revisões eles são.
11111
11112 @c <en>@sc{cvs} can use a mechanism known as @dfn{keyword
11113 @c <en>substitution} (or @dfn{keyword expansion}) to help
11114 @c <en>identifying the files.  Embedded strings of the form
11115 @c <en>@code{$@var{keyword}$} and
11116 @c <en>@code{$@var{keyword}:@dots{}$} in a file are replaced
11117 @c <en>with strings of the form
11118 @c <en>@code{$@var{keyword}:@var{value}$} whenever you obtain
11119 @c <en>a new revision of the file.
11120 O @sc{cvs} pode usar um mecanismo chamado de
11121 @dfn{substituição de palavra-chave} (ou @dfn{expansão
11122 de palavra-chave}) para ajudar na identificação de
11123 arquivos.  Strings embutidas na forma @code{$@var{keyword}$} e
11124 @code{$@var{keyword}:@dots{}$} em um arquivo são
11125 substituídas por strings da forma
11126 @code{$@var{keyword}:@var{value}$} sempre que você obtém
11127 uma nova revisão do arquivo.
11128
11129 @menu
11130 @c <en>* Keyword list::                   Keywords
11131 * Lista de palavras-chave::            Palavras-chave
11132 @c <en>* Using keywords::                 Using keywords
11133 * Usando palavras-chave::              Usando Palavras-chave
11134 @c <en>* Avoiding substitution::          Avoiding substitution
11135 * Evitando substituições::             Evitando substituições
11136 @c <en>* Substitution modes::             Substitution modes
11137 * Modos de substituição::              Modos de substituição
11138 @c <en>* Configuring keyword expansion::  Configuring keyword expansion
11139 * Configurando a expansão do teclado:: Configurando a expansão do teclado
11140 @c <en>* Log keyword::                    Problems with the $@splitrcskeyword{}Log$ keyword.
11141 * Log keyword::                    Problemas com a palavra-chave $@splitrcskeyword{}Log$.
11142 @end menu
11143
11144 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11145 @c <en>@node Keyword list
11146 @node Lista de palavras-chave
11147 @c <en>@section Keyword List
11148 @section Lista de Palavras-chave
11149 @c <en>@cindex Keyword List
11150 @cindex Lista de Palavras-chave
11151
11152 @c FIXME: need some kind of example here I think,
11153 @c perhaps in a
11154 @c "Keyword intro" node.  The intro in the "Keyword
11155 @c substitution" node itself seems OK, but to launch
11156 @c into a list of the keywords somehow seems too abrupt.
11157
11158 @c <en>This is a list of the keywords:
11159 Esta é uma lista de palavras-chave:
11160
11161 @table @code
11162 @c <en>@cindex Author keyword
11163 @cindex Palavra-chave Author (autor)
11164 @c <en>@item $@splitrcskeyword{Author}$
11165 @item $@splitrcskeyword{Author}$
11166 @c <en>The login name of the user who checked in the revision.
11167 O login do usuário que ???checked in??? a revisão.
11168
11169 @c <en>@cindex CVSHeader keyword
11170 @cindex Palavra-chave CVSHeader (cabeçalho CVS)
11171 @c <en>@item $@splitrcskeyword{CVSHeader}
11172 @item $@splitrcskeyword{CVSHeader}
11173 @c <en>A standard header (similar to $@splitrcskeyword{Header}$, but with
11174 @c <en>the CVS root stripped off). It contains the relative
11175 @c <en>pathname of the @sc{rcs} file to the CVS root, the
11176 @c <en>revision number, the date (UTC), the author, the state,
11177 @c <en>and the locker (if locked). Files will normally never
11178 @c <en>be locked when you use @sc{cvs}.
11179 Um cabeçalho padrão (similar ao
11180 $@splitrcskeyword{Header}$, mas com a raíz do CVS
11181 retirada). Ele contém o caminho do arquivo
11182 @sc{rcs} relativo à raíz do CVS, o número da revisão, a
11183 data (UTC), o autor, o estado, e o ???locker??? (se
11184 estiver travado). Arquivos normalmente nunca são
11185 travados quando você usa @sc{cvs}.
11186
11187 @c <en>Note that this keyword has only been recently
11188 @c <en>introduced to @sc{cvs} and may cause problems with
11189 @c <en>existing installations if $@splitrcskeyword{CVSHeader}$ is already
11190 @c <en>in the files for a different purpose. This keyword may
11191 @c <en>be excluded using the @code{KeywordExpansion=eCVSHeader}
11192 @c <en>in the @file{CVSROOT/config} file. 
11193 @c <en>See @ref{Configuring keyword expansion} for more details.
11194 Observe que esta palavra-chave foi adicionada apenas
11195 recentemente no @sc{cvs} e pode causar problemas com
11196 instalações existentes se $@splitrcskeyword{CVSHeader}$
11197 já está nos arquivos por um motivo diferente. Esta
11198 palavra-chave deve ser excluída usando o
11199 @code{KeywordExpansion=eCVSHeader} no arquivo
11200 @file{CVSROOT/config}. Veja em @ref{Configurando a
11201 expansão do teclado} para maiores detalhes.
11202
11203 @c <en>@cindex Date keyword
11204 @cindex Palavra-chave Date (data)
11205 @c <en>@item $@splitrcskeyword{Date}$
11206 @item $@splitrcskeyword{Date}$
11207 @c <en>The date and time (UTC) the revision was checked in.
11208 A data e hora (UTC) na qual a revisão foi ???checked in???.
11209
11210 @c <en>@cindex Header keyword
11211 @cindex Palavra-chave Header (cabeçalho)
11212 @c <en>@item $@splitrcskeyword{Header}$
11213 @item $@splitrcskeyword{Header}$
11214 @c <en>A standard header containing the full pathname of the
11215 @c <en>@sc{rcs} file, the revision number, the date (UTC), the
11216 @c <en>author, the state, and the locker (if locked).  Files
11217 @c <en>will normally never be locked when you use @sc{cvs}.
11218 Um cabeçalho padrão contendo o caminho completo do arquivo
11219 @sc{rcs}, o número da revisão, a data (UTC), o autor, o
11220 estado, e o ???locker??? (se estiver travado).
11221 Arquivos normalmente nunca são travados quando você usa
11222 @sc{cvs}.
11223
11224 @c <en>@cindex Id keyword
11225 @cindex Palavra-chave Id
11226 @c <en>@item $@splitrcskeyword{Id}$
11227 @item $@splitrcskeyword{Id}$
11228 @c <en>Same as @code{$@splitrcskeyword{Header}$}, except that the @sc{rcs}
11229 @c <en>filename is without a path.
11230 Similar ao @code{$@splitrcskeyword{Header}$}, exceto
11231 que o nome do arquivo @sc{rcs} não tem o caminho.
11232
11233 @c <en>@cindex Name keyword
11234 @cindex Palavra-chave Name (nome)
11235 @c <en>@item $@splitrcskeyword{Name}$
11236 @item $@splitrcskeyword{Name}$
11237 @c <en>Tag name used to check out this file.  The keyword is
11238 @c <en>expanded only if one checks out with an explicit tag
11239 @c <en>name.  For example, when running the command @code{cvs
11240 @c <en>co -r first}, the keyword expands to @samp{Name: first}.
11241 Nome da etiqueta (tag) usada para ???check out??? este
11242 arquivo.  A palavra-chave é expandida apenas se foi
11243 ???check out??? com um nome de etiqueta explícito.  Por
11244 exemplo, quando rodou o comando @code{cvs co -r
11245 inicio}, a palavra-chave expande para @samp{Name: inicio}.
11246
11247 @c <en>@cindex Locker keyword
11248 @cindex Palavra-chave Locker (???locker???)
11249 @c <en>@item $@splitrcskeyword{Locker}$
11250 @item $@splitrcskeyword{Locker}$
11251 @c <en>The login name of the user who locked the revision
11252 @c <en>(empty if not locked, which is the normal case unless
11253 @c <en>@code{cvs admin -l} is in use).
11254 O login do usuário que travou a revisão (vazio se não
11255 estiver travado, que é o normal a menos que @code{cvs
11256 admin -l} esteja em uso).
11257
11258 @c <en>@cindex Log keyword
11259 @cindex Palvra-chave Log (registro)
11260 @c <en>@cindex MaxCommentLeaderLength
11261 @cindex MaxCommentLeaderLength
11262 @c <en>@cindex UseArchiveCommentLeader
11263 @cindex UseArchiveCommentLeader
11264 @c <en>@cindex Log keyword, configuring substitution behavior
11265 @cindex Palavra-chave Log, configurando o comportamento na substituição
11266 @c <en>@item $@splitrcskeyword{Log}$
11267 @item $@splitrcskeyword{Log}$
11268 @c <en>The log message supplied during commit, preceded by a
11269 @c <en>header containing the @sc{rcs} filename, the revision
11270 @c <en>number, the author, and the date (UTC).  Existing log
11271 @c <en>messages are @emph{not} replaced.  Instead, the new log
11272 @c <en>message is inserted after @code{$@splitrcskeyword{Log:@dots{}}$}.
11273 @c <en>Each new line is prefixed with the same string which
11274 @c <en>precedes the @code{$Log} keyword.  For example, if the
11275 @c <en>file contains:
11276 A mensagem de log (registro) fornecida durante o
11277 ???commit???, precedida por um cabeçalho contendo o
11278 nome do arquivo @sc{rcs}, o número de revisão, o autor,
11279 e a data (UTC).  Mensagens de log (registro) @emph{não}
11280 são substituídas.  Ao invés disto, A nova mensagem de
11281 log (registro) é inserida depois do
11282 @code{$@splitrcskeyword{Log:@dots{}}$}. Cada nova linha
11283 é prefixada com a mesma string que precede a
11284 palavra-chave @code{$Log}.  Por exemplo, se o arquivo contém:
11285
11286 @example
11287   /* Here is what people have been up to:
11288    *
11289    * $@splitrcskeyword{}Log: frob.c,v $
11290    * Revision 1.1  1997/01/03 14:23:51  joe
11291    * Add the superfrobnicate option
11292    *
11293    */
11294 @end example
11295
11296 @noindent
11297 @c <en>then additional lines which are added when expanding
11298 @c <en>the @code{$Log} keyword will be preceded by @samp{   * }.
11299 @c <en>Unlike previous versions of @sc{cvs} and @sc{rcs}, the
11300 @c <en>@dfn{comment leader} from the @sc{rcs} file is not used.
11301 @c <en>The @code{$Log} keyword is useful for
11302 @c <en>accumulating a complete change log in a source file,
11303 @c <en>but for several reasons it can be problematic.
11304 @c <en>@xref{Log keyword}.
11305 Então, linhas adicionais que são adicionadas quando a
11306 palavra-chave @code{$Log} é expandida vão ser
11307 precedidas por @samp{   * }. Ao contrário de versões
11308 prévias do @sc{cvs} e do @sc{rcs}, o @dfn{comment
11309 leader} do arquivo @sc{rcs} não é usado. A
11310 palavra-chave @code{$Log} é útil para acumular um
11311 ???change log??? completo num fonte, mas pode ser
11312 problemática por várias razões. Veja em @ref{Log keyword}.
11313
11314 @c <en>@cindex RCSfile keyword
11315 @cindex Palavra-chave RCSfile (arquivo RCS)
11316 @c <en>@item $@splitrcskeyword{RCSfile}$
11317 @item $@splitrcskeyword{RCSfile}$
11318 @c <en>The name of the RCS file without a path.
11319 O nome do arquivo RCS sem o caminho.
11320
11321 @c <en>@cindex Revision keyword
11322 @cindex Palavra-chave Revision (revisão)
11323 @c <en>@item $@splitrcskeyword{Revision}$
11324 @item $@splitrcskeyword{Revision}$
11325 @c <en>The revision number assigned to the revision.
11326 O número de revisão atribuído à revisão.
11327
11328 @c <en>@cindex Source keyword
11329 @cindex Palavra-chave Source (fonte)
11330 @c <en>@item $@splitrcskeyword{Source}$
11331 @item $@splitrcskeyword{Source}$
11332 @c <en>The full pathname of the RCS file.
11333 O caminho completo do arquivo RCS.
11334
11335 @c <en>@cindex State keyword
11336 @cindex Palavra-chave State (estado)
11337 @c <en>@item $@splitrcskeyword{State}$
11338 @item $@splitrcskeyword{State}$
11339 @c <en>The state assigned to the revision.  States can be
11340 @c <en>assigned with @code{cvs admin -s}---see @ref{admin options}.
11341 O estado atribuído à revisão.  Estados podem ser
11342 atribuídos com @code{cvs admin -s}---veja em @ref{admin options}.
11343
11344 @c <en>@cindex Local keyword
11345 @cindex Palavra-chave Local
11346 @c <en>@item Local keyword
11347 @item Palavra-chave Local
11348 @c <en>The @code{LocalKeyword} option in the @file{CVSROOT/config} file
11349 @c <en>may be used to specify a local keyword which is to be
11350 @c <en>used as an alias for one of the keywords: $@splitrcskeyword{}Id$,
11351 @c <en>$@splitrcskeyword{}Header$, or $@splitrcskeyword{}CVSHeader$. For
11352 @c <en>example, if the @file{CVSROOT/config} file contains
11353 @c <en>a line with @code{LocalKeyword=MYBSD=CVSHeader}, then a
11354 @c <en>file with the local keyword $@splitrcskeyword{}MYBSD$ will be
11355 @c <en>expanded as if it were a $@splitrcskeyword{}CVSHeader$ keyword. If
11356 @c <en>the src/frob.c file contained this keyword, it might
11357 @c <en>look something like this:
11358 A opção @code{LocalKeyword} no arquivo
11359 @file{CVSROOT/config} pode ser usada para especificar
11360 uma palavra-chave que não é usada como um alias para
11361 uma das seguintes palavras-chave: $@splitrcskeyword{}Id$,
11362 $@splitrcskeyword{}Header$, ou $@splitrcskeyword{}CVSHeader$. Por
11363 exemplo, se o arquivo @file{CVSROOT/config} contém uma
11364 linha com @code{LocalKeyword=MYBSD=CVSHeader}, então um
11365 arquivo com a palavra-chave local
11366 $@splitrcskeyword{}MYBSD$ vai ser expandido como se ele
11367 fosse uma palavra-chave
11368 $@splitrcskeyword{}CVSHeader$. Se o arquivo src/frob.c
11369 contiver esta palavra-chave, ele pode parecer com algo assim:
11370
11371 @example
11372   /*
11373    * $@splitrcskeyword{}MYBSD: src/frob.c,v 1.1 2003/05/04 09:27:45 john Exp $ 
11374    */
11375 @end example
11376
11377 @c <en>Many repositories make use of a such a ``local
11378 @c <en>keyword'' feature. An old patch to @sc{cvs} provided
11379 @c <en>the @code{LocalKeyword} feature using a @code{tag=}
11380 @c <en>option and called this the ``custom tag'' or ``local
11381 @c <en>tag'' feature. It was used in conjunction with the
11382 @c <en>what they called the @code{tagexpand=} option. In
11383 @c <en>@sc{cvs} this other option is known as the
11384 @c <en>@code{KeywordExpand} option. 
11385 @c <en>See @ref{Configuring keyword expansion} for more
11386 @c <en>details.
11387 Muitos repositórios fazem uso de tal ``palavra-chave
11388 local''. Uma ???patch??? antiga ao @sc{cvs} fornecia a
11389 funcionalidade @code{LocalKeyword} usando uma opção
11390 @code{tag=} e chamava esta funcionalidade de ``custom tag'' ou ``local
11391 tag''. ela foi usada em conjunto com o que chamavam de
11392 opção @code{tagexpand=}. No @sc{cvs} esta outra opção é
11393 conhecida como a opção @code{KeywordExpand}. Veja em
11394 @ref{Configurando a expansão do teclado} para maiores
11395 detalhes.
11396
11397 @c <en>Examples from popular projects include:
11398 @c <en>$@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
11399 @c <en>$@splitrcskeyword{OpenBSD}$, $@splitrcskeyword{XFree86}$,
11400 @c <en>$@splitrcskeyword{Xorg}$.
11401 Exemplos de projetos populares incluem:
11402 $@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
11403 $@splitrcskeyword{OpenBSD}$, $@splitrcskeyword{XFree86}$,
11404 $@splitrcskeyword{Xorg}$.
11405
11406 @c <en>The advantage of this is that you can include your
11407 @c <en>local version information in a file using this local
11408 @c <en>keyword without disrupting the upstream version
11409 @c <en>information (which may be a different local keyword or
11410 @c <en>a standard keyword). Allowing bug reports and the like
11411 @c <en>to more properly identify the source of the original
11412 @c <en>bug to the third-party and reducing the number of
11413 @c <en>conflicts that arise during an import of a new version.
11414 A vantagem disto é que você pode incluir sua informação
11415 de versão local num arquivo usando esta palavra-chave
11416 local sem romper com a informação da versão principal
11417 (que pode ser uma palavra-chave local diferente ou uma
11418 palavra-chave padrão). Permitir relatório de bug (bug
11419 report) e coisas do gênero para identificar mais
11420 adequadamente a origem do bug original para o terceiro
11421 e reduzir o número de conflitos que surgem durante uma
11422 importação de uma nova versão.
11423
11424 @c <en>All keyword expansion except the local keyword may be
11425 @c <en>disabled using the @code{KeywordExpand} option in
11426 @c <en>the @file{CVSROOT/config} file---see 
11427 @c <en>@ref{Configuring keyword expansion} for more details.
11428 Toda expansão de palavra-chave com exceção da
11429 palavra-chave local deve ser disabilitada usando a
11430 opção @code{KeywordExpand} no arquivo
11431 @file{CVSROOT/config}---veja em @ref{Configurando a
11432 expansão do teclado} para mais detalhes.
11433
11434 @end table
11435
11436 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11437 @c <en>@node Using keywords
11438 @node Usando palavras-chave
11439 @c <en>@section Using keywords
11440 @section Usando palavras-chave
11441
11442 @c <en>To include a keyword string you simply include the
11443 @c <en>relevant text string, such as @code{$@splitrcskeyword{Id}$}, inside the
11444 @c <en>file, and commit the file.  @sc{cvs} will automatically (Or,
11445 @c <en>more accurately, as part of the update run that
11446 @c <en>automatically happens after a commit.)
11447 @c <en>expand the string as part of the commit operation.
11448 Para incluir uma string de palavra-chave você deve
11449 simplesmente incluir o a string de texto relevante,
11450 como @code{$@splitrcskeyword{Id}$}, dentro do arquivo,
11451 e ???commit??? o arquivo.  O @sc{cvs} vai automaticamente (Ou,
11452 mais precisamente, como parte da execução do
11453 ???update??? que acontece automaticamente depois do
11454 ???commit???.) expandir a string como parte da operação
11455 de commit.
11456
11457 @c <en>It is common to embed the @code{$@splitrcskeyword{}Id$} string in
11458 @c <en>the source files so that it gets passed through to
11459 @c <en>generated files.  For example, if you are managing
11460 @c <en>computer program source code, you might include a
11461 @c <en>variable which is initialized to contain that string.
11462 @c <en>Or some C compilers may provide a @code{#pragma ident}
11463 @c <en>directive.  Or a document management system might
11464 @c <en>provide a way to pass a string through to generated
11465 @c <en>files.
11466 É normal imergir a string @code{$@splitrcskeyword{}Id$}
11467 nos arquivos fonte de forma que ela seja ignorada nos
11468 arquivos gerados.  Por exemplo, se você está
11469 gerenciando código fonte de programas de computador,
11470 você deve incluir uma variável que é inicializada para
11471 conter aquela string. Ou alguns compiladores C podem
11472 fornecer uma diretiva @code{#pragma ident}.  Ou um
11473 sistema de gerência de documentos pode fornecer um
11474 jeito de entregar a string diretamente ao arquivos
11475 gerados.
11476
11477 @c Would be nice to give an example, but doing this in
11478 @c portable C is not possible and the problem with
11479 @c picking any one language (VMS HELP files, Ada,
11480 @c troff, whatever) is that people use CVS for all
11481 @c kinds of files.
11482
11483 @c <en>@cindex Ident (shell command)
11484 @cindex Ident (shell command)
11485 @c <en>The @code{ident} command (which is part of the @sc{rcs}
11486 @c <en>package) can be used to extract keywords and their
11487 @c <en>values from a file.  This can be handy for text files,
11488 @c <en>but it is even more useful for extracting keywords from
11489 @c <en>binary files.
11490 O comando @code{ident} (que é parte do pacote @sc{rcs})
11491 pode ser usado para extrair palavras-chave e seus
11492 valores de um arquivo.  Isto pode ser útil para
11493 arquivos texto, mas é mais útil para extração de
11494 palavras-chave de arquivos binários.
11495
11496 @example
11497 $ ident samp.c
11498 samp.c:
11499      $@splitrcskeyword{}Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
11500 $ gcc samp.c
11501 $ ident a.out
11502 a.out:
11503      $@splitrcskeyword{}Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
11504 @end example
11505
11506 @c <en>@cindex What (shell command)
11507 @cindex What (shell command)
11508 @c <en>S@sc{ccs} is another popular revision control system.
11509 @c <en>It has a command, @code{what}, which is very similar to
11510 @c <en>@code{ident} and used for the same purpose.  Many sites
11511 @c <en>without @sc{rcs} have @sc{sccs}.  Since @code{what}
11512 @c <en>looks for the character sequence @code{@@(#)} it is
11513 @c <en>easy to include keywords that are detected by either
11514 @c <en>command.  Simply prefix the keyword with the
11515 @c <en>magic @sc{sccs} phrase, like this:
11516 S@sc{ccs} é outro sistema de controle de revisões
11517 popular. Ele tem um comando, @code{what} (o que, em
11518 português), que é bastante similar ao @code{ident} e
11519 usado para o mesmo propósito.  Muitos ???sites??? sem
11520 @sc{rcs} tem @sc{sccs}.  Uma vez que o @code{what}
11521 procura pela seqüência de caracteres @code{@@(#)} é
11522 fácil incluir palavras-chave que são detectadas por
11523 qualquer comando.  Simplesmente bote um prefixo na
11524 palavra-chave com a frase mágica @sc{sccs}, como esta:
11525
11526 @example
11527 static char *id="@@(#) $@splitrcskeyword{}Id: ab.c,v 1.5 1993/10/19 14:57:32 ceder Exp $";
11528 @end example
11529
11530 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11531 @c <en>@node Avoiding substitution
11532 @node Evitando substituições
11533 @c <en>@section Avoiding substitution
11534 @section Evitando substituições
11535
11536 @c <en>Keyword substitution has its disadvantages.  Sometimes
11537 @c <en>you might want the literal text string
11538 @c <en>@samp{$@splitrcskeyword{}Author$} to appear inside a file without
11539 @c <en>@sc{cvs} interpreting it as a keyword and expanding it
11540 @c <en>into something like @samp{$@splitrcskeyword{}Author: ceder $}.
11541 Substituição de palavra-chave tem suas desvantagens.
11542 Algumas vezes você pode querer que a string de texto
11543 literal @samp{$@splitrcskeyword{}Author$} apareça
11544 dentro de um arquivo sem que o @sc{cvs} a interprete
11545 como uma palavra-chave e a expanda em algo como
11546 @samp{$@splitrcskeyword{}Author: ceder $}.
11547
11548 @c <en>There is unfortunately no way to selectively turn off
11549 @c <en>keyword substitution.  You can use @samp{-ko}
11550 @c <en>(@pxref{Substitution modes}) to turn off keyword
11551 @c <en>substitution entirely.
11552 Infelizmente não há como desligar a substituição de
11553 palavra-chave de forma seletiva.  Você pode usar @samp{-ko}
11554 (@pxref{Modos de substituição}) para desligar a
11555 substituição de palavra-chave completamente.
11556
11557 @c <en>In many cases you can avoid using keywords in
11558 @c <en>the source, even though they appear in the final
11559 @c <en>product.  For example, the source for this manual
11560 @c <en>contains @samp{$@@asis@{@}Author$} whenever the text
11561 @c <en>@samp{$@splitrcskeyword{}Author$} should appear.  In @code{nroff}
11562 @c <en>and @code{troff} you can embed the null-character
11563 @c <en>@code{\&} inside the keyword for a similar effect.
11564 Em muitos casos você pode evitar o uso de palavra-chave
11565 nos fontes, mesmo que elas apareçam no produto final.
11566 Por exemplo, o código-fonte deste manual contém
11567 @samp{$@@asis@{@}Author$} sempre que o texto
11568 @samp{$@splitrcskeyword{}Author$} deva aparecer.  Em
11569 @code{nroff} e @code{troff} você pode imergir o
11570 caractere nulo @code{\&} dentro de uma palavra-chave
11571 para obter um efeito similar.
11572
11573 @c <en>It is also possible to specify an explicit list of
11574 @c <en>keywords to include or exclude using the
11575 @c <en>@code{KeywordExpand} option in the
11576 @c <en>@file{CVSROOT/config} file--see @ref{Configuring keyword expansion}
11577 @c <en>for more details. This feature is intended primarily
11578 @c <en>for use with the @code{LocalKeyword} option--see
11579 @c <en>@ref{Keyword list}.
11580 Também é possível especificar explicitamente uma lista
11581 de palavras-chave para incluir ou excluir usando a
11582 opção @code{KeywordExpand} no arquivo
11583 @file{CVSROOT/config}--veja em @ref{Configurando a
11584 expansão do teclado} para maiores detalhes. Esta
11585 funcionalidade foi pensada para ser usada a princípio
11586 com a opção @code{LocalKeyword}--veja @ref{Lista de
11587 palavras-chave}.
11588
11589 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11590 @c <en>@node Substitution modes
11591 @node Modos de substituição
11592 @c <en>@section Substitution modes
11593 @section Modos de substituição
11594 @c <en>@cindex Keyword substitution, changing modes
11595 @cindex Substituição de palavra-chave, mudando os modos
11596 @c <en>@cindex -k (keyword substitution)
11597 @cindex -k (substituição de palavra-chave)
11598 @c <en>@cindex Kflag
11599 @cindex Kflag
11600
11601 @c FIXME: This could be made more coherent, by expanding it
11602 @c with more examples or something.
11603 @c <en>Each file has a stored default substitution mode, and
11604 @c <en>each working directory copy of a file also has a
11605 @c <en>substitution mode.  The former is set by the @samp{-k}
11606 @c <en>option to @code{cvs add} and @code{cvs admin}; the
11607 @c <en>latter is set by the @samp{-k} or @samp{-A} options to @code{cvs
11608 @c <en>checkout} or @code{cvs update}.  @code{cvs diff} also
11609 @c <en>has a @samp{-k} option.  For some examples,
11610 @c <en>see @ref{Binary files}, and @ref{Merging and keywords}.
11611 Cada arquivo tem um modo de substituição padrão
11612 armazenado, e cada cópia de um arquivo num diretório de
11613 trabalho também tem um modo de substituição.  O
11614 primeiro é ajustado pela opção @samp{-k} no @code{cvs
11615 add} e no @code{cvs admin}; o último é ajustado pelas
11616 opções @samp{-k} ou @samp{-A} do @code{cvs checkout} ou
11617 do @code{cvs update}.  O @code{cvs diff} também tem uma
11618 opção @samp{-k}.  Para alguns exemplos, veja em
11619 @ref{Arquivos binários}, e @ref{Mesclagem e
11620 palavras-chave}.
11621 @c The fact that -A is overloaded to mean both reset
11622 @c sticky options and reset sticky tags/dates is
11623 @c somewhat questionable.  Perhaps there should be
11624 @c separate options to reset sticky options (e.g. -k
11625 @c A") and tags/dates (someone suggested -r HEAD could
11626 @c do this instead of setting a sticky tag of "HEAD"
11627 @c as in the status quo but I haven't thought much
11628 @c about that idea.  Of course -r .reset or something
11629 @c could be coined if this needs to be a new option).
11630 @c On the other hand, having -A mean "get things back
11631 @c into the state after a fresh checkout" has a certain
11632 @c appeal, and maybe there is no sufficient reason for
11633 @c creeping featurism in this area.
11634
11635 @c <en>The modes available are:
11636 Os modos disponíveis são:
11637
11638 @table @samp
11639 @c <en>@item -kkv
11640 @item -kkv
11641 @c <en>Generate keyword strings using the default form, e.g.
11642 @c <en>@code{$@splitrcskeyword{}Revision: 5.7 $} for the @code{Revision}
11643 @c <en>keyword.
11644 Gera strings de palavras-chave usando a forma padrão, e.g.
11645 @code{$@splitrcskeyword{}Revision: 5.7 $} para a
11646 palavra-chave @code{Revision}.
11647
11648 @c <en>@item -kkvl
11649 @item -kkvl
11650 @c <en>Like @samp{-kkv}, except that a locker's name is always
11651 @c <en>inserted if the given revision is currently locked.
11652 @c <en>The locker's name is only relevant if @code{cvs admin
11653 @c <en>-l} is in use.
11654 Parecido com o @samp{-kkv}, exceto que um nome de
11655 ???locker??? é sempre inserido se a revisão dada
11656 estiver atualmente ???locked???. O nome do ???locker???
11657 é relevante apenas se @code{cvs admin -l} estiver em uso.
11658
11659 @c <en>@item -kk
11660 @item -kk
11661 @c <en>Generate only keyword names in keyword strings; omit
11662 @c <en>their values.  For example, for the @code{Revision}
11663 @c <en>keyword, generate the string @code{$@splitrcskeyword{}Revision$}
11664 @c <en>instead of @code{$@splitrcskeyword{}Revision: 5.7 $}.  This option
11665 @c <en>is useful to ignore differences due to keyword
11666 @c <en>substitution when comparing different revisions of a
11667 @c <en>file (@pxref{Merging and keywords}).
11668 Gera nomes de palavras-chave apenas nas strings da palavras-chave; omite
11669 seus valores.  Por exemplo, para a palavra-chave @code{Revision}
11670 , gera a string @code{$@splitrcskeyword{}Revision$}
11671 ao invés de @code{$@splitrcskeyword{}Revision: 5.7 $}.
11672 Esta opção é útil para ignorar diferenças devido a
11673 substituição de palavras-chave quando comparando
11674 revisões diferentes de um mesmo arquivo
11675 (@pxref{Mesclagem e palavras-chave}).
11676
11677 @c <en>@item -ko
11678 @item -ko
11679 @c <en>Generate the old keyword string, present in the working
11680 @c <en>file just before it was checked in.  For example, for
11681 @c <en>the @code{Revision} keyword, generate the string
11682 @c <en>@code{$@splitrcskeyword{}Revision: 1.1 $} instead of
11683 @c <en>@code{$@splitrcskeyword{}Revision: 5.7 $} if that is how the
11684 @c <en>string appeared when the file was checked in.
11685 Gera a antiga string da palavra-chave, presente no
11686 arquivo de trabalho antes dele ter sido ???checked
11687 in???.  Por exemplo, para a palavra-chave
11688 @code{Revision}, gera a string
11689 @code{$@splitrcskeyword{}Revision: 1.1 $} ao invés de
11690 @code{$@splitrcskeyword{}Revision: 5.7 $} se era assim
11691 que a string aparecia quando o arquivo foi ???checked
11692 in???.
11693
11694 @c <en>@item -kb
11695 @item -kb
11696 @c <en>Like @samp{-ko}, but also inhibit conversion of line
11697 @c <en>endings between the canonical form in which they are
11698 @c <en>stored in the repository (linefeed only), and the form
11699 @c <en>appropriate to the operating system in use on the
11700 @c <en>client.  For systems, like unix, which use linefeed
11701 @c <en>only to terminate lines, this is very similar to
11702 @c <en>@samp{-ko}.  For more information on binary files, see
11703 @c <en>@ref{Binary files}.  In @sc{cvs} version 1.12.2 and later
11704 @c <en>@samp{-kb}, as set by @code{cvs add}, @code{cvs admin}, or
11705 @c <en>@code{cvs import} may not be overridden by a @samp{-k} option
11706 @c <en>specified on the command line.
11707 Como o @samp{-ko}, mas também inibindo conversão de
11708 fim-de-linhas entre a forma canônica nas qual os
11709 arquivo são arquivados no repositório (apenas
11710 linefeed), e a forma apropriada para o sistema
11711 operacional em uso no cliente.  Para sistemas, como o
11712 unix, que usam apenas o linefeed para terminar linhas,
11713 isto é bastante similar ao @samp{-ko}.  Para mais
11714 informações sobre arquivos binários, veja em
11715 @ref{Arquivos binários}.  No @sc{cvs} versão 1.12.2 ou
11716 mais novas @samp{-kb}, ajustado por @code{cvs add}, @code{cvs admin}, ou
11717 @code{cvs import} não vai ser sobreescrito pela opção
11718 @samp{-k} especificada na linha de comando.
11719
11720 @c <en>@item -kv
11721 @item -kv
11722 @c <en>Generate only keyword values for keyword strings.  For
11723 @c <en>example, for the @code{Revision} keyword, generate the string
11724 @c <en>@code{5.7} instead of @code{$@splitrcskeyword{}Revision: 5.7 $}.
11725 @c <en>This can help generate files in programming languages
11726 @c <en>where it is hard to strip keyword delimiters like
11727 @c <en>@code{$@splitrcskeyword{}Revision: $} from a string.  However,
11728 @c <en>further keyword substitution cannot be performed once
11729 @c <en>the keyword names are removed, so this option should be
11730 @c <en>used with care.
11731 Gera apenas os valores das palavras-chaves para strings
11732 de palavras-chave.  Por exemplo, para a palavra-chave
11733 @code{Revision}, gera a string @code{5.7} ao invés de
11734 @code{$@splitrcskeyword{}Revision: 5.7 $}. Isto pode
11735 ajudar a gerar arquivos em linguagens de programação
11736 onde é difícil ???strip??? delimitadores de
11737 palavras-chave, como o
11738 @code{$@splitrcskeyword{}Revision: $} para uma string.
11739 Entretanto, outras substituições de palavras-chave não
11740 poderam ser feitas, uma vez que os nomes de
11741 palavras-chave foram removidos. Logo, esta opção deve
11742 ser usada com cuidado.
11743
11744 @c <en>One often would like to use @samp{-kv} with @code{cvs
11745 @c <en>export}---@pxref{export}.  But be aware that doesn't
11746 @c <en>handle an export containing binary files correctly.
11747 É comum querer usar o @samp{-kv} com @code{cvs
11748 export}---@pxref{export}.  Mas lembre-se que isto não
11749 trata um export contendo binários direito.
11750
11751 @end table
11752
11753 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11754 @c <en>@node Configuring keyword expansion
11755 @node Configurando a expansão do teclado
11756 @c <en>@section Configuring Keyword Expansion
11757 @section Configurando a Expansão do Teclado
11758 @c <en>@cindex Configuring keyword expansion
11759 @cindex Configurando a Expansão do Teclado
11760
11761 @c <en>In a repository that includes third-party software on
11762 @c <en>vendor branches, it is sometimes helpful to configure
11763 @c <en>CVS to use a local keyword instead of the standard
11764 @c <en>$@splitrcskeyword{Id}$ or $@splitrcskeyword{Header}$ keywords. Examples from
11765 @c <en>real projects includ, $@splitrcskeyword{Xorg}$, $@splitrcskeyword{XFree86}$,
11766 @c <en>$@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
11767 @c <en>$@splitrcskeyword{OpenBSD}$, and even $@splitrcskeyword{dotat}$.
11768 @c <en>The advantage of this is that
11769 @c <en>you can include your local version information in a
11770 @c <en>file using this local keyword (sometimes called a
11771 @c <en>``custom tag'' or a ``local tag'') without disrupting
11772 @c <en>the upstream version information (which may be a
11773 @c <en>different local keyword or a standard keyword). In
11774 @c <en>these cases, it is typically desirable to disable the
11775 @c <en>expansion of all keywords except the configured local
11776 @c <en>keyword.
11777 Num repositório que inclua software de terceiros em
11778 ramos de fornecedor, às vezes é útil configurar o CVS
11779 para usar uma palavra-chave local ao invés das
11780 palavras-chave padrão $@splitrcskeyword{Id}$ ou
11781 $@splitrcskeyword{Header}$. Exemplos de projetos reais incluem, $@splitrcskeyword{Xorg}$, $@splitrcskeyword{XFree86}$,
11782 $@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
11783 $@splitrcskeyword{OpenBSD}$, e ainda
11784 $@splitrcskeyword{dotat}$. A vantagem disto é que você
11785 pode incluir sua ???local version information??? num
11786 arquivo usando esta palavra-chave local (algumas vezes
11787 chamada de ``custom tag'' ou ``local tag'') sem romper
11788 com a ???upstream version information??? (que pode ser
11789 uma palavra-chave local diferente ou uma palavra-chave
11790 padrão). Nestes casos, é normalmente desejável
11791 desabilitar a expansão de todas as palavras-chave
11792 exceto a palavra-chave local configurada.
11793
11794 @c <en>The @code{KeywordExpansion} option in the
11795 @c <en>@file{CVSROOT/config} file is intended to allow for the
11796 @c <en>either the explicit exclusion of a keyword or list of
11797 @c <en>keywords, or for the explicit inclusion of a keyword or
11798 @c <en>a list of keywords. This list may include the
11799 @c <en>@code{LocalKeyword} that has been configured.
11800 The @code{KeywordExpansion} option in the
11801 @file{CVSROOT/config} file is intended to allow for the
11802 either the explicit exclusion of a keyword or list of
11803 keywords, or for the explicit inclusion of a keyword or
11804 a list of keywords. This list may include the
11805 @code{LocalKeyword} that has been configured.
11806
11807 @c <en>The @code{KeywordExpansion} option is followed by
11808 @c <en>@code{=} and the next character may either be @code{i}
11809 @c <en>to start an inclusion list or @code{e} to start an
11810 @c <en>exclusion list. If the following lines were added to
11811 @c <en>the @file{CVSROOT/config} file:
11812 The @code{KeywordExpansion} option is followed by
11813 @code{=} and the next character may either be @code{i}
11814 to start an inclusion list or @code{e} to start an
11815 exclusion list. If the following lines were added to
11816 the @file{CVSROOT/config} file:
11817
11818 @example
11819         # Add a "MyBSD" keyword and restrict keyword
11820         # expansion
11821         LocalKeyword=MyBSD=CVSHeader
11822         KeywordExpand=iMyBSD
11823 @end example
11824
11825 @c <en>then only the $@splitrcskeyword{MyBSD}$ keyword would be expanded.
11826 @c <en>A list may be used. The this example:
11827 then only the $@splitrcskeyword{MyBSD}$ keyword would be expanded.
11828 A list may be used. The this example:
11829
11830 @example
11831         # Add a "MyBSD" keyword and restrict keyword
11832         # expansion to the MyBSD, Name and Date keywords.
11833         LocalKeyword=MyBSD=CVSHeader
11834         KeywordExpand=iMyBSD,Name,Date
11835 @end example
11836
11837 @c <en>would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
11838 @c <en>$@splitrcskeyword{Date}$ to be expanded.
11839 @c <en>would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
11840 @c <en>$@splitrcskeyword{Date}$ to be expanded.
11841 would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
11842 $@splitrcskeyword{Date}$ to be expanded.
11843 would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
11844 $@splitrcskeyword{Date}$ to be expanded.
11845
11846 @c <en>It is also possible to configure an exclusion list
11847 @c <en>using the following:
11848 @c <en>It is also possible to configure an exclusion list
11849 @c <en>using the following:
11850 It is also possible to configure an exclusion list
11851 using the following:
11852 It is also possible to configure an exclusion list
11853 using the following:
11854
11855 @example
11856         # Do not expand the non-RCS keyword CVSHeader
11857         KeywordExpand=eCVSHeader
11858 @end example
11859
11860 @c <en>This allows @sc{cvs} to ignore the recently introduced
11861 @c <en>$@splitrcskeyword{CVSHeader}$ keyword and retain all of the
11862 @c <en>others. The exclusion entry could also contain the
11863 @c <en>standard RCS keyword list, but this could be confusing
11864 @c <en>to users that expect RCS keywords to be expanded, so
11865 @c <en>ycare should be taken to properly set user expectations
11866 @c <en>for a repository that is configured in that manner.
11867 This allows @sc{cvs} to ignore the recently introduced
11868 $@splitrcskeyword{CVSHeader}$ keyword and retain all of the
11869 others. The exclusion entry could also contain the
11870 standard RCS keyword list, but this could be confusing
11871 to users that expect RCS keywords to be expanded, so
11872 ycare should be taken to properly set user expectations
11873 for a repository that is configured in that manner.
11874
11875 @c <en>If there is a desire to not have any RCS keywords
11876 @c <en>expanded and not use the @code{-ko} flags everywhere,
11877 @c <en>an administrator may disable all keyword expansion
11878 @c <en>using the @file{CVSROOT/config} line:
11879 If there is a desire to not have any RCS keywords
11880 expanded and not use the @code{-ko} flags everywhere,
11881 an administrator may disable all keyword expansion
11882 using the @file{CVSROOT/config} line:
11883
11884 @example
11885         # Do not expand any RCS keywords
11886         KeywordExpand=i
11887 @end example
11888
11889 @c <en>this could be confusing to users that expect RCS
11890 @c <en>keywords like $@splitrcskeyword{Id}$ to be expanded properly,
11891 @c <en>so care should be taken to properly set user
11892 @c <en>expectations for a repository so configured.
11893 this could be confusing to users that expect RCS
11894 keywords like $@splitrcskeyword{Id}$ to be expanded properly,
11895 so care should be taken to properly set user
11896 expectations for a repository so configured.
11897
11898 @c <en>It should be noted that a patch to provide both the
11899 @c <en>@code{KeywordExpand} and @code{LocalKeyword} features
11900 @c <en>has been around a long time. However, that patch
11901 @c <en>implemented these features using @code{tag=} and
11902 @c <en>@code{tagexpand=} keywords and those keywords are NOT
11903 @c <en>recognized.
11904 It should be noted that a patch to provide both the
11905 @code{KeywordExpand} and @code{LocalKeyword} features
11906 has been around a long time. However, that patch
11907 implemented these features using @code{tag=} and
11908 @code{tagexpand=} keywords and those keywords are NOT
11909 recognized.
11910
11911 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11912 @c <en>@node Log keyword
11913 @node Log keyword
11914 @c <en>@section Problems with the $@splitrcskeyword{}Log$ keyword.
11915 @section Problems with the $@splitrcskeyword{}Log$ keyword.
11916
11917 @c <en>The @code{$@splitrcskeyword{}Log$} keyword is somewhat
11918 @c <en>controversial.  As long as you are working on your
11919 @c <en>development system the information is easily accessible
11920 @c <en>even if you do not use the @code{$@splitrcskeyword{}Log$}
11921 @c <en>keyword---just do a @code{cvs log}.  Once you export
11922 @c <en>the file the history information might be useless
11923 @c <en>anyhow.
11924 The @code{$@splitrcskeyword{}Log$} keyword is somewhat
11925 controversial.  As long as you are working on your
11926 development system the information is easily accessible
11927 even if you do not use the @code{$@splitrcskeyword{}Log$}
11928 keyword---just do a @code{cvs log}.  Once you export
11929 the file the history information might be useless
11930 anyhow.
11931
11932 @c <en>A more serious concern is that @sc{cvs} is not good at
11933 @c <en>handling @code{$@splitrcskeyword{}Log$} entries when a branch is
11934 @c <en>merged onto the main trunk.  Conflicts often result
11935 @c <en>from the merging operation.
11936 A more serious concern is that @sc{cvs} is not good at
11937 handling @code{$@splitrcskeyword{}Log$} entries when a branch is
11938 merged onto the main trunk.  Conflicts often result
11939 from the merging operation.
11940 @c Might want to check whether the CVS implementation
11941 @c of RCS_merge has this problem the same way rcsmerge
11942 @c does.  I would assume so....
11943
11944 @c <en>People also tend to "fix" the log entries in the file
11945 @c <en>(correcting spelling mistakes and maybe even factual
11946 @c <en>errors).  If that is done the information from
11947 @c <en>@code{cvs log} will not be consistent with the
11948 @c <en>information inside the file.  This may or may not be a
11949 @c <en>problem in real life.
11950 People also tend to "fix" the log entries in the file
11951 (correcting spelling mistakes and maybe even factual
11952 errors).  If that is done the information from
11953 @code{cvs log} will not be consistent with the
11954 information inside the file.  This may or may not be a
11955 problem in real life.
11956
11957 @c <en>It has been suggested that the @code{$@splitrcskeyword{}Log$}
11958 @c <en>keyword should be inserted @emph{last} in the file, and
11959 @c <en>not in the files header, if it is to be used at all.
11960 @c <en>That way the long list of change messages will not
11961 @c <en>interfere with everyday source file browsing.
11962 It has been suggested that the @code{$@splitrcskeyword{}Log$}
11963 keyword should be inserted @emph{last} in the file, and
11964 not in the files header, if it is to be used at all.
11965 That way the long list of change messages will not
11966 interfere with everyday source file browsing.
11967
11968 @c ---------------------------------------------------------------------
11969 @c <en>@node Tracking sources
11970 @node Acompanhando fontes
11971 @c <en>@chapter Tracking third-party sources
11972 @chapter Tracking third-party sources
11973 @c <en>@cindex Third-party sources
11974 @cindex Fontes de terceiros
11975 @c <en>@cindex Tracking sources
11976 @cindex Tracking sources
11977
11978 @c FIXME: Need discussion of added and removed files.
11979 @c FIXME: This doesn't really adequately introduce the
11980 @c concepts of "vendor" and "you".  They don't *have*
11981 @c to be separate organizations or separate people.
11982 @c We want a description which is somewhat more based on
11983 @c the technical issues of which sources go where, but
11984 @c also with enough examples of how this relates to
11985 @c relationships like customer-supplier, developer-QA,
11986 @c maintainer-contributor, or whatever, to make it
11987 @c seem concrete.
11988 @c <en>If you modify a program to better fit your site, you
11989 @c <en>probably want to include your modifications when the next
11990 @c <en>release of the program arrives.  @sc{cvs} can help you with
11991 @c <en>this task.
11992 Se você modificar um programa para se adequar melhor ao
11993 seu ambiente, você provavelmente vai querer incluir
11994 suas modificações quando a nova release do do programa
11995 chegar.  O @sc{cvs} pode te ajudar nesta tarefa.
11996
11997 @c <en>@cindex Vendor
11998 @cindex Vendor
11999 @cindex Vendor (fornecedor)
12000 @c <en>@cindex Vendor branch
12001 @cindex Vendor branch (ramo do forncedor)
12002 @cindex Ramo do fornecedor
12003 @c <en>@cindex Branch, vendor-
12004 @cindex Branch, vendor-
12005 @c <en>In the terminology used in @sc{cvs}, the supplier of the
12006 @c <en>program is called a @dfn{vendor}.  The unmodified
12007 @c <en>distribution from the vendor is checked in on its own
12008 @c <en>branch, the @dfn{vendor branch}.  @sc{cvs} reserves branch
12009 @c <en>1.1.1 for this use.
12010 Na terminologia usada no @sc{cvs}, quem fornece um
12011 programa é chamado de @dfn{vendor} (fornecedor, em
12012 português).  A distribuição não modificada do
12013 fornecedor é ???checked in??? no seu próprio ramo, o
12014 @dfn{vendor branch} (ramo do fornecedor).  O @sc{cvs}
12015 reserva o ramo 1.1.1 para isto.
12016
12017 @c <en>When you modify the source and commit it, your revision
12018 @c <en>will end up on the main trunk.  When a new release is
12019 @c <en>made by the vendor, you commit it on the vendor branch
12020 @c <en>and copy the modifications onto the main trunk.
12021 Quando você modifica a fonte e a ???commit???, sua
12022 revisão vai terminar na ???main trunk???.  Quando uma
12023 nova release é feita pelo fornecedor, você ???commit???
12024 ela no ramo do fornecedor e copia as modificações no
12025 ???main trunk???.
12026
12027 @c <en>Use the @code{import} command to create and update
12028 @c <en>the vendor branch.  When you import a new file,
12029 @c <en>the vendor branch is made the `head' revision, so
12030 @c <en>anyone that checks out a copy of the file gets that
12031 @c <en>revision.  When a local modification is committed it is
12032 @c <en>placed on the main trunk, and made the `head'
12033 @c <en>revision.
12034 Use o comando @code{import} para criar e atualizar o
12035 ramo do fornecedor.  Quando você importa um novo
12036 arquivo, o ramo do fornecedor se torna a revisão
12037 `head', logo qualquer um que ???checks out??? uma cópia
12038 do arquivo pega esta revisão.  Quando uma modificação
12039 local é ???committed???, ela é posta no ???main
12040 trunk???, e se torna a revisão `head'.
12041
12042 @menu
12043 @c <en>* First import::                Importing for the first time
12044 * Primeira importação::                 Importando pela primeira vez
12045 @c <en>* Update imports::              Updating with the import command
12046 * Importações de atualização::          Atualizando com o comando import
12047 @c <en>* Reverting local changes::     Reverting to the latest vendor release
12048 * Reverting local changes::             Reverting to the latest vendor release
12049 @c <en>* Binary files in imports::     Binary files require special handling
12050 * Arquivos binários em importações::    Arquivos binários requerem tratamento especial
12051 @c <en>* Keywords in imports::         Keyword substitution might be undesirable
12052 * Palavras-chave em importações::       Substituição de palavras-chave pode ser indesejável
12053 @c <en>* Multiple vendor branches::    What if you get sources from several places?
12054 * Ramos de fornecedor múltiplos::       E se você obtém fontes de vários lugares?
12055 @end menu
12056
12057 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12058 @c <en>@node First import
12059 @node Primeira importação
12060 @c <en>@section Importing for the first time
12061 @section Importing for the first time
12062 @c <en>@cindex Importing modules
12063 @cindex Importing modules
12064
12065 @c Should mention naming conventions for vendor tags,
12066 @c release tags, and perhaps directory names.
12067 @c <en>Use the @code{import} command to check in the sources
12068 @c <en>for the first time.  When you use the @code{import}
12069 @c <en>command to track third-party sources, the @dfn{vendor
12070 @c <en>tag} and @dfn{release tags} are useful.  The
12071 @c <en>@dfn{vendor tag} is a symbolic name for the branch
12072 @c <en>(which is always 1.1.1, unless you use the @samp{-b
12073 @c <en>@var{branch}} flag---see @ref{Multiple vendor branches}.).  The
12074 @c <en>@dfn{release tags} are symbolic names for a particular
12075 @c <en>release, such as @samp{FSF_0_04}.
12076 Use the @code{import} command to check in the sources
12077 for the first time.  When you use the @code{import}
12078 command to track third-party sources, the @dfn{vendor
12079 tag} and @dfn{release tags} are useful.  The
12080 @dfn{vendor tag} is a symbolic name for the branch
12081 (which is always 1.1.1, unless you use the @samp{-b
12082 @var{branch}} flag---see @ref{Ramos de fornecedor múltiplos}.).  The
12083 @dfn{release tags} are symbolic names for a particular
12084 release, such as @samp{FSF_0_04}.
12085
12086 @c I'm not completely sure this belongs here.  But
12087 @c we need to say it _somewhere_ reasonably obvious; it
12088 @c is a common misconception among people first learning CVS
12089 @c <en>Note that @code{import} does @emph{not} change the
12090 @c <en>directory in which you invoke it.  In particular, it
12091 @c <en>does not set up that directory as a @sc{cvs} working
12092 @c <en>directory; if you want to work with the sources import
12093 @c <en>them first and then check them out into a different
12094 @c <en>directory (@pxref{Getting the source}).
12095 Note that @code{import} does @emph{not} change the
12096 directory in which you invoke it.  In particular, it
12097 does not set up that directory as a @sc{cvs} working
12098 directory; if you want to work with the sources import
12099 them first and then check them out into a different
12100 directory (@pxref{Obtendo os fontes}).
12101
12102 @c <en>@cindex wdiff (import example)
12103 @cindex wdiff (import example)
12104 @c <en>Suppose you have the sources to a program called
12105 @c <en>@code{wdiff} in a directory @file{wdiff-0.04},
12106 @c <en>and are going to make private modifications that you
12107 @c <en>want to be able to use even when new releases are made
12108 @c <en>in the future.  You start by importing the source to
12109 @c <en>your repository:
12110 Suppose you have the sources to a program called
12111 @code{wdiff} in a directory @file{wdiff-0.04},
12112 and are going to make private modifications that you
12113 want to be able to use even when new releases are made
12114 in the future.  You start by importing the source to
12115 your repository:
12116
12117 @example
12118 $ cd wdiff-0.04
12119 $ cvs import -m "Import of FSF v. 0.04" fsf/wdiff FSF_DIST WDIFF_0_04
12120 @end example
12121
12122 @c <en>The vendor tag is named @samp{FSF_DIST} in the above
12123 @c <en>example, and the only release tag assigned is
12124 @c <en>@samp{WDIFF_0_04}.
12125 The vendor tag is named @samp{FSF_DIST} in the above
12126 example, and the only release tag assigned is
12127 @samp{WDIFF_0_04}.
12128 @c FIXME: Need to say where fsf/wdiff comes from.
12129
12130 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12131 @c <en>@node Update imports
12132 @node Importações de atualização
12133 @c <en>@section Updating with the import command
12134 @section Updating with the import command
12135
12136 @c <en>When a new release of the source arrives, you import it into the
12137 @c <en>repository with the same @code{import} command that you used to set up
12138 @c <en>the repository in the first place.  The only difference is that you
12139 @c <en>specify a different release tag this time:
12140 When a new release of the source arrives, you import it into the
12141 repository with the same @code{import} command that you used to set up
12142 the repository in the first place.  The only difference is that you
12143 specify a different release tag this time:
12144
12145 @example
12146 $ tar xfz wdiff-0.05.tar.gz
12147 $ cd wdiff-0.05
12148 $ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
12149 @end example
12150
12151 @c <en>For files that have not been modified locally, the newly created
12152 @c <en>revision becomes the head revision.  If you have made local
12153 @c <en>changes, @code{import} will warn you that you must merge the changes
12154 @c <en>into the main trunk, and tell you to use @samp{checkout -j} to do so:
12155 For files that have not been modified locally, the newly created
12156 revision becomes the head revision.  If you have made local
12157 changes, @code{import} will warn you that you must merge the changes
12158 into the main trunk, and tell you to use @samp{checkout -j} to do so:
12159
12160 @c FIXME: why "wdiff" here and "fsf/wdiff" in the
12161 @c "import"?  I think the assumption is that one has
12162 @c "wdiff fsf/wdiff" or some such in modules, but it
12163 @c would be better to not use modules in this example.
12164 @example
12165 $ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff
12166 @end example
12167
12168 @noindent
12169 @c <en>The above command will check out the latest revision of
12170 @c <en>@samp{wdiff}, merging the changes made on the vendor branch @samp{FSF_DIST}
12171 @c <en>since yesterday into the working copy.  If any conflicts arise during
12172 @c <en>the merge they should be resolved in the normal way (@pxref{Conflicts
12173 @c <en>example}).  Then, the modified files may be committed.
12174 The above command will check out the latest revision of
12175 @samp{wdiff}, merging the changes made on the vendor branch @samp{FSF_DIST}
12176 since yesterday into the working copy.  If any conflicts arise during
12177 the merge they should be resolved in the normal way
12178 (@pxref{Exemplo de conflitos}).  Then, the modified files may be committed.
12179
12180 @c <en>However, it is much better to use the two release tags rather than using
12181 @c <en>a date on the branch as suggested above:
12182 However, it is much better to use the two release tags rather than using
12183 a date on the branch as suggested above:
12184
12185 @example
12186 $ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff
12187 @end example
12188
12189 @noindent
12190 @c <en>The reason this is better is that
12191 @c <en>using a date, as suggested above, assumes that you do
12192 @c <en>not import more than one release of a product per day.
12193 @c <en>More importantly, using the release tags allows @sc{cvs} to detect files
12194 @c <en>that were removed between the two vendor releases and mark them for
12195 @c <en>removal.  Since @code{import} has no way to detect removed files, you
12196 @c <en>should do a merge like this even if @code{import} doesn't tell you to.
12197 The reason this is better is that
12198 using a date, as suggested above, assumes that you do
12199 not import more than one release of a product per day.
12200 More importantly, using the release tags allows @sc{cvs} to detect files
12201 that were removed between the two vendor releases and mark them for
12202 removal.  Since @code{import} has no way to detect removed files, you
12203 should do a merge like this even if @code{import} doesn't tell you to.
12204
12205 @c <en>@node Reverting local changes
12206 @node Reverting local changes
12207 @c <en>@section Reverting to the latest vendor release
12208 @section Reverting to the latest vendor release
12209
12210 @c <en>You can also revert local changes completely and return
12211 @c <en>to the latest vendor release by changing the `head'
12212 @c <en>revision back to the vendor branch on all files.  For
12213 @c <en>example, if you have a checked-out copy of the sources
12214 @c <en>in @file{~/work.d/wdiff}, and you want to revert to the
12215 @c <en>vendor's version for all the files in that directory,
12216 @c <en>you would type:
12217 You can also revert local changes completely and return
12218 to the latest vendor release by changing the `head'
12219 revision back to the vendor branch on all files.  For
12220 example, if you have a checked-out copy of the sources
12221 in @file{~/work.d/wdiff}, and you want to revert to the
12222 vendor's version for all the files in that directory,
12223 you would type:
12224
12225 @example
12226 $ cd ~/work.d/wdiff
12227 $ cvs admin -bFSF_DIST .
12228 @end example
12229
12230 @noindent
12231 @c <en>You must specify the @samp{-bFSF_DIST} without any space
12232 @c <en>after the @samp{-b}.  @xref{admin options}.
12233 You must specify the @samp{-bFSF_DIST} without any space
12234 after the @samp{-b}.  @xref{admin options}.
12235
12236 @c <en>@node Binary files in imports
12237 @node Arquivos binários em importações
12238 @c <en>@section How to handle binary files with cvs import
12239 @section How to handle binary files with cvs import
12240
12241 @c <en>Use the @samp{-k} wrapper option to tell import which
12242 @c <en>files are binary.  @xref{Wrappers}.
12243 Use the @samp{-k} wrapper option to tell import which
12244 files are binary.  @xref{Wrappers}.
12245
12246 @c <en>@node Keywords in imports
12247 @node Palavras-chave em importações
12248 @c <en>@section How to handle keyword substitution with cvs import
12249 @section Como lidar com substituição de palavras-chave com o cvs import
12250
12251 @c <en>The sources which you are importing may contain
12252 @c <en>keywords (@pxref{Keyword substitution}).  For example,
12253 @c <en>the vendor may use @sc{cvs} or some other system
12254 @c <en>which uses similar keyword expansion syntax.  If you
12255 @c <en>just import the files in the default fashion, then
12256 @c <en>the keyword expansions supplied by the vendor will
12257 @c <en>be replaced by keyword expansions supplied by your
12258 @c <en>own copy of @sc{cvs}.  It may be more convenient to
12259 @c <en>maintain the expansions supplied by the vendor, so
12260 @c <en>that this information can supply information about
12261 @c <en>the sources that you imported from the vendor.
12262 The sources which you are importing may contain
12263 keywords (@pxref{Substituição de palavra-chave}).  For example,
12264 the vendor may use @sc{cvs} or some other system
12265 which uses similar keyword expansion syntax.  If you
12266 just import the files in the default fashion, then
12267 the keyword expansions supplied by the vendor will
12268 be replaced by keyword expansions supplied by your
12269 own copy of @sc{cvs}.  It may be more convenient to
12270 maintain the expansions supplied by the vendor, so
12271 that this information can supply information about
12272 the sources that you imported from the vendor.
12273
12274 @c <en>To maintain the keyword expansions supplied by the
12275 @c <en>vendor, supply the @samp{-ko} option to @code{cvs
12276 @c <en>import} the first time you import the file.
12277 @c <en>This will turn off keyword expansion
12278 @c <en>for that file entirely, so if you want to be more
12279 @c <en>selective you'll have to think about what you want
12280 @c <en>and use the @samp{-k} option to @code{cvs update} or
12281 @c <en>@code{cvs admin} as appropriate.
12282 To maintain the keyword expansions supplied by the
12283 vendor, supply the @samp{-ko} option to @code{cvs
12284 import} the first time you import the file.
12285 This will turn off keyword expansion
12286 for that file entirely, so if you want to be more
12287 selective you'll have to think about what you want
12288 and use the @samp{-k} option to @code{cvs update} or
12289 @code{cvs admin} as appropriate.
12290 @c Supplying -ko to import if the file already existed
12291 @c has no effect.  Not clear to me whether it should
12292 @c or not.
12293
12294 @c <en>@node Multiple vendor branches
12295 @node Ramos de fornecedor múltiplos
12296 @c <en>@section Multiple vendor branches
12297 @section Ramos de fornecedor múltiplos
12298
12299 @c <en>All the examples so far assume that there is only one
12300 @c <en>vendor from which you are getting sources.  In some
12301 @c <en>situations you might get sources from a variety of
12302 @c <en>places.  For example, suppose that you are dealing with
12303 @c <en>a project where many different people and teams are
12304 @c <en>modifying the software.  There are a variety of ways to
12305 @c <en>handle this, but in some cases you have a bunch of
12306 @c <en>source trees lying around and what you want to do more
12307 @c <en>than anything else is just to all put them in @sc{cvs} so
12308 @c <en>that you at least have them in one place.
12309 All the examples so far assume that there is only one
12310 vendor from which you are getting sources.  In some
12311 situations you might get sources from a variety of
12312 places.  For example, suppose that you are dealing with
12313 a project where many different people and teams are
12314 modifying the software.  There are a variety of ways to
12315 handle this, but in some cases you have a bunch of
12316 source trees lying around and what you want to do more
12317 than anything else is just to all put them in @sc{cvs} so
12318 that you at least have them in one place.
12319
12320 @c <en>For handling situations in which there may be more than
12321 @c <en>one vendor, you may specify the @samp{-b} option to
12322 @c <en>@code{cvs import}.  It takes as an argument the vendor
12323 @c <en>branch to import to.  The default is @samp{-b 1.1.1}.
12324 For handling situations in which there may be more than
12325 one vendor, you may specify the @samp{-b} option to
12326 @code{cvs import}.  It takes as an argument the vendor
12327 branch to import to.  The default is @samp{-b 1.1.1}.
12328
12329 @c <en>For example, suppose that there are two teams, the red
12330 @c <en>team and the blue team, that are sending you sources.
12331 @c <en>You want to import the red team's efforts to branch
12332 @c <en>1.1.1 and use the vendor tag RED.  You want to import
12333 @c <en>the blue team's efforts to branch 1.1.3 and use the
12334 @c <en>vendor tag BLUE.  So the commands you might use are:
12335 For example, suppose that there are two teams, the red
12336 team and the blue team, that are sending you sources.
12337 You want to import the red team's efforts to branch
12338 1.1.1 and use the vendor tag RED.  You want to import
12339 the blue team's efforts to branch 1.1.3 and use the
12340 vendor tag BLUE.  So the commands you might use are:
12341
12342 @example
12343 $ cvs import dir RED RED_1-0
12344 $ cvs import -b 1.1.3 dir BLUE BLUE_1-5
12345 @end example
12346
12347 Note that if your vendor tag does not match your
12348 @samp{-b} option, @sc{cvs} will not detect this case!  For
12349 example,
12350
12351 @example
12352 $ cvs import -b 1.1.3 dir RED RED_1-0
12353 @end example
12354
12355 @noindent
12356 @c <en>Be careful; this kind of mismatch is sure to sow
12357 @c <en>confusion or worse.  I can't think of a useful purpose
12358 @c <en>for the ability to specify a mismatch here, but if you
12359 @c <en>discover such a use, don't.  @sc{cvs} is likely to make this
12360 @c <en>an error in some future release.
12361 Be careful; this kind of mismatch is sure to sow
12362 confusion or worse.  I can't think of a useful purpose
12363 for the ability to specify a mismatch here, but if you
12364 discover such a use, don't.  @sc{cvs} is likely to make this
12365 an error in some future release.
12366
12367 @c Probably should say more about the semantics of
12368 @c multiple branches.  What about the default branch?
12369 @c What about joining (perhaps not as useful with
12370 @c multiple branches, or perhaps it is.  Either way
12371 @c should be mentioned).
12372
12373 @c I'm not sure about the best location for this.  In
12374 @c one sense, it might belong right after we've introduced
12375 @c CVS's basic version control model, because people need
12376 @c to figure out builds right away.  The current location
12377 @c is based on the theory that it kind of akin to the
12378 @c "Revision management" section.
12379 @c <en>@node Builds
12380 @node Builds
12381 @c <en>@chapter How your build system interacts with CVS
12382 @chapter How your build system interacts with CVS
12383 @c <en>@cindex Builds
12384 @cindex Builds
12385 @c <en>@cindex make
12386 @cindex make
12387
12388 @c <en>As mentioned in the introduction, @sc{cvs} does not
12389 @c <en>contain software for building your software from source
12390 @c <en>code.  This section describes how various aspects of
12391 @c <en>your build system might interact with @sc{cvs}.
12392 As mentioned in the introduction, @sc{cvs} does not
12393 contain software for building your software from source
12394 code.  This section describes how various aspects of
12395 your build system might interact with @sc{cvs}.
12396
12397 @c Is there a way to discuss this without reference to
12398 @c tools other than CVS?  I'm not sure there is; I
12399 @c wouldn't think that people who learn CVS first would
12400 @c even have this concern.
12401 @c <en>One common question, especially from people who are
12402 @c <en>accustomed to @sc{rcs}, is how to make their build get
12403 @c <en>an up to date copy of the sources.  The answer to this
12404 @c <en>with @sc{cvs} is two-fold.  First of all, since
12405 @c <en>@sc{cvs} itself can recurse through directories, there
12406 @c <en>is no need to modify your @file{Makefile} (or whatever
12407 @c <en>configuration file your build tool uses) to make sure
12408 @c <en>each file is up to date.  Instead, just use two
12409 @c <en>commands, first @code{cvs -q update} and then
12410 @c <en>@code{make} or whatever the command is to invoke your
12411 @c <en>build tool.  Secondly, you do not necessarily
12412 @c <en>@emph{want} to get a copy of a change someone else made
12413 @c <en>until you have finished your own work.  One suggested
12414 @c <en>approach is to first update your sources, then
12415 @c <en>implement, build and
12416 @c <en>test the change you were thinking of, and then commit
12417 @c <en>your sources (updating first if necessary).  By
12418 @c <en>periodically (in between changes, using the approach
12419 @c <en>xjust described) updating your entire tree, you ensure
12420 @c <en>that your sources are sufficiently up to date.
12421 One common question, especially from people who are
12422 accustomed to @sc{rcs}, is how to make their build get
12423 an up to date copy of the sources.  The answer to this
12424 with @sc{cvs} is two-fold.  First of all, since
12425 @sc{cvs} itself can recurse through directories, there
12426 is no need to modify your @file{Makefile} (or whatever
12427 configuration file your build tool uses) to make sure
12428 each file is up to date.  Instead, just use two
12429 commands, first @code{cvs -q update} and then
12430 @code{make} or whatever the command is to invoke your
12431 build tool.  Secondly, you do not necessarily
12432 @emph{want} to get a copy of a change someone else made
12433 until you have finished your own work.  One suggested
12434 approach is to first update your sources, then
12435 implement, build and
12436 test the change you were thinking of, and then commit
12437 your sources (updating first if necessary).  By
12438 periodically (in between changes, using the approach
12439 just described) updating your entire tree, you ensure
12440 that your sources are sufficiently up to date.
12441
12442 @c <en>@cindex Bill of materials
12443 @cindex Bill of materials
12444 @c <en>One common need is to record which versions of which
12445 @c <en>source files went into a particular build.  This kind
12446 @c <en>of functionality is sometimes called @dfn{bill of
12447 @c <en>materials} or something similar.  The best way to do
12448 @c <en>this with @sc{cvs} is to use the @code{tag} command to
12449 @c <en>record which versions went into a given build
12450 @c <en>(@pxref{Tags}).
12451 One common need is to record which versions of which
12452 source files went into a particular build.  This kind
12453 of functionality is sometimes called @dfn{bill of
12454 materials} or something similar.  The best way to do
12455 this with @sc{cvs} is to use the @code{tag} command to
12456 record which versions went into a given build
12457 (@pxref{Etiquetas}).
12458
12459 @c <en>Using @sc{cvs} in the most straightforward manner
12460 @c <en>possible, each developer will have a copy of the entire
12461 @c <en>source tree which is used in a particular build.  If
12462 @c <en>the source tree is small, or if developers are
12463 @c <en>geographically dispersed, this is the preferred
12464 @c <en>solution.  In fact one approach for larger projects is
12465 @c <en>to break a project down into smaller
12466 Using @sc{cvs} in the most straightforward manner
12467 possible, each developer will have a copy of the entire
12468 source tree which is used in a particular build.  If
12469 the source tree is small, or if developers are
12470 geographically dispersed, this is the preferred
12471 solution.  In fact one approach for larger projects is
12472 to break a project down into smaller
12473 @c I say subsystem instead of module because they may or
12474 @c may not use the modules file.
12475 @c <en>separately-compiled subsystems, and arrange a way of
12476 @c <en>releasing them internally so that each developer need
12477 @c <en>check out only those subsystems which they are
12478 @c <en>actively working on.
12479 separately-compiled subsystems, and arrange a way of
12480 releasing them internally so that each developer need
12481 check out only those subsystems which they are
12482 actively working on.
12483
12484 @c <en>Another approach is to set up a structure which allows
12485 @c <en>developers to have their own copies of some files, and
12486 @c <en>for other files to access source files from a central
12487 @c <en>location.  Many people have come up with some such a
12488 Another approach is to set up a structure which allows
12489 developers to have their own copies of some files, and
12490 for other files to access source files from a central
12491 location.  Many people have come up with some such a
12492 @c two such people are paul@sander.cupertino.ca.us (for
12493 @c a previous employer)
12494 @c and gtornblo@senet.abb.se (spicm and related tools),
12495 @c but as far as I know
12496 @c no one has nicely packaged or released such a system (or
12497 @c instructions for constructing one).
12498 @c <en>system using features such as the symbolic link feature
12499 @c <en>found in many operating systems, or the @code{VPATH}
12500 @c <en>feature found in many versions of @code{make}.  One build
12501 @c <en>tool which is designed to help with this kind of thing
12502 @c <en>is Odin (see
12503 @c <en>@code{ftp://ftp.cs.colorado.edu/pub/distribs/odin}).
12504 system using features such as the symbolic link feature
12505 found in many operating systems, or the @code{VPATH}
12506 feature found in many versions of @code{make}.  One build
12507 tool which is designed to help with this kind of thing
12508 is Odin (see
12509 @code{ftp://ftp.cs.colorado.edu/pub/distribs/odin}).
12510 @c Should we be saying more about Odin?  Or how you use
12511 @c it with CVS?  Also, the Prime Time Freeware for Unix
12512 @c disk (see http://www.ptf.com/) has Odin (with a nice
12513 @c paragraph summarizing it on the web), so that might be a
12514 @c semi-"official" place to point people.
12515 @c
12516 @c Of course, many non-CVS systems have this kind of
12517 @c functionality, for example OSF's ODE
12518 @c (http://www.osf.org/ode/) or mk
12519 @c (http://www.grin.net/~pzi/mk-3.18.4.docs/mk_toc.html
12520 @c He has changed providers in the past; a search engine search
12521 @c for "Peter Ziobrzynski" probably won't get too many
12522 @c spurious hits :-).  A more stable URL might be
12523 @c ftp://ftp.uu.net/pub/cmvc/mk).  But I'm not sure
12524 @c there is any point in mentioning them here unless they
12525 @c can work with CVS.
12526
12527 @c ---------------------------------------------------------------------
12528 @c <en>@node Special Files
12529 @node Arquivos especiais
12530 @c <en>@chapter Special Files
12531 @chapter Arquivos especiais
12532
12533 @c <en>@cindex Special files
12534 @cindex Arquivos especiais
12535 @c <en>@cindex Device nodes
12536 @cindex Device nodes
12537 @c <en>@cindex Ownership, saving in CVS
12538 @cindex Ownership, saving in CVS
12539 @c <en>@cindex Permissions, saving in CVS
12540 @cindex Permissions, saving in CVS
12541 @c <en>@cindex Hard links
12542 @cindex Hard links
12543 @c <en>@cindex Symbolic links
12544 @cindex Symbolic links
12545
12546 @c <en>In normal circumstances, @sc{cvs} works only with regular
12547 @c <en>files.  Every file in a project is assumed to be
12548 @c <en>persistent; it must be possible to open, read and close
12549 @c <en>them; and so on.  @sc{cvs} also ignores file permissions and
12550 @c <en>ownerships, leaving such issues to be resolved by the
12551 @c <en>developer at installation time.  In other words, it is
12552 @c <en>not possible to "check in" a device into a repository;
12553 @c <en>if the device file cannot be opened, @sc{cvs} will refuse to
12554 @c <en>handle it.  Files also lose their ownerships and
12555 @c <en>permissions during repository transactions.
12556 In normal circumstances, @sc{cvs} works only with regular
12557 files.  Every file in a project is assumed to be
12558 persistent; it must be possible to open, read and close
12559 them; and so on.  @sc{cvs} also ignores file permissions and
12560 ownerships, leaving such issues to be resolved by the
12561 developer at installation time.  In other words, it is
12562 not possible to "check in" a device into a repository;
12563 if the device file cannot be opened, @sc{cvs} will refuse to
12564 handle it.  Files also lose their ownerships and
12565 permissions during repository transactions.
12566
12567 @ignore
12568 If the configuration variable @code{PreservePermissions}
12569 (@pxref{config}) is set in the repository, @sc{cvs} will
12570 save the following file characteristics in the
12571 repository:
12572
12573 @itemize @bullet
12574 @item user and group ownership
12575 @item permissions
12576 @item major and minor device numbers
12577 @item symbolic links
12578 @item hard link structure
12579 @end itemize
12580
12581 Using the @code{PreservePermissions} option affects the
12582 behavior of @sc{cvs} in several ways.  First, some of the
12583 new operations supported by @sc{cvs} are not accessible to
12584 all users.  In particular, file ownership and special
12585 file characteristics may only be changed by the
12586 superuser.  When the @code{PreservePermissions}
12587 configuration variable is set, therefore, users will
12588 have to be `root' in order to perform @sc{cvs} operations.
12589
12590 When @code{PreservePermissions} is in use, some @sc{cvs}
12591 operations (such as @samp{cvs status}) will not
12592 recognize a file's hard link structure, and so will
12593 emit spurious warnings about mismatching hard links.
12594 The reason is that @sc{cvs}'s internal structure does not
12595 make it easy for these operations to collect all the
12596 necessary data about hard links, so they check for file
12597 conflicts with inaccurate data.
12598
12599 A more subtle difference is that @sc{cvs} considers a file
12600 to have changed only if its contents have changed
12601 (specifically, if the modification time of the working
12602 file does not match that of the repository's file).
12603 Therefore, if only the permissions, ownership or hard
12604 linkage have changed, or if a device's major or minor
12605 numbers have changed, @sc{cvs} will not notice.  In order to
12606 commit such a change to the repository, you must force
12607 the commit with @samp{cvs commit -f}.  This also means
12608 that if a file's permissions have changed and the
12609 repository file is newer than the working copy,
12610 performing @samp{cvs update} will silently change the
12611 permissions on the working copy.
12612
12613 Changing hard links in a @sc{cvs} repository is particularly
12614 delicate.  Suppose that file @file{foo} is linked to
12615 file @file{old}, but is later relinked to file
12616 @file{new}.  You can wind up in the unusual situation
12617 where, although @file{foo}, @file{old} and @file{new}
12618 have all had their underlying link patterns changed,
12619 only @file{foo} and @file{new} have been modified, so
12620 @file{old} is not considered a candidate for checking
12621 in.  It can be very easy to produce inconsistent
12622 results this way.  Therefore, we recommend that when it
12623 is important to save hard links in a repository, the
12624 prudent course of action is to @code{touch} any file
12625 whose linkage or status has changed since the last
12626 checkin.  Indeed, it may be wise to @code{touch *}
12627 before each commit in a directory with complex hard
12628 link structures.
12629
12630 It is worth noting that only regular files may
12631 be merged, for reasons that hopefully are obvious.  If
12632 @samp{cvs update} or @samp{cvs checkout -j} attempts to
12633 merge a symbolic link with a regular file, or two
12634 device files for different kinds of devices, @sc{cvs} will
12635 report a conflict and refuse to perform the merge.  At
12636 the same time, @samp{cvs diff} will not report any
12637 differences between these files, since no meaningful
12638 textual comparisons can be made on files which contain
12639 no text.
12640
12641 The @code{PreservePermissions} features do not work
12642 with client/server @sc{cvs}.  Another limitation is
12643 that hard links must be to other files within the same
12644 directory; hard links across directories are not
12645 supported.
12646 @end ignore
12647
12648 @c ---------------------------------------------------------------------
12649 @c <en>@node Comandos do CVS
12650 @node Comandos do CVS
12651 @c <en>@appendix Guia dos comandos do CVS
12652 @appendix Guia dos comandos do CVS
12653
12654 @c <en>This appendix describes the overall structure of
12655 @c <en>@sc{cvs} commands, and describes some commands in
12656 @c <en>detail (others are described elsewhere; for a quick
12657 @c <en>reference to @sc{cvs} commands, @pxref{Invoking CVS}).
12658 Este apêndice descreve a estrutura geral dos comandos
12659 do @sc{cvs}, e descreve alguns comandos em detalhe
12660 (outros são descritos em outra parte; para
12661 uma referência rápida dos comandos do @sc{cvs},
12662 @pxref{Chamando o CVS}).
12663 @c The idea is that we want to move the commands which
12664 @c are described here into the main body of the manual,
12665 @c in the process reorganizing the manual to be
12666 @c organized around what the user wants to do, not
12667 @c organized around CVS commands.
12668 @c
12669 @c Note that many users do expect a manual which is
12670 @c organized by command.  At least some users do.
12671 @c One good addition to the "organized by command"
12672 @c section (if any) would be "see also" links.
12673 @c The awk manual might be a good example; it has a
12674 @c reference manual which is more verbose than Invoking
12675 @c CVS but probably somewhat less verbose than CVS
12676 @c Commands.
12677
12678 @menu
12679 @c <en>* Structure::                   Overall structure of CVS commands
12680 * Estrutura::                   Estrutura geral dos comandos do CVS
12681 @c <en>* Exit status::                 Indicating CVS's success or failure
12682 * Estados de saída::            Indicando o sucesso ou falha do CVS
12683 @c <en>* ~/.cvsrc::                    Default options with the ~/.cvsrc file
12684 * ~/.cvsrc::                    Opções padrão com o arquivo ~/.cvsrc
12685 @c <en>* Global options::              Options you give to the left of cvs_command
12686 * Opções globais::              Opções que você bota a esquerda do comando_do_cvs
12687 @c <en>* Common options::              Options you give to the right of cvs_command
12688 * Opções comuns::              Opções que você bota a direita do comando_do_cvs
12689 @c <en>* admin::                       Administration
12690 * admin::                       Administração
12691 @c <en>* checkout::                    Checkout sources for editing
12692 * checkout::                    ???Checkout??? fontes para edição
12693 @c <en>* commit::                      Check files into the repository
12694 * commit::                      Colocar arquivos no repositório
12695 @c <en>* diff::                        Show differences between revisions
12696 * diff::                        Mostrar diferenças entre revisões
12697 @c <en>* export::                      Export sources from CVS, similar to checkout
12698 * export::                      Exportar fontes para fora do CVS, similar ao ???checkout???
12699 @c <en>* history::                     Show status of files and users
12700 * history::                     Mostrar estado de arquivos e usuários
12701 @c <en>* import::                      Import sources into CVS, using vendor branches
12702 * import::                      Importar fontes para dentro do CVS, usando ramos de fornecedor
12703 @c <en>* log::                         Show log messages for files
12704 * log::                         Mostrar mensagens de log para arquivos
12705 @c <en>* rdiff::                       'patch' format diffs between releases
12706 * rdiff::                       'patch' format diffs between releases
12707 @c <en>* release::                     Indicate that a directory is no longer in use
12708 * release::                     Avisar que um diretorio não está mais em uso
12709 @c <en>* update::                      Bring work tree in sync with repository
12710 * update::                      Deixar árvore de trabalho em sincronia com o repositório
12711 @end menu
12712
12713 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12714 @c <en>@node Structure
12715 @node Estrutura
12716 @c <en>@appendixsec Overall structure of CVS commands
12717 @appendixsec Estrutura geral dos comandos do CVS
12718 @c <en>@cindex Structure
12719 @cindex Estrutura
12720 @c <en>@cindex CVS command structure
12721 @cindex Estrutura do comando CVS
12722 @c <en>@cindex Command structure
12723 @cindex Estrutura do comando
12724 @c <en>@cindex Format of CVS commands
12725 @cindex Formato dos comandos do CVS
12726
12727 @c <en>The overall format of all @sc{cvs} commands is:
12728 O formato geral de todos os comandos do @sc{cvs} é:
12729
12730 @example
12731 cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
12732 @end example
12733
12734 @table @code
12735 @c <en>@item cvs
12736 @item cvs
12737 @c <en>The name of the @sc{cvs} program.
12738 O nome do programa @sc{cvs}.
12739
12740 @c <en>@item cvs_options
12741 @item cvs_options
12742 @c <en>Some options that affect all sub-commands of @sc{cvs}.  These are
12743 @c <en>described below.
12744 Algumas opções que afetam todos os sub-comandos do
12745 @sc{cvs}.  Estes estão descritos abaixo.
12746
12747 @c <en>@item cvs_command
12748 @item cvs_command
12749 @c <en>One of several different sub-commands.  Some of the commands have
12750 @c <en>aliases that can be used instead; those aliases are noted in the
12751 @c <en>reference manual for that command.  There are only two situations
12752 @c <en>where you may omit @samp{cvs_command}: @samp{cvs -H} elicits a
12753 @c <en>list of available commands, and @samp{cvs -v} displays version
12754 @c <en>information on @sc{cvs} itself.
12755 Um dos vários sub-comandos.  Alguns dos comandos têm
12756 ???aliases??? substituí-los; estes ???aliases??? são
12757 listados no manual de referência do comando.  Existem
12758 apenas duas situações onde você pode omitir o
12759 @samp{cvs_command}: @samp{cvs -H} retorna uma lista de
12760 comandos disponíveis, e @samp{cvs -v} mostra
12761 informações sobre a versão do próprio @sc{cvs}.
12762
12763 @c <en>@item command_options
12764 @item command_options
12765 @c <en>Options that are specific for the command.
12766 Opções que são específicas para o comando.
12767
12768 @c <en>@item command_args
12769 @item command_args
12770 @c <en>Arguments to the commands.
12771 Argumentos para os comandos.
12772 @end table
12773
12774 @c <en>There is unfortunately some confusion between
12775 @c <en>@code{cvs_options} and @code{command_options}.
12776 @c <en>@samp{-l}, when given as a @code{cvs_option}, only
12777 @c <en>affects some of the commands.  When it is given as a
12778 @c <en>@code{command_option} is has a different meaning, and
12779 @c <en>is accepted by more commands.  In other words, do not
12780 @c <en>take the above categorization too seriously.  Look at
12781 @c <en>the documentation instead.
12782 Infelizmente, existe alguma confusão entre
12783 @code{cvs_options} e @code{command_options}. @samp{-l},
12784 quando passado como @code{cvs_option}, afeta apenas
12785 alguns dos comandos.  Quando é passado como um
12786 @code{command_option} tem um significado diferente, e é
12787 aceito por mais comandos.  Em outras palavras, não leve
12788 a categorização acima tão a sério.  Olhe a
12789 documentação, ao invés disto.
12790
12791 @c <en>@node Exit status
12792 @node Estados de saída
12793 @c <en>@appendixsec CVS's exit status
12794 @appendixsec estado de saída do CVS
12795 @c <en>@cindex Exit status, of CVS
12796 @cindex Estados de saída do CVS
12797
12798 @c <en>@sc{cvs} can indicate to the calling environment whether it
12799 @c <en>succeeded or failed by setting its @dfn{exit status}.
12800 @c <en>The exact way of testing the exit status will vary from
12801 @c <en>one operating system to another.  For example in a unix
12802 @c <en>shell script the @samp{$?} variable will be 0 if the
12803 @c <en>last command returned a successful exit status, or
12804 @c <en>greater than 0 if the exit status indicated failure.
12805 O @sc{cvs} pode indicar para o ambiente que o chamou se
12806 ele foi bem-sucedido ou falhou ao ajustar seu
12807 @dfn{estado de saída}.  A forma exata de testar o
12808 estado de saída varia de um sistema operacional para
12809 outro.  Por exemplo, num shell script do unix a
12810 variável @samp{$?} será 0 se o último comando retornar
12811 um estado de saída bem-sucedido, ou maior que 0 se o
12812 estado de saída indicar uma falha.
12813
12814 @c <en>If @sc{cvs} is successful, it returns a successful status;
12815 @c <en>if there is an error, it prints an error message and
12816 @c <en>returns a failure status.  The one exception to this is
12817 @c <en>the @code{cvs diff} command.  It will return a
12818 @c <en>successful status if it found no differences, or a
12819 @c <en>failure status if there were differences or if there
12820 @c <en>was an error.  Because this behavior provides no good
12821 @c <en>way to detect errors, in the future it is possible that
12822 @c <en>@code{cvs diff} will be changed to behave like the
12823 @c <en>other @sc{cvs} commands.
12824 Se o @sc{cvs} é bem-sucedido, retorna um estado de sucesso;
12825 se existe um erro, mostra uma mensagem de erro e
12826 retorna um estado de falha.  A única exceção para isto
12827 é o comando @code{cvs diff}.  Ele retornará um estado
12828 de sucesso se não encontrar diferenças, ou um estado de
12829 sucesso se existirem diferenças ou acontecer um erro.
12830 Já que este comportamento não fornece uma boa maneira
12831 de detectar erros, é possível que no futuro o @code{cvs
12832 diff} seja mudado para se comportar como os outros
12833 comandos do @sc{cvs}.
12834 @c It might seem like checking whether cvs -q diff
12835 @c produces empty or non-empty output can tell whether
12836 @c there were differences or not.  But it seems like
12837 @c there are cases with output but no differences
12838 @c (testsuite basica-8b).  It is not clear to me how
12839 @c useful it is for a script to be able to check
12840 @c whether there were differences.
12841 @c FIXCVS? In previous versions of CVS, cvs diff
12842 @c returned 0 for no differences, 1 for differences, or
12843 @c 2 for errors.  Is this behavior worth trying to
12844 @c bring back (but what does it mean for VMS?)?
12845
12846 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12847 @c <en>@node ~/.cvsrc
12848 @node ~/.cvsrc
12849 @c <en>@appendixsec Default options and the ~/.cvsrc file
12850 @appendixsec Opções padrão e o arquivo ~/.cvsrc
12851 @c <en>@cindex .cvsrc file
12852 @cindex Arquivo .cvsrc
12853 @c <en>@cindex Option defaults
12854 @cindex Padrão, opções
12855
12856 @c <en>There are some @code{command_options} that are used so
12857 @c <en>often that you might have set up an alias or some other
12858 @c <en>means to make sure you always specify that option.  One
12859 @c <en>example (the one that drove the implementation of the
12860 @c <en>@file{.cvsrc} support, actually) is that many people find the
12861 @c <en>default output of the @samp{diff} command to be very
12862 @c <en>hard to read, and that either context diffs or unidiffs
12863 @c <en>are much easier to understand.
12864 Existem algumas @code{opções_de_comando} que são tão
12865 usadas que você vai querer  preparar um atalho ou
12866 alguma outra forma de ter certeza que tais opções
12867 sempre vão ser especificadas.  Um exemplo (o que
12868 motivou a implementação do suporte ao arquivo
12869 @file{.cvsrc}, na verdade) é que muitas pessoas acham a
12870 saída do comando @samp{diff} muito difícil de ler, e
12871 que tanto diffs de contexto quanto unidiffs são muito
12872 mais fáceis de entender.
12873
12874 @c <en>The @file{~/.cvsrc} file is a way that you can add
12875 @c <en>default options to @code{cvs_commands} within cvs,
12876 @c <en>instead of relying on aliases or other shell scripts.
12877 O arquivo @file{~/.cvsrc} é uma forma de você adicionar
12878 opções padrão aos @code{comandos_cvs} dentro do cvs, ao
12879 invés de usar alias (apelidos) ou outros scripts de shell.
12880
12881 @c <en>The format of the @file{~/.cvsrc} file is simple.  The
12882 @c <en>file is searched for a line that begins with the same
12883 @c <en>name as the @code{cvs_command} being executed.  If a
12884 @c <en>match is found, then the remainder of the line is split
12885 @c <en>up (at whitespace characters) into separate options and
12886 @c <en>added to the command arguments @emph{before} any
12887 @c <en>options from the command line.
12888 O formato do arquivo @file{~/.cvsrc} é simples.  O
12889 arquivo é varrido por uma linha que comece com o mesmo
12890 nome do @code{comando_cvs} sendo executado.  Se
12891 encontra, então o restante da linha é dividido (pelos
12892 espaços) em opções distintas e adicionadas aos
12893 argumentos do comando @emph{antes} de quaisquer opções
12894 da linha de comando.
12895
12896 @c <en>If a command has two names (e.g., @code{checkout} and
12897 @c <en>@code{co}), the official name, not necessarily the one
12898 @c <en>used on the command line, will be used to match against
12899 @c <en>the file.  So if this is the contents of the user's
12900 @c <en>@file{~/.cvsrc} file:
12901 Se um comando tem dois nomes (e.g., @code{checkout} e
12902 @code{co}), o nome oficial, que não é necessariamente o
12903 usado na linha de comando,  vai ser usado para fazer a
12904 busca no arquivo.  Logo, se este é o conteúdo do
12905 arquivo @file{~/.cvsrc} do usuário:
12906
12907 @example
12908 log -N
12909 diff -uN
12910 rdiff -u
12911 update -Pd
12912 checkout -P
12913 release -d
12914 @end example
12915
12916 @noindent
12917 @c <en>the command @samp{cvs checkout foo} would have the
12918 @c <en>@samp{-P} option added to the arguments, as well as
12919 @c <en>@samp{cvs co foo}.
12920 o comando @samp{cvs checkout foo} vai ter a opção
12921 @samp{-P} adicionada a seus argumentos, assim como
12922 @samp{cvs co foo}.
12923
12924 @c <en>With the example file above, the output from @samp{cvs
12925 @c <en>diff foobar} will be in unidiff format.  @samp{cvs diff
12926 @c <en>-c foobar} will provide context diffs, as usual.
12927 @c <en>Getting "old" format diffs would be slightly more
12928 @c <en>complicated, because @code{diff} doesn't have an option
12929 @c <en>to specify use of the "old" format, so you would need
12930 @c <en>@samp{cvs -f diff foobar}.
12931 Com o arquivo de exemplo acima, a saída de @samp{cvs
12932 diff foobar} vai ser no formato unidiff.  @samp{cvs
12933 diff -c foobar} vai dar diffs de contexto, que é o normal.
12934 Obter o diff no formato "velho" vai ser um pouco mais
12935 complicado, já que o @code{diff} não tem uma opção para
12936 especificar o uso do formato "velho", logo você vai ter
12937 que usar @samp{cvs -f diff foobar}.
12938
12939 @c <en>In place of the command name you can use @code{cvs} to
12940 @c <en>specify global options (@pxref{Global options}).  For
12941 @c <en>example the following line in @file{.cvsrc}
12942 Ao invés de no nome do comando você pode usar o
12943 @code{cvs} especificando opções globais (@pxref{Opções globais}).  Por
12944 exemplo a seguinte linha em @file{.cvsrc}
12945
12946 @example
12947 cvs -z6
12948 @end example
12949
12950 @noindent
12951 @c <en>causes @sc{cvs} to use compression level 6.
12952 faz com que o @sc{cvs} use compressão de nível 6.
12953
12954 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12955 @c <en>@node Global options
12956 @node Opções globais
12957 @c <en>@appendixsec Global options
12958 @appendixsec Opções globais
12959 @c <en>@cindex Options, global
12960 @cindex Options, global
12961 @c <en>@cindex Global options
12962 @cindex Opções globais
12963 @c <en>@cindex Left-hand options
12964 @cindex Left-hand options
12965
12966 The available @samp{cvs_options} (that are given to the
12967 left of @samp{cvs_command}) are:
12968
12969 @table @code
12970 @c <en>@item --allow-root=@var{rootdir}
12971 @item --allow-root=@var{rootdir}
12972 @c <en>Specify legal @sc{cvsroot} directory.  See
12973 @c <en>@ref{Password authentication server}.
12974 Specify legal @sc{cvsroot} directory.  See
12975 @ref{Servidor de autenticação por senha}.
12976
12977 @c <en>@cindex Authentication, stream
12978 @cindex Authentication, stream
12979 @c <en>@cindex Stream authentication
12980 @cindex Stream authentication
12981 @c <en>@item -a
12982 @item -a
12983 @c <en>Authenticate all communication between the client and
12984 @c <en>the server.  Only has an effect on the @sc{cvs} client.
12985 @c <en>As of this writing, this is only implemented when using
12986 @c <en>a GSSAPI connection (@pxref{GSSAPI authenticated}).
12987 @c <en>Authentication prevents certain sorts of attacks
12988 @c <en>involving hijacking the active @sc{tcp} connection.
12989 @c <en>Enabling authentication does not enable encryption.
12990 Authenticate all communication between the client and
12991 the server.  Only has an effect on the @sc{cvs} client.
12992 As of this writing, this is only implemented when using
12993 a GSSAPI connection (@pxref{Autenticação GSSAPI}).
12994 Authentication prevents certain sorts of attacks
12995 involving hijacking the active @sc{tcp} connection.
12996 Enabling authentication does not enable encryption.
12997
12998 @cindex RCSBIN, overriding
12999 @cindex Overriding RCSBIN
13000 @item -b @var{bindir}
13001 In @sc{cvs} 1.9.18 and older, this specified that
13002 @sc{rcs} programs are in the @var{bindir} directory.
13003 Current versions of @sc{cvs} do not run @sc{rcs}
13004 programs; for compatibility this option is accepted,
13005 but it does nothing.
13006
13007 @cindex TMPDIR, overriding
13008 @cindex Overriding TMPDIR
13009 @item -T @var{tempdir}
13010 Use @var{tempdir} as the directory where temporary files are
13011 located.  Overrides the setting of the @code{$TMPDIR} environment
13012 variable and any precompiled directory.  This parameter should be
13013 specified as an absolute pathname.
13014 (When running client/server, @samp{-T} affects only the local process;
13015 specifying @samp{-T} for the client has no effect on the server and
13016 vice versa.)
13017
13018 @cindex CVSROOT, overriding
13019 @cindex Overriding CVSROOT
13020 @item -d @var{cvs_root_directory}
13021 Use @var{cvs_root_directory} as the root directory
13022 pathname of the repository.  Overrides the setting of
13023 the @code{$CVSROOT} environment variable.  @xref{Repositório}.
13024
13025 @c <en>@cindex EDITOR, overriding
13026 @cindex EDITOR, overriding
13027 @c <en>@cindex Overriding EDITOR
13028 @cindex Overriding EDITOR
13029 @c <en>@item -e @var{editor}
13030 @item -e @var{editor}
13031 @c <en>Use @var{editor} to enter revision log information.  Overrides the
13032 @c <en>setting of the @code{$CVSEDITOR} and @code{$EDITOR}
13033 @c <en>environment variables.  For more information, see
13034 @c <en>@ref{Committing your changes}.
13035 Use @var{editor} to enter revision log information.  Overrides the
13036 setting of the @code{$CVSEDITOR} and @code{$EDITOR}
13037 environment variables.  For more information, see
13038 @ref{Efetivando suas alterações}.
13039
13040 @item -f
13041 Do not read the @file{~/.cvsrc} file.  This
13042 option is most often used because of the
13043 non-orthogonality of the @sc{cvs} option set.  For
13044 example, the @samp{cvs log} option @samp{-N} (turn off
13045 display of tag names) does not have a corresponding
13046 option to turn the display on.  So if you have
13047 @samp{-N} in the @file{~/.cvsrc} entry for @samp{log},
13048 you may need to use @samp{-f} to show the tag names.
13049
13050 @item -H
13051 @itemx --help
13052 Display usage information about the specified @samp{cvs_command}
13053 (but do not actually execute the command).  If you don't specify
13054 a command name, @samp{cvs -H} displays overall help for
13055 @sc{cvs}, including a list of other help options.
13056 @c It seems to me it is better to document it this way
13057 @c rather than trying to update this documentation
13058 @c every time that we add a --help-foo option.  But
13059 @c perhaps that is confusing...
13060
13061 @item -l
13062 Do not log the @samp{cvs_command} in the command history (but execute it
13063 anyway).  @xref{history}, for information on command history.
13064
13065 @cindex Read-only repository mode
13066 @item -R
13067 Turns on read-only repository mode.  This allows one to check out from a
13068 read-only repository, such as within an anoncvs server, or from a CDROM
13069 repository.
13070
13071 Same effect as if the @code{CVSREADONLYFS} environment
13072 variable is set. Using @samp{-R} can also considerably
13073 speed up checkout's over NFS.
13074
13075 @cindex Read-only mode
13076 @item -n
13077 Do not change any files.  Attempt to execute the
13078 @samp{cvs_command}, but only to issue reports; do not remove,
13079 update, or merge any existing files, or create any new files.
13080
13081 Note that @sc{cvs} will not necessarily produce exactly
13082 the same output as without @samp{-n}.  In some cases
13083 the output will be the same, but in other cases
13084 @sc{cvs} will skip some of the processing that would
13085 have been required to produce the exact same output.
13086
13087 @item -Q
13088 Cause the command to be really quiet; the command will only
13089 generate output for serious problems.
13090
13091 @item -q
13092 Cause the command to be somewhat quiet; informational messages,
13093 such as reports of recursion through subdirectories, are
13094 suppressed.
13095
13096 @c <en>@cindex Read-only files, and -r
13097 @cindex Read-only files, and -r
13098 @c <en>@item -r
13099 @item -r
13100 @c <en>Make new working files read-only.  Same effect
13101 @c <en>as if the @code{$CVSREAD} environment variable is set
13102 @c <en>(@pxref{Environment variables}).  The default is to
13103 @c <en>make working files writable, unless watches are on
13104 @c <en>(@pxref{Watches}).
13105 Make new working files read-only.  Same effect
13106 as if the @code{$CVSREAD} environment variable is set
13107 (@pxref{Variáveis de ambiente}).  The default is to
13108 make working files writable, unless watches are on
13109 (@pxref{???Watches???}).
13110
13111 @item -s @var{variable}=@var{value}
13112 Set a user variable (@pxref{Variables}).
13113
13114 @cindex Trace
13115 @item -t
13116 Trace program execution; display messages showing the steps of
13117 @sc{cvs} activity.  Particularly useful with @samp{-n} to explore the
13118 potential impact of an unfamiliar command.
13119
13120 @item -v
13121 @item --version
13122 Display version and copyright information for @sc{cvs}.
13123
13124 @cindex CVSREAD, overriding
13125 @cindex Overriding CVSREAD
13126 @item -w
13127 Make new working files read-write.  Overrides the
13128 setting of the @code{$CVSREAD} environment variable.
13129 Files are created read-write by default, unless @code{$CVSREAD} is
13130 set or @samp{-r} is given.
13131 @c Note that -w only overrides -r and CVSREAD; it has
13132 @c no effect on files which are readonly because of
13133 @c "cvs watch on".  My guess is that is the way it
13134 @c should be (or should "cvs -w get" on a watched file
13135 @c be the same as a get and a cvs edit?), but I'm not
13136 @c completely sure whether to document it this way.
13137
13138 @item -x
13139 @c <en>@cindex Encryption
13140 @cindex Encryption
13141 @c <en>Encrypt all communication between the client and the
13142 @c <en>server.  Only has an effect on the @sc{cvs} client.  As
13143 @c <en>of this writing, this is only implemented when using a
13144 @c <en>GSSAPI connection (@pxref{GSSAPI authenticated}) or a
13145 @c <en>Kerberos connection (@pxref{Kerberos authenticated}).
13146 @c <en>Enabling encryption implies that message traffic is
13147 @c <en>also authenticated.  Encryption support is not
13148 @c <en>available by default; it must be enabled using a
13149 @c <en>special configure option, @file{--enable-encryption},
13150 @c <en>when you build @sc{cvs}.
13151 Encrypt all communication between the client and the
13152 server.  Only has an effect on the @sc{cvs} client.  As
13153 of this writing, this is only implemented when using a
13154 GSSAPI connection (@pxref{Autenticação GSSAPI}) or a
13155 Kerberos connection (@pxref{Autenticação kerberos}).
13156 Enabling encryption implies that message traffic is
13157 also authenticated.  Encryption support is not
13158 available by default; it must be enabled using a
13159 special configure option, @file{--enable-encryption},
13160 when you build @sc{cvs}.
13161
13162 @item -z @var{gzip-level}
13163 @cindex Compression
13164 @cindex Gzip
13165 Set the compression level.
13166 Valid levels are 1 (high speed, low compression) to
13167 9 (low speed, high compression), or 0 to disable
13168 compression (the default).
13169 Only has an effect on the @sc{cvs} client.
13170
13171 @end table
13172
13173 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
13174 @c <en>@node Common options
13175 @node Opções comuns
13176 @c <en>@appendixsec Common command options
13177 @appendixsec Common command options
13178 @c <en>@cindex Common options
13179 @cindex Opções comuns
13180 @c <en>@cindex Right-hand options
13181 @cindex Right-hand options
13182
13183 This section describes the @samp{command_options} that
13184 are available across several @sc{cvs} commands.  These
13185 options are always given to the right of
13186 @samp{cvs_command}. Not all
13187 commands support all of these options; each option is
13188 only supported for commands where it makes sense.
13189 However, when a command has one of these options you
13190 can almost always count on the same behavior of the
13191 option as in other commands.  (Other command options,
13192 which are listed with the individual commands, may have
13193 different behavior from one @sc{cvs} command to the other).
13194
13195 @strong{Note: the @samp{history} command is an exception; it supports
13196 many options that conflict even with these standard options.}
13197
13198 @table @code
13199 @cindex Dates
13200 @cindex Time
13201 @cindex Specifying dates
13202 @item -D @var{date_spec}
13203 Use the most recent revision no later than @var{date_spec}.
13204 @var{date_spec} is a single argument, a date description
13205 specifying a date in the past.
13206
13207 @c <en>The specification is @dfn{sticky} when you use it to make a
13208 @c <en>private copy of a source file; that is, when you get a working
13209 @c <en>file using @samp{-D}, @sc{cvs} records the date you specified, so that
13210 @c <en>further updates in the same directory will use the same date
13211 @c <en>(for more information on sticky tags/dates, @pxref{Sticky tags}).
13212 The specification is @dfn{sticky} when you use it to make a
13213 private copy of a source file; that is, when you get a working
13214 file using @samp{-D}, @sc{cvs} records the date you specified, so that
13215 further updates in the same directory will use the same date
13216 (for more information on sticky tags/dates, @pxref{Etiquetas adesivas}).
13217
13218 @samp{-D} is available with the @code{annotate}, @code{checkout},
13219 @code{diff}, @code{export}, @code{history},
13220 @code{rdiff}, @code{rtag}, @code{tag}, and @code{update} commands.
13221 (The @code{history} command uses this option in a
13222 slightly different way; @pxref{history options}).
13223
13224 @c What other formats should we accept?  I don't want
13225 @c to start accepting a whole mess of non-standard
13226 @c new formats (there are a lot which are in wide use in
13227 @c one context or another), but practicality does
13228 @c dictate some level of flexibility.
13229 @c * POSIX.2 (e.g. touch, ls output, date) and other
13230 @c POSIX and/or de facto unix standards (e.g. at).  The
13231 @c practice here is too inconsistent to be of any use.
13232 @c * VMS dates.  This is not a formal standard, but
13233 @c there is a published specification (see SYS$ASCTIM
13234 @c and SYS$BINTIM in the _VMS System Services Reference
13235 @c Manual_), it is implemented consistently in VMS
13236 @c utilities, and VMS users will expect CVS running on
13237 @c VMS to support this format (and if we're going to do
13238 @c that, better to make CVS support it on all
13239 @c platforms.  Maybe).
13240 @c
13241 @c NOTE: The tar manual has some documentation for
13242 @c getdate.y (just for our info; we don't want to
13243 @c attempt to document all the formats accepted by
13244 @c getdate.y).
13245 @c
13246 @c One more note: In output, CVS should consistently
13247 @c use one date format, and that format should be one that
13248 @c it accepts in input as well.  The former isn't
13249 @c really true (see survey below), and I'm not
13250 @c sure that either of those formats is accepted in
13251 @c input.
13252 @c
13253 @c cvs log
13254 @c   current 1996/01/02 13:45:31
13255 @c   Internet 02 Jan 1996 13:45:31 UT
13256 @c   ISO 1996-01-02 13:45:31
13257 @c cvs ann
13258 @c   current 02-Jan-96
13259 @c   Internet-like 02 Jan 96
13260 @c   ISO 96-01-02
13261 @c cvs status
13262 @c   current Tue Jun 11 02:54:53 1996
13263 @c   Internet [Tue,] 11 Jun 1996 02:54:53
13264 @c   ISO 1996-06-11 02:54:53
13265 @c   note: date possibly should be omitted entirely for
13266 @c   other reasons.
13267 @c cvs editors
13268 @c   current Tue Jun 11 02:54:53 1996 GMT
13269 @c cvs history
13270 @c   current 06/11 02:54 +0000
13271 @c any others?
13272 @c There is a good chance the proper solution has to
13273 @c involve at least some level of letting the user
13274 @c decide which format (with the default being the
13275 @c formats CVS has always used; changing these might be
13276 @c _very_ disruptive since scripts may very well be
13277 @c parsing them).
13278 @c
13279 @c Another random bit of prior art concerning dates is
13280 @c the strptime function which takes templates such as
13281 @c "%m/%d/%y", and apparent a variant of getdate()
13282 @c which also honors them.  See
13283 @c X/Open CAE Specification, System Interfaces and
13284 @c Headers Issue 4, Version 2 (September 1994), in the
13285 @c entry for getdate() on page 231
13286
13287 @cindex Timezone, in input
13288 @cindex Zone, time, in input
13289 A wide variety of date formats are supported by
13290 @sc{cvs}.  The most standard ones are ISO8601 (from the
13291 International Standards Organization) and the Internet
13292 e-mail standard (specified in RFC822 as amended by
13293 RFC1123).
13294
13295 @c Probably should be doing more to spell out just what
13296 @c the rules are, rather than just giving examples.
13297 @c But I want to keep this simple too.
13298 @c So I don't know....
13299 @c A few specific issues: (1) Maybe should reassure
13300 @c people that years after 2000
13301 @c work (they are in the testsuite, so they do indeed
13302 @c work).  (2) What do two digit years
13303 @c mean?  Where do we accept them?  (3) Local times can
13304 @c be ambiguous or nonexistent if they fall during the
13305 @c hour when daylight savings time goes into or out of
13306 @c effect.  Pretty obscure, so I'm not at all sure we
13307 @c should be documenting the behavior in that case.
13308 ISO8601 dates have many variants but a few examples
13309 are:
13310
13311 @example
13312 1972-09-24
13313 1972-09-24 20:05
13314 @end example
13315 @c I doubt we really accept all ISO8601 format dates
13316 @c (for example, decimal hours like 1972-09-24 20,2)
13317 @c I'm not sure we should, many of them are pretty
13318 @c bizarre and it has lots of gratuitous multiple ways
13319 @c to specify the same thing.
13320
13321 There are a lot more ISO8601 date formats, and @sc{cvs}
13322 accepts many of them, but you probably don't want to
13323 hear the @emph{whole} long story :-).
13324
13325 @c Citing a URL here is kind of problematic given how
13326 @c much they change and people who have old versions of
13327 @c this manual, but in case we want to reinstate an
13328 @c ISO8601 URL, a few are:
13329 @c http://www.saqqara.demon.co.uk/datefmt.htm
13330 @c http://www.cl.cam.ac.uk/~mgk25/iso-time.html
13331 @c Citing some other ISO8601 source is probably even
13332 @c worse :-).
13333
13334 In addition to the dates allowed in Internet e-mail
13335 itself, @sc{cvs} also allows some of the fields to be
13336 omitted.  For example:
13337 @c FIXME: Need to figure out better, and document,
13338 @c what we want to allow the user to omit.
13339 @c NOTE: "omit" does not imply "reorder".
13340 @c FIXME: Need to cite a web page describing how to get
13341 @c RFC's.
13342
13343 @example
13344 24 Sep 1972 20:05
13345 24 Sep
13346 @end example
13347
13348 The date is interpreted as being in the
13349 local timezone, unless a specific timezone is
13350 specified.
13351
13352 These two date formats are preferred.  However,
13353 @sc{cvs} currently accepts a wide variety of other date
13354 formats.  They are intentionally not documented here in
13355 any detail, and future versions of @sc{cvs} might not
13356 accept all of them.
13357 @c We should document and testsuite "now" and
13358 @c "yesterday".  "now" is mentioned in the FAQ and
13359 @c "yesterday" is mentioned in this document (and the
13360 @c message from "cvs import" suggesting a merge
13361 @c command).  What else?  Probably some/all of the "3
13362 @c weeks ago" family.
13363 @c
13364 @c Maybe at
13365 @c some point have CVS start give warnings on "unofficial"
13366 @c formats (many of which might be typos or user
13367 @c misunderstandings, and/or formats people never/rarely
13368 @c use to specify dates)?
13369
13370 One such format is
13371 @code{@var{month}/@var{day}/@var{year}}.  This may
13372 confuse people who are accustomed to having the month
13373 and day in the other order; @samp{1/4/96} is January 4,
13374 not April 1.
13375
13376 Remember to quote the argument to the @samp{-D}
13377 flag so that your shell doesn't interpret spaces as
13378 argument separators.  A command using the @samp{-D}
13379 flag can look like this:
13380
13381 @example
13382 $ cvs diff -D "1 hour ago" cvs.texinfo
13383 @end example
13384
13385 @cindex Forcing a tag match
13386 @item -f
13387 When you specify a particular date or tag to @sc{cvs} commands, they
13388 normally ignore files that do not contain the tag (or did not
13389 exist prior to the date) that you specified.  Use the @samp{-f} option
13390 if you want files retrieved even when there is no match for the
13391 tag or date.  (The most recent revision of the file
13392 will be used).
13393
13394 Note that even with @samp{-f}, a tag that you specify
13395 must exist (that is, in some file, not necessary in
13396 every file).  This is so that @sc{cvs} will continue to
13397 give an error if you mistype a tag name.
13398
13399 @need 800
13400 @samp{-f} is available with these commands:
13401 @code{annotate}, @code{checkout}, @code{export},
13402 @code{rdiff}, @code{rtag}, and @code{update}.
13403
13404 @c <en>@strong{WARNING:  The @code{commit} and @code{remove}
13405 @c <en>commands also have a
13406 @c <en>@samp{-f} option, but it has a different behavior for
13407 @c <en>those commands.  See @ref{commit options}, and
13408 @c <en>@ref{Removing files}.}
13409 @strong{WARNING:  The @code{commit} and @code{remove}
13410 commands also have a
13411 @samp{-f} option, but it has a different behavior for
13412 those commands.  See @ref{commit options}, and
13413 @ref{Removendo arquivos}.}
13414
13415 @c <en>@item -k @var{kflag}
13416 @item -k @var{kflag}
13417 @c <en>Override the default processing of RCS keywords other than
13418 @c <en>@samp{-kb}.  @xref{Keyword substitution}, for the meaning of
13419 @c <en>@var{kflag}.  Used with the @code{checkout} and @code{update}
13420 @c <en>commands, your @var{kflag} specification is
13421 @c <en>@dfn{sticky}; that is, when you use this option
13422 @c <en>with a @code{checkout} or @code{update} command,
13423 @c <en>@sc{cvs} associates your selected @var{kflag} with any files
13424 @c <en>it operates on, and continues to use that @var{kflag} with future
13425 @c <en>commands on the same files until you specify otherwise.
13426 Override the default processing of RCS keywords other than
13427 @samp{-kb}.  @xref{Substituição de palavra-chave}, for the meaning of
13428 @var{kflag}.  Used with the @code{checkout} and @code{update}
13429 commands, your @var{kflag} specification is
13430 @dfn{sticky}; that is, when you use this option
13431 with a @code{checkout} or @code{update} command,
13432 @sc{cvs} associates your selected @var{kflag} with any files
13433 it operates on, and continues to use that @var{kflag} with future
13434 commands on the same files until you specify otherwise.
13435
13436 @c <en>The @samp{-k} option is available with the @code{add},
13437 @c <en>@code{checkout}, @code{diff}, @code{export}, @code{import} and
13438 @c <en>@code{update} commands.
13439 The @samp{-k} option is available with the @code{add},
13440 @code{checkout}, @code{diff}, @code{export}, @code{import} and
13441 @code{update} commands.
13442
13443 @c <en>@strong{WARNING: Prior to CVS version 1.12.2, the @samp{-k} flag
13444 @c <en>overrode the @samp{-kb} indication for a binary file.  This could
13445 @c <en>sometimes corrupt binary files.  @xref{Merging and keywords}, for
13446 @c <en>more.}
13447 @strong{WARNING: Prior to CVS version 1.12.2, the @samp{-k} flag
13448 overrode the @samp{-kb} indication for a binary file.  This could
13449 sometimes corrupt binary files.  @xref{Mesclagem e palavras-chave}, for
13450 more.}
13451
13452 @c <en>@item -l
13453 @item -l
13454 @c <en>Local; run only in current working directory, rather than
13455 @c <en>recursing through subdirectories.
13456 Local; run only in current working directory, rather than
13457 recursing through subdirectories.
13458
13459 @c <en>Available with the following commands: @code{annotate}, @code{checkout},
13460 @c <en>@code{commit}, @code{diff}, @code{edit}, @code{editors}, @code{export},
13461 @c <en>@code{log}, @code{rdiff}, @code{remove}, @code{rtag},
13462 @c <en>@code{status}, @code{tag}, @code{unedit}, @code{update}, @code{watch},
13463 @c <en>and @code{watchers}.
13464 Available with the following commands: @code{annotate}, @code{checkout},
13465 @code{commit}, @code{diff}, @code{edit}, @code{editors}, @code{export},
13466 @code{log}, @code{rdiff}, @code{remove}, @code{rtag},
13467 @code{status}, @code{tag}, @code{unedit}, @code{update}, @code{watch},
13468 and @code{watchers}.
13469
13470 @c <en>@cindex Editor, avoiding invocation of
13471 @cindex Editor, avoiding invocation of
13472 @c <en>@cindex Avoiding editor invocation
13473 @cindex Avoiding editor invocation
13474 @c <en>@item -m @var{message}
13475 @item -m @var{message}
13476 @c <en>Use @var{message} as log information, instead of
13477 @c <en>invoking an editor.
13478 Use @var{message} as log information, instead of
13479 invoking an editor.
13480
13481 @c <en>Available with the following commands: @code{add},
13482 @c <en>@code{commit} and @code{import}.
13483 Available with the following commands: @code{add},
13484 @code{commit} and @code{import}.
13485
13486 @c <en>@item -n
13487 @item -n
13488 @c <en>Do not run any tag program.  (A program can be
13489 @c <en>specified to run in the modules
13490 @c <en>database (@pxref{modules}); this option bypasses it).
13491 Do not run any tag program.  (A program can be
13492 specified to run in the modules
13493 database (@pxref{modules}); this option bypasses it).
13494
13495 @c <en>@strong{Note: this is not the same as the @samp{cvs -n}
13496 @c <en>program option, which you can specify to the left of a cvs command!}
13497 @strong{Note: this is not the same as the @samp{cvs -n}
13498 program option, which you can specify to the left of a cvs command!}
13499
13500 Available with the @code{checkout}, @code{commit}, @code{export},
13501 and @code{rtag} commands.
13502
13503 @item -P
13504 @c <en>Prune empty directories.  See @ref{Removing directories}.
13505 Prune empty directories.  See @ref{Removendo diretórios}.
13506
13507 @item -p
13508 Pipe the files retrieved from the repository to standard output,
13509 rather than writing them in the current directory.  Available
13510 with the @code{checkout} and @code{update} commands.
13511
13512 @item -R
13513 Process directories recursively.  This is on by default.
13514
13515 Available with the following commands: @code{annotate}, @code{checkout},
13516 @code{commit}, @code{diff}, @code{edit}, @code{editors}, @code{export},
13517 @code{rdiff}, @code{remove}, @code{rtag},
13518 @code{status}, @code{tag}, @code{unedit}, @code{update}, @code{watch},
13519 and @code{watchers}.
13520
13521 @item -r @var{tag}
13522 @cindex HEAD, special tag
13523 @cindex BASE, special tag
13524 Use the revision specified by the @var{tag} argument instead of the
13525 default @dfn{head} revision.  As well as arbitrary tags defined
13526 with the @code{tag} or @code{rtag} command, two special tags are
13527 always available: @samp{HEAD} refers to the most recent version
13528 available in the repository, and @samp{BASE} refers to the
13529 revision you last checked out into the current working directory.
13530
13531 @c FIXME: What does HEAD really mean?  I believe that
13532 @c the current answer is the head of the default branch
13533 @c for all cvs commands except diff.  For diff, it
13534 @c seems to be (a) the head of the trunk (or the default
13535 @c branch?) if there is no sticky tag, (b) the head of the
13536 @c branch for the sticky tag, if there is a sticky tag.
13537 @c (b) is ugly as it differs
13538 @c from what HEAD means for other commands, but people
13539 @c and/or scripts are quite possibly used to it.
13540 @c See "head" tests in sanity.sh.
13541 @c Probably the best fix is to introduce two new
13542 @c special tags, ".thead" for the head of the trunk,
13543 @c and ".bhead" for the head of the current branch.
13544 @c Then deprecate HEAD.  This has the advantage of
13545 @c not surprising people with a change to HEAD, and a
13546 @c side benefit of also phasing out the poorly-named
13547 @c HEAD (see discussion of reserved tag names in node
13548 @c "Tags").  Of course, .thead and .bhead should be
13549 @c carefully implemented (with the implementation the
13550 @c same for "diff" as for everyone else), test cases
13551 @c written (similar to the ones in "head"), new tests
13552 @c cases written for things like default branches, &c.
13553
13554 @c <en>The tag specification is sticky when you use this
13555 @c <en>@c option
13556 @c <en>with @code{checkout} or @code{update} to make your own
13557 @c <en>copy of a file: @sc{cvs} remembers the tag and continues to use it on
13558 @c <en>future update commands, until you specify otherwise (for more information
13559 @c <en>on sticky tags/dates, @pxref{Sticky tags}).
13560 The tag specification is sticky when you use this
13561 @c option
13562 with @code{checkout} or @code{update} to make your own
13563 copy of a file: @sc{cvs} remembers the tag and continues to use it on
13564 future update commands, until you specify otherwise (for more information
13565 on sticky tags/dates, @pxref{Etiquetas adesivas}).
13566
13567 @c <en>The tag can be either a symbolic or numeric tag, as
13568 @c <en>described in @ref{Tags}, or the name of a branch, as
13569 @c <en>described in @ref{Branching and merging}.
13570 The tag can be either a symbolic or numeric tag, as
13571 described in @ref{Etiquetas}, or the name of a branch, as
13572 described in @ref{Ramificando e mesclando}.
13573
13574 Specifying the @samp{-q} global option along with the
13575 @samp{-r} command option is often useful, to suppress
13576 the warning messages when the @sc{rcs} file
13577 does not contain the specified tag.
13578
13579 @strong{Note: this is not the same as the overall @samp{cvs -r} option,
13580 which you can specify to the left of a @sc{cvs} command!}
13581
13582 @samp{-r} is available with the @code{annotate}, @code{checkout},
13583 @code{commit}, @code{diff}, @code{history}, @code{export}, @code{rdiff},
13584 @code{rtag}, and @code{update} commands.
13585
13586 @item -W
13587 Specify file names that should be filtered.  You can
13588 use this option repeatedly.  The spec can be a file
13589 name pattern of the same type that you can specify in
13590 the @file{.cvswrappers} file.
13591 Available with the following commands: @code{import},
13592 and @code{update}.
13593
13594 @end table
13595
13596 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
13597 @node admin
13598 @appendixsec admin---Administration
13599 @cindex Admin (subcommand)
13600
13601 @itemize @bullet
13602 @item
13603 Requires: repository, working directory.
13604 @item
13605 Changes: repository.
13606 @item
13607 Synonym: rcs
13608 @end itemize
13609
13610 This is the @sc{cvs} interface to assorted
13611 administrative facilities.  Some of them have
13612 questionable usefulness for @sc{cvs} but exist for
13613 historical purposes.  Some of the questionable options
13614 are likely to disappear in the future.  This command
13615 @emph{does} work recursively, so extreme care should be
13616 used.
13617
13618 @cindex cvsadmin
13619 @cindex UserAdminOptions, in CVSROOT/config
13620 On unix, if there is a group named @code{cvsadmin},
13621 only members of that group can run @code{cvs admin}
13622 commands, except for those specified using the
13623 @code{UserAdminOptions} configuration option in the
13624 @file{CVSROOT/config} file.  Options specified using
13625 @code{UserAdminOptions} can be run by any user.  See
13626 @ref{config} for more on @code{UserAdminOptions}.
13627
13628 The @code{cvsadmin} group should exist on the server,
13629 or any system running the non-client/server @sc{cvs}.
13630 To disallow @code{cvs admin} for all users, create a
13631 group with no users in it.  On NT, the @code{cvsadmin}
13632 feature does not exist and all users
13633 can run @code{cvs admin}.
13634
13635 @menu
13636 * admin options::               admin options
13637 @end menu
13638
13639 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13640 @node admin options
13641 @appendixsubsec admin options
13642
13643 Some of these options have questionable usefulness for
13644 @sc{cvs} but exist for historical purposes.  Some even
13645 make it impossible to use @sc{cvs} until you undo the
13646 effect!
13647
13648 @table @code
13649 @item -A@var{oldfile}
13650 Might not work together with @sc{cvs}.  Append the
13651 access list of @var{oldfile} to the access list of the
13652 @sc{rcs} file.
13653
13654 @item -a@var{logins}
13655 Might not work together with @sc{cvs}.  Append the
13656 login names appearing in the comma-separated list
13657 @var{logins} to the access list of the @sc{rcs} file.
13658
13659 @c <en>@item -b[@var{rev}]
13660 @item -b[@var{rev}]
13661 @c <en>Set the default branch to @var{rev}.  In @sc{cvs}, you
13662 @c <en>normally do not manipulate default branches; sticky
13663 @c <en>tags (@pxref{Sticky tags}) are a better way to decide
13664 @c <en>which branch you want to work on.  There is one reason
13665 @c <en>to run @code{cvs admin -b}: to revert to the vendor's
13666 @c <en>version when using vendor branches (@pxref{Reverting
13667 @c <en>local changes}).
13668 @c <en>There can be no space between @samp{-b} and its argument.
13669 Set the default branch to @var{rev}.  In @sc{cvs}, you
13670 normally do not manipulate default branches; sticky
13671 tags (@pxref{Etiquetas adesivas}) are a better way to decide
13672 which branch you want to work on.  There is one reason
13673 to run @code{cvs admin -b}: to revert to the vendor's
13674 version when using vendor branches (@pxref{Reverting
13675 local changes}).
13676 There can be no space between @samp{-b} and its argument.
13677 @c Hmm, we don't document the usage where rev is
13678 @c omitted.  Maybe that usage can/should be deprecated
13679 @c (and replaced with -bHEAD or something?) (so we can toss
13680 @c the optional argument).  Note that -bHEAD does not
13681 @c work, as of 17 Sep 1997, but probably will once "cvs
13682 @c admin" is internal to CVS.
13683
13684 @c <en>@cindex Comment leader
13685 @cindex Comment leader
13686 @c <en>@item -c@var{string}
13687 @item -c@var{string}
13688 @c <en>Sets the comment leader to @var{string}.  The comment
13689 @c <en>leader is not used by current versions of @sc{cvs} or
13690 @c <en>@sc{rcs} 5.7.  Therefore, you can almost surely not
13691 @c <en>worry about it.  @xref{Keyword substitution}.
13692 Sets the comment leader to @var{string}.  The comment
13693 leader is not used by current versions of @sc{cvs} or
13694 @sc{rcs} 5.7.  Therefore, you can almost surely not
13695 worry about it.  @xref{Substituição de palavra-chave}.
13696
13697 @item -e[@var{logins}]
13698 Might not work together with @sc{cvs}.  Erase the login
13699 names appearing in the comma-separated list
13700 @var{logins} from the access list of the RCS file.  If
13701 @var{logins} is omitted, erase the entire access list.
13702 There can be no space between @samp{-e} and its argument.
13703
13704 @item -I
13705 Run interactively, even if the standard input is not a
13706 terminal.  This option does not work with the
13707 client/server @sc{cvs} and is likely to disappear in
13708 a future release of @sc{cvs}.
13709
13710 @item -i
13711 @c <en>Useless with @sc{cvs}.  This creates and initializes a
13712 @c <en>new @sc{rcs} file, without depositing a revision.  With
13713 @c <en>@sc{cvs}, add files with the @code{cvs add} command
13714 @c <en>(@pxref{Adding files}).
13715 Useless with @sc{cvs}.  This creates and initializes a
13716 new @sc{rcs} file, without depositing a revision.  With
13717 @sc{cvs}, add files with the @code{cvs add} command
13718 (@pxref{Adicionando arquivos}).
13719
13720 @c <en>@item -k@var{subst}
13721 @item -k@var{subst}
13722 @c <en>Set the default keyword
13723 @c <en>substitution to @var{subst}.  @xref{Keyword
13724 @c <en>substitution}.  Giving an explicit @samp{-k} option to
13725 @c <en>@code{cvs update}, @code{cvs export}, or @code{cvs
13726 @c <en>checkout} overrides this default.
13727 Set the default keyword
13728 substitution to @var{subst}.
13729 @xref{Substituição de palavra-chave}.  Giving an explicit @samp{-k} option to
13730 @code{cvs update}, @code{cvs export}, or @code{cvs
13731 checkout} overrides this default.
13732
13733 @item -l[@var{rev}]
13734 Lock the revision with number @var{rev}.  If a branch
13735 is given, lock the latest revision on that branch.  If
13736 @var{rev} is omitted, lock the latest revision on the
13737 default branch.  There can be no space between
13738 @samp{-l} and its argument.
13739
13740 This can be used in conjunction with the
13741 @file{rcslock.pl} script in the @file{contrib}
13742 directory of the @sc{cvs} source distribution to
13743 provide reserved checkouts (where only one user can be
13744 editing a given file at a time).  See the comments in
13745 that file for details (and see the @file{README} file
13746 in that directory for disclaimers about the unsupported
13747 nature of contrib).  According to comments in that
13748 file, locking must set to strict (which is the default).
13749
13750 @item -L
13751 Set locking to strict.  Strict locking means that the
13752 owner of an RCS file is not exempt from locking for
13753 checkin.  For use with @sc{cvs}, strict locking must be
13754 set; see the discussion under the @samp{-l} option above.
13755
13756 @cindex Changing a log message
13757 @cindex Replacing a log message
13758 @cindex Correcting a log message
13759 @cindex Fixing a log message
13760 @cindex Log message, correcting
13761 @item -m@var{rev}:@var{msg}
13762 Replace the log message of revision @var{rev} with
13763 @var{msg}.
13764
13765 @c The rcs -M option, to suppress sending mail, has never been
13766 @c documented as a cvs admin option.
13767
13768 @c <en>@item -N@var{name}[:[@var{rev}]]
13769 @item -N@var{name}[:[@var{rev}]]
13770 @c <en>Act like @samp{-n}, except override any previous
13771 @c <en>assignment of @var{name}.  For use with magic branches,
13772 @c <en>see @ref{Magic branch numbers}.
13773 Act like @samp{-n}, except override any previous
13774 assignment of @var{name}.  For use with magic branches,
13775 see @ref{Números de ramos mágicos}.
13776
13777 @item -n@var{name}[:[@var{rev}]]
13778 Associate the symbolic name @var{name} with the branch
13779 or revision @var{rev}.  It is normally better to use
13780 @samp{cvs tag} or @samp{cvs rtag} instead.  Delete the
13781 symbolic name if both @samp{:} and @var{rev} are
13782 omitted; otherwise, print an error message if
13783 @var{name} is already associated with another number.
13784 If @var{rev} is symbolic, it is expanded before
13785 association.  A @var{rev} consisting of a branch number
13786 followed by a @samp{.} stands for the current latest
13787 revision in the branch.  A @samp{:} with an empty
13788 @var{rev} stands for the current latest revision on the
13789 default branch, normally the trunk.  For example,
13790 @samp{cvs admin -n@var{name}:} associates @var{name} with the
13791 current latest revision of all the RCS files;
13792 this contrasts with @samp{cvs admin -n@var{name}:$} which
13793 associates @var{name} with the revision numbers
13794 extracted from keyword strings in the corresponding
13795 working files.
13796
13797 @cindex Deleting revisions
13798 @cindex Outdating revisions
13799 @cindex Saving space
13800 @item -o@var{range}
13801 Deletes (@dfn{outdates}) the revisions given by
13802 @var{range}.
13803
13804 Note that this command can be quite dangerous unless
13805 you know @emph{exactly} what you are doing (for example
13806 see the warnings below about how the
13807 @var{rev1}:@var{rev2} syntax is confusing).
13808
13809 If you are short on disc this option might help you.
13810 But think twice before using it---there is no way short
13811 of restoring the latest backup to undo this command!
13812 If you delete different revisions than you planned,
13813 either due to carelessness or (heaven forbid) a @sc{cvs}
13814 bug, there is no opportunity to correct the error
13815 before the revisions are deleted.  It probably would be
13816 a good idea to experiment on a copy of the repository
13817 first.
13818
13819 Specify @var{range} in one of the following ways:
13820
13821 @table @code
13822 @item @var{rev1}::@var{rev2}
13823 Collapse all revisions between rev1 and rev2, so that
13824 @sc{cvs} only stores the differences associated with going
13825 from rev1 to rev2, not intermediate steps.  For
13826 example, after @samp{-o 1.3::1.5} one can retrieve
13827 revision 1.3, revision 1.5, or the differences to get
13828 from 1.3 to 1.5, but not the revision 1.4, or the
13829 differences between 1.3 and 1.4.  Other examples:
13830 @samp{-o 1.3::1.4} and @samp{-o 1.3::1.3} have no
13831 effect, because there are no intermediate revisions to
13832 remove.
13833
13834 @item ::@var{rev}
13835 Collapse revisions between the beginning of the branch
13836 containing @var{rev} and @var{rev} itself.  The
13837 branchpoint and @var{rev} are left intact.  For
13838 example, @samp{-o ::1.3.2.6} deletes revision 1.3.2.1,
13839 revision 1.3.2.5, and everything in between, but leaves
13840 1.3 and 1.3.2.6 intact.
13841
13842 @item @var{rev}::
13843 Collapse revisions between @var{rev} and the end of the
13844 branch containing @var{rev}.  Revision @var{rev} is
13845 left intact but the head revision is deleted.
13846
13847 @item @var{rev}
13848 Delete the revision @var{rev}.  For example, @samp{-o
13849 1.3} is equivalent to @samp{-o 1.2::1.4}.
13850
13851 @c <en>@item @var{rev1}:@var{rev2}
13852 @item @var{rev1}:@var{rev2}
13853 @c <en>Delete the revisions from @var{rev1} to @var{rev2},
13854 @c <en>inclusive, on the same branch.  One will not be able to
13855 @c <en>retrieve @var{rev1} or @var{rev2} or any of the
13856 @c <en>revisions in between.  For example, the command
13857 @c <en>@samp{cvs admin -oR_1_01:R_1_02 .} is rarely useful.
13858 @c <en>It means to delete revisions up to, and including, the
13859 @c <en>tag R_1_02.  But beware!  If there are files that have not
13860 @c <en>changed between R_1_02 and R_1_03 the file will have
13861 @c <en>@emph{the same} numerical revision number assigned to
13862 @c <en>the tags R_1_02 and R_1_03.  So not only will it be
13863 @c <en>impossible to retrieve R_1_02; R_1_03 will also have to
13864 @c <en>be restored from the tapes!  In most cases you want to
13865 @c <en>specify @var{rev1}::@var{rev2} instead.
13866 Delete the revisions from @var{rev1} to @var{rev2},
13867 inclusive, on the same branch.  One will not be able to
13868 retrieve @var{rev1} or @var{rev2} or any of the
13869 revisions in between.  For example, the command
13870 @samp{cvs admin -oR_1_01:R_1_02 .} is rarely useful.
13871 It means to delete revisions up to, and including, the
13872 tag R_1_02.  But beware!  If there are files that have not
13873 changed between R_1_02 and R_1_03 the file will have
13874 @emph{the same} numerical revision number assigned to
13875 the tags R_1_02 and R_1_03.  So not only will it be
13876 impossible to retrieve R_1_02; R_1_03 will also have to
13877 be restored from the tapes!  In most cases you want to
13878 specify @var{rev1}::@var{rev2} instead.
13879
13880 @c <en>@item :@var{rev}
13881 @item :@var{rev}
13882 @c <en>Delete revisions from the beginning of the
13883 @c <en>branch containing @var{rev} up to and including
13884 @c <en>@var{rev}.
13885 Delete revisions from the beginning of the
13886 branch containing @var{rev} up to and including
13887 @var{rev}.
13888
13889 @c <en>@item @var{rev}:
13890 @item @var{rev}:
13891 @c <en>Delete revisions from revision @var{rev}, including
13892 @c <en>@var{rev} itself, to the end of the branch containing
13893 @c <en>@var{rev}.
13894 Delete revisions from revision @var{rev}, including
13895 @var{rev} itself, to the end of the branch containing
13896 @var{rev}.
13897 @end table
13898
13899 @c <en>None of the revisions to be deleted may have
13900 @c <en>branches or locks.
13901 None of the revisions to be deleted may have
13902 branches or locks.
13903
13904 @c <en>If any of the revisions to be deleted have symbolic
13905 @c <en>names, and one specifies one of the @samp{::} syntaxes,
13906 @c <en>then @sc{cvs} will give an error and not delete any
13907 @c <en>revisions.  If you really want to delete both the
13908 @c <en>symbolic names and the revisions, first delete the
13909 @c <en>symbolic names with @code{cvs tag -d}, then run
13910 @c <en>@code{cvs admin -o}.  If one specifies the
13911 @c <en>non-@samp{::} syntaxes, then @sc{cvs} will delete the
13912 @c <en>revisions but leave the symbolic names pointing to
13913 @c <en>nonexistent revisions.  This behavior is preserved for
13914 @c <en>compatibility with previous versions of @sc{cvs}, but
13915 @c <en>because it isn't very useful, in the future it may
13916 @c <en>change to be like the @samp{::} case.
13917 If any of the revisions to be deleted have symbolic
13918 names, and one specifies one of the @samp{::} syntaxes,
13919 then @sc{cvs} will give an error and not delete any
13920 revisions.  If you really want to delete both the
13921 symbolic names and the revisions, first delete the
13922 symbolic names with @code{cvs tag -d}, then run
13923 @code{cvs admin -o}.  If one specifies the
13924 non-@samp{::} syntaxes, then @sc{cvs} will delete the
13925 revisions but leave the symbolic names pointing to
13926 nonexistent revisions.  This behavior is preserved for
13927 compatibility with previous versions of @sc{cvs}, but
13928 because it isn't very useful, in the future it may
13929 change to be like the @samp{::} case.
13930
13931 @c <en>Due to the way @sc{cvs} handles branches @var{rev}
13932 @c <en>cannot be specified symbolically if it is a branch.
13933 @c <en>@xref{Magic branch numbers}, for an explanation.
13934 Due to the way @sc{cvs} handles branches @var{rev}
13935 cannot be specified symbolically if it is a branch.
13936 @xref{Números de ramos mágicos}, for an explanation.
13937 @c FIXME: is this still true?  I suspect not.
13938
13939 @c <en>Make sure that no-one has checked out a copy of the
13940 @c <en>revision you outdate.  Strange things will happen if he
13941 @c <en>starts to edit it and tries to check it back in.  For
13942 @c <en>this reason, this option is not a good way to take back
13943 @c <en>a bogus commit; commit a new revision undoing the bogus
13944 @c <en>change instead (@pxref{Merging two revisions}).
13945 Make sure that no-one has checked out a copy of the
13946 revision you outdate.  Strange things will happen if he
13947 starts to edit it and tries to check it back in.  For
13948 this reason, this option is not a good way to take back
13949 a bogus commit; commit a new revision undoing the bogus
13950 change instead (@pxref{Mesclando duas revisões}).
13951
13952 @item -q
13953 @c <en>Run quietly; do not print diagnostics.
13954 Run quietly; do not print diagnostics.
13955
13956 @c <en>@item -s@var{state}[:@var{rev}]
13957 @item -s@var{state}[:@var{rev}]
13958 @c <en>Useful with @sc{cvs}.  Set the state attribute of the
13959 @c <en>revision @var{rev} to @var{state}.  If @var{rev} is a
13960 @c <en>branch number, assume the latest revision on that
13961 @c <en>branch.  If @var{rev} is omitted, assume the latest
13962 @c <en>revision on the default branch.  Any identifier is
13963 @c <en>acceptable for @var{state}.  A useful set of states is
13964 @c <en>@samp{Exp} (for experimental), @samp{Stab} (for
13965 @c <en>stable), and @samp{Rel} (for released).  By default,
13966 @c <en>the state of a new revision is set to @samp{Exp} when
13967 @c <en>it is created.  The state is visible in the output from
13968 @c <en>@var{cvs log} (@pxref{log}), and in the
13969 @c <en>@samp{$@splitrcskeyword{}Log$} and @samp{$@splitrcskeyword{}State$} keywords
13970 @c <en>(@pxref{Keyword substitution}).  Note that @sc{cvs}
13971 @c <en>uses the @code{dead} state for its own purposes; to
13972 @c <en>take a file to or from the @code{dead} state use
13973 @c <en>commands like @code{cvs remove} and @code{cvs add}, not
13974 @c <en>@code{cvs admin -s}.
13975 Useful with @sc{cvs}.  Set the state attribute of the
13976 revision @var{rev} to @var{state}.  If @var{rev} is a
13977 branch number, assume the latest revision on that
13978 branch.  If @var{rev} is omitted, assume the latest
13979 revision on the default branch.  Any identifier is
13980 acceptable for @var{state}.  A useful set of states is
13981 @samp{Exp} (for experimental), @samp{Stab} (for
13982 stable), and @samp{Rel} (for released).  By default,
13983 the state of a new revision is set to @samp{Exp} when
13984 it is created.  The state is visible in the output from
13985 @var{cvs log} (@pxref{log}), and in the
13986 @samp{$@splitrcskeyword{}Log$} and @samp{$@splitrcskeyword{}State$} keywords
13987 (@pxref{Substituição de palavra-chave}).  Note that @sc{cvs}
13988 uses the @code{dead} state for its own purposes; to
13989 take a file to or from the @code{dead} state use
13990 commands like @code{cvs remove} and @code{cvs add}, not
13991 @code{cvs admin -s}.
13992
13993 @item -t[@var{file}]
13994 Useful with @sc{cvs}.  Write descriptive text from the
13995 contents of the named @var{file} into the RCS file,
13996 deleting the existing text.  The @var{file} pathname
13997 may not begin with @samp{-}.  The descriptive text can be seen in the
13998 output from @samp{cvs log} (@pxref{log}).
13999 There can be no space between @samp{-t} and its argument.
14000
14001 If @var{file} is omitted,
14002 obtain the text from standard input, terminated by
14003 end-of-file or by a line containing @samp{.} by itself.
14004 Prompt for the text if interaction is possible; see
14005 @samp{-I}.
14006
14007 @item -t-@var{string}
14008 Similar to @samp{-t@var{file}}. Write descriptive text
14009 from the @var{string} into the @sc{rcs} file, deleting
14010 the existing text.
14011 There can be no space between @samp{-t} and its argument.
14012
14013 @c The rcs -T option, do not update last-mod time for
14014 @c minor changes, has never been documented as a
14015 @c cvs admin option.
14016
14017 @item -U
14018 Set locking to non-strict.  Non-strict locking means
14019 that the owner of a file need not lock a revision for
14020 checkin.  For use with @sc{cvs}, strict locking must be
14021 set; see the discussion under the @samp{-l} option
14022 above.
14023
14024 @c <en>@item -u[@var{rev}]
14025 @item -u[@var{rev}]
14026 @c <en>See the option @samp{-l} above, for a discussion of
14027 @c <en>using this option with @sc{cvs}.  Unlock the revision
14028 @c <en>with number @var{rev}.  If a branch is given, unlock
14029 @c <en>the latest revision on that branch.  If @var{rev} is
14030 @c <en>omitted, remove the latest lock held by the caller.
14031 @c <en>Normally, only the locker of a revision may unlock it;
14032 @c <en>somebody else unlocking a revision breaks the lock.
14033 @c <en>This causes the original locker to be sent a @code{commit}
14034 @c <en>notification (@pxref{Getting Notified}).
14035 @c <en>There can be no space between @samp{-u} and its argument.
14036 See the option @samp{-l} above, for a discussion of
14037 using this option with @sc{cvs}.  Unlock the revision
14038 with number @var{rev}.  If a branch is given, unlock
14039 the latest revision on that branch.  If @var{rev} is
14040 omitted, remove the latest lock held by the caller.
14041 Normally, only the locker of a revision may unlock it;
14042 somebody else unlocking a revision breaks the lock.
14043 This causes the original locker to be sent a @code{commit}
14044 notification (@pxref{Recebendo Notificações}).
14045 There can be no space between @samp{-u} and its argument.
14046
14047 @item -V@var{n}
14048 In previous versions of @sc{cvs}, this option meant to
14049 write an @sc{rcs} file which would be acceptable to
14050 @sc{rcs} version @var{n}, but it is now obsolete and
14051 specifying it will produce an error.
14052 @c Note that -V without an argument has never been
14053 @c documented as a cvs admin option.
14054
14055 @item -x@var{suffixes}
14056 In previous versions of @sc{cvs}, this was documented
14057 as a way of specifying the names of the @sc{rcs}
14058 files.  However, @sc{cvs} has always required that the
14059 @sc{rcs} files used by @sc{cvs} end in @samp{,v}, so
14060 this option has never done anything useful.
14061
14062 @c The rcs -z option, to specify the timezone, has
14063 @c never been documented as a cvs admin option.
14064 @end table
14065
14066
14067 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
14068 @node checkout
14069 @appendixsec checkout---Check out sources for editing
14070 @cindex checkout (subcommand)
14071 @cindex co (subcommand)
14072
14073 @itemize @bullet
14074 @item
14075 Synopsis: checkout [options] modules@dots{}
14076 @item
14077 Requires: repository.
14078 @item
14079 Changes: working directory.
14080 @item
14081 Synonyms: co, get
14082 @end itemize
14083
14084 Create or update a working directory containing copies of the
14085 source files specified by @var{modules}.  You must execute
14086 @code{checkout} before using most of the other @sc{cvs}
14087 commands, since most of them operate on your working
14088 directory.
14089
14090 The @var{modules} are either
14091 symbolic names for some
14092 collection of source directories and files, or paths to
14093 directories or files in the repository.  The symbolic
14094 names are defined in the @samp{modules} file.
14095 @xref{modules}.
14096 @c Needs an example, particularly of the non-"modules"
14097 @c case but probably of both.
14098
14099 @c FIXME: this seems like a very odd place to introduce
14100 @c people to how CVS works.  The bit about unreserved
14101 @c checkouts is also misleading as it depends on how
14102 @c things are set up.
14103 Depending on the modules you specify, @code{checkout} may
14104 recursively create directories and populate them with
14105 the appropriate source files.  You can then edit these
14106 source files at any time (regardless of whether other
14107 software developers are editing their own copies of the
14108 sources); update them to include new changes applied by
14109 others to the source repository; or commit your work as
14110 a permanent change to the source repository.
14111
14112 Note that @code{checkout} is used to create
14113 directories.  The top-level directory created is always
14114 added to the directory where @code{checkout} is
14115 invoked, and usually has the same name as the specified
14116 module.  In the case of a module alias, the created
14117 sub-directory may have a different name, but you can be
14118 sure that it will be a sub-directory, and that
14119 @code{checkout} will show the relative path leading to
14120 each file as it is extracted into your private work
14121 area (unless you specify the @samp{-Q} global option).
14122
14123 @c <en>The files created by @code{checkout} are created
14124 @c <en>read-write, unless the @samp{-r} option to @sc{cvs}
14125 @c <en>(@pxref{Global options}) is specified, the
14126 @c <en>@code{CVSREAD} environment variable is specified
14127 @c <en>(@pxref{Environment variables}), or a watch is in
14128 @c <en>effect for that file (@pxref{Watches}).
14129 The files created by @code{checkout} are created
14130 read-write, unless the @samp{-r} option to @sc{cvs}
14131 (@pxref{Opções globais}) is specified, the
14132 @code{CVSREAD} environment variable is specified
14133 (@pxref{Variáveis de ambiente}), or a watch is in
14134 effect for that file (@pxref{???Watches???}).
14135
14136 Note that running @code{checkout} on a directory that was already
14137 built by a prior @code{checkout} is also permitted.
14138 This is similar to specifying the @samp{-d} option
14139 to the @code{update} command in the sense that new
14140 directories that have been created in the repository
14141 will appear in your work area.
14142 However, @code{checkout} takes a module name whereas
14143 @code{update} takes a directory name.  Also
14144 to use @code{checkout} this way it must be run from the
14145 top level directory (where you originally ran
14146 @code{checkout} from), so before you run
14147 @code{checkout} to update an existing directory, don't
14148 forget to change your directory to the top level
14149 directory.
14150
14151 For the output produced by the @code{checkout} command
14152 see @ref{update output}.
14153
14154 @menu
14155 * checkout options::            checkout options
14156 * checkout examples::           checkout examples
14157 @end menu
14158
14159 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14160 @node checkout options
14161 @appendixsubsec checkout options
14162
14163 @c <en>These standard options are supported by @code{checkout}
14164 @c <en>(@pxref{Common options}, for a complete description of
14165 @c <en>them):
14166 These standard options are supported by @code{checkout}
14167 (@pxref{Opções comuns}, for a complete description of
14168 them):
14169
14170 @table @code
14171 @c <en>@item -D @var{date}
14172 @item -D @var{date}
14173 @c <en>Use the most recent revision no later than @var{date}.
14174 @c <en>This option is sticky, and implies @samp{-P}.  See
14175 @c <en>@ref{Sticky tags}, for more information on sticky tags/dates.
14176 @c <en>Use the most recent revision no later than @var{date}.
14177 @c <en>This option is sticky, and implies @samp{-P}.  See
14178 @c <en>@ref{Sticky tags}, for more information on sticky tags/dates.
14179 Use the most recent revision no later than @var{date}.
14180 This option is sticky, and implies @samp{-P}.  See
14181 @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
14182 Use the most recent revision no later than @var{date}.
14183 This option is sticky, and implies @samp{-P}.  See
14184 @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
14185
14186 @item -f
14187 Only useful with the @samp{-D @var{date}} or @samp{-r
14188 @var{tag}} flags.  If no matching revision is found,
14189 retrieve the most recent revision (instead of ignoring
14190 the file).
14191
14192 @c <en>@item -k @var{kflag}
14193 @item -k @var{kflag}
14194 @c <en>Process keywords according to @var{kflag}.  See
14195 @c <en>@ref{Keyword substitution}.
14196 @c <en>This option is sticky; future updates of
14197 @c <en>this file in this working directory will use the same
14198 @c <en>@var{kflag}.  The @code{status} command can be viewed
14199 @c <en>to see the sticky options.  See @ref{Invoking CVS}, for
14200 @c <en>more information on the @code{status} command.
14201 Process keywords according to @var{kflag}.  See
14202 @ref{Substituição de palavra-chave}.
14203 This option is sticky; future updates of
14204 this file in this working directory will use the same
14205 @var{kflag}.  The @code{status} command can be viewed
14206 to see the sticky options.  See @ref{Chamando o CVS}, for
14207 more information on the @code{status} command.
14208
14209 @item -l
14210 Local; run only in current working directory.
14211
14212 @item -n
14213 Do not run any checkout program (as specified
14214 with the @samp{-o} option in the modules file;
14215 @pxref{modules}).
14216
14217 @item -P
14218 @c <en>Prune empty directories.  See @ref{Moving directories}.
14219 Prune empty directories.  See @ref{Movendo diretórios}.
14220
14221 @item -p
14222 Pipe files to the standard output.
14223
14224 @item -R
14225 Checkout directories recursively.  This option is on by default.
14226
14227 @c <en>@item -r @var{tag}
14228 @item -r @var{tag}
14229 @c <en>Use revision @var{tag}.  This option is sticky, and implies @samp{-P}.
14230 @c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
14231 Use revision @var{tag}.  This option is sticky, and implies @samp{-P}.
14232 See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
14233 @end table
14234
14235 In addition to those, you can use these special command
14236 options with @code{checkout}:
14237
14238 @table @code
14239 @c <en>@item -A
14240 @item -A
14241 @c <en>Reset any sticky tags, dates, or @samp{-k} options.
14242 @c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
14243 Reset any sticky tags, dates, or @samp{-k} options.
14244 See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
14245
14246 @item -c
14247 Copy the module file, sorted, to the standard output,
14248 instead of creating or modifying any files or
14249 directories in your working directory.
14250
14251 @item -d @var{dir}
14252 Create a directory called @var{dir} for the working
14253 files, instead of using the module name.  In general,
14254 using this flag is equivalent to using @samp{mkdir
14255 @var{dir}; cd @var{dir}} followed by the checkout
14256 command without the @samp{-d} flag.
14257
14258 There is an important exception, however.  It is very
14259 convenient when checking out a single item to have the
14260 output appear in a directory that doesn't contain empty
14261 intermediate directories.  In this case @emph{only},
14262 @sc{cvs} tries to ``shorten'' pathnames to avoid those empty
14263 directories.
14264
14265 For example, given a module @samp{foo} that contains
14266 the file @samp{bar.c}, the command @samp{cvs co -d dir
14267 foo} will create directory @samp{dir} and place
14268 @samp{bar.c} inside.  Similarly, given a module
14269 @samp{bar} which has subdirectory @samp{baz} wherein
14270 there is a file @samp{quux.c}, the command @samp{cvs co
14271 -d dir bar/baz} will create directory @samp{dir} and
14272 place @samp{quux.c} inside.
14273
14274 Using the @samp{-N} flag will defeat this behavior.
14275 Given the same module definitions above, @samp{cvs co
14276 -N -d dir foo} will create directories @samp{dir/foo}
14277 and place @samp{bar.c} inside, while @samp{cvs co -N -d
14278 dir bar/baz} will create directories @samp{dir/bar/baz}
14279 and place @samp{quux.c} inside.
14280
14281 @item -j @var{tag}
14282 With two @samp{-j} options, merge changes from the
14283 revision specified with the first @samp{-j} option to
14284 the revision specified with the second @samp{j} option,
14285 into the working directory.
14286
14287 With one @samp{-j} option, merge changes from the
14288 ancestor revision to the revision specified with the
14289 @samp{-j} option, into the working directory.  The
14290 ancestor revision is the common ancestor of the
14291 revision which the working directory is based on, and
14292 the revision specified in the @samp{-j} option.
14293
14294 In addition, each -j option can contain an optional
14295 date specification which, when used with branches, can
14296 limit the chosen revision to one within a specific
14297 date.  An optional date is specified by adding a colon
14298 (:) to the tag:
14299 @samp{-j@var{Symbolic_Tag}:@var{Date_Specifier}}.
14300
14301 @c <en>@xref{Branching and merging}.
14302 @xref{Ramificando e mesclando}.
14303
14304 @item -N
14305 Only useful together with @samp{-d @var{dir}}.  With
14306 this option, @sc{cvs} will not ``shorten'' module paths
14307 in your working directory when you check out a single
14308 module.  See the @samp{-d} flag for examples and a
14309 discussion.
14310
14311 @item -s
14312 Like @samp{-c}, but include the status of all modules,
14313 and sort it by the status string.  @xref{modules}, for
14314 info about the @samp{-s} option that is used inside the
14315 modules file to set the module status.
14316 @end table
14317
14318 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14319 @node checkout examples
14320 @appendixsubsec checkout examples
14321
14322 Get a copy of the module @samp{tc}:
14323
14324 @example
14325 $ cvs checkout tc
14326 @end example
14327
14328 Get a copy of the module @samp{tc} as it looked one day
14329 ago:
14330
14331 @example
14332 $ cvs checkout -D yesterday tc
14333 @end example
14334
14335 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
14336 @node commit
14337 @appendixsec commit---Check files into the repository
14338 @cindex commit (subcommand)
14339
14340 @itemize @bullet
14341 @item
14342 Synopsis: commit [-lnRf] [-m 'log_message' |
14343 -F file] [-r revision] [files@dots{}]
14344 @item
14345 Requires: working directory, repository.
14346 @item
14347 Changes: repository.
14348 @item
14349 Synonym: ci
14350 @end itemize
14351
14352 Use @code{commit} when you want to incorporate changes
14353 from your working source files into the source
14354 repository.
14355
14356 If you don't specify particular files to commit, all of
14357 the files in your working current directory are
14358 examined.  @code{commit} is careful to change in the
14359 repository only those files that you have really
14360 changed.  By default (or if you explicitly specify the
14361 @samp{-R} option), files in subdirectories are also
14362 examined and committed if they have changed; you can
14363 use the @samp{-l} option to limit @code{commit} to the
14364 current directory only.
14365
14366 @code{commit} verifies that the selected files are up
14367 to date with the current revisions in the source
14368 repository; it will notify you, and exit without
14369 committing, if any of the specified files must be made
14370 current first with @code{update} (@pxref{update}).
14371 @code{commit} does not call the @code{update} command
14372 for you, but rather leaves that for you to do when the
14373 time is right.
14374
14375 When all is well, an editor is invoked to allow you to
14376 enter a log message that will be written to one or more
14377 logging programs (@pxref{modules}, and @pxref{loginfo})
14378 and placed in the @sc{rcs} file inside the
14379 repository.  This log message can be retrieved with the
14380 @code{log} command; see @ref{log}.  You can specify the
14381 log message on the command line with the @samp{-m
14382 @var{message}} option, and thus avoid the editor invocation,
14383 or use the @samp{-F @var{file}} option to specify
14384 that the argument file contains the log message.
14385
14386 @menu
14387 * commit options::              commit options
14388 * commit examples::             commit examples
14389 @end menu
14390
14391 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14392 @node commit options
14393 @appendixsubsec commit options
14394
14395 @c <en>These standard options are supported by @code{commit}
14396 @c <en>(@pxref{Common options}, for a complete description of
14397 @c <en>them):
14398 These standard options are supported by @code{commit}
14399 (@pxref{Opções comuns}, for a complete description of
14400 them):
14401
14402 @table @code
14403 @item -l
14404 Local; run only in current working directory.
14405
14406 @item -R
14407 Commit directories recursively.  This is on by default.
14408
14409 @c <en>@item -r @var{revision}
14410 @item -r @var{revision}
14411 @c <en>Commit to @var{revision}.  @var{revision} must be
14412 @c <en>either a branch, or a revision on the main trunk that
14413 @c <en>is higher than any existing revision number
14414 @c <en>(@pxref{Assigning revisions}).  You
14415 @c <en>cannot commit to a specific revision on a branch.
14416 Commit to @var{revision}.  @var{revision} must be
14417 either a branch, or a revision on the main trunk that
14418 is higher than any existing revision number
14419 (@pxref{Atribuindo revisões}).  You
14420 cannot commit to a specific revision on a branch.
14421 @c FIXME: Need xref for branch case.
14422 @end table
14423
14424 @code{commit} also supports these options:
14425
14426 @table @code
14427 @item -F @var{file}
14428 Read the log message from @var{file}, instead
14429 of invoking an editor.
14430
14431 @c <en>@item -f
14432 @item -f
14433 @c <en>Note that this is not the standard behavior of
14434 @c <en>the @samp{-f} option as defined in @ref{Common options}.
14435 Note that this is not the standard behavior of
14436 the @samp{-f} option as defined in @ref{Opções comuns}.
14437
14438 Force @sc{cvs} to commit a new revision even if you haven't
14439 made any changes to the file.  If the current revision
14440 of @var{file} is 1.7, then the following two commands
14441 are equivalent:
14442
14443 @example
14444 $ cvs commit -f @var{file}
14445 $ cvs commit -r 1.8 @var{file}
14446 @end example
14447
14448 @c This is odd, but it's how CVS has worked for some
14449 @c time.
14450 The @samp{-f} option disables recursion (i.e., it
14451 implies @samp{-l}).  To force @sc{cvs} to commit a new
14452 revision for all files in all subdirectories, you must
14453 use @samp{-f -R}.
14454
14455 @item -m @var{message}
14456 Use @var{message} as the log message, instead of
14457 invoking an editor.
14458 @end table
14459
14460 @need 2000
14461 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14462 @node commit examples
14463 @appendixsubsec commit examples
14464
14465 @c FIXME: this material wants to be somewhere
14466 @c in "Branching and merging".
14467
14468 @appendixsubsubsec Committing to a branch
14469
14470 @c <en>You can commit to a branch revision (one that has an
14471 @c <en>even number of dots) with the @samp{-r} option.  To
14472 @c <en>create a branch revision, use the @samp{-b} option
14473 @c <en>of the @code{rtag} or @code{tag} commands
14474 @c <en>(@pxref{Branching and merging}).  Then, either @code{checkout} or
14475 @c <en>@code{update} can be used to base your sources on the
14476 @c <en>newly created branch.  From that point on, all
14477 @c <en>@code{commit} changes made within these working sources
14478 @c <en>will be automatically added to a branch revision,
14479 @c <en>thereby not disturbing main-line development in any
14480 @c <en>way.  For example, if you had to create a patch to the
14481 @c <en>1.2 version of the product, even though the 2.0 version
14482 @c <en>is already under development, you might do:
14483 You can commit to a branch revision (one that has an
14484 even number of dots) with the @samp{-r} option.  To
14485 create a branch revision, use the @samp{-b} option
14486 of the @code{rtag} or @code{tag} commands
14487 (@pxref{Ramificando e mesclando}).  Then, either @code{checkout} or
14488 @code{update} can be used to base your sources on the
14489 newly created branch.  From that point on, all
14490 @code{commit} changes made within these working sources
14491 will be automatically added to a branch revision,
14492 thereby not disturbing main-line development in any
14493 way.  For example, if you had to create a patch to the
14494 1.2 version of the product, even though the 2.0 version
14495 is already under development, you might do:
14496
14497 @example
14498 $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
14499 $ cvs checkout -r FCS1_2_Patch product_module
14500 $ cd product_module
14501 [[ hack away ]]
14502 $ cvs commit
14503 @end example
14504
14505 @noindent
14506 This works automatically since the @samp{-r} option is
14507 sticky.
14508
14509 @appendixsubsubsec Creating the branch after editing
14510
14511 Say you have been working on some extremely
14512 experimental software, based on whatever revision you
14513 happened to checkout last week.  If others in your
14514 group would like to work on this software with you, but
14515 without disturbing main-line development, you could
14516 commit your change to a new branch.  Others can then
14517 checkout your experimental stuff and utilize the full
14518 benefit of @sc{cvs} conflict resolution.  The scenario might
14519 look like:
14520
14521 @c FIXME: Should we be recommending tagging the branchpoint?
14522 @example
14523 [[ hacked sources are present ]]
14524 $ cvs tag -b EXPR1
14525 $ cvs update -r EXPR1
14526 $ cvs commit
14527 @end example
14528
14529 The @code{update} command will make the @samp{-r
14530 EXPR1} option sticky on all files.  Note that your
14531 changes to the files will never be removed by the
14532 @code{update} command.  The @code{commit} will
14533 automatically commit to the correct branch, because the
14534 @samp{-r} is sticky.  You could also do like this:
14535
14536 @c FIXME: Should we be recommending tagging the branchpoint?
14537 @example
14538 [[ hacked sources are present ]]
14539 $ cvs tag -b EXPR1
14540 $ cvs commit -r EXPR1
14541 @end example
14542
14543 @noindent
14544 but then, only those files that were changed by you
14545 will have the @samp{-r EXPR1} sticky flag.  If you hack
14546 away, and commit without specifying the @samp{-r EXPR1}
14547 flag, some files may accidentally end up on the main
14548 trunk.
14549
14550 To work with you on the experimental change, others
14551 would simply do
14552
14553 @example
14554 $ cvs checkout -r EXPR1 whatever_module
14555 @end example
14556
14557 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
14558 @node diff
14559 @appendixsec diff---Show differences between revisions
14560 @cindex diff (subcommand)
14561
14562 @itemize @bullet
14563 @item
14564 Synopsis: diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D date1] [-r rev2 |  -D date2]] [files@dots{}]
14565 @item
14566 Requires: working directory, repository.
14567 @item
14568 Changes: nothing.
14569 @end itemize
14570
14571 The @code{diff} command is used to compare different
14572 revisions of files.  The default action is to compare
14573 your working files with the revisions they were based
14574 on, and report any differences that are found.
14575
14576 If any file names are given, only those files are
14577 compared.  If any directories are given, all files
14578 under them will be compared.
14579
14580 @c <en>The exit status for diff is different than for other
14581 @c <en>@sc{cvs} commands; for details @ref{Exit status}.
14582 The exit status for diff is different than for other
14583 @sc{cvs} commands; for details @ref{Estados de saída}.
14584
14585 @menu
14586 * diff options::                diff options
14587 * diff examples::               diff examples
14588 @end menu
14589
14590 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14591 @node diff options
14592 @appendixsubsec diff options
14593
14594 @c <en>These standard options are supported by @code{diff}
14595 @c <en>(@pxref{Common options}, for a complete description of
14596 @c <en>them):
14597 These standard options are supported by @code{diff}
14598 (@pxref{Opções comuns}, for a complete description of
14599 them):
14600
14601 @table @code
14602 @item -D @var{date}
14603 Use the most recent revision no later than @var{date}.
14604 See @samp{-r} for how this affects the comparison.
14605
14606 @c <en>@item -k @var{kflag}
14607 @item -k @var{kflag}
14608 @c <en>Process keywords according to @var{kflag}.  See
14609 @c <en>@ref{Keyword substitution}.
14610 Process keywords according to @var{kflag}.  See
14611 @ref{Substituição de palavra-chave}.
14612
14613 @item -l
14614 Local; run only in current working directory.
14615
14616 @item -R
14617 Examine directories recursively.  This option is on by
14618 default.
14619
14620 @item -r @var{tag}
14621 Compare with revision @var{tag}.  Zero, one or two
14622 @samp{-r} options can be present.  With no @samp{-r}
14623 option, the working file will be compared with the
14624 revision it was based on.  With one @samp{-r}, that
14625 revision will be compared to your current working file.
14626 With two @samp{-r} options those two revisions will be
14627 compared (and your working file will not affect the
14628 outcome in any way).
14629 @c We should be a lot more explicit, with examples,
14630 @c about the difference between "cvs diff" and "cvs
14631 @c diff -r HEAD".  This often confuses new users.
14632
14633 One or both @samp{-r} options can be replaced by a
14634 @samp{-D @var{date}} option, described above.
14635 @end table
14636
14637 @c Conceptually, this is a disaster.  There are 3
14638 @c zillion diff formats that we support via the diff
14639 @c library.  It is not obvious to me that we should
14640 @c document them all.  Maybe just the most common ones
14641 @c like -c and -u, and think about phasing out the
14642 @c obscure ones.
14643 @c FIXCVS: also should be a way to specify an external
14644 @c diff program (which can be different for different
14645 @c file types) and pass through
14646 @c arbitrary options, so that the user can do
14647 @c "--pass=-Z --pass=foo" or something even if CVS
14648 @c doesn't know about the "-Z foo" option to diff.
14649 @c This would fit nicely with deprecating/eliminating
14650 @c the obscure options of the diff library, because it
14651 @c would let people specify an external GNU diff if
14652 @c they are into that sort of thing.
14653 The following options specify the format of the
14654 output.  They have the same meaning as in GNU diff.
14655 Most options have two equivalent names, one of which is a single letter
14656 preceded by @samp{-}, and the other of which is a long name preceded by
14657 @samp{--}.
14658
14659 @table @samp
14660 @item -@var{lines}
14661 Show @var{lines} (an integer) lines of context.  This option does not
14662 specify an output format by itself; it has no effect unless it is
14663 combined with @samp{-c} or @samp{-u}.  This option is obsolete.  For proper
14664 operation, @code{patch} typically needs at least two lines of context.
14665
14666 @item -a
14667 Treat all files as text and compare them line-by-line, even if they
14668 do not seem to be text.
14669
14670 @item -b
14671 Ignore trailing white space and consider all other sequences of one or
14672 more white space characters to be equivalent.
14673
14674 @item -B
14675 Ignore changes that just insert or delete blank lines.
14676
14677 @item --binary
14678 Read and write data in binary mode.
14679
14680 @item --brief
14681 Report only whether the files differ, not the details of the
14682 differences.
14683
14684 @item -c
14685 Use the context output format.
14686
14687 @item -C @var{lines}
14688 @itemx --context@r{[}=@var{lines}@r{]}
14689 Use the context output format, showing @var{lines} (an integer) lines of
14690 context, or three if @var{lines} is not given.
14691 For proper operation, @code{patch} typically needs at least two lines of
14692 context.
14693
14694 @item --changed-group-format=@var{format}
14695 Use @var{format} to output a line group containing differing lines from
14696 both files in if-then-else format.  @xref{Line group formats}.
14697
14698 @item -d
14699 Change the algorithm to perhaps find a smaller set of changes.  This makes
14700 @code{diff} slower (sometimes much slower).
14701
14702 @item -e
14703 @itemx --ed
14704 Make output that is a valid @code{ed} script.
14705
14706 @item --expand-tabs
14707 Expand tabs to spaces in the output, to preserve the alignment of tabs
14708 in the input files.
14709
14710 @item -f
14711 Make output that looks vaguely like an @code{ed} script but has changes
14712 in the order they appear in the file.
14713
14714 @item -F @var{regexp}
14715 In context and unified format, for each hunk of differences, show some
14716 of the last preceding line that matches @var{regexp}.
14717
14718 @item --forward-ed
14719 Make output that looks vaguely like an @code{ed} script but has changes
14720 in the order they appear in the file.
14721
14722 @item -H
14723 Use heuristics to speed handling of large files that have numerous
14724 scattered small changes.
14725
14726 @item --horizon-lines=@var{lines}
14727 Do not discard the last @var{lines} lines of the common prefix
14728 and the first @var{lines} lines of the common suffix.
14729
14730 @item -i
14731 Ignore changes in case; consider upper- and lower-case letters
14732 equivalent.
14733
14734 @item -I @var{regexp}
14735 Ignore changes that just insert or delete lines that match @var{regexp}.
14736
14737 @item --ifdef=@var{name}
14738 Make merged if-then-else output using @var{name}.
14739
14740 @item --ignore-all-space
14741 Ignore white space when comparing lines.
14742
14743 @item --ignore-blank-lines
14744 Ignore changes that just insert or delete blank lines.
14745
14746 @item --ignore-case
14747 Ignore changes in case; consider upper- and lower-case to be the same.
14748
14749 @item --ignore-matching-lines=@var{regexp}
14750 Ignore changes that just insert or delete lines that match @var{regexp}.
14751
14752 @item --ignore-space-change
14753 Ignore trailing white space and consider all other sequences of one or
14754 more white space characters to be equivalent.
14755
14756 @item --initial-tab
14757 Output a tab rather than a space before the text of a line in normal or
14758 context format.  This causes the alignment of tabs in the line to look
14759 normal.
14760
14761 @item -L @var{label}
14762 Use @var{label} instead of the file name in the context format
14763 and unified format headers.
14764
14765 @item --label=@var{label}
14766 Use @var{label} instead of the file name in the context format
14767 and unified format headers.
14768
14769 @item --left-column
14770 Print only the left column of two common lines in side by side format.
14771
14772 @item --line-format=@var{format}
14773 Use @var{format} to output all input lines in if-then-else format.
14774 @xref{Line formats}.
14775
14776 @item --minimal
14777 Change the algorithm to perhaps find a smaller set of changes.  This
14778 makes @code{diff} slower (sometimes much slower).
14779
14780 @item -n
14781 Output RCS-format diffs; like @samp{-f} except that each command
14782 specifies the number of lines affected.
14783
14784 @item -N
14785 @itemx --new-file
14786 In directory comparison, if a file is found in only one directory,
14787 treat it as present but empty in the other directory.
14788
14789 @item --new-group-format=@var{format}
14790 Use @var{format} to output a group of lines taken from just the second
14791 file in if-then-else format.  @xref{Line group formats}.
14792
14793 @item --new-line-format=@var{format}
14794 Use @var{format} to output a line taken from just the second file in
14795 if-then-else format.  @xref{Line formats}.
14796
14797 @item --old-group-format=@var{format}
14798 Use @var{format} to output a group of lines taken from just the first
14799 file in if-then-else format.  @xref{Line group formats}.
14800
14801 @item --old-line-format=@var{format}
14802 Use @var{format} to output a line taken from just the first file in
14803 if-then-else format.  @xref{Line formats}.
14804
14805 @item -p
14806 Show which C function each change is in.
14807
14808 @item --rcs
14809 Output RCS-format diffs; like @samp{-f} except that each command
14810 specifies the number of lines affected.
14811
14812 @item --report-identical-files
14813 @itemx -s
14814 Report when two files are the same.
14815
14816 @item --show-c-function
14817 Show which C function each change is in.
14818
14819 @item --show-function-line=@var{regexp}
14820 In context and unified format, for each hunk of differences, show some
14821 of the last preceding line that matches @var{regexp}.
14822
14823 @item --side-by-side
14824 Use the side by side output format.
14825
14826 @item --speed-large-files
14827 Use heuristics to speed handling of large files that have numerous
14828 scattered small changes.
14829
14830 @item --suppress-common-lines
14831 Do not print common lines in side by side format.
14832
14833 @item -t
14834 Expand tabs to spaces in the output, to preserve the alignment of tabs
14835 in the input files.
14836
14837 @item -T
14838 Output a tab rather than a space before the text of a line in normal or
14839 context format.  This causes the alignment of tabs in the line to look
14840 normal.
14841
14842 @item --text
14843 Treat all files as text and compare them line-by-line, even if they
14844 do not appear to be text.
14845
14846 @item -u
14847 Use the unified output format.
14848
14849 @item --unchanged-group-format=@var{format}
14850 Use @var{format} to output a group of common lines taken from both files
14851 in if-then-else format.  @xref{Line group formats}.
14852
14853 @item --unchanged-line-format=@var{format}
14854 Use @var{format} to output a line common to both files in if-then-else
14855 format.  @xref{Line formats}.
14856
14857 @item -U @var{lines}
14858 @itemx --unified@r{[}=@var{lines}@r{]}
14859 Use the unified output format, showing @var{lines} (an integer) lines of
14860 context, or three if @var{lines} is not given.
14861 For proper operation, @code{patch} typically needs at least two lines of
14862 context.
14863
14864 @item -w
14865 Ignore white space when comparing lines.
14866
14867 @item -W @var{columns}
14868 @itemx --width=@var{columns}
14869 Use an output width of @var{columns} in side by side format.
14870
14871 @item -y
14872 Use the side by side output format.
14873 @end table
14874
14875 @menu
14876 * Line group formats::          Line group formats
14877 * Line formats::                Line formats
14878 @end menu
14879
14880 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14881 @node Line group formats
14882 @appendixsubsubsec Line group formats
14883
14884 Line group formats let you specify formats suitable for many
14885 applications that allow if-then-else input, including programming
14886 languages and text formatting languages.  A line group format specifies
14887 the output format for a contiguous group of similar lines.
14888
14889 For example, the following command compares the TeX file @file{myfile}
14890 with the original version from the repository,
14891 and outputs a merged file in which old regions are
14892 surrounded by @samp{\begin@{em@}}-@samp{\end@{em@}} lines, and new
14893 regions are surrounded by @samp{\begin@{bf@}}-@samp{\end@{bf@}} lines.
14894
14895 @example
14896 cvs diff \
14897    --old-group-format='\begin@{em@}
14898 %<\end@{em@}
14899 ' \
14900    --new-group-format='\begin@{bf@}
14901 %>\end@{bf@}
14902 ' \
14903    myfile
14904 @end example
14905
14906 The following command is equivalent to the above example, but it is a
14907 little more verbose, because it spells out the default line group formats.
14908
14909 @example
14910 cvs diff \
14911    --old-group-format='\begin@{em@}
14912 %<\end@{em@}
14913 ' \
14914    --new-group-format='\begin@{bf@}
14915 %>\end@{bf@}
14916 ' \
14917    --unchanged-group-format='%=' \
14918    --changed-group-format='\begin@{em@}
14919 %<\end@{em@}
14920 \begin@{bf@}
14921 %>\end@{bf@}
14922 ' \
14923    myfile
14924 @end example
14925
14926 Here is a more advanced example, which outputs a diff listing with
14927 headers containing line numbers in a ``plain English'' style.
14928
14929 @example
14930 cvs diff \
14931    --unchanged-group-format='' \
14932    --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
14933 %<' \
14934    --new-group-format='-------- %dN line%(N=1?:s) added after %de:
14935 %>' \
14936    --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
14937 %<-------- to:
14938 %>' \
14939    myfile
14940 @end example
14941
14942 To specify a line group format, use one of the options
14943 listed below.  You can specify up to four line group formats, one for
14944 each kind of line group.  You should quote @var{format}, because it
14945 typically contains shell metacharacters.
14946
14947 @table @samp
14948 @item --old-group-format=@var{format}
14949 These line groups are hunks containing only lines from the first file.
14950 The default old group format is the same as the changed group format if
14951 it is specified; otherwise it is a format that outputs the line group as-is.
14952
14953 @item --new-group-format=@var{format}
14954 These line groups are hunks containing only lines from the second
14955 file.  The default new group format is same as the changed group
14956 format if it is specified; otherwise it is a format that outputs the
14957 line group as-is.
14958
14959 @item --changed-group-format=@var{format}
14960 These line groups are hunks containing lines from both files.  The
14961 default changed group format is the concatenation of the old and new
14962 group formats.
14963
14964 @item --unchanged-group-format=@var{format}
14965 These line groups contain lines common to both files.  The default
14966 unchanged group format is a format that outputs the line group as-is.
14967 @end table
14968
14969 In a line group format, ordinary characters represent themselves;
14970 conversion specifications start with @samp{%} and have one of the
14971 following forms.
14972
14973 @table @samp
14974 @item %<
14975 stands for the lines from the first file, including the trailing newline.
14976 Each line is formatted according to the old line format (@pxref{Line formats}).
14977
14978 @item %>
14979 stands for the lines from the second file, including the trailing newline.
14980 Each line is formatted according to the new line format.
14981
14982 @item %=
14983 stands for the lines common to both files, including the trailing newline.
14984 Each line is formatted according to the unchanged line format.
14985
14986 @item %%
14987 stands for @samp{%}.
14988
14989 @item %c'@var{C}'
14990 where @var{C} is a single character, stands for @var{C}.
14991 @var{C} may not be a backslash or an apostrophe.
14992 For example, @samp{%c':'} stands for a colon, even inside
14993 the then-part of an if-then-else format, which a colon would
14994 normally terminate.
14995
14996 @item %c'\@var{O}'
14997 where @var{O} is a string of 1, 2, or 3 octal digits,
14998 stands for the character with octal code @var{O}.
14999 For example, @samp{%c'\0'} stands for a null character.
15000
15001 @item @var{F}@var{n}
15002 where @var{F} is a @code{printf} conversion specification and @var{n} is one
15003 of the following letters, stands for @var{n}'s value formatted with @var{F}.
15004
15005 @table @samp
15006 @item e
15007 The line number of the line just before the group in the old file.
15008
15009 @item f
15010 The line number of the first line in the group in the old file;
15011 equals @var{e} + 1.
15012
15013 @item l
15014 The line number of the last line in the group in the old file.
15015
15016 @item m
15017 The line number of the line just after the group in the old file;
15018 equals @var{l} + 1.
15019
15020 @item n
15021 The number of lines in the group in the old file; equals @var{l} - @var{f} + 1.
15022
15023 @item E, F, L, M, N
15024 Likewise, for lines in the new file.
15025
15026 @end table
15027
15028 The @code{printf} conversion specification can be @samp{%d},
15029 @samp{%o}, @samp{%x}, or @samp{%X}, specifying decimal, octal,
15030 lower case hexadecimal, or upper case hexadecimal output
15031 respectively.  After the @samp{%} the following options can appear in
15032 sequence: a @samp{-} specifying left-justification; an integer
15033 specifying the minimum field width; and a period followed by an
15034 optional integer specifying the minimum number of digits.
15035 For example, @samp{%5dN} prints the number of new lines in the group
15036 in a field of width 5 characters, using the @code{printf} format @code{"%5d"}.
15037
15038 @item (@var{A}=@var{B}?@var{T}:@var{E})
15039 If @var{A} equals @var{B} then @var{T} else @var{E}.
15040 @var{A} and @var{B} are each either a decimal constant
15041 or a single letter interpreted as above.
15042 This format spec is equivalent to @var{T} if
15043 @var{A}'s value equals @var{B}'s; otherwise it is equivalent to @var{E}.
15044
15045 For example, @samp{%(N=0?no:%dN) line%(N=1?:s)} is equivalent to
15046 @samp{no lines} if @var{N} (the number of lines in the group in the
15047 new file) is 0, to @samp{1 line} if @var{N} is 1, and to @samp{%dN lines}
15048 otherwise.
15049 @end table
15050
15051 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15052 @node Line formats
15053 @appendixsubsubsec Line formats
15054
15055 Line formats control how each line taken from an input file is
15056 output as part of a line group in if-then-else format.
15057
15058 For example, the following command outputs text with a one-column
15059 change indicator to the left of the text.  The first column of output
15060 is @samp{-} for deleted lines, @samp{|} for added lines, and a space
15061 for unchanged lines.  The formats contain newline characters where
15062 newlines are desired on output.
15063
15064 @example
15065 cvs diff \
15066    --old-line-format='-%l
15067 ' \
15068    --new-line-format='|%l
15069 ' \
15070    --unchanged-line-format=' %l
15071 ' \
15072    myfile
15073 @end example
15074
15075 To specify a line format, use one of the following options.  You should
15076 quote @var{format}, since it often contains shell metacharacters.
15077
15078 @table @samp
15079 @item --old-line-format=@var{format}
15080 formats lines just from the first file.
15081
15082 @item --new-line-format=@var{format}
15083 formats lines just from the second file.
15084
15085 @item --unchanged-line-format=@var{format}
15086 formats lines common to both files.
15087
15088 @item --line-format=@var{format}
15089 formats all lines; in effect, it sets all three above options simultaneously.
15090 @end table
15091
15092 In a line format, ordinary characters represent themselves;
15093 conversion specifications start with @samp{%} and have one of the
15094 following forms.
15095
15096 @table @samp
15097 @item %l
15098 stands for the contents of the line, not counting its trailing
15099 newline (if any).  This format ignores whether the line is incomplete.
15100
15101 @item %L
15102 stands for the contents of the line, including its trailing newline
15103 (if any).  If a line is incomplete, this format preserves its
15104 incompleteness.
15105
15106 @item %%
15107 stands for @samp{%}.
15108
15109 @item %c'@var{C}'
15110 where @var{C} is a single character, stands for @var{C}.
15111 @var{C} may not be a backslash or an apostrophe.
15112 For example, @samp{%c':'} stands for a colon.
15113
15114 @item %c'\@var{O}'
15115 where @var{O} is a string of 1, 2, or 3 octal digits,
15116 stands for the character with octal code @var{O}.
15117 For example, @samp{%c'\0'} stands for a null character.
15118
15119 @item @var{F}n
15120 where @var{F} is a @code{printf} conversion specification,
15121 stands for the line number formatted with @var{F}.
15122 For example, @samp{%.5dn} prints the line number using the
15123 @code{printf} format @code{"%.5d"}.  @xref{Line group formats}, for
15124 more about printf conversion specifications.
15125
15126 @end table
15127
15128 The default line format is @samp{%l} followed by a newline character.
15129
15130 If the input contains tab characters and it is important that they line
15131 up on output, you should ensure that @samp{%l} or @samp{%L} in a line
15132 format is just after a tab stop (e.g.@: by preceding @samp{%l} or
15133 @samp{%L} with a tab character), or you should use the @samp{-t} or
15134 @samp{--expand-tabs} option.
15135
15136 Taken together, the line and line group formats let you specify many
15137 different formats.  For example, the following command uses a format
15138 similar to @code{diff}'s normal format.  You can tailor this command
15139 to get fine control over @code{diff}'s output.
15140
15141 @example
15142 cvs diff \
15143    --old-line-format='< %l
15144 ' \
15145    --new-line-format='> %l
15146 ' \
15147    --old-group-format='%df%(f=l?:,%dl)d%dE
15148 %<' \
15149    --new-group-format='%dea%dF%(F=L?:,%dL)
15150 %>' \
15151    --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
15152 %<---
15153 %>' \
15154    --unchanged-group-format='' \
15155    myfile
15156 @end example
15157
15158 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15159 @node diff examples
15160 @appendixsubsec diff examples
15161
15162 The following line produces a Unidiff (@samp{-u} flag)
15163 between revision 1.14 and 1.19 of
15164 @file{backend.c}.  Due to the @samp{-kk} flag no
15165 keywords are substituted, so differences that only depend
15166 on keyword substitution are ignored.
15167
15168 @example
15169 $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
15170 @end example
15171
15172 Suppose the experimental branch EXPR1 was based on a
15173 set of files tagged RELEASE_1_0.  To see what has
15174 happened on that branch, the following can be used:
15175
15176 @example
15177 $ cvs diff -r RELEASE_1_0 -r EXPR1
15178 @end example
15179
15180 A command like this can be used to produce a context
15181 diff between two releases:
15182
15183 @example
15184 $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
15185 @end example
15186
15187 If you are maintaining ChangeLogs, a command like the following
15188 just before you commit your changes may help you write
15189 the ChangeLog entry.  All local modifications that have
15190 not yet been committed will be printed.
15191
15192 @example
15193 $ cvs diff -u | less
15194 @end example
15195
15196 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
15197 @node export
15198 @appendixsec export---Export sources from CVS, similar to checkout
15199 @cindex export (subcommand)
15200
15201 @itemize @bullet
15202 @item
15203 Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir] module@dots{}
15204 @item
15205 Requires: repository.
15206 @item
15207 Changes: current directory.
15208 @end itemize
15209
15210 This command is a variant of @code{checkout}; use it
15211 when you want a copy of the source for module without
15212 the @sc{cvs} administrative directories.  For example, you
15213 might use @code{export} to prepare source for shipment
15214 off-site.  This command requires that you specify a
15215 date or tag (with @samp{-D} or @samp{-r}), so that you
15216 can count on reproducing the source you ship to others
15217 (and thus it always prunes empty directories).
15218
15219 One often would like to use @samp{-kv} with @code{cvs
15220 export}.  This causes any keywords to be
15221 expanded such that an import done at some other site
15222 will not lose the keyword revision information.  But be
15223 aware that doesn't handle an export containing binary
15224 files correctly.  Also be aware that after having used
15225 @samp{-kv}, one can no longer use the @code{ident}
15226 command (which is part of the @sc{rcs} suite---see
15227 ident(1)) which looks for keyword strings.  If
15228 you want to be able to use @code{ident} you must not
15229 use @samp{-kv}.
15230
15231 @menu
15232 * export options::              export options
15233 @end menu
15234
15235 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15236 @node export options
15237 @appendixsubsec export options
15238
15239 @c <en>These standard options are supported by @code{export}
15240 @c <en>(@pxref{Common options}, for a complete description of
15241 @c <en>them):
15242 These standard options are supported by @code{export}
15243 (@pxref{Opções comuns}, for a complete description of
15244 them):
15245
15246 @table @code
15247 @item -D @var{date}
15248 Use the most recent revision no later than @var{date}.
15249
15250 @item -f
15251 If no matching revision is found, retrieve the most
15252 recent revision (instead of ignoring the file).
15253
15254 @item -l
15255 Local; run only in current working directory.
15256
15257 @item -n
15258 Do not run any checkout program.
15259
15260 @item -R
15261 Export directories recursively.  This is on by default.
15262
15263 @item -r @var{tag}
15264 Use revision @var{tag}.
15265 @end table
15266
15267 In addition, these options (that are common to
15268 @code{checkout} and @code{export}) are also supported:
15269
15270 @table @code
15271 @item -d @var{dir}
15272 Create a directory called @var{dir} for the working
15273 files, instead of using the module name.
15274 @xref{checkout options}, for complete details on how
15275 @sc{cvs} handles this flag.
15276
15277 @c <en>@item -k @var{subst}
15278 @item -k @var{subst}
15279 @c <en>Set keyword expansion mode (@pxref{Substitution modes}).
15280 Set keyword expansion mode (@pxref{Modos de substituição}).
15281
15282 @item -N
15283 Only useful together with @samp{-d @var{dir}}.
15284 @xref{checkout options}, for complete details on how
15285 @sc{cvs} handles this flag.
15286 @end table
15287
15288 @ignore
15289 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15290 @c @node export examples
15291 @appendixsubsec export examples
15292
15293 Contributed examples are gratefully accepted.
15294 @c -- Examples here!!
15295 @end ignore
15296
15297 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
15298 @node history
15299 @appendixsec history---Show status of files and users
15300 @cindex history (subcommand)
15301
15302 @itemize @bullet
15303 @item
15304 Synopsis:     history [-report] [-flags] [-options args] [files@dots{}]
15305 @item
15306 Requires: the file @file{$CVSROOT/CVSROOT/history}
15307 @item
15308 Changes: nothing.
15309 @end itemize
15310
15311 @sc{cvs} can keep a history file that tracks each use of the
15312 @code{checkout}, @code{commit}, @code{rtag},
15313 @code{update}, and @code{release} commands.  You can
15314 use @code{history} to display this information in
15315 various formats.
15316
15317 Logging must be enabled by creating the file
15318 @file{$CVSROOT/CVSROOT/history}.
15319
15320 @c <en>@strong{Note: @code{history} uses @samp{-f}, @samp{-l},
15321 @c <en>@samp{-n}, and @samp{-p} in ways that conflict with the
15322 @c <en>normal use inside @sc{cvs} (@pxref{Common options}).}
15323 @strong{Note: @code{history} uses @samp{-f}, @samp{-l},
15324 @samp{-n}, and @samp{-p} in ways that conflict with the
15325 normal use inside @sc{cvs} (@pxref{Opções comuns}).}
15326
15327 @menu
15328 * history options::             history options
15329 @end menu
15330
15331 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15332 @node history options
15333 @appendixsubsec history options
15334
15335 Several options (shown above as @samp{-report})  control  what
15336 kind of report is generated:
15337
15338 @table @code
15339 @item -c
15340 Report on each time commit was used (i.e., each time
15341 the repository was modified).
15342
15343 @item -e
15344 Everything (all record types).  Equivalent to
15345 specifying @samp{-x} with all record types.  Of course,
15346 @samp{-e} will also include record types which are
15347 added in a future version of @sc{cvs}; if you are
15348 writing a script which can only handle certain record
15349 types, you'll want to specify @samp{-x}.
15350
15351 @item -m @var{module}
15352 Report on a particular module.  (You can meaningfully
15353 use @samp{-m} more than once on the command line.)
15354
15355 @item -o
15356 Report on checked-out modules.  This is the default report type.
15357
15358 @item -T
15359 Report on all tags.
15360
15361 @item -x @var{type}
15362 Extract a particular set of record types @var{type} from the @sc{cvs}
15363 history.  The types are indicated by single letters,
15364 which you may specify in combination.
15365
15366 Certain commands have a single record type:
15367
15368 @table @code
15369 @item F
15370 release
15371 @item O
15372 checkout
15373 @item E
15374 export
15375 @item T
15376 rtag
15377 @end table
15378
15379 @noindent
15380 One of five record types may result from an update:
15381
15382 @table @code
15383 @item C
15384 A merge was necessary but collisions were
15385 detected (requiring manual merging).
15386 @item G
15387 A merge was necessary and it succeeded.
15388 @item U
15389 A working file was copied from the repository.
15390 @item P
15391 A working file was patched to match the repository.
15392 @item W
15393 The working copy of a file was deleted during
15394 update (because it was gone from the repository).
15395 @end table
15396
15397 @noindent
15398 One of three record types results from commit:
15399
15400 @table @code
15401 @item A
15402 A file was added for the first time.
15403 @item M
15404 A file was modified.
15405 @item R
15406 A file was removed.
15407 @end table
15408 @end table
15409
15410 The options shown as @samp{-flags} constrain or expand
15411 the report without requiring option arguments:
15412
15413 @table @code
15414 @item -a
15415 Show data for all users (the default is to show data
15416 only for the user executing @code{history}).
15417
15418 @item -l
15419 Show last modification only.
15420
15421 @item -w
15422 Show only the records for modifications done from the
15423 same working directory where @code{history} is
15424 executing.
15425 @end table
15426
15427 The options shown as @samp{-options @var{args}} constrain the report
15428 based on an argument:
15429
15430 @table @code
15431 @item -b @var{str}
15432 Show data back to a record containing  the  string
15433 @var{str}  in  either the module name, the file name, or
15434 the repository path.
15435
15436 @item -D @var{date}
15437 Show data since @var{date}.  This is slightly different
15438 from the normal use of @samp{-D @var{date}}, which
15439 selects the newest revision older than @var{date}.
15440
15441 @item -f @var{file}
15442 Show data for a particular file
15443 (you can specify several @samp{-f} options on the same command line).
15444 This is equivalent to specifying the file on the command line.
15445
15446 @item -n @var{module}
15447 Show data for a particular module
15448 (you can specify several @samp{-n} options on the same command line).
15449
15450 @item -p @var{repository}
15451 Show data for a particular source repository  (you
15452 can specify several @samp{-p} options on the same command
15453 line).
15454
15455 @item -r @var{rev}
15456 Show records referring to revisions since the revision
15457 or tag named @var{rev} appears in individual @sc{rcs}
15458 files.  Each @sc{rcs} file is searched for the revision or
15459 tag.
15460
15461 @item -t @var{tag}
15462 Show records since tag @var{tag} was last added to the
15463 history file.  This differs from the @samp{-r} flag
15464 above in that it reads only the history file, not the
15465 @sc{rcs} files, and is much faster.
15466
15467 @item -u @var{name}
15468 Show records for user @var{name}.
15469
15470 @item -z @var{timezone}
15471 Show times in the selected records using the specified
15472 time zone instead of UTC.
15473 @end table
15474
15475 @ignore
15476 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15477 @c @node history examples
15478 @appendixsubsec history examples
15479
15480 Contributed examples will gratefully be accepted.
15481 @c -- Examples here!
15482 @end ignore
15483
15484 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
15485 @node import
15486 @appendixsec import---Import sources into CVS, using vendor branches
15487 @cindex import (subcommand)
15488
15489 @c FIXME: This node is way too long for one which has subnodes.
15490
15491 @itemize @bullet
15492 @item
15493 Synopsis: import [-options] repository vendortag releasetag@dots{}
15494 @item
15495 Requires: Repository, source distribution directory.
15496 @item
15497 Changes: repository.
15498 @end itemize
15499
15500 Use @code{import} to incorporate an entire source
15501 distribution from an outside source (e.g., a source
15502 vendor) into your source repository directory.  You can
15503 use this command both for initial creation of a
15504 repository, and for wholesale updates to the module
15505 from the outside source.  @xref{Acompanhando fontes}, for
15506 a discussion on this subject.
15507
15508 The @var{repository} argument gives a directory name
15509 (or a path to a directory) under the @sc{cvs} root directory
15510 for repositories; if the directory did not exist,
15511 import creates it.
15512
15513 When you use import for updates to source that has been
15514 modified in your source repository (since a prior
15515 import), it will notify you of any files that conflict
15516 in the two branches of development; use @samp{checkout
15517 -j} to reconcile the differences, as import instructs
15518 you to do.
15519
15520 If @sc{cvs} decides a file should be ignored
15521 (@pxref{cvsignore}), it does not import it and prints
15522 @samp{I } followed by the filename (@pxref{import output}, for a
15523 complete description of the output).
15524
15525 If the file @file{$CVSROOT/CVSROOT/cvswrappers} exists,
15526 any file whose names match the specifications in that
15527 file will be treated as packages and the appropriate
15528 filtering will be performed on the file/directory
15529 before being imported.  @xref{Wrappers}.
15530
15531 The outside source is saved in a first-level
15532 branch, by default 1.1.1.  Updates are leaves of this
15533 branch; for example, files from the first imported
15534 collection of source will be revision 1.1.1.1, then
15535 files from the first imported update will be revision
15536 1.1.1.2, and so on.
15537
15538 At least three arguments are required.
15539 @var{repository} is needed to identify the collection
15540 of source.  @var{vendortag} is a tag for the entire
15541 branch (e.g., for 1.1.1).  You must also specify at
15542 least one @var{releasetag} to identify the files at
15543 the leaves created each time you execute @code{import}.
15544
15545 @c I'm not completely sure this belongs here.  But
15546 @c we need to say it _somewhere_ reasonably obvious; it
15547 @c is a common misconception among people first learning CVS
15548 @c <en>Note that @code{import} does @emph{not} change the
15549 @c <en>directory in which you invoke it.  In particular, it
15550 @c <en>does not set up that directory as a @sc{cvs} working
15551 @c <en>directory; if you want to work with the sources import
15552 @c <en>them first and then check them out into a different
15553 @c <en>directory (@pxref{Getting the source}).
15554 Note that @code{import} does @emph{not} change the
15555 directory in which you invoke it.  In particular, it
15556 does not set up that directory as a @sc{cvs} working
15557 directory; if you want to work with the sources import
15558 them first and then check them out into a different
15559 directory (@pxref{Obtendo os fontes}).
15560
15561 @menu
15562 * import options::              import options
15563 * import output::               import output
15564 * import examples::             import examples
15565 @end menu
15566
15567 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15568 @node import options
15569 @appendixsubsec import options
15570
15571 @c <en>This standard option is supported by @code{import}
15572 @c <en>(@pxref{Common options}, for a complete description):
15573 This standard option is supported by @code{import}
15574 (@pxref{Opções comuns}, for a complete description):
15575
15576 @table @code
15577 @item -m @var{message}
15578 Use @var{message} as log information, instead of
15579 invoking an editor.
15580 @end table
15581
15582 There are the following additional special options.
15583
15584 @table @code
15585 @c <en>@item -b @var{branch}
15586 @item -b @var{branch}
15587 @c <en>See @ref{Multiple vendor branches}.
15588 See @ref{Ramos de fornecedor múltiplos}.
15589
15590 @c <en>@item -k @var{subst}
15591 @item -k @var{subst}
15592 @c <en>Indicate the keyword expansion mode desired.  This
15593 @c <en>setting will apply to all files created during the
15594 @c <en>import, but not to any files that previously existed in
15595 @c <en>the repository.  See @ref{Substitution modes}, for a
15596 @c <en>list of valid @samp{-k} settings.
15597 Indicate the keyword expansion mode desired.  This
15598 setting will apply to all files created during the
15599 import, but not to any files that previously existed in
15600 the repository.  See @ref{Modos de substituição}, for a
15601 list of valid @samp{-k} settings.
15602
15603 @item -I @var{name}
15604 Specify file names that should be ignored during
15605 import.  You can use this option repeatedly.  To avoid
15606 ignoring any files at all (even those ignored by
15607 default), specify `-I !'.
15608
15609 @var{name} can be a file name pattern of the same type
15610 that you can specify in the @file{.cvsignore} file.
15611 @xref{cvsignore}.
15612 @c -- Is this really true?
15613
15614 @item -W @var{spec}
15615 Specify file names that should be filtered during
15616 import.  You can use this option repeatedly.
15617
15618 @var{spec} can be a file name pattern of the same type
15619 that you can specify in the @file{.cvswrappers}
15620 file. @xref{Wrappers}.
15621 @end table
15622
15623 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15624 @node import output
15625 @appendixsubsec import output
15626
15627 @c <en>@code{import} keeps you informed of its progress by printing a line
15628 @c <en>for each file, preceded by one character indicating the status of the file:
15629 O @code{import} mantém você informado de seu progresso
15630 escrevendo uma linha para cada arquivo, iniciando com
15631 um caractere que indica o status do arquivo:
15632
15633 @table @code
15634 @c <en>@item U @var{file}
15635 @item U @var{arquivo}
15636 @c <en>The file already exists in the repository and has not been locally
15637 @c <en>modified; a new revision has been created (if necessary).
15638 O arquivo já existe no repositório não foi modificado
15639 localmente; uma nova revisão foi criada (se necessário).
15640
15641 @c <en>@item N @var{file}
15642 @item N @var{arquivo}
15643 @c <en>The file is a new file which has been added to the repository.
15644 O arquivo é um arquivo novo que foi adicionado ao repositório.
15645
15646 @c <en>@item C @var{file}
15647 @item C @var{arquivo}
15648 @c <en>The file already exists in the repository but has been locally modified;
15649 @c <en>you will have to merge the changes.
15650 O arquivo já existe no repositório mas foi modificado
15651 localmente; Você vai ter que mesclar as mudanças.
15652
15653 @c <en>@item I @var{file}
15654 @item I @var{arquivo}
15655 @c <en>The file is being ignored (@pxref{cvsignore}).
15656 O arquivo foi ignorado (@pxref{cvsignore}).
15657
15658 @c <en>@cindex Symbolic link, importing
15659 @cindex Ligações simbólicas, importando
15660 @c <en>@cindex Link, symbolic, importing
15661 @cindex Simbólica, ligação, importando
15662 @c FIXME: also (somewhere else) probably
15663 @c should be documenting what happens if you "cvs add"
15664 @c a symbolic link.  Also maybe what happens if
15665 @c you manually create symbolic links within the
15666 @c repository (? - not sure why we'd want to suggest
15667 @c doing that).
15668 @c <en>@item L @var{file}
15669 @item L @var{arquivo}
15670 @c <en>The file is a symbolic link; @code{cvs import} ignores symbolic links.
15671 @c <en>People periodically suggest that this behavior should
15672 @c <en>be changed, but if there is a consensus on what it
15673 @c <en>should be changed to, it is not apparent.
15674 @c <en>(Various options in the @file{modules} file can be used
15675 @c <en>to recreate symbolic links on checkout, update, etc.;
15676 @c <en>@pxref{modules}.)
15677 O arquivo é uma ligação simbólica; O @code{cvs import}
15678 ignora ligações simbólicas.  De vez em quando alguem
15679 sugere que este comportamento seja mudado, mas se há um
15680 consenso quanto a que mudança fazer, não é
15681 claro.  (Várias opções no arquivo @file{modules} podem
15682 ser usadas para recriar ligações simbólicas no checkout, update, etc.;
15683 @pxref{modules}.)
15684 @end table
15685
15686 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15687 @node import examples
15688 @appendixsubsec import examples
15689
15690 @c <en>See @ref{Tracking sources}, and @ref{From files}.
15691 See @ref{Acompanhando fontes}, and @ref{De arquivos}.
15692
15693 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
15694 @node log
15695 @appendixsec log---Print out log information for files
15696 @cindex log (subcommand)
15697
15698 @itemize @bullet
15699 @item
15700 Synopsis: log [options] [files@dots{}]
15701 @item
15702 Requires: repository, working directory.
15703 @item
15704 Changes: nothing.
15705 @end itemize
15706
15707 Display log information for files.  @code{log} used to
15708 call the @sc{rcs} utility @code{rlog}.  Although this
15709 is no longer true in the current sources, this history
15710 determines the format of the output and the options,
15711 which are not quite in the style of the other @sc{cvs}
15712 commands.
15713
15714 @cindex Timezone, in output
15715 @cindex Zone, time, in output
15716 @c Kind of a funny place to document the timezone used
15717 @c in output from commands other than @code{log}.
15718 @c There is also more we need to say about this,
15719 @c including what happens in a client/server environment.
15720 The output includes the location of the @sc{rcs} file,
15721 the @dfn{head} revision (the latest revision on the
15722 trunk), all symbolic names (tags) and some other
15723 things.  For each revision, the revision number, the
15724 author, the number of lines added/deleted and the log
15725 message are printed.  All times are displayed in
15726 Coordinated Universal Time (UTC).  (Other parts of
15727 @sc{cvs} print times in the local timezone).
15728 @c FIXCVS: need a better way to control the timezone
15729 @c used in output.  Previous/current versions of CVS did/do
15730 @c sometimes support -z in RCSINIT, and/or an
15731 @c undocumented (except by reference to 'rlog') -z option
15732 @c to cvs log, but this has not been a consistent,
15733 @c documented feature.  Perhaps a new global option,
15734 @c where LT means the client's timezone, which the
15735 @c client then communicates to the server, is the
15736 @c right solution.
15737
15738 @c <en>@strong{Note: @code{log} uses @samp{-R} in a way that conflicts
15739 @c <en>with the normal use inside @sc{cvs} (@pxref{Common options}).}
15740 @strong{Note: @code{log} uses @samp{-R} in a way that conflicts
15741 with the normal use inside @sc{cvs} (@pxref{Opções comuns}).}
15742
15743 @menu
15744 * log options::                 log options
15745 * log examples::                log examples
15746 @end menu
15747
15748 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15749 @node log options
15750 @appendixsubsec log options
15751
15752 By default, @code{log} prints all information that is
15753 available.  All other options restrict the output.
15754
15755 @table @code
15756 @item -b
15757 Print information about the revisions on the default
15758 branch, normally the highest branch on the trunk.
15759
15760 @c <en>@item -d @var{dates}
15761 @item -d @var{dates}
15762 @c <en>Print information about revisions with a checkin
15763 @c <en>date/time in the range given by the
15764 @c <en>semicolon-separated list of dates.  The date formats
15765 @c <en>accepted are those accepted by the @samp{-D} option to
15766 @c <en>many other @sc{cvs} commands (@pxref{Common options}).
15767 @c <en>Dates can be combined into ranges as follows:
15768 Print information about revisions with a checkin
15769 date/time in the range given by the
15770 semicolon-separated list of dates.  The date formats
15771 accepted are those accepted by the @samp{-D} option to
15772 many other @sc{cvs} commands (@pxref{Opções comuns}).
15773 Dates can be combined into ranges as follows:
15774
15775 @c Should we be thinking about accepting ISO8601
15776 @c ranges?  For example "1972-09-10/1972-09-12".
15777 @table @code
15778 @item @var{d1}<@var{d2}
15779 @itemx @var{d2}>@var{d1}
15780 Select the revisions that were deposited between
15781 @var{d1} and @var{d2}.
15782
15783 @item <@var{d}
15784 @itemx @var{d}>
15785 Select all revisions dated @var{d} or earlier.
15786
15787 @item @var{d}<
15788 @itemx >@var{d}
15789 Select all revisions dated @var{d} or later.
15790
15791 @item @var{d}
15792 Select the single, latest revision dated @var{d} or
15793 earlier.
15794 @end table
15795
15796 The @samp{>} or @samp{<} characters may be followed by
15797 @samp{=} to indicate an inclusive range rather than an
15798 exclusive one.
15799
15800 Note that the separator is a semicolon (;).
15801
15802 @item -h
15803 Print only the name of the @sc{rcs} file, name
15804 of the file in the working directory, head,
15805 default branch, access list, locks, symbolic names, and
15806 suffix.
15807
15808 @item -l
15809 Local; run only in current working directory.  (Default
15810 is to run recursively).
15811
15812 @item -N
15813 Do not print the list of tags for this file.  This
15814 option can be very useful when your site uses a lot of
15815 tags, so rather than "more"'ing over 3 pages of tag
15816 information, the log information is presented without
15817 tags at all.
15818
15819 @item -R
15820 Print only the name of the @sc{rcs} file.
15821
15822 @c Note that using a bare revision (in addition to not
15823 @c being explicitly documented here) is potentially
15824 @c confusing; it shows the log message to get from the
15825 @c previous revision to that revision.  "-r1.3 -r1.6"
15826 @c (equivalent to "-r1.3,1.6") is even worse; it
15827 @c prints the messages to get from 1.2 to 1.3 and 1.5
15828 @c to 1.6.  By analogy with "cvs diff", users might
15829 @c expect that it is more like specifying a range.
15830 @c It is not 100% clear to me how much of this should
15831 @c be documented (for example, multiple -r options
15832 @c perhaps could/should be deprecated given the false
15833 @c analogy with "cvs diff").
15834 @c In general, this section should be rewritten to talk
15835 @c about messages to get from revision rev1 to rev2,
15836 @c rather than messages for revision rev2 (that is, the
15837 @c messages are associated with a change not a static
15838 @c revision and failing to make this distinction causes
15839 @c much confusion).
15840 @item -r@var{revisions}
15841 Print information about revisions given in the
15842 comma-separated list @var{revisions} of revisions and
15843 ranges.  The following table explains the available
15844 range formats:
15845
15846 @table @code
15847 @item @var{rev1}:@var{rev2}
15848 Revisions @var{rev1} to @var{rev2} (which must be on
15849 the same branch).
15850
15851 @item @var{rev1}::@var{rev2}
15852 The same, but excluding @var{rev1}.
15853
15854 @item :@var{rev}
15855 @itemx ::@var{rev}
15856 Revisions from the beginning of the branch up to
15857 and including @var{rev}.
15858
15859 @item @var{rev}:
15860 Revisions starting with @var{rev} to the end of the
15861 branch containing @var{rev}.
15862
15863 @item @var{rev}::
15864 Revisions starting just after @var{rev} to the end of the
15865 branch containing @var{rev}.
15866
15867 @item @var{branch}
15868 An argument that is a branch means all revisions on
15869 that branch.
15870
15871 @item @var{branch1}:@var{branch2}
15872 @itemx @var{branch1}::@var{branch2}
15873 A range of branches means all revisions
15874 on the branches in that range.
15875
15876 @item @var{branch}.
15877 The latest revision in @var{branch}.
15878 @end table
15879
15880 A bare @samp{-r} with no revisions means the latest
15881 revision on the default branch, normally the trunk.
15882 There can be no space between the @samp{-r} option and
15883 its argument.
15884
15885 @item -S
15886 Suppress the header if no revisions are selected.
15887
15888 @item -s @var{states}
15889 Print information about revisions whose state
15890 attributes match one of the states given in the
15891 comma-separated list @var{states}.
15892
15893 @item -t
15894 Print the same as @samp{-h}, plus the descriptive text.
15895
15896 @item -w@var{logins}
15897 Print information about revisions checked in by users
15898 with login names appearing in the comma-separated list
15899 @var{logins}.  If @var{logins} is omitted, the user's
15900 login is assumed.  There can be no space between the
15901 @samp{-w} option and its argument.
15902 @end table
15903
15904 @code{log} prints the intersection of the revisions
15905 selected with the options @samp{-d}, @samp{-s}, and
15906 @samp{-w}, intersected with the union of the revisions
15907 selected by @samp{-b} and @samp{-r}.
15908
15909 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15910 @node log examples
15911 @appendixsubsec log examples
15912
15913 Contributed examples are gratefully accepted.
15914
15915 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
15916 @node rdiff
15917 @appendixsec rdiff---'patch' format diffs between releases
15918 @cindex rdiff (subcommand)
15919
15920 @itemize @bullet
15921 @item
15922 rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules@dots{}
15923 @item
15924 Requires: repository.
15925 @item
15926 Changes: nothing.
15927 @item
15928 Synonym: patch
15929 @end itemize
15930
15931 Builds a Larry Wall format patch(1) file between two
15932 releases, that can be fed directly into the @code{patch}
15933 program to bring an old release up-to-date with the new
15934 release.  (This is one of the few @sc{cvs} commands that
15935 operates directly from the repository, and doesn't
15936 require a prior checkout.) The diff output is sent to
15937 the standard output device.
15938
15939 You can specify (using the standard @samp{-r} and
15940 @samp{-D} options) any combination of one or two
15941 revisions or dates.  If only one revision or date is
15942 specified, the patch file reflects differences between
15943 that revision or date and the current head revisions in
15944 the @sc{rcs} file.
15945
15946 Note that if the software release affected is contained
15947 in more than one directory, then it may be necessary to
15948 specify the @samp{-p} option to the @code{patch} command when
15949 patching the old sources, so that @code{patch} is able to find
15950 the files that are located in other directories.
15951
15952 @menu
15953 * rdiff options::               rdiff options
15954 * rdiff examples::              rdiff examples
15955 @end menu
15956
15957 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15958 @node rdiff options
15959 @appendixsubsec rdiff options
15960
15961 @c <en>These standard options are supported by @code{rdiff}
15962 @c <en>(@pxref{Common options}, for a complete description of
15963 @c <en>them):
15964 These standard options are supported by @code{rdiff}
15965 (@pxref{Opções comuns}, for a complete description of
15966 them):
15967
15968 @table @code
15969 @item -D @var{date}
15970 Use the most recent revision no later than @var{date}.
15971
15972 @item -f
15973 If no matching revision is found, retrieve the most
15974 recent revision (instead of ignoring the file).
15975
15976 @item -l
15977 Local; don't descend subdirectories.
15978
15979 @item -R
15980 Examine directories recursively.  This option is on by default.
15981
15982 @item -r @var{tag}
15983 Use revision @var{tag}.
15984 @end table
15985
15986 In addition to the above, these options are available:
15987
15988 @table @code
15989 @item -c
15990 Use the context diff format.  This is the default format.
15991
15992 @item -s
15993 Create a summary change report instead of a patch.  The
15994 summary includes information about files that were
15995 changed or added between the releases.  It is sent to
15996 the standard output device.  This is useful for finding
15997 out, for example, which files have changed between two
15998 dates or revisions.
15999
16000 @item -t
16001 A diff of the top two revisions is sent to the standard
16002 output device.  This is most useful for seeing what the
16003 last change to a file was.
16004
16005 @item -u
16006 Use the unidiff format for the context diffs.
16007 Remember that old versions
16008 of the @code{patch} program can't handle the unidiff
16009 format, so if you plan to post this patch to the net
16010 you should probably not use @samp{-u}.
16011
16012 @item -V @var{vn}
16013 Expand keywords according to the rules current in
16014 @sc{rcs} version @var{vn} (the expansion format changed with
16015 @sc{rcs} version 5).  Note that this option is no
16016 longer accepted.  @sc{cvs} will always expand keywords the
16017 way that @sc{rcs} version 5 does.
16018 @end table
16019
16020 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16021 @node rdiff examples
16022 @appendixsubsec rdiff examples
16023
16024 Suppose you receive mail from @t{foo@@example.net} asking for an
16025 update from release 1.2 to 1.4 of the tc compiler.  You
16026 have no such patches on hand, but with @sc{cvs} that can
16027 easily be fixed with a command such as this:
16028
16029 @example
16030 $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
16031 $$ Mail -s 'The patches you asked for' foo@@example.net
16032 @end example
16033
16034 Suppose you have made release 1.3, and forked a branch
16035 called @samp{R_1_3fix} for bugfixes.  @samp{R_1_3_1}
16036 corresponds to release 1.3.1, which was made some time
16037 ago.  Now, you want to see how much development has been
16038 done on the branch.  This command can be used:
16039
16040 @example
16041 $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
16042 cvs rdiff: Diffing module-name
16043 File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
16044 File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
16045 File bar.h,v changed from revision 1.29.2.1 to 1.2
16046 @end example
16047
16048 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
16049 @node release
16050 @appendixsec release---Indicate that a Module is no longer in use
16051 @cindex release (subcommand)
16052
16053 @itemize @bullet
16054 @item
16055 release [-d] directories@dots{}
16056 @item
16057 Requires: Working directory.
16058 @item
16059 Changes: Working directory, history log.
16060 @end itemize
16061
16062 @c <en>This command is meant to safely cancel the effect of
16063 @c <en>@samp{cvs checkout}.  Since @sc{cvs} doesn't lock files, it
16064 @c <en>isn't strictly necessary to use this command.  You can
16065 @c <en>always simply delete your working directory, if you
16066 @c <en>like; but you risk losing changes you may have
16067 @c <en>forgotten, and you leave no trace in the @sc{cvs} history
16068 @c <en>file (@pxref{history file}) that you've abandoned your
16069 @c <en>checkout.
16070 This command is meant to safely cancel the effect of
16071 @samp{cvs checkout}.  Since @sc{cvs} doesn't lock files, it
16072 isn't strictly necessary to use this command.  You can
16073 always simply delete your working directory, if you
16074 like; but you risk losing changes you may have
16075 forgotten, and you leave no trace in the @sc{cvs} history
16076 file (@pxref{arquivo history (histórico)}) that you've abandoned your
16077 checkout.
16078
16079 Use @samp{cvs release} to avoid these problems.  This
16080 command checks that no uncommitted changes are
16081 present; that you are executing it from immediately
16082 above a @sc{cvs} working directory; and that the repository
16083 recorded for your files is the same as the repository
16084 defined in the module database.
16085
16086 If all these conditions are true, @samp{cvs release}
16087 leaves a record of its execution (attesting to your
16088 intentionally abandoning your checkout) in the @sc{cvs}
16089 history log.
16090
16091 @menu
16092 * release options::             release options
16093 * release output::              release output
16094 * release examples::            release examples
16095 @end menu
16096
16097 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16098 @node release options
16099 @appendixsubsec release options
16100
16101 The @code{release} command supports one command option:
16102
16103 @table @code
16104 @item -d
16105 Delete your working copy of the file if the release
16106 succeeds.  If this flag is not given your files will
16107 remain in your working directory.
16108
16109 @c <en>@strong{WARNING:  The @code{release} command deletes
16110 @c <en>all directories and files recursively.  This
16111 @c <en>has the very serious side-effect that any directory
16112 @c <en>that you have created inside your checked-out sources,
16113 @c <en>and not added to the repository (using the @code{add}
16114 @c <en>command; @pxref{Adding files}) will be silently deleted---even
16115 @c <en>if it is non-empty!}
16116 @strong{WARNING:  The @code{release} command deletes
16117 all directories and files recursively.  This
16118 has the very serious side-effect that any directory
16119 that you have created inside your checked-out sources,
16120 and not added to the repository (using the @code{add}
16121 command; @pxref{Adicionando arquivos}) will be silently deleted---even
16122 if it is non-empty!}
16123 @end table
16124
16125 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16126 @node release output
16127 @appendixsubsec release output
16128
16129 Before @code{release} releases your sources it will
16130 print a one-line message for any file that is not
16131 up-to-date.
16132
16133 @table @code
16134 @item U @var{file}
16135 @itemx P @var{file}
16136 There exists a newer revision of this file in the
16137 repository, and you have not modified your local copy
16138 of the file (@samp{U} and @samp{P} mean the same thing).
16139
16140 @item A @var{file}
16141 The file has been added to your private copy of the
16142 sources, but has not yet been committed to the
16143 repository.  If you delete your copy of the sources
16144 this file will be lost.
16145
16146 @item R @var{file}
16147 The file has been removed from your private copy of the
16148 sources, but has not yet been removed from the
16149 repository, since you have not yet committed the
16150 removal.  @xref{commit}.
16151
16152 @item M @var{file}
16153 The file is modified in your working directory.  There
16154 might also be a newer revision inside the repository.
16155
16156 @item ? @var{file}
16157 @var{file} is in your working directory, but does not
16158 correspond to anything in the source repository, and is
16159 not in the list of files for @sc{cvs} to ignore (see the
16160 description of the @samp{-I} option, and
16161 @pxref{cvsignore}).  If you remove your working
16162 sources, this file will be lost.
16163 @end table
16164
16165 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16166 @node release examples
16167 @appendixsubsec release examples
16168
16169 Release the @file{tc} directory, and delete your local working copy
16170 of the files.
16171
16172 @example
16173 $ cd ..         # @r{You must stand immediately above the}
16174                 # @r{sources when you issue @samp{cvs release}.}
16175 $ cvs release -d tc
16176 You have [0] altered files in this repository.
16177 Are you sure you want to release (and delete) directory `tc': y
16178 $
16179 @end example
16180
16181 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
16182 @node update
16183 @appendixsec update---Bring work tree in sync with repository
16184 @cindex update (subcommand)
16185
16186 @itemize @bullet
16187 @item
16188 update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D date] [-W spec] files@dots{}
16189 @item
16190 Requires: repository, working directory.
16191 @item
16192 Changes: working directory.
16193 @end itemize
16194
16195 After you've run checkout to create your private copy
16196 of source from the common repository, other developers
16197 will continue changing the central source.  From time
16198 to time, when it is convenient in your development
16199 process, you can use the @code{update} command from
16200 within your working directory to reconcile your work
16201 with any revisions applied to the source repository
16202 since your last checkout or update.  Without the @code{-C}
16203 option, @code{update} will also merge any differences
16204 between the local copy of files and their base revisions
16205 into any destination revisions specified with @code{-r},
16206 @code{-D}, or @code{-A}.
16207
16208 @menu
16209 * update options::              update options
16210 * update output::               update output
16211 @end menu
16212
16213 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16214 @node update options
16215 @appendixsubsec update options
16216
16217 @c <en>These standard options are available with @code{update}
16218 @c <en>(@pxref{Common options}, for a complete description of
16219 @c <en>them):
16220 These standard options are available with @code{update}
16221 (@pxref{Opções comuns}, for a complete description of
16222 them):
16223
16224 @table @code
16225 @c <en>@item -D date
16226 @item -D date
16227 @c <en>Use the most recent revision no later than @var{date}.
16228 @c <en>This option is sticky, and implies @samp{-P}.
16229 @c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
16230 Use the most recent revision no later than @var{date}.
16231 This option is sticky, and implies @samp{-P}.
16232 See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
16233
16234 @item -f
16235 Only useful with the @samp{-D @var{date}} or @samp{-r
16236 @var{tag}} flags.  If no matching revision is found,
16237 retrieve the most recent revision (instead of ignoring
16238 the file).
16239
16240 @c <en>@item -k @var{kflag}
16241 @item -k @var{kflag}
16242 @c <en>Process keywords according to @var{kflag}.  See
16243 @c <en>@ref{Keyword substitution}.
16244 @c <en>This option is sticky; future updates of
16245 @c <en>this file in this working directory will use the same
16246 @c <en>@var{kflag}.  The @code{status} command can be viewed
16247 @c <en>to see the sticky options.  See @ref{Invoking CVS}, for
16248 @c <en>more information on the @code{status} command.
16249 Process keywords according to @var{kflag}.  See
16250 @ref{Substituição de palavra-chave}.
16251 This option is sticky; future updates of
16252 this file in this working directory will use the same
16253 @var{kflag}.  The @code{status} command can be viewed
16254 to see the sticky options.  See @ref{Chamando o CVS}, for
16255 more information on the @code{status} command.
16256
16257 @c <en>@item -l
16258 @item -l
16259 @c <en>Local; run only in current working directory.  @xref{Recursive behavior}.
16260 Local; run only in current working directory.  @xref{Comportamento recursivo}.
16261
16262 @c <en>@item -P
16263 @item -P
16264 @c <en>Prune empty directories.  See @ref{Moving directories}.
16265 Prune empty directories.  See @ref{Movendo diretórios}.
16266
16267 @c <en>@item -p
16268 @item -p
16269 @c <en>Pipe files to the standard output.
16270 Pipe files to the standard output.
16271
16272 @c <en>@item -R
16273 @item -R
16274 @c <en>Update directories recursively (default).  @xref{Recursive
16275 @c <en>behavior}.
16276 Update directories recursively (default).
16277 @xref{Comportamento recursivo}.
16278
16279 @c <en>@item -r rev
16280 @item -r rev
16281 @c <en>Retrieve revision/tag @var{rev}.  This option is sticky,
16282 @c <en>and implies @samp{-P}.
16283 @c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
16284 Retrieve revision/tag @var{rev}.  This option is sticky,
16285 and implies @samp{-P}.
16286 See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
16287 @end table
16288
16289 @need 800
16290 These special options are also available with
16291 @code{update}.
16292
16293 @table @code
16294 @c <en>@item -A
16295 @item -A
16296 @c <en>Reset any sticky tags, dates, or @samp{-k} options.
16297 @c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
16298 Reset any sticky tags, dates, or @samp{-k} options.
16299 See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
16300
16301 @item -C
16302 Overwrite locally modified files with clean copies from
16303 the repository (the modified file is saved in
16304 @file{.#@var{file}.@var{revision}}, however).
16305
16306 @item -d
16307 Create any directories that exist in the repository if
16308 they're missing from the working directory.  Normally,
16309 @code{update} acts only on directories and files that
16310 were already enrolled in your working directory.
16311
16312 This is useful for updating directories that were
16313 created in the repository since the initial checkout;
16314 but it has an unfortunate side effect.  If you
16315 deliberately avoided certain directories in the
16316 repository when you created your working directory
16317 (either through use of a module name or by listing
16318 explicitly the files and directories you wanted on the
16319 command line), then updating with @samp{-d} will create
16320 those directories, which may not be what you want.
16321
16322 @item -I @var{name}
16323 Ignore files whose names match @var{name} (in your
16324 working directory) during the update.  You can specify
16325 @samp{-I} more than once on the command line to specify
16326 several files to ignore.  Use @samp{-I !} to avoid
16327 ignoring any files at all.  @xref{cvsignore}, for other
16328 ways to make @sc{cvs} ignore some files.
16329
16330 @item -W@var{spec}
16331 Specify file names that should be filtered during
16332 update.  You can use this option repeatedly.
16333
16334 @var{spec} can be a file name pattern of the same type
16335 that you can specify in the @file{.cvswrappers}
16336 file. @xref{Wrappers}.
16337
16338 @item -j@var{revision}
16339 With two @samp{-j} options, merge changes from the
16340 revision specified with the first @samp{-j} option to
16341 the revision specified with the second @samp{j} option,
16342 into the working directory.
16343
16344 With one @samp{-j} option, merge changes from the
16345 ancestor revision to the revision specified with the
16346 @samp{-j} option, into the working directory.  The
16347 ancestor revision is the common ancestor of the
16348 revision which the working directory is based on, and
16349 the revision specified in the @samp{-j} option.
16350
16351 @c <en>Note that using a single @samp{-j @var{tagname}} option rather than
16352 @c <en>@samp{-j @var{branchname}} to merge changes from a branch will
16353 @c <en>often not remove files which were removed on the branch.
16354 @c <en>@xref{Merging adds and removals}, for more.
16355 Note that using a single @samp{-j @var{tagname}} option rather than
16356 @samp{-j @var{branchname}} to merge changes from a branch will
16357 often not remove files which were removed on the branch.
16358 @xref{Mesclando adicionados e removidos}, for more.
16359
16360 In addition, each @samp{-j} option can contain an optional
16361 date specification which, when used with branches, can
16362 limit the chosen revision to one within a specific
16363 date.  An optional date is specified by adding a colon
16364 (:) to the tag:
16365 @samp{-j@var{Symbolic_Tag}:@var{Date_Specifier}}.
16366
16367 @c <en>@xref{Branching and merging}.
16368 @xref{Ramificando e mesclando}.
16369
16370 @end table
16371
16372 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16373 @c <en>@node update output
16374 @node update output
16375 @c <en>@appendixsubsec update output
16376 @appendixsubsec update output
16377
16378 @c <en>@code{update} and @code{checkout} keep you informed of
16379 @c <en>their progress by printing a line for each file, preceded
16380 @c <en>by one character indicating the status of the file:
16381 O @code{update} e o @code{checkout} mantém você
16382 informado de seu progresso escrevendo uma linha para
16383 cada arquivo, iniciando com um caractere que indica o
16384 status do arquivo:
16385
16386 @table @code
16387 @c <en>@item U @var{file}
16388 @item U @var{arquivo}
16389 @c <en>The file was brought up to date with respect to the
16390 @c <en>repository.  This is done for any file that exists in
16391 @c <en>the repository but not in your source, and for files
16392 @c <en>that you haven't changed but are not the most recent
16393 @c <en>versions available in the repository.
16394 O arquivo foi atualizado com base no repositório.  Isto
16395 é feito para qualquer arquivo que exista no
16396 repositório mas não esteja nos seus fontes (no seu
16397 diretório da trabalho) e para arquivos que você não
16398 mudou mas não estão na versão mais recente que está
16399 disponível no repositório.
16400
16401 @c <en>@item P @var{file}
16402 @item P @var{arquivo}
16403 @c <en>Like @samp{U}, but the @sc{cvs} server sends a patch instead of an entire
16404 @c <en>file.  This accomplishes the same thing as @samp{U} using less bandwidth.
16405
16406 Como o @samp{U}, mas o servidor @sc{cvs} manda um patch
16407 (remendo) ao invés de mandar um arquivo inteiro.  Tem o
16408 mesmo resultado que @samp{U} usando menos largura de banda.
16409
16410 @c <en>@item A @var{file}
16411 @item A @var{arquivo}
16412 @c <en>The file has been added to your private copy of the
16413 @c <en>sources, and will be added to the source repository
16414 @c <en>when you run @code{commit} on the file.  This is a
16415 @c <en>reminder to you that the file needs to be committed.
16416 O arquivo foi adicionado a sua cópia local dos fontes,
16417 e vai ser adicionado ao repositório quando você rodar o
16418 @code{commit} no arquivo.  Funciona como um lembrete de
16419 que o arquivo precisa ser ???commitado???.
16420
16421 @c <en>@item R @var{file}
16422 @item R @var{arquivo}
16423 @c <en>The file has been removed from your private copy of the
16424 @c <en>sources, and will be removed from the source repository
16425 @c <en>when you run @code{commit} on the file.  This is a
16426 @c <en>reminder to you that the file needs to be committed.
16427 O arquivo foi removido de sua cópia local dos fontes, e
16428 será removido do repositório quando você executar um
16429 @code{commit} no arquivo.  Funciona como um lembrete de
16430 que o arquivo precisa ser ???commitado???.
16431
16432 @c <en>@item M @var{file}
16433 @item M @var{arquivo}
16434 @c <en>The file is modified in  your  working  directory.
16435 O arquivo está modificado no seu diretório de trabalho.
16436
16437 @c <en>@samp{M} can indicate one of two states for a file
16438 @c <en>you're working on: either there were no modifications
16439 @c <en>to the same file in the repository, so that your file
16440 @c <en>remains as you last saw it; or there were modifications
16441 @c <en>in the repository as well as in your copy, but they
16442 @c <en>were merged successfully, without conflict, in your
16443 @c <en>working directory.
16444 O @samp{M} pode indicar um dos dois estados para um
16445 arquivo no qual você esteja trabalhando: ou não existem
16446 modificações do arquivo equivalente no repositório, de forma
16447 que seu arquivo continua da forma como você o deixou;
16448 ou existem modificações no repositório assim como na
16449 sua cópia, mas elas foram mescladas com sucesso, sem
16450 conflito, no seu diretório de trabalho.
16451
16452 @c <en>@sc{cvs} will print some messages if it merges your work,
16453 @c <en>and a backup copy of your working file (as it looked
16454 @c <en>before you ran @code{update}) will be made.  The exact
16455 @c <en>name of that file is printed while @code{update} runs.
16456 O @sc{cvs} vai escrever algumas mensagens se ele
16457 mesclar seu trabalho, e colocará uma cópia de segurança no seu
16458 diretório de trabalho (na forma que estava antes de
16459 executar o @code{update}).  O nome exato do arquivo
16460 será escrito quando o @code{update} rodar.
16461
16462 @c <en>@item C @var{file}
16463 @item C @var{arquivo}
16464 @c <en>@cindex .# files
16465 @cindex arquivos .#
16466 @c <en>@cindex __ files (VMS)
16467 @cindex __ arquivos (VMS)
16468 @c <en>A conflict was detected while trying to merge your
16469 @c <en>changes to @var{file} with changes from the source
16470 @c <en>repository.  @var{file} (the copy in your working
16471 @c <en>directory) is now the result of attempting to merge
16472 @c <en>the two revisions; an unmodified copy of your file
16473 @c <en>is also in your working directory, with the name
16474 @c <en>@file{.#@var{file}.@var{revision}} where @var{revision}
16475 @c <en>is the revision that your modified file started
16476 @c <en>from.  Resolve the conflict as described in
16477 @c <en>@ref{Conflicts example}.
16478 Um conflito foi detectado quando se tentava mesclar
16479 suas mudanças no @var{arquivo} com as mudanças no
16480 repositório.  O @var{arquivo} (a cópia no seu diretório
16481 de trabalho) é agora o resultado da tentativa de
16482 mesclar as duas revisões; uma cópia inalterada do
16483 arquivo também está no diretório de trabalho, com o
16484 nome de @file{.#@var{arquivo}.@var{revisão}} onde
16485 @var{revisão} é a revisão de onde o seu arquivo
16486 modificado saiu.  Resolva o conflito como é mostrado em
16487 @ref{Exemplo de conflitos}.
16488 @c "some systems" as in out-of-the-box OSes?  Not as
16489 @c far as I know.  We need to advise sysadmins as well
16490 @c as users how to set up this kind of purge, if that is
16491 @c what they want.
16492 @c We also might want to think about cleaner solutions,
16493 @c like having CVS remove the .# file once the conflict
16494 @c has been resolved or something like that.
16495 @c <en>(Note that some systems automatically purge
16496 @c <en>files that begin with @file{.#} if they have not been
16497 @c <en>accessed for a few days.  If you intend to keep a copy
16498 @c <en>of your original file, it is a very good idea to rename
16499 @c <en>it.)  Under @sc{vms}, the file name starts with
16500 @c <en>@file{__} rather than @file{.#}.
16501 (Note que alguns sistemas eliminam automaticamente
16502 arquivos que começam com @file{.#} se eles não são
16503 acessados por alguns dias.  Se você pretende manter uma
16504 cópia do arquivo original, é um ótima idéia
16505 renomeá-lo.)  No @sc{vms}, o nome do arquivo começa com
16506 @file{__} ao invés de @file{.#}.
16507
16508 @c <en>@item ? @var{file}
16509 @item ? @var{arquivo}
16510 @c <en>@var{file} is in your working directory, but does not
16511 @c <en>correspond to anything in the source repository, and is
16512 @c <en>not in the list of files for @sc{cvs} to ignore (see the
16513 @c <en>description of the @samp{-I} option, and
16514 @c <en>@pxref{cvsignore}).
16515 O @var{arquivo} is in your working directory, but does not
16516 correspond to anything in the source repository, and is
16517 not in the list of files for @sc{cvs} to ignore (see the
16518 description of the @samp{-I} option, and
16519 @pxref{cvsignore}).
16520 @end table
16521
16522 @c <en>@node Invoking CVS
16523 @node Chamando o CVS
16524 @c <en>@appendix Quick reference to CVS commands
16525 @appendix Quick reference to CVS commands
16526 @c <en>@cindex Command reference
16527 @cindex Command reference
16528 @c <en>@cindex Reference, commands
16529 @cindex Reference, commands
16530 @c <en>@cindex Invoking CVS
16531 @cindex Chamando o CVS
16532
16533 @c <en>This appendix describes how to invoke @sc{cvs}, with
16534 @c <en>references to where each command or feature is
16535 @c <en>described in detail.  For other references run the
16536 @c <en>@code{cvs --help} command, or see @ref{Index}.
16537 This appendix describes how to invoke @sc{cvs}, with
16538 references to where each command or feature is
16539 described in detail.  For other references run the
16540 @code{cvs --help} command, or see @ref{Indice}.
16541
16542 @c <en>A @sc{cvs} command looks like:
16543 A @sc{cvs} command looks like:
16544
16545 @example
16546 cvs [ @var{global_options} ] @var{command} [ @var{command_options} ] [ @var{command_args} ]
16547 @end example
16548
16549 Global options:
16550
16551 @table @code
16552 @c <en>@item --allow-root=@var{rootdir}
16553 @item --allow-root=@var{rootdir}
16554 @c <en>Specify legal @sc{cvsroot} directory (server only) (not
16555 @c <en>in @sc{cvs} 1.9 and older).  See @ref{Password
16556 @c <en>authentication server}.
16557 Specify legal @sc{cvsroot} directory (server only) (not
16558 in @sc{cvs} 1.9 and older).  See
16559 @ref{Servidor de autenticação por senha}.
16560
16561 @c <en>@item -a
16562 @item -a
16563 @c <en>Authenticate all communication (client only) (not in @sc{cvs}
16564 @c <en>1.9 and older).  See @ref{Global options}.
16565 Authenticate all communication (client only) (not in @sc{cvs}
16566 1.9 and older).  See @ref{Opções globais}.
16567
16568 @c <en>@item -b
16569 @item -b
16570 @c <en>Specify RCS location (@sc{cvs} 1.9 and older).  See
16571 @c <en>@ref{Global options}.
16572 Specify RCS location (@sc{cvs} 1.9 and older).  See
16573 @ref{Opções globais}.
16574
16575 @c <en>@item -d @var{root}
16576 @item -d @var{root}
16577 @c <en>Specify the @sc{cvsroot}.  See @ref{Repository}.
16578 Specify the @sc{cvsroot}.  See @ref{Repositório}.
16579
16580 @c <en>@item -e @var{editor}
16581 @item -e @var{editor}
16582 @c <en>Edit messages with @var{editor}.  See @ref{Committing
16583 @c <en>your changes}.
16584 Edit messages with @var{editor}.  See
16585 @ref{Efetivando suas alterações}.
16586
16587 @c <en>@item -f
16588 @item -f
16589 @c <en>Do not read the @file{~/.cvsrc} file.  See @ref{Global
16590 @c <en>options}.
16591 Do not read the @file{~/.cvsrc} file.  See @ref{Opções globais}.
16592
16593 @c <en>@item -H
16594 @item -H
16595 @c <en>@itemx --help
16596 @itemx --help
16597 @c <en>Print a help message.  See @ref{Global options}.
16598 Print a help message.  See @ref{Opções globais}.
16599
16600 @c <en>@item -l
16601 @item -l
16602 @c <en>Do not log in @file{$CVSROOT/CVSROOT/history} file.  See @ref{Global
16603 @c <en>options}.
16604 Do not log in @file{$CVSROOT/CVSROOT/history} file.  See
16605 @ref{Opções globais}.
16606
16607 @c <en>@item -n
16608 @item -n
16609 @c <en>Do not change any files.  See @ref{Global options}.
16610 Do not change any files.  See @ref{Opções globais}.
16611
16612 @c <en>@item -Q
16613 @item -Q
16614 @c <en>Be really quiet.  See @ref{Global options}.
16615 Be really quiet.  See @ref{Opções globais}.
16616
16617 @c <en>@item -q
16618 @item -q
16619 @c <en>Be somewhat quiet.  See @ref{Global options}.
16620 Be somewhat quiet.  See @ref{Opções globais}.
16621
16622 @c <en>@item -r
16623 @item -r
16624 @c <en>Make new working files read-only.  See @ref{Global options}.
16625 Make new working files read-only.  See @ref{Opções globais}.
16626
16627 @c <en>@item -s @var{variable}=@var{value}
16628 @item -s @var{variable}=@var{value}
16629 @c <en>Set a user variable.  See @ref{Variables}.
16630 Set a user variable.  See @ref{Variables}.
16631
16632 @c <en>@item -T @var{tempdir}
16633 @item -T @var{tempdir}
16634 @c <en>Put temporary files in @var{tempdir}.  See @ref{Global
16635 @c <en>options}.
16636 Put temporary files in @var{tempdir}.  See
16637 @ref{Opções globais}.
16638
16639 @c <en>@item -t
16640 @item -t
16641 @c <en>Trace @sc{cvs} execution.  See @ref{Global options}.
16642 Trace @sc{cvs} execution.  See @ref{Opções globais}.
16643
16644 @c <en>@item -v
16645 @item -v
16646 @c <en>@item --version
16647 @item --version
16648 @c <en>Display version and copyright information for @sc{cvs}.
16649 Display version and copyright information for @sc{cvs}.
16650
16651 @c <en>@item -w
16652 @item -w
16653 @c <en>Make new working files read-write.  See @ref{Global
16654 @c <en>options}.
16655 Make new working files read-write.  See @ref{Opções globais}.
16656
16657 @c <en>@item -x
16658 @item -x
16659 @c <en>Encrypt all communication (client only).
16660 @c <en>See @ref{Global options}.
16661 Encrypt all communication (client only).
16662 See @ref{Opções globais}.
16663
16664 @c <en>@item -z @var{gzip-level}
16665 @item -z @var{gzip-level}
16666 @c <en>@cindex Compression
16667 @cindex Compression
16668 @c <en>@cindex Gzip
16669 @cindex Gzip
16670 @c <en>Set the compression level (client only).
16671 @c <en>See @ref{Global options}.
16672 Set the compression level (client only).
16673 See @ref{Opções globais}.
16674 @end table
16675
16676 @c <en>Keyword expansion modes (@pxref{Substitution modes}):
16677 Keyword expansion modes (@pxref{Modos de substituição}):
16678
16679 @example
16680 -kkv  $@splitrcskeyword{}Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp $
16681 -kkvl $@splitrcskeyword{}Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
16682 -kk   $@splitrcskeyword{}Id$
16683 -kv   file1,v 1.1 1993/12/09 03:21:13 joe Exp
16684 -ko   @i{no expansion}
16685 -kb   @i{no expansion, file is binary}
16686 @end example
16687
16688 @c <en>Keywords (@pxref{Keyword list}):
16689 Keywords (@pxref{Lista de palavras-chave}):
16690
16691 @example
16692 $@splitrcskeyword{}Author: joe $
16693 $@splitrcskeyword{}Date: 1993/12/09 03:21:13 $
16694 $@splitrcskeyword{}CVSHeader: files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
16695 $@splitrcskeyword{}Header: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
16696 $@splitrcskeyword{}Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
16697 $@splitrcskeyword{}Locker: harry $
16698 $@splitrcskeyword{}Name: snapshot_1_14 $
16699 $@splitrcskeyword{}RCSfile: file1,v $
16700 $@splitrcskeyword{}Revision: 1.1 $
16701 $@splitrcskeyword{}Source: /home/files/file1,v $
16702 $@splitrcskeyword{}State: Exp $
16703 $@splitrcskeyword{}Log: file1,v $
16704 Revision 1.1  1993/12/09 03:30:17  joe
16705 Initial revision
16706
16707 @end example
16708
16709 @c The idea behind this table is that we want each item
16710 @c to be a sentence or two at most.  Preferably a
16711 @c single line.
16712 @c
16713 @c In some cases refs to "foo options" are just to get
16714 @c this thing written quickly, not because the "foo
16715 @c options" node is really the best place to point.
16716 Commands, command options, and command arguments:
16717
16718 @table @code
16719 @c ------------------------------------------------------------
16720 @c <en>@item add [@var{options}] [@var{files}@dots{}]
16721 @item add [@var{options}] [@var{files}@dots{}]
16722 @c <en>Add a new file/directory.  See @ref{Adding files}.
16723 Add a new file/directory.  See @ref{Adicionando arquivos}.
16724
16725 @table @code
16726 @c <en>@item -k @var{kflag}
16727 @item -k @var{kflag}
16728 @c <en>Set keyword expansion.
16729 Set keyword expansion.
16730
16731 @c <en>@item -m @var{msg}
16732 @item -m @var{msg}
16733 @c <en>Set file description.
16734 Set file description.
16735 @end table
16736
16737 @c ------------------------------------------------------------
16738 @c <en>@item admin [@var{options}] [@var{files}@dots{}]
16739 @item admin [@var{options}] [@var{files}@dots{}]
16740 @c <en>Administration of history files in the repository.  See
16741 @c <en>@ref{admin}.
16742 Administration of history files in the repository.  See
16743 @ref{admin}.
16744 @c This list omits those options which are not
16745 @c documented as being useful with CVS.  That might be
16746 @c a mistake...
16747
16748 @table @code
16749 @c <en>@item -b[@var{rev}]
16750 @item -b[@var{rev}]
16751 @c <en>Set default branch.  See @ref{Reverting local changes}.
16752 Set default branch.  See @ref{Reverting local changes}.
16753
16754 @c <en>@item -c@var{string}
16755 @item -c@var{string}
16756 @c <en>Set comment leader.
16757 Set comment leader.
16758
16759 @c <en>@item -k@var{subst}
16760 @item -k@var{subst}
16761 @c <en>Set keyword substitution.  See @ref{Keyword
16762 @c <en>substitution}.
16763 Set keyword substitution.  See @ref{Substituição de palavra-chave}.
16764
16765 @c <en>@item -l[@var{rev}]
16766 @item -l[@var{rev}]
16767 @c <en>Lock revision @var{rev}, or latest revision.
16768 Lock revision @var{rev}, or latest revision.
16769
16770 @c <en>@item -m@var{rev}:@var{msg}
16771 @item -m@var{rev}:@var{msg}
16772 @c <en>Replace the log message of revision @var{rev} with
16773 @c <en>@var{msg}.
16774 Replace the log message of revision @var{rev} with
16775 @var{msg}.
16776
16777 @c <en>@item -o@var{range}
16778 @item -o@var{range}
16779 @c <en>Delete revisions from the repository.  See
16780 @c <en>@ref{admin options}.
16781 Delete revisions from the repository.  See
16782 @ref{admin options}.
16783
16784 @c <en>@item -q
16785 @item -q
16786 @c <en>Run quietly; do not print diagnostics.
16787 Run quietly; do not print diagnostics.
16788
16789 @c <en>@item -s@var{state}[:@var{rev}]
16790 @item -s@var{state}[:@var{rev}]
16791 @c <en>Set the state.
16792 Set the state.
16793
16794 @c Does not work for client/server CVS
16795 @c <en>@item -t
16796 @item -t
16797 @c <en>Set file description from standard input.
16798 Set file description from standard input.
16799
16800 @c <en>@item -t@var{file}
16801 @item -t@var{file}
16802 @c <en>Set file description from @var{file}.
16803 Set file description from @var{file}.
16804
16805 @c <en>@item -t-@var{string}
16806 @item -t-@var{string}
16807 @c <en>Set file description to @var{string}.
16808 Set file description to @var{string}.
16809
16810 @c <en>@item -u[@var{rev}]
16811 @item -u[@var{rev}]
16812 @c <en>Unlock revision @var{rev}, or latest revision.
16813 Unlock revision @var{rev}, or latest revision.
16814 @end table
16815
16816 @c ------------------------------------------------------------
16817 @c <en>@item annotate [@var{options}] [@var{files}@dots{}]
16818 @item annotate [@var{options}] [@var{files}@dots{}]
16819 @c <en>Show last revision where each line was modified.  See
16820 @c <en>@ref{annotate}.
16821 Show last revision where each line was modified.  See
16822 @ref{annotate}.
16823
16824 @table @code
16825 @c <en>@item -D @var{date}
16826 @item -D @var{date}
16827 @c <en>Annotate the most recent revision no later than
16828 @c <en>@var{date}.  See @ref{Common options}.
16829 Annotate the most recent revision no later than
16830 @var{date}.  See @ref{Opções comuns}.
16831
16832 @c <en>@item -F
16833 @item -F
16834 @c <en>Force annotation of binary files.  (Without this option,
16835 @c <en>binary files are skipped with a message.)
16836 Force annotation of binary files.  (Without this option,
16837 binary files are skipped with a message.)
16838
16839 @c <en>@item -f
16840 @item -f
16841 @c <en>Use head revision if tag/date not found.  See
16842 @c <en>@ref{Common options}.
16843 Use head revision if tag/date not found.  See
16844 @ref{Opções comuns}.
16845
16846 @c <en>@item -l
16847 @item -l
16848 @c <en>Local; run only in current working directory.  @xref{Recursive behavior}.
16849 Local; run only in current working directory.  @xref{Comportamento recursivo}.
16850
16851 @c <en>@item -R
16852 @item -R
16853 @c <en>Operate recursively (default).  @xref{Recursive
16854 @c <en>behavior}.
16855 Operate recursively (default).
16856 @xref{Comportamento recursivo}.
16857
16858 @c <en>@item -r @var{tag}
16859 @item -r @var{tag}
16860 @c <en>Annotate revision @var{tag}.  See @ref{Common options}.
16861 Annotate revision @var{tag}.  See @ref{Opções comuns}.
16862 @end table
16863
16864 @c ------------------------------------------------------------
16865 @c <en>@item checkout [@var{options}] @var{modules}@dots{}
16866 @item checkout [@var{options}] @var{modules}@dots{}
16867 @c <en>Get a copy of the sources.  See @ref{checkout}.
16868 Get a copy of the sources.  See @ref{checkout}.
16869
16870 @table @code
16871 @c <en>@item -A
16872 @item -A
16873 @c <en>Reset any sticky tags/date/options.  See @ref{Sticky
16874 @c <en>tags} and @ref{Keyword substitution}.
16875 Reset any sticky tags/date/options.  See @ref{Etiquetas adesivas}
16876 and @ref{Substituição de palavra-chave}.
16877
16878 @c <en>@item -c
16879 @item -c
16880 @c <en>Output the module database.  See @ref{checkout options}.
16881 Output the module database.  See @ref{checkout options}.
16882
16883 @c <en>@item -D @var{date}
16884 @item -D @var{date}
16885 @c <en>Check out revisions as of @var{date} (is sticky).  See
16886 @c <en>@ref{Common options}.
16887 Check out revisions as of @var{date} (is sticky).  See
16888 @ref{Opções comuns}.
16889
16890 @c <en>@item -d @var{dir}
16891 @item -d @var{dir}
16892 @c <en>Check out into @var{dir}.  See @ref{checkout options}.
16893 Check out into @var{dir}.  See @ref{checkout options}.
16894
16895 @c <en>@item -f
16896 @item -f
16897 @c <en>Use head revision if tag/date not found.  See
16898 @c <en>@ref{Common options}.
16899 Use head revision if tag/date not found.  See
16900 @ref{Opções comuns}.
16901
16902 @c Probably want to use rev1/rev2 style like for diff
16903 @c -r.  Here and in on-line help.
16904 @c <en>@item -j @var{rev}
16905 @item -j @var{rev}
16906 @c <en>Merge in changes.  See @ref{checkout options}.
16907 Merge in changes.  See @ref{checkout options}.
16908
16909 @c <en>@item -k @var{kflag}
16910 @item -k @var{kflag}
16911 @c <en>Use @var{kflag} keyword expansion.  See
16912 @c <en>@ref{Substitution modes}.
16913 Use @var{kflag} keyword expansion.  See
16914 @ref{Modos de substituição}.
16915
16916 @c <en>@item -l
16917 @item -l
16918 @c <en>Local; run only in current working directory.  @xref{Recursive behavior}.
16919 Local; run only in current working directory.  @xref{Comportamento recursivo}.
16920
16921 @c <en>@item -N
16922 @item -N
16923 @c <en>Don't ``shorten'' module paths if -d specified.  See
16924 @c <en>@ref{checkout options}.
16925 Don't ``shorten'' module paths if -d specified.  See
16926 @ref{checkout options}.
16927
16928 @c <en>@item -n
16929 @item -n
16930 @c <en>Do not run module program (if any).  See @ref{checkout options}.
16931 Do not run module program (if any).  See @ref{checkout options}.
16932
16933 @c <en>@item -P
16934 @item -P
16935 @c <en>Prune empty directories.  See @ref{Moving directories}.
16936 Prune empty directories.  See @ref{Movendo diretórios}.
16937
16938 @c <en>@item -p
16939 @item -p
16940 @c <en>Check out files to standard output (avoids
16941 @c <en>stickiness).  See @ref{checkout options}.
16942 Check out files to standard output (avoids
16943 stickiness).  See @ref{checkout options}.
16944
16945 @c <en>@item -R
16946 @item -R
16947 @c <en>Operate recursively (default).  @xref{Recursive
16948 @c <en>behavior}.
16949 Operate recursively (default).  @xref{Comportamento recursivo}.
16950
16951 @c <en>@item -r @var{tag}
16952 @item -r @var{tag}
16953 @c <en>Checkout revision @var{tag} (is sticky).  See @ref{Common options}.
16954 Checkout revision @var{tag} (is sticky).  See @ref{Opções comuns}.
16955
16956 @c <en>@item -s
16957 @item -s
16958 @c <en>Like -c, but include module status.  See @ref{checkout options}.
16959 Like -c, but include module status.  See @ref{checkout options}.
16960 @end table
16961
16962 @c ------------------------------------------------------------
16963 @c <en>@item commit [@var{options}] [@var{files}@dots{}]
16964 @item commit [@var{options}] [@var{files}@dots{}]
16965 @c <en>Check changes into the repository.  See @ref{commit}.
16966 Check changes into the repository.  See @ref{commit}.
16967
16968 @table @code
16969 @c <en>@item -F @var{file}
16970 @item -F @var{file}
16971 @c <en>Read log message from @var{file}.  See @ref{commit options}.
16972 Read log message from @var{file}.  See @ref{commit options}.
16973
16974 @c <en>@item -f
16975 @item -f
16976 @c What is this "disables recursion"?  It is from the
16977 @c on-line help; is it documented in this manual?
16978 @c <en>Force the file to be committed; disables recursion.
16979 @c <en>See @ref{commit options}.
16980 Force the file to be committed; disables recursion.
16981 See @ref{commit options}.
16982
16983 @c <en>@item -l
16984 @item -l
16985 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
16986 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
16987
16988 @c <en>@item -m @var{msg}
16989 @item -m @var{msg}
16990 @c <en>Use @var{msg} as log message.  See @ref{commit options}.
16991 Use @var{msg} as log message.  See @ref{commit options}.
16992
16993 @c <en>@item -n
16994 @item -n
16995 @c <en>Do not run module program (if any).  See @ref{commit options}.
16996 Do not run module program (if any).  See @ref{commit options}.
16997
16998 @c <en>@item -R
16999 @item -R
17000 @c <en>Operate recursively (default).  @xref{Recursive
17001 @c <en>behavior}.
17002 Operate recursively (default).  @xref{Comportamento recursivo}.
17003
17004 @c <en>@item -r @var{rev}
17005 @item -r @var{rev}
17006 @c <en>Commit to @var{rev}.  See @ref{commit options}.
17007 Commit to @var{rev}.  See @ref{commit options}.
17008 @c FIXME: should be dragging over text from
17009 @c commit options, especially if it can be cleaned up
17010 @c and made concise enough.
17011 @end table
17012
17013 @c ------------------------------------------------------------
17014 @c <en>@item diff [@var{options}] [@var{files}@dots{}]
17015 @item diff [@var{options}] [@var{files}@dots{}]
17016 @c <en>Show differences between revisions.  See @ref{diff}.
17017 @c <en>In addition to the options shown below, accepts a wide
17018 @c <en>variety of options to control output style, for example
17019 @c <en>@samp{-c} for context diffs.
17020 Show differences between revisions.  See @ref{diff}.
17021 In addition to the options shown below, accepts a wide
17022 variety of options to control output style, for example
17023 @samp{-c} for context diffs.
17024
17025 @table @code
17026 @c <en>@item -D @var{date1}
17027 @item -D @var{date1}
17028 @c <en>Diff revision for date against working file.  See
17029 @c <en>@ref{diff options}.
17030 Diff revision for date against working file.  See
17031 @ref{diff options}.
17032
17033 @c <en>@item -D @var{date2}
17034 @item -D @var{date2}
17035 @c <en>Diff @var{rev1}/@var{date1} against @var{date2}.  See
17036 @c <en>@ref{diff options}.
17037 Diff @var{rev1}/@var{date1} against @var{date2}.  See
17038 @ref{diff options}.
17039
17040 @c <en>@item -l
17041 @item -l
17042 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17043 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17044
17045 @c <en>@item -N
17046 @item -N
17047 @c <en>Include diffs for added and removed files.  See
17048 @c <en>@ref{diff options}.
17049 Include diffs for added and removed files.  See
17050 @ref{diff options}.
17051
17052 @c <en>@item -R
17053 @item -R
17054 @c <en>Operate recursively (default).  @xref{Recursive
17055 @c <en>behavior}.
17056 Operate recursively (default).  @xref{Comportamento recursivo}.
17057
17058 @c <en>@item -r @var{rev1}
17059 @item -r @var{rev1}
17060 @c <en>Diff revision for @var{rev1} against working file.  See
17061 @c <en>@ref{diff options}.
17062 Diff revision for @var{rev1} against working file.  See
17063 @ref{diff options}.
17064
17065 @c <en>@item -r @var{rev2}
17066 @item -r @var{rev2}
17067 @c <en>Diff @var{rev1}/@var{date1} against @var{rev2}.  See @ref{diff options}.
17068 Diff @var{rev1}/@var{date1} against @var{rev2}.  See @ref{diff options}.
17069 @end table
17070
17071 @c ------------------------------------------------------------
17072 @c <en>@item edit [@var{options}] [@var{files}@dots{}]
17073 @item edit [@var{options}] [@var{files}@dots{}]
17074 @c <en>Get ready to edit a watched file.  See @ref{Editing files}.
17075 Get ready to edit a watched file.  See @ref{Editando arquivos}.
17076
17077 @table @code
17078 @c <en>@item -a @var{actions}
17079 @item -a @var{actions}
17080 @c <en>Specify actions for temporary watch, where
17081 @c <en>@var{actions} is @code{edit}, @code{unedit},
17082 @c <en>@code{commit}, @code{all}, or @code{none}.  See
17083 @c <en>@ref{Editing files}.
17084 Specify actions for temporary watch, where
17085 @var{actions} is @code{edit}, @code{unedit},
17086 @code{commit}, @code{all}, or @code{none}.  See
17087 @ref{Editando arquivos}.
17088
17089 @c <en>@item -l
17090 @item -l
17091 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17092 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17093
17094 @c <en>@item -R
17095 @item -R
17096 @c <en>Operate recursively (default).  @xref{Recursive
17097 @c <en>behavior}.
17098 Operate recursively (default).  @xref{Comportamento recursivo}.
17099 @end table
17100
17101 @c ------------------------------------------------------------
17102 @c <en>@item editors [@var{options}] [@var{files}@dots{}]
17103 @item editors [@var{options}] [@var{files}@dots{}]
17104 @c <en>See who is editing a watched file.  See @ref{Watch information}.
17105 See who is editing a watched file.  See @ref{Informações de ???Watch???}.
17106
17107 @table @code
17108 @c <en>@item -l
17109 @item -l
17110 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17111 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17112
17113 @c <en>@item -R
17114 @item -R
17115 @c <en>Operate recursively (default).  @xref{Recursive
17116 @c <en>behavior}.
17117 Operate recursively (default).  @xref{Comportamento recursivo}.
17118 @end table
17119
17120 @c ------------------------------------------------------------
17121 @c <en>@item export [@var{options}] @var{modules}@dots{}
17122 @item export [@var{options}] @var{modules}@dots{}
17123 @c <en>Export files from @sc{cvs}.  See @ref{export}.
17124 Export files from @sc{cvs}.  See @ref{export}.
17125
17126 @table @code
17127 @c <en>@item -D @var{date}
17128 @item -D @var{date}
17129 @c <en>Check out revisions as of @var{date}.  See
17130 @c <en>@ref{Common options}.
17131 Check out revisions as of @var{date}.  See
17132 @ref{Opções comuns}.
17133
17134 @c <en>@item -d @var{dir}
17135 @item -d @var{dir}
17136 @c <en>Check out into @var{dir}.  See @ref{export options}.
17137 Check out into @var{dir}.  See @ref{export options}.
17138
17139 @c <en>@item -f
17140 @item -f
17141 @c <en>Use head revision if tag/date not found.  See
17142 @c <en>@ref{Common options}.
17143 Use head revision if tag/date not found.  See
17144 @ref{Opções comuns}.
17145
17146 @c <en>@item -k @var{kflag}
17147 @item -k @var{kflag}
17148 @c <en>Use @var{kflag} keyword expansion.  See
17149 @c <en>@ref{Substitution modes}.
17150 Use @var{kflag} keyword expansion.  See
17151 @ref{Modos de substituição}.
17152
17153 @c <en>@item -l
17154 @item -l
17155 @c <en>Local; run only in current working directory.  @xref{Recursive behavior}.
17156 Local; run only in current working directory.  @xref{Comportamento recursivo}.
17157
17158 @c <en>@item -N
17159 @item -N
17160 @c <en>Don't ``shorten'' module paths if -d specified.  See
17161 @c <en>@ref{export options}.
17162 Don't ``shorten'' module paths if -d specified.  See
17163 @ref{export options}.
17164
17165 @c <en>@item -n
17166 @item -n
17167 @c <en>Do not run module program (if any).  See @ref{export options}.
17168 Do not run module program (if any).  See @ref{export options}.
17169
17170 @c <en>@item -R
17171 @item -R
17172 @c <en>Operate recursively (default).  @xref{Recursive
17173 @c <en>behavior}.
17174 Operate recursively (default).  @xref{Comportamento recursivo}.
17175
17176 @c <en>@item -r @var{tag}
17177 @item -r @var{tag}
17178 @c <en>Checkout revision @var{tag}.  See @ref{Common options}.
17179 Checkout revision @var{tag}.  See @ref{Opções comuns}.
17180 @end table
17181
17182 @c ------------------------------------------------------------
17183 @c <en>@item history [@var{options}] [@var{files}@dots{}]
17184 @item history [@var{options}] [@var{files}@dots{}]
17185 @c <en>Show repository access history.  See @ref{history}.
17186 Show repository access history.  See @ref{history}.
17187
17188 @table @code
17189 @c <en>@item -a
17190 @item -a
17191 @c <en>All users (default is self).  See @ref{history options}.
17192 All users (default is self).  See @ref{history options}.
17193
17194 @c <en>@item -b @var{str}
17195 @item -b @var{str}
17196 @c <en>Back to record with @var{str} in module/file/repos
17197 @c <en>field.  See @ref{history options}.
17198 Back to record with @var{str} in module/file/repos
17199 field.  See @ref{history options}.
17200
17201 @c <en>@item -c
17202 @item -c
17203 @c <en>Report on committed (modified) files.  See @ref{history options}.
17204 Report on committed (modified) files.  See @ref{history options}.
17205
17206 @c <en>@item -D @var{date}
17207 @item -D @var{date}
17208 @c <en>Since @var{date}.  See @ref{history options}.
17209 Since @var{date}.  See @ref{history options}.
17210
17211 @c <en>@item -e
17212 @item -e
17213 @c <en>Report on all record types.  See @ref{history options}.
17214 Report on all record types.  See @ref{history options}.
17215
17216 @c <en>@item -l
17217 @item -l
17218 @c <en>Last modified (committed or modified report).  See @ref{history options}.
17219 Last modified (committed or modified report).  See @ref{history options}.
17220
17221 @c <en>@item -m @var{module}
17222 @item -m @var{module}
17223 @c <en>Report on @var{module} (repeatable).  See @ref{history options}.
17224 Report on @var{module} (repeatable).  See @ref{history options}.
17225
17226 @c <en>@item -n @var{module}
17227 @item -n @var{module}
17228 @c <en>In @var{module}.  See @ref{history options}.
17229 In @var{module}.  See @ref{history options}.
17230
17231 @c <en>@item -o
17232 @item -o
17233 @c <en>Report on checked out modules.  See @ref{history options}.
17234 Report on checked out modules.  See @ref{history options}.
17235
17236 @c <en>@item -p @var{repository}
17237 @item -p @var{repository}
17238 @c <en>In @var{repository}.  See @ref{history options}.
17239 In @var{repository}.  See @ref{history options}.
17240
17241 @c <en>@item -r @var{rev}
17242 @item -r @var{rev}
17243 @c <en>Since revision @var{rev}.  See @ref{history options}.
17244 Since revision @var{rev}.  See @ref{history options}.
17245
17246 @c <en>@item -T
17247 @item -T
17248 @c What the @#$@# is a TAG?  Same as a tag?  This
17249 @c wording is also in the online-line help.
17250 @c <en>Produce report on all TAGs.  See @ref{history options}.
17251 Produce report on all TAGs.  See @ref{history options}.
17252
17253 @c <en>@item -t @var{tag}
17254 @item -t @var{tag}
17255 @c <en>Since tag record placed in history file (by anyone).
17256 @c <en>See @ref{history options}.
17257 Since tag record placed in history file (by anyone).
17258 See @ref{history options}.
17259
17260 @c <en>@item -u @var{user}
17261 @item -u @var{user}
17262 @c <en>For user @var{user} (repeatable).  See @ref{history options}.
17263 For user @var{user} (repeatable).  See @ref{history options}.
17264
17265 @c <en>@item -w
17266 @item -w
17267 @c <en>Working directory must match.  See @ref{history options}.
17268 Working directory must match.  See @ref{history options}.
17269
17270 @c <en>@item -x @var{types}
17271 @item -x @var{types}
17272 @c <en>Report on @var{types}, one or more of
17273 @c <en>@code{TOEFWUPCGMAR}.  See @ref{history options}.
17274 Report on @var{types}, one or more of
17275 @code{TOEFWUPCGMAR}.  See @ref{history options}.
17276
17277 @c <en>@item -z @var{zone}
17278 @item -z @var{zone}
17279 @c <en>Output for time zone @var{zone}.  See @ref{history options}.
17280 Output for time zone @var{zone}.  See @ref{history options}.
17281 @end table
17282
17283 @c ------------------------------------------------------------
17284 @c <en>@item import [@var{options}] @var{repository} @var{vendor-tag} @var{release-tags}@dots{}
17285 @item import [@var{options}] @var{repository} @var{vendor-tag} @var{release-tags}@dots{}
17286 @c <en>Import files into @sc{cvs}, using vendor branches.  See
17287 @c <en>@ref{import}.
17288 Import files into @sc{cvs}, using vendor branches.  See
17289 @ref{import}.
17290
17291 @table @code
17292 @c <en>@item -b @var{bra}
17293 @item -b @var{bra}
17294 @c <en>Import to vendor branch @var{bra}.  See
17295 @c <en>@ref{Multiple vendor branches}.
17296 Import to vendor branch @var{bra}.  See
17297 @ref{Ramos de fornecedor múltiplos}.
17298
17299 @c <en>@item -d
17300 @item -d
17301 @c <en>Use the file's modification time as the time of
17302 @c <en>import.  See @ref{import options}.
17303 Use the file's modification time as the time of
17304 import.  See @ref{import options}.
17305
17306 @c <en>@item -k @var{kflag}
17307 @item -k @var{kflag}
17308 @c <en>Set default keyword substitution mode.  See
17309 @c <en>@ref{import options}.
17310 Set default keyword substitution mode.  See
17311 @ref{import options}.
17312
17313 @c <en>@item -m @var{msg}
17314 @item -m @var{msg}
17315 @c <en>Use @var{msg} for log message.  See
17316 @c <en>@ref{import options}.
17317 Use @var{msg} for log message.  See
17318 @ref{import options}.
17319
17320 @c <en>@item -I @var{ign}
17321 @item -I @var{ign}
17322 @c <en>More files to ignore (! to reset).  See
17323 @c <en>@ref{import options}.
17324 More files to ignore (! to reset).  See
17325 @ref{import options}.
17326
17327 @c <en>@item -W @var{spec}
17328 @item -W @var{spec}
17329 @c <en>More wrappers.  See @ref{import options}.
17330 More wrappers.  See @ref{import options}.
17331 @end table
17332
17333 @c ------------------------------------------------------------
17334 @c <en>@item init
17335 @item init
17336 @c <en>Create a @sc{cvs} repository if it doesn't exist.  See
17337 @c <en>@ref{Creating a repository}.
17338 Create a @sc{cvs} repository if it doesn't exist.  See
17339 @ref{Criando um repositório}.
17340
17341 @c ------------------------------------------------------------
17342 @c <en>@item kserver
17343 @item kserver
17344 @c <en>Kerberos authenticated server.
17345 @c <en>See @ref{Kerberos authenticated}.
17346 Kerberos authenticated server.
17347 See @ref{Autenticação kerberos}.
17348
17349 @c ------------------------------------------------------------
17350 @c <en>@item log [@var{options}] [@var{files}@dots{}]
17351 @item log [@var{options}] [@var{files}@dots{}]
17352 @c <en>Print out history information for files.  See @ref{log}.
17353 Print out history information for files.  See @ref{log}.
17354
17355 @table @code
17356 @c <en>@item -b
17357 @item -b
17358 @c <en>Only list revisions on the default branch.  See @ref{log options}.
17359 Only list revisions on the default branch.  See @ref{log options}.
17360
17361 @c <en>@item -d @var{dates}
17362 @item -d @var{dates}
17363 @c <en>Specify dates (@var{d1}<@var{d2} for range, @var{d} for
17364 @c <en>latest before).  See @ref{log options}.
17365 Specify dates (@var{d1}<@var{d2} for range, @var{d} for
17366 latest before).  See @ref{log options}.
17367
17368 @c <en>@item -h
17369 @item -h
17370 @c <en>Only print header.  See @ref{log options}.
17371 Only print header.  See @ref{log options}.
17372
17373 @c <en>@item -l
17374 @item -l
17375 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17376 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17377
17378 @c <en>@item -N
17379 @item -N
17380 @c <en>Do not list tags.  See @ref{log options}.
17381 Do not list tags.  See @ref{log options}.
17382
17383 @c <en>@item -R
17384 @item -R
17385 @c <en>Only print name of RCS file.  See @ref{log options}.
17386 Only print name of RCS file.  See @ref{log options}.
17387
17388 @c <en>@item -r@var{revs}
17389 @item -r@var{revs}
17390 @c <en>Only list revisions @var{revs}.  See @ref{log options}.
17391 Only list revisions @var{revs}.  See @ref{log options}.
17392
17393 @c <en>@item -s @var{states}
17394 @item -s @var{states}
17395 @c <en>Only list revisions with specified states.  See @ref{log options}.
17396 Only list revisions with specified states.  See @ref{log options}.
17397
17398 @c <en>@item -t
17399 @item -t
17400 @c <en>Only print header and descriptive text.  See @ref{log
17401 @c <en>options}.
17402 Only print header and descriptive text.  See @ref{log
17403 options}.
17404
17405 @c <en>@item -w@var{logins}
17406 @item -w@var{logins}
17407 @c <en>Only list revisions checked in by specified logins.  See @ref{log options}.
17408 Only list revisions checked in by specified logins.  See @ref{log options}.
17409 @end table
17410
17411 @c ------------------------------------------------------------
17412 @c <en>@item login
17413 @item login
17414 @c <en>Prompt for password for authenticating server.  See
17415 @c <en>@ref{Password authentication client}.
17416 Pede por uma senha para o servidor de autenticação.  Veja em
17417 @ref{Cliente de autenticação por senha}.
17418
17419 @c ------------------------------------------------------------
17420 @c <en>@item logout
17421 @item logout
17422 @c <en>Remove stored password for authenticating server.  See
17423 @c <en>@ref{Password authentication client}.
17424 Remove senhas armazenadas para a autenticação no servidor.  Veja em
17425 @ref{Cliente de autenticação por senha}.
17426
17427 @c ------------------------------------------------------------
17428 @c <en>@item pserver
17429 @item pserver
17430 @c <en>Password authenticated server.
17431 @c <en>See @ref{Password authentication server}.
17432 Password authenticated server.
17433 See @ref{Servidor de autenticação por senha}.
17434
17435 @c ------------------------------------------------------------
17436 @c <en>@item rannotate [@var{options}] [@var{modules}@dots{}]
17437 @item rannotate [@var{options}] [@var{modules}@dots{}]
17438 @c <en>Show last revision where each line was modified.  See
17439 @c <en>@ref{annotate}.
17440 Show last revision where each line was modified.  See
17441 @ref{annotate}.
17442
17443 @table @code
17444 @c <en>@item -D @var{date}
17445 @item -D @var{date}
17446 @c <en>Annotate the most recent revision no later than
17447 @c <en>@var{date}.  See @ref{Common options}.
17448 Annotate the most recent revision no later than
17449 @var{date}.  See @ref{Opções comuns}.
17450
17451 @c <en>@item -F
17452 @item -F
17453 @c <en>Force annotation of binary files.  (Without this option,
17454 @c <en>binary files are skipped with a message.)
17455 Force annotation of binary files.  (Without this option,
17456 binary files are skipped with a message.)
17457
17458 @c <en>@item -f
17459 @item -f
17460 @c <en>Use head revision if tag/date not found.  See
17461 @c <en>@ref{Common options}.
17462 Use head revision if tag/date not found.  See
17463 @ref{Opções comuns}.
17464
17465 @c <en>@item -l
17466 @item -l
17467 @c <en>Local; run only in current working directory.  @xref{Recursive behavior}.
17468 Local; run only in current working directory.  @xref{Comportamento recursivo}.
17469
17470 @c <en>@item -R
17471 @item -R
17472 @c <en>Operate recursively (default).  @xref{Recursive behavior}.
17473 Operate recursively (default).  @xref{Comportamento recursivo}.
17474
17475 @c <en>@item -r @var{tag}
17476 @item -r @var{tag}
17477 @c <en>Annotate revision @var{tag}.  See @ref{Common options}.
17478 Annotate revision @var{tag}.  See @ref{Opções comuns}.
17479 @end table
17480
17481 @c ------------------------------------------------------------
17482 @c <en>@item rdiff [@var{options}] @var{modules}@dots{}
17483 @item rdiff [@var{options}] @var{modules}@dots{}
17484 @c <en>Show differences between releases.  See @ref{rdiff}.
17485 Show differences between releases.  See @ref{rdiff}.
17486
17487 @table @code
17488 @c <en>@item -c
17489 @item -c
17490 @c <en>Context diff output format (default).  See @ref{rdiff options}.
17491 Context diff output format (default).  See @ref{rdiff options}.
17492
17493 @c <en>@item -D @var{date}
17494 @item -D @var{date}
17495 @c <en>Select revisions based on @var{date}.  See @ref{Common options}.
17496 Select revisions based on @var{date}.  See @ref{Opções comuns}.
17497
17498 @c <en>@item -f
17499 @item -f
17500 @c <en>Use head revision if tag/date not found.  See
17501 @c <en>@ref{Common options}.
17502 Use head revision if tag/date not found.  See
17503 @ref{Opções comuns}.
17504
17505 @c <en>@item -l
17506 @item -l
17507 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17508 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17509
17510 @c <en>@item -R
17511 @item -R
17512 @c <en>Operate recursively (default).  @xref{Recursive
17513 @c <en>behavior}.
17514 Operate recursively (default).  @xref{Comportamento recursivo}.
17515
17516 @c <en>@item -r @var{rev}
17517 @item -r @var{rev}
17518 @c <en>Select revisions based on @var{rev}.  See @ref{Common options}.
17519 Select revisions based on @var{rev}.  See @ref{Opções comuns}.
17520
17521 @c <en>@item -s
17522 @item -s
17523 @c <en>Short patch - one liner per file.  See @ref{rdiff options}.
17524 Short patch - one liner per file.  See @ref{rdiff options}.
17525
17526 @c <en>@item -t
17527 @item -t
17528 @c <en>Top two diffs - last change made to the file.  See
17529 @c <en>@ref{diff options}.
17530 Top two diffs - last change made to the file.  See
17531 @ref{diff options}.
17532
17533 @c <en>@item -u
17534 @item -u
17535 @c <en>Unidiff output format.  See @ref{rdiff options}.
17536 Unidiff output format.  See @ref{rdiff options}.
17537
17538 @c <en>@item -V @var{vers}
17539 @item -V @var{vers}
17540 @c <en>Use RCS Version @var{vers} for keyword expansion (obsolete).  See
17541 @c <en>@ref{rdiff options}.
17542 Use RCS Version @var{vers} for keyword expansion (obsolete).  See
17543 @ref{rdiff options}.
17544 @end table
17545
17546 @c ------------------------------------------------------------
17547 @c <en>@item release [@var{options}] @var{directory}
17548 @item release [@var{options}] @var{directory}
17549 @c <en>Indicate that a directory is no longer in use.  See
17550 @c <en>@ref{release}.
17551 Indicate that a directory is no longer in use.  See
17552 @ref{release}.
17553
17554 @table @code
17555 @c <en>@item -d
17556 @item -d
17557 @c <en>Delete the given directory.  See @ref{release options}.
17558 Delete the given directory.  See @ref{release options}.
17559 @end table
17560
17561 @c ------------------------------------------------------------
17562 @c <en>@item remove [@var{options}] [@var{files}@dots{}]
17563 @item remove [@var{options}] [@var{files}@dots{}]
17564 @c <en>Remove an entry from the repository.  See @ref{Removing files}.
17565 Remove an entry from the repository.  See @ref{Removendo arquivos}.
17566
17567 @table @code
17568 @c <en>@item -f
17569 @item -f
17570 @c <en>Delete the file before removing it.  See @ref{Removing files}.
17571 Delete the file before removing it.  See @ref{Removendo arquivos}.
17572
17573 @c <en>@item -l
17574 @item -l
17575 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17576 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17577
17578 @c <en>@item -R
17579 @item -R
17580 @c <en>Operate recursively (default).  @xref{Recursive
17581 @c <en>behavior}.
17582 Operate recursively (default).  @xref{Comportamento recursivo}.
17583 @end table
17584
17585 @c ------------------------------------------------------------
17586 @c <en>@item rlog [@var{options}] [@var{files}@dots{}]
17587 @item rlog [@var{options}] [@var{files}@dots{}]
17588 @c <en>Print out history information for modules.  See @ref{log}.
17589 Print out history information for modules.  See @ref{log}.
17590
17591 @table @code
17592 @c <en>@item -b
17593 @item -b
17594 @c <en>Only list revisions on the default branch.  See @ref{log options}.
17595 Only list revisions on the default branch.  See @ref{log options}.
17596
17597 @c <en>@item -d @var{dates}
17598 @item -d @var{dates}
17599 @c <en>Specify dates (@var{d1}<@var{d2} for range, @var{d} for
17600 @c <en>latest before).  See @ref{log options}.
17601 Specify dates (@var{d1}<@var{d2} for range, @var{d} for
17602 latest before).  See @ref{log options}.
17603
17604 @c <en>@item -h
17605 @item -h
17606 @c <en>Only print header.  See @ref{log options}.
17607 Only print header.  See @ref{log options}.
17608
17609 @c <en>@item -l
17610 @item -l
17611 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17612 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17613
17614 @c <en>@item -N
17615 @item -N
17616 @c <en>Do not list tags.  See @ref{log options}.
17617 Do not list tags.  See @ref{log options}.
17618
17619 @c <en>@item -R
17620 @item -R
17621 @c <en>Only print name of RCS file.  See @ref{log options}.
17622 Only print name of RCS file.  See @ref{log options}.
17623
17624 @c <en>@item -r@var{revs}
17625 @item -r@var{revs}
17626 @c <en>Only list revisions @var{revs}.  See @ref{log options}.
17627 Only list revisions @var{revs}.  See @ref{log options}.
17628
17629 @c <en>@item -s @var{states}
17630 @item -s @var{states}
17631 @c <en>Only list revisions with specified states.  See @ref{log options}.
17632 Only list revisions with specified states.  See @ref{log options}.
17633
17634 @c <en>@item -t
17635 @item -t
17636 @c <en>Only print header and descriptive text.  See @ref{log options}.
17637 Only print header and descriptive text.  See @ref{log options}.
17638
17639 @c <en>@item -w@var{logins}
17640 @item -w@var{logins}
17641 @c <en>Only list revisions checked in by specified logins.  See @ref{log options}.
17642 Only list revisions checked in by specified logins.  See @ref{log options}.
17643 @end table
17644
17645 @c ------------------------------------------------------------
17646 @c <en>@item rtag [@var{options}] @var{tag} @var{modules}@dots{}
17647 @item rtag [@var{options}] @var{tag} @var{modules}@dots{}
17648 @c <en>Add a symbolic tag to a module.
17649 @c <en>See @ref{Revisions} and @ref{Branching and merging}.
17650 Add a symbolic tag to a module.
17651 See @ref{Revisões} and @ref{Ramificando e mesclando}.
17652
17653 @table @code
17654 @c <en>@item -a
17655 @item -a
17656 @c <en>Clear tag from removed files that would not otherwise
17657 @c <en>be tagged.  See @ref{Tagging add/remove}.
17658 Clear tag from removed files that would not otherwise
17659 be tagged.  See @ref{Etiquetando adicionados/removidos}.
17660
17661 @c <en>@item -b
17662 @item -b
17663 @c <en>Create a branch named @var{tag}.  See @ref{Branching and merging}.
17664 Create a branch named @var{tag}.  See @ref{Ramificando e mesclando}.
17665
17666 @c <en>@item -B
17667 @item -B
17668 @c <en>Used in conjunction with -F or -d, enables movement and deletion of
17669 @c <en>branch tags.  Use with extreme caution. 
17670 Used in conjunction with -F or -d, enables movement and deletion of
17671 branch tags.  Use with extreme caution. 
17672
17673 @c <en>@item -D @var{date}
17674 @item -D @var{date}
17675 @c <en>Tag revisions as of @var{date}.  See @ref{Tagging by date/tag}.
17676 Tag revisions as of @var{date}.  See @ref{Etiquetando por data/etiqueta}.
17677
17678 @c <en>@item -d
17679 @item -d
17680 @c <en>Delete @var{tag}.  See @ref{Modifying tags}.
17681 Delete @var{tag}.  See @ref{Modificando etiquetas}.
17682
17683 @c <en>@item -F
17684 @item -F
17685 @c <en>Move @var{tag} if it already exists.  See @ref{Modifying tags}.
17686 Move @var{tag} if it already exists.  See @ref{Modificando etiquetas}.
17687
17688 @c <en>@item -f
17689 @item -f
17690 @c <en>Force a head revision match if tag/date not found.
17691 @c <en>See @ref{Tagging by date/tag}.
17692 Force a head revision match if tag/date not found.
17693 See @ref{Etiquetando por data/etiqueta}.
17694
17695 @c <en>@item -l
17696 @item -l
17697 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17698 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17699
17700 @c <en>@item -n
17701 @item -n
17702 @c <en>No execution of tag program.  See @ref{Common options}.
17703 No execution of tag program.  See @ref{Opções comuns}.
17704
17705 @c <en>@item -R
17706 @item -R
17707 @c <en>Operate recursively (default).  @xref{Recursive
17708 @c <en>behavior}.
17709 Operate recursively (default).  @xref{Comportamento recursivo}.
17710
17711 @c <en>@item -r @var{rev}
17712 @item -r @var{rev}
17713 @c <en>Tag existing tag @var{rev}.  See @ref{Tagging by date/tag}.
17714 Tag existing tag @var{rev}.  See @ref{Etiquetando por data/etiqueta}.
17715 @end table
17716
17717 @c ------------------------------------------------------------
17718 @c <en>@item server
17719 @item server
17720 @c <en>Rsh server.  See @ref{Connecting via rsh}.
17721 Rsh server.  See @ref{Se conectando via rsh}.
17722
17723 @c ------------------------------------------------------------
17724 @c <en>@item status [@var{options}] @var{files}@dots{}
17725 @item status [@var{options}] @var{files}@dots{}
17726 @c <en>Display status information in a working directory.  See
17727 @c <en>@ref{File status}.
17728 Display status information in a working directory.  See
17729 @ref{Estado de arquivo}.
17730
17731 @table @code
17732 @c <en>@item -l
17733 @item -l
17734 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17735 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17736
17737 @c <en>@item -R
17738 @item -R
17739 @c <en>Operate recursively (default).  @xref{Recursive
17740 @c <en>behavior}.
17741 Operate recursively (default).  @xref{Comportamento recursivo}.
17742
17743 @c <en>@item -v
17744 @item -v
17745 @c <en>Include tag information for file.  See @ref{Tags}.
17746 Include tag information for file.  See @ref{Etiquetas}.
17747 @end table
17748
17749 @c ------------------------------------------------------------
17750 @c <en>@item tag [@var{options}] @var{tag} [@var{files}@dots{}]
17751 @item tag [@var{options}] @var{tag} [@var{files}@dots{}]
17752 @c <en>Add a symbolic tag to checked out version of files.
17753 @c <en>See @ref{Revisions} and @ref{Branching and merging}.
17754 Add a symbolic tag to checked out version of files.
17755 See @ref{Revisões} and @ref{Ramificando e mesclando}.
17756
17757 @table @code
17758 @c <en>@item -b
17759 @item -b
17760 @c <en>Create a branch named @var{tag}.  See @ref{Branching and merging}.
17761 Create a branch named @var{tag}.  See @ref{Ramificando e mesclando}.
17762
17763 @c <en>@item -c
17764 @item -c
17765 @c <en>Check that working files are unmodified.  See
17766 @c <en>@ref{Tagging the working directory}.
17767 Check that working files are unmodified.  See
17768 @ref{Etiquetando o diretório de trabalho}.
17769
17770 @c <en>@item -D @var{date}
17771 @item -D @var{date}
17772 @c <en>Tag revisions as of @var{date}.  See @ref{Tagging by date/tag}.
17773 Tag revisions as of @var{date}.  See @ref{Etiquetando por data/etiqueta}.
17774
17775 @c <en>@item -d
17776 @item -d
17777 @c <en>Delete @var{tag}.  See @ref{Modifying tags}.
17778 Delete @var{tag}.  See @ref{Modificando etiquetas}.
17779
17780 @c <en>@item -F
17781 @item -F
17782 @c <en>Move @var{tag} if it already exists.  See @ref{Modifying tags}.
17783 Move @var{tag} if it already exists.  See @ref{Modificando etiquetas}.
17784
17785 @c <en>@item -f
17786 @item -f
17787 @c <en>Force a head revision match if tag/date not found.
17788 @c <en>See @ref{Tagging by date/tag}.
17789 Force a head revision match if tag/date not found.
17790 See @ref{Etiquetando por data/etiqueta}.
17791
17792 @c <en>@item -l
17793 @item -l
17794 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17795 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17796
17797 @c <en>@item -R
17798 @item -R
17799 @c <en>Operate recursively (default).  @xref{Recursive
17800 @c <en>behavior}.
17801 Operate recursively (default).  @xref{Comportamento recursivo}.
17802
17803 @c <en>@item -r @var{rev}
17804 @item -r @var{rev}
17805 @c <en>Tag existing tag @var{rev}.  See @ref{Tagging by date/tag}.
17806 Tag existing tag @var{rev}.  See @ref{Etiquetando por data/etiqueta}.
17807 @end table
17808
17809 @c ------------------------------------------------------------
17810 @c <en>@item unedit [@var{options}] [@var{files}@dots{}]
17811 @item unedit [@var{options}] [@var{files}@dots{}]
17812 @c <en>Undo an edit command.  See @ref{Editing files}.
17813 Undo an edit command.  See @ref{Editando arquivos}.
17814
17815 @table @code
17816 @c <en>@item -l
17817 @item -l
17818 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17819 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17820
17821 @c <en>@item -R
17822 @item -R
17823 @c <en>Operate recursively (default).  @xref{Recursive behavior}.
17824 Operate recursively (default).  @xref{Comportamento recursivo}.
17825 @end table
17826
17827 @c ------------------------------------------------------------
17828 @c <en>@item update [@var{options}] [@var{files}@dots{}]
17829 @item update [@var{options}] [@var{files}@dots{}]
17830 @c <en>Bring work tree in sync with repository.  See
17831 @c <en>@ref{update}.
17832 Bring work tree in sync with repository.  See
17833 @ref{update}.
17834
17835 @table @code
17836 @c <en>@item -A
17837 @item -A
17838 @c <en>Reset any sticky tags/date/options.  See @ref{Sticky
17839 @c <en>tags} and @ref{Keyword substitution}.
17840 Reset any sticky tags/date/options.  See
17841 @ref{Etiquetas adesivas} and @ref{Substituição de palavra-chave}.
17842
17843 @c <en>@item -C
17844 @item -C
17845 @c <en>Overwrite locally modified files with clean copies from
17846 @c <en>the repository (the modified file is saved in
17847 @c <en>@file{.#@var{file}.@var{revision}}, however).
17848 Overwrite locally modified files with clean copies from
17849 the repository (the modified file is saved in
17850 @file{.#@var{file}.@var{revision}}, however).
17851
17852 @c <en>@item -D @var{date}
17853 @item -D @var{date}
17854 @c <en>Check out revisions as of @var{date} (is sticky).  See
17855 @c <en>@ref{Common options}.
17856 Check out revisions as of @var{date} (is sticky).  See
17857 @ref{Opções comuns}.
17858
17859 @c <en>@item -d
17860 @item -d
17861 @c <en>Create directories.  See @ref{update options}.
17862 Create directories.  See @ref{update options}.
17863
17864 @c <en>@item -f
17865 @item -f
17866 @c <en>Use head revision if tag/date not found.  See
17867 @c <en>@ref{Common options}.
17868 Use head revision if tag/date not found.  See
17869 @ref{Opções comuns}.
17870
17871 @c <en>@item -I @var{ign}
17872 @item -I @var{ign}
17873 @c <en>More files to ignore (! to reset).  See
17874 @c <en>@ref{import options}.
17875 More files to ignore (! to reset).  See
17876 @ref{import options}.
17877
17878 @c Probably want to use rev1/rev2 style like for diff
17879 @c -r.  Here and in on-line help.
17880 @c <en>@item -j @var{rev}
17881 @item -j @var{rev}
17882 @c <en>Merge in changes.  See @ref{update options}.
17883 Merge in changes.  See @ref{update options}.
17884
17885 @c <en>@item -k @var{kflag}
17886 @item -k @var{kflag}
17887 @c <en>Use @var{kflag} keyword expansion.  See
17888 @c <en>@ref{Substitution modes}.
17889 Use @var{kflag} keyword expansion.  See
17890 @ref{Modos de substituição}.
17891
17892 @c <en>@item -l
17893 @item -l
17894 @c <en>Local; run only in current working directory.  @xref{Recursive behavior}.
17895 Local; run only in current working directory.  @xref{Comportamento recursivo}.
17896
17897 @c <en>@item -P
17898 @item -P
17899 @c <en>Prune empty directories.  See @ref{Moving directories}.
17900 Prune empty directories.  See @ref{Movendo diretórios}.
17901
17902 @c <en>@item -p
17903 @item -p
17904 @c <en>Check out files to standard output (avoids
17905 @c <en>stickiness).  See @ref{update options}.
17906 Check out files to standard output (avoids
17907 stickiness).  See @ref{update options}.
17908
17909 @c <en>@item -R
17910 @item -R
17911 @c <en>Operate recursively (default).  @xref{Recursive
17912 @c <en>behavior}.
17913 Operate recursively (default).  @xref{Comportamento recursivo}.
17914
17915 @c <en>@item -r @var{tag}
17916 @item -r @var{tag}
17917 @c <en>Checkout revision @var{tag} (is sticky).  See @ref{Common options}.
17918 Checkout revision @var{tag} (is sticky).  See @ref{Opções comuns}.
17919
17920 @c <en>@item -W @var{spec}
17921 @item -W @var{spec}
17922 @c <en>More wrappers.  See @ref{import options}.
17923 More wrappers.  See @ref{import options}.
17924 @end table
17925
17926 @c ------------------------------------------------------------
17927 @c <en>@item version
17928 @item version
17929 @c <en>@cindex version (subcommand)
17930 @cindex version (subcommand)
17931
17932 @c <en>Display the version of @sc{cvs} being used.  If the repository
17933 @c <en>is remote, display both the client and server versions.
17934 Display the version of @sc{cvs} being used.  If the repository
17935 is remote, display both the client and server versions.
17936
17937 @c ------------------------------------------------------------
17938 @c <en>@item watch [on|off|add|remove] [@var{options}] [@var{files}@dots{}]
17939 @item watch [on|off|add|remove] [@var{options}] [@var{files}@dots{}]
17940
17941 @c <en>on/off: turn on/off read-only checkouts of files.  See
17942 @c <en>@ref{Setting a watch}.
17943 on/off: turn on/off read-only checkouts of files.  See
17944 @ref{Ajustando um ???watch???}.
17945
17946 @c <en>add/remove: add or remove notification on actions.  See
17947 @c <en>@ref{Getting Notified}.
17948 add/remove: add or remove notification on actions.  See
17949 @ref{Recebendo Notificações}.
17950
17951 @table @code
17952 @c <en>@item -a @var{actions}
17953 @item -a @var{actions}
17954 @c <en>Specify actions for temporary watch, where
17955 @c <en>@var{actions} is @code{edit}, @code{unedit},
17956 @c <en>@code{commit}, @code{all}, or @code{none}.  See
17957 @c <en>@ref{Editing files}.
17958 Specify actions for temporary watch, where
17959 @var{actions} is @code{edit}, @code{unedit},
17960 @code{commit}, @code{all}, or @code{none}.  See
17961 @ref{Editando arquivos}.
17962
17963 @c <en>@item -l
17964 @item -l
17965 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17966 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17967
17968 @c <en>@item -R
17969 @item -R
17970 @c <en>Operate recursively (default).  @xref{Recursive
17971 @c <en>behavior}.
17972 Operate recursively (default).  @xref{Comportamento recursivo}.
17973 @end table
17974
17975 @c ------------------------------------------------------------
17976 @c <en>@item watchers [@var{options}] [@var{files}@dots{}]
17977 @item watchers [@var{options}] [@var{files}@dots{}]
17978 @c <en>See who is watching a file.  See @ref{Watch information}.
17979 See who is watching a file.  See @ref{Informações de ???Watch???}.
17980
17981 @table @code
17982 @c <en>@item -l
17983 @item -l
17984 @c <en>Local; run only in current working directory.  See @ref{Recursive behavior}.
17985 Local; run only in current working directory.  See @ref{Comportamento recursivo}.
17986
17987 @c <en>@item -R
17988 @item -R
17989 @c <en>Operate recursively (default).  @xref{Recursive
17990 @c <en>behavior}.
17991 Operate recursively (default).  @xref{Comportamento recursivo}.
17992 @end table
17993
17994 @end table
17995
17996 @c ---------------------------------------------------------------------
17997 @c <en>@node Administrative files
17998 @node Arquivos administrativos
17999 @c <en>@appendix Reference manual for Administrative files
18000 @appendix Manual de referência para Arquivos administrativos
18001 @c <en>@cindex Administrative files (reference)
18002 @cindex Arquivos administrativos (referência)
18003 @c <en>@cindex Files, reference manual
18004 @cindex Files, reference manual
18005 @c <en>@cindex Reference manual (files)
18006 @cindex Reference manual (files)
18007 @c <en>@cindex CVSROOT (file)
18008 @cindex CVSROOT (file)
18009
18010 @c FIXME?  Somewhere there needs to be a more "how-to"
18011 @c guide to writing these.  I think the triggers
18012 @c (commitinfo, loginfo, taginfo, &c) are perhaps a
18013 @c different case than files like modules.  One
18014 @c particular issue that people sometimes are
18015 @c (unnecessarily?) worried about is performance, and
18016 @c the impact of writing in perl or sh or ____.
18017 @c <en>Inside the repository, in the directory
18018 @c <en>@file{$CVSROOT/CVSROOT}, there are a number of
18019 @c <en>supportive files for @sc{cvs}.  You can use @sc{cvs} in a limited
18020 @c <en>fashion without any of them, but if they are set up
18021 @c <en>properly they can help make life easier.  For a
18022 @c <en>discussion of how to edit them, see @ref{Intro
18023 @c <en>administrative files}.
18024 Dentro do repositório, no diretório
18025 @file{$CVSROOT/CVSROOT}, existem vários arquivos de
18026 suporte para o @sc{cvs}.  Você pode usar o @sc{cvs} de
18027 uma forma limitada sem se aproveitar deles, mas se eles
18028 estiverem ajustados corretamente eles podem facilitar
18029 muito seu trabalho.  Para uma discussão sobre como
18030 editá-los, veja em @ref{Intro aos arquivos administrativos}.
18031
18032 @c <en>The most important of these files is the @file{modules}
18033 @c <en>file, which defines the modules inside the repository.
18034 O mais importante destes arquivos é o arquivo
18035 @file{modules}, que define os módulos dentro do repositório.
18036
18037 @menu
18038 @c <en>* modules::                     Defining modules
18039 * modules::                     Definindo módulos
18040 @c <en>* Wrappers::                    Specify binary-ness based on file name
18041 * Wrappers::                    Specify binary-ness based on file name
18042 @c <en>* commit files::                The commit support files (commitinfo,
18043 @c <en>                                verifymsg, loginfo)
18044 * Arquivos de ???commit???::    Os arquivos de suporte a commit (commitinfo,
18045                                 verifymsg, loginfo)
18046 @c <en>* taginfo::                     Verifying/Logging tags
18047 * taginfo::                     Verifcando/Registrando etiquetas
18048 @c <en>* rcsinfo::                     Templates for the log messages
18049 * rcsinfo::                     Templates for the log messages
18050 @c <en>* cvsignore::                   Ignoring files via cvsignore
18051 * cvsignore::                   Ignoring files via cvsignore
18052 @c <en>* checkoutlist::                Adding your own administrative files
18053 * checkoutlist::                Adding your own administrative files
18054 @c <en>* history file::                History information
18055 * arquivo history (histórico)::                History information
18056 @c <en>* Variables::                   Various variables are expanded
18057 * Variables::                   Various variables are expanded
18058 @c <en>* config::                      Miscellaneous CVS configuration
18059 * config::                      Miscellaneous CVS configuration
18060 @end menu
18061
18062 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
18063 @c <en>@node modules
18064 @node modules
18065 @c <en>@appendixsec The modules file
18066 @appendixsec O arquivo modules
18067 @c <en>@cindex Modules (admin file)
18068 @cindex Modules (arquivo administrativo)
18069 @c <en>@cindex Defining modules (reference manual)
18070 @cindex Definindo módulos (manual de referência)
18071
18072 @c <en>The @file{modules} file records your definitions of
18073 @c <en>names for collections of source code.  @sc{cvs} will
18074 @c <en>use these definitions if you use @sc{cvs} to update the
18075 @c <en>modules file (use normal commands like @code{add},
18076 @c <en>@code{commit}, etc).
18077 O arquivo @file{modules} registra suas definições de
18078 nomes para coleções de código fonte.  @sc{cvs} vai usar
18079 estas definições se você usar o @sc{cvs} para atualizar
18080 o arquivo modules (use comandos normais, como @code{add},
18081 @code{commit}, etc).
18082
18083 @c <en>The @file{modules} file may contain blank lines and
18084 @c <en>comments (lines beginning with @samp{#}) as well as
18085 @c <en>module definitions.  Long lines can be continued on the
18086 @c <en>next line by specifying a backslash (@samp{\}) as the
18087 @c <en>last character on the line.
18088 The @file{modules} file may contain blank lines and
18089 comments (lines beginning with @samp{#}) as well as
18090 module definitions.  Long lines can be continued on the
18091 next line by specifying a backslash (@samp{\}) as the
18092 last character on the line.
18093
18094 @c <en>There are three basic types of modules: alias modules,
18095 @c <en>regular modules, and ampersand modules.  The difference
18096 @c <en>between them is the way that they map files in the
18097 @c <en>repository to files in the working directory.  In all
18098 @c <en>of the following examples, the top-level repository
18099 @c <en>contains a directory called @file{first-dir}, which
18100 @c <en>contains two files, @file{file1} and @file{file2}, and a
18101 @c <en>directory @file{sdir}.  @file{first-dir/sdir} contains
18102 @c <en>a file @file{sfile}.
18103 There are three basic types of modules: alias modules,
18104 regular modules, and ampersand modules.  The difference
18105 between them is the way that they map files in the
18106 repository to files in the working directory.  In all
18107 of the following examples, the top-level repository
18108 contains a directory called @file{first-dir}, which
18109 contains two files, @file{file1} and @file{file2}, and a
18110 directory @file{sdir}.  @file{first-dir/sdir} contains
18111 a file @file{sfile}.
18112
18113 @c FIXME: should test all the examples in this section.
18114
18115 @menu
18116 @c <en>* Alias modules::             The simplest kind of module
18117 * Alias modules::             The simplest kind of module
18118 @c <en>* Regular modules::
18119 * Regular modules::
18120 @c <en>* Ampersand modules::
18121 * Ampersand modules::
18122 @c <en>* Excluding directories::     Excluding directories from a module
18123 * Excluding directories::     Excluding directories from a module
18124 @c <en>* Module options::            Regular and ampersand modules can take options
18125 * Module options::            Regular and ampersand modules can take options
18126 @c <en>* Module program options::    How the modules ``program options'' programs
18127 @c <en>                              are run. 
18128 * Module program options::    How the modules ``program options'' programs
18129                               are run. 
18130 @end menu
18131
18132 @c <en>@node Alias modules
18133 @node Alias modules
18134 @c <en>@appendixsubsec Alias modules
18135 @appendixsubsec Alias modules
18136 @c <en>@cindex Alias modules
18137 @cindex Alias modules
18138 @c <en>@cindex -a, in modules file
18139 @cindex -a, in modules file
18140
18141 @c <en>Alias modules are the simplest kind of module:
18142 Alias modules are the simplest kind of module:
18143
18144 @table @code
18145 @c <en>@item @var{mname} -a @var{aliases}@dots{}
18146 @c <en>This represents the simplest way of defining a module
18147 @c <en>@var{mname}.  The @samp{-a} flags the definition as a
18148 @c <en>simple alias: @sc{cvs} will treat any use of @var{mname} (as
18149 @c <en>a command argument) as if the list of names
18150 @c <en>@var{aliases} had been specified instead.
18151 @c <en>@var{aliases} may contain either other module names or
18152 @c <en>paths.  When you use paths in aliases, @code{checkout}
18153 @c <en>creates all intermediate directories in the working
18154 @c <en>directory, just as if the path had been specified
18155 @c <en>explicitly in the @sc{cvs} arguments.
18156 @item @var{mname} -a @var{aliases}@dots{}
18157 This represents the simplest way of defining a module
18158 @var{mname}.  The @samp{-a} flags the definition as a
18159 simple alias: @sc{cvs} will treat any use of @var{mname} (as
18160 a command argument) as if the list of names
18161 @var{aliases} had been specified instead.
18162 @var{aliases} may contain either other module names or
18163 paths.  When you use paths in aliases, @code{checkout}
18164 creates all intermediate directories in the working
18165 directory, just as if the path had been specified
18166 explicitly in the @sc{cvs} arguments.
18167 @end table
18168
18169 @c <en>For example, if the modules file contains:
18170 For example, if the modules file contains:
18171
18172 @example
18173 amodule -a first-dir
18174 @end example
18175
18176 @noindent
18177 @c <en>then the following two commands are equivalent:
18178 then the following two commands are equivalent:
18179
18180 @example
18181 $ cvs co amodule
18182 $ cvs co first-dir
18183 @end example
18184
18185 @noindent
18186 @c <en>and they each would provide output such as:
18187 and they each would provide output such as:
18188
18189 @example
18190 cvs checkout: Updating first-dir
18191 U first-dir/file1
18192 U first-dir/file2
18193 cvs checkout: Updating first-dir/sdir
18194 U first-dir/sdir/sfile
18195 @end example
18196
18197 @c <en>@node Regular modules
18198 @node Regular modules
18199 @c <en>@appendixsubsec Regular modules
18200 @appendixsubsec Regular modules
18201 @c <en>@cindex Regular modules
18202 @cindex Regular modules
18203
18204 @table @code
18205 @c <en>@item @var{mname} [ options ] @var{dir} [ @var{files}@dots{} ]
18206 @c <en>In the simplest case, this form of module definition
18207 @c <en>reduces to @samp{@var{mname} @var{dir}}.  This defines
18208 @c <en>all the files in directory @var{dir} as module mname.
18209 @c <en>@var{dir} is a relative path (from @code{$CVSROOT}) to a
18210 @c <en>directory of source in the source repository.  In this
18211 @c <en>case, on checkout, a single directory called
18212 @c <en>@var{mname} is created as a working directory; no
18213 @c <en>intermediate directory levels are used by default, even
18214 @c <en>if @var{dir} was a path involving several directory
18215 @c <en>levels.
18216 @item @var{mname} [ options ] @var{dir} [ @var{files}@dots{} ]
18217 In the simplest case, this form of module definition
18218 reduces to @samp{@var{mname} @var{dir}}.  This defines
18219 all the files in directory @var{dir} as module mname.
18220 @var{dir} is a relative path (from @code{$CVSROOT}) to a
18221 directory of source in the source repository.  In this
18222 case, on checkout, a single directory called
18223 @var{mname} is created as a working directory; no
18224 intermediate directory levels are used by default, even
18225 if @var{dir} was a path involving several directory
18226 levels.
18227 @end table
18228
18229 @c <en>For example, if a module is defined by:
18230 For example, if a module is defined by:
18231
18232 @example
18233 regmodule first-dir
18234 @end example
18235
18236 @noindent
18237 @c <en>then regmodule will contain the files from first-dir:
18238 then regmodule will contain the files from first-dir:
18239
18240 @example
18241 $ cvs co regmodule
18242 cvs checkout: Updating regmodule
18243 U regmodule/file1
18244 U regmodule/file2
18245 cvs checkout: Updating regmodule/sdir
18246 U regmodule/sdir/sfile
18247 $
18248 @end example
18249
18250 @c <en>By explicitly specifying files in the module definition
18251 @c <en>after @var{dir}, you can select particular files from
18252 @c <en>directory @var{dir}.  Here is
18253 @c <en>an example:
18254 By explicitly specifying files in the module definition
18255 after @var{dir}, you can select particular files from
18256 directory @var{dir}.  Here is
18257 an example:
18258
18259 @example
18260 regfiles first-dir/sdir sfile
18261 @end example
18262
18263 @noindent
18264 @c <en>With this definition, getting the regfiles module
18265 @c <en>will create a single working directory
18266 @c <en>@file{regfiles} containing the file listed, which
18267 @c <en>comes from a directory deeper
18268 @c <en>in the @sc{cvs} source repository:
18269 With this definition, getting the regfiles module
18270 will create a single working directory
18271 @file{regfiles} containing the file listed, which
18272 comes from a directory deeper
18273 in the @sc{cvs} source repository:
18274
18275 @example
18276 $ cvs co regfiles
18277 U regfiles/sfile
18278 $
18279 @end example
18280
18281 @c <en>@node Ampersand modules
18282 @node Ampersand modules
18283 @c <en>@appendixsubsec Ampersand modules
18284 @appendixsubsec Ampersand modules
18285 @c <en>@cindex Ampersand modules
18286 @cindex Ampersand modules
18287 @c <en>@cindex &, in modules file
18288 @cindex &, in modules file
18289
18290 @c <en>A module definition can refer to other modules by
18291 @c <en>including @samp{&@var{module}} in its definition.
18292 A module definition can refer to other modules by
18293 including @samp{&@var{module}} in its definition.
18294 @example
18295 @var{mname} [ options ] @var{&module}@dots{}
18296 @end example
18297
18298 @c <en>Then getting the module creates a subdirectory for each such
18299 @c <en>module, in the directory containing the module.  For
18300 @c <en>example, if modules contains
18301 Then getting the module creates a subdirectory for each such
18302 module, in the directory containing the module.  For
18303 example, if modules contains
18304
18305 @example
18306 ampermod &first-dir
18307 @end example
18308
18309 @noindent
18310 @c <en>then a checkout will create an @code{ampermod} directory
18311 @c <en>which contains a directory called @code{first-dir},
18312 @c <en>which in turns contains all the directories and files
18313 @c <en>which live there.  For example, the command
18314 then a checkout will create an @code{ampermod} directory
18315 which contains a directory called @code{first-dir},
18316 which in turns contains all the directories and files
18317 which live there.  For example, the command
18318
18319 @example
18320 $ cvs co ampermod
18321 @end example
18322
18323 @noindent
18324 @c <en>will create the following files:
18325 will create the following files:
18326
18327 @example
18328 ampermod/first-dir/file1
18329 ampermod/first-dir/file2
18330 ampermod/first-dir/sdir/sfile
18331 @end example
18332
18333 @c <en>There is one quirk/bug: the messages that @sc{cvs}
18334 @c <en>prints omit the @file{ampermod}, and thus do not
18335 @c <en>correctly display the location to which it is checking
18336 @c <en>out the files:
18337 There is one quirk/bug: the messages that @sc{cvs}
18338 prints omit the @file{ampermod}, and thus do not
18339 correctly display the location to which it is checking
18340 out the files:
18341
18342 @example
18343 $ cvs co ampermod
18344 cvs checkout: Updating first-dir
18345 U first-dir/file1
18346 U first-dir/file2
18347 cvs checkout: Updating first-dir/sdir
18348 U first-dir/sdir/sfile
18349 $
18350 @end example
18351
18352 @c <en>Do not rely on this buggy behavior; it may get fixed in
18353 @c <en>a future release of @sc{cvs}.
18354 Do not rely on this buggy behavior; it may get fixed in
18355 a future release of @sc{cvs}.
18356
18357 @c FIXCVS: What happens if regular and & modules are
18358 @c combined, as in "ampermodule first-dir &second-dir"?
18359 @c When I tried it, it seemed to just ignore the
18360 @c "first-dir".  I think perhaps it should be an error
18361 @c (but this needs further investigation).
18362 @c In addition to discussing what each one does, we
18363 @c should put in a few words about why you would use one or
18364 @c the other in various situations.
18365
18366 @c <en>@node Excluding directories
18367 @node Excluding directories
18368 @c <en>@appendixsubsec Excluding directories
18369 @appendixsubsec Excluding directories
18370 @c <en>@cindex Excluding directories, in modules file
18371 @cindex Excluding directories, in modules file
18372 @c <en>@cindex !, in modules file
18373 @cindex !, in modules file
18374
18375 @c <en>An alias module may exclude particular directories from
18376 @c <en>other modules by using an exclamation mark (@samp{!})
18377 @c <en>before the name of each directory to be excluded.
18378 An alias module may exclude particular directories from
18379 other modules by using an exclamation mark (@samp{!})
18380 before the name of each directory to be excluded.
18381
18382 @c <en>For example, if the modules file contains:
18383 For example, if the modules file contains:
18384
18385 @example
18386 exmodule -a !first-dir/sdir first-dir
18387 @end example
18388
18389 @noindent
18390 @c <en>then checking out the module @samp{exmodule} will check
18391 @c <en>out everything in @samp{first-dir} except any files in
18392 @c <en>the subdirectory @samp{first-dir/sdir}.
18393 then checking out the module @samp{exmodule} will check
18394 out everything in @samp{first-dir} except any files in
18395 the subdirectory @samp{first-dir/sdir}.
18396 @c Note that the "!first-dir/sdir" sometimes must be listed
18397 @c before "first-dir".  That seems like a probable bug, in which
18398 @c case perhaps it should be fixed (to allow either
18399 @c order) rather than documented.  See modules4 in testsuite.
18400
18401 @c <en>@node Module options
18402 @node Module options
18403 @c <en>@appendixsubsec Module options
18404 @appendixsubsec Module options
18405 @c <en>@cindex Options, in modules file
18406 @cindex Options, in modules file
18407
18408 @c <en>Either regular modules or ampersand modules can contain
18409 @c <en>options, which supply additional information concerning
18410 @c <en>the module.
18411 Either regular modules or ampersand modules can contain
18412 options, which supply additional information concerning
18413 the module.
18414
18415 @table @code
18416 @c <en>@cindex -d, in modules file
18417 @cindex -d, in modules file
18418 @c <en>@item -d @var{name}
18419 @item -d @var{name}
18420 @c <en>Name the working directory something other than the
18421 @c <en>module name.
18422 Name the working directory something other than the
18423 module name.
18424 @c FIXME: Needs a bunch of examples, analogous to the
18425 @c examples for alias, regular, and ampersand modules
18426 @c which show where the files go without -d.
18427
18428 @c <en>@cindex Export program
18429 @cindex Export program
18430 @c <en>@cindex -e, in modules file
18431 @cindex -e, in modules file
18432 @c <en>@item -e @var{prog}
18433 @item -e @var{prog}
18434 @c <en>Specify a program @var{prog} to run whenever files in a
18435 @c <en>module are exported.  @var{prog} runs with a single
18436 @c <en>argument, the module name.
18437 Specify a program @var{prog} to run whenever files in a
18438 module are exported.  @var{prog} runs with a single
18439 argument, the module name.
18440 @c FIXME: Is it run on server? client?
18441
18442 @c <en>@cindex Checkout program
18443 @cindex Checkout program
18444 @c <en>@cindex -o, in modules file
18445 @cindex -o, in modules file
18446 @c <en>@item -o @var{prog}
18447 @item -o @var{prog}
18448 @c <en>Specify a program @var{prog} to run whenever files in a
18449 @c <en>module are checked out.  @var{prog} runs with a single
18450 @c <en>argument, the module name.  See @ref{Module program options} for
18451 @c <en>information on how @var{prog} is called.
18452 Specify a program @var{prog} to run whenever files in a
18453 module are checked out.  @var{prog} runs with a single
18454 argument, the module name.  See @ref{Module program options} for
18455 information on how @var{prog} is called.
18456 @c FIXME: Is it run on server? client?
18457
18458 @c <en>@cindex Status of a module
18459 @cindex Status of a module
18460 @c <en>@cindex Module status
18461 @cindex Module status
18462 @c <en>@cindex -s, in modules file
18463 @cindex -s, in modules file
18464 @c <en>@item -s @var{status}
18465 @item -s @var{status}
18466 @c <en>Assign a status to the module.  When the module file is
18467 @c <en>printed with @samp{cvs checkout -s} the modules are
18468 @c <en>sorted according to primarily module status, and
18469 @c <en>secondarily according to the module name.  This option
18470 @c <en>has no other meaning.  You can use this option for
18471 @c <en>several things besides status: for instance, list the
18472 @c <en>person that is responsible for this module.
18473 Assign a status to the module.  When the module file is
18474 printed with @samp{cvs checkout -s} the modules are
18475 sorted according to primarily module status, and
18476 secondarily according to the module name.  This option
18477 has no other meaning.  You can use this option for
18478 several things besides status: for instance, list the
18479 person that is responsible for this module.
18480
18481 @c <en>@cindex Tag program
18482 @cindex Tag program
18483 @c <en>@cindex -t, in modules file
18484 @cindex -t, in modules file
18485 @c <en>@item -t @var{prog}
18486 @item -t @var{prog}
18487 @c <en>Specify a program @var{prog} to run whenever files in a
18488 @c <en>module are tagged with @code{rtag}.  @var{prog} runs
18489 @c <en>with two arguments: the module name and the symbolic
18490 @c <en>tag specified to @code{rtag}.  It is not run
18491 @c <en>when @code{tag} is executed.  Generally you will find
18492 @c <en>that the @file{taginfo} file is a better solution(@pxref{taginfo}).
18493 Specify a program @var{prog} to run whenever files in a
18494 module are tagged with @code{rtag}.  @var{prog} runs
18495 with two arguments: the module name and the symbolic
18496 tag specified to @code{rtag}.  It is not run
18497 when @code{tag} is executed.  Generally you will find
18498 that the @file{taginfo} file is a better solution(@pxref{taginfo}).
18499 @c FIXME: Is it run on server? client?
18500 @c Problems with -t include:
18501 @c * It is run after the tag not before
18502 @c * It doesn't get passed all the information that
18503 @c   taginfo does ("mov", &c).
18504 @c * It only is run for rtag, not tag.
18505 @end table
18506
18507 @c <en>You should also see @pxref{Module program options} about how the
18508 @c <en>``program options'' programs are run.
18509 You should also see @pxref{Module program options} about how the
18510 ``program options'' programs are run.
18511
18512 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
18513
18514 @c <en>@node Module program options
18515 @node Module program options
18516 @c <en>@appendixsubsec How the modules file ``program options'' programs are run
18517 @appendixsubsec How the modules file ``program options'' programs are run
18518 @c <en>@cindex Modules file program options
18519 @cindex Modules file program options
18520 @c <en>@cindex -t, in modules file
18521 @cindex -t, in modules file
18522 @c <en>@cindex -o, in modules file
18523 @cindex -o, in modules file
18524 @c <en>@cindex -e, in modules file
18525 @cindex -e, in modules file
18526
18527 @noindent
18528 @c <en>For checkout, rtag, and export, the program is server-based, and as such the
18529 @c <en>following applies:-
18530 For checkout, rtag, and export, the program is server-based, and as such the
18531 following applies:-
18532
18533 @c <en>If using remote access methods (pserver, ext, etc.),
18534 @c <en>@sc{cvs} will execute this program on the server from a temporary
18535 @c <en>directory. The path is searched for this program.
18536 If using remote access methods (pserver, ext, etc.),
18537 @sc{cvs} will execute this program on the server from a temporary
18538 directory. The path is searched for this program.
18539
18540 @c <en>If using ``local access'' (on a local or remote NFS file system, i.e.
18541 @c <en>repository set just to a path),
18542 @c <en>the program will be executed from the newly checked-out tree, if
18543 @c <en>found there, or alternatively searched for in the path if not.
18544 If using ``local access'' (on a local or remote NFS file system, i.e.
18545 repository set just to a path),
18546 the program will be executed from the newly checked-out tree, if
18547 found there, or alternatively searched for in the path if not.
18548
18549 @c <en>The programs are all run after the operation has effectively
18550 @c <en>completed.
18551 The programs are all run after the operation has effectively
18552 completed.
18553
18554
18555 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
18556 @node Wrappers
18557 @appendixsec The cvswrappers file
18558 @cindex cvswrappers (admin file)
18559 @cindex CVSWRAPPERS, environment variable
18560 @cindex Wrappers
18561
18562 @c FIXME: need some better way of separating this out
18563 @c by functionality.  -m is
18564 @c one feature, and -k is a another.  And this discussion
18565 @c should be better motivated (e.g. start with the
18566 @c problems, then explain how the feature solves it).
18567
18568 Wrappers refers to a @sc{cvs} feature which lets you
18569 control certain settings based on the name of the file
18570 which is being operated on.  The settings are @samp{-k}
18571 for binary files, and @samp{-m} for nonmergeable text
18572 files.
18573
18574 The @samp{-m} option
18575 specifies the merge methodology that should be used when
18576 a non-binary file is updated.  @code{MERGE} means the usual
18577 @sc{cvs} behavior: try to merge the files.  @code{COPY}
18578 means that @code{cvs update} will refuse to merge
18579 files, as it also does for files specified as binary
18580 with @samp{-kb} (but if the file is specified as
18581 binary, there is no need to specify @samp{-m 'COPY'}).
18582 @sc{cvs} will provide the user with the
18583 two versions of the files, and require the user using
18584 mechanisms outside @sc{cvs}, to insert any necessary
18585 changes.
18586
18587 @c <en>@strong{WARNING: do not use @code{COPY} with
18588 @c <en>@sc{cvs} 1.9 or earlier - such versions of @sc{cvs} will
18589 @c <en>copy one version of your file over the other, wiping
18590 @c <en>out the previous contents.}
18591 @strong{WARNING: do not use @code{COPY} with
18592 @sc{cvs} 1.9 or earlier - such versions of @sc{cvs} will
18593 copy one version of your file over the other, wiping
18594 out the previous contents.}
18595 @c Ordinarily we don't document the behavior of old
18596 @c versions.  But this one is so dangerous, I think we
18597 @c must.  I almost renamed it to -m 'NOMERGE' so we
18598 @c could say "never use -m 'COPY'".
18599 @c <en>The @samp{-m} wrapper option only affects behavior when
18600 @c <en>merging is done on update; it does not affect how files
18601 @c <en>are stored.  See @ref{Binary files}, for more on
18602 @c <en>binary files.
18603 The @samp{-m} wrapper option only affects behavior when
18604 merging is done on update; it does not affect how files
18605 are stored.  See @ref{Arquivos binários}, for more on
18606 binary files.
18607
18608 The basic format of the file @file{cvswrappers} is:
18609
18610 @c FIXME: @example is all wrong for this.  Use @deffn or
18611 @c something more sensible.
18612 @example
18613 wildcard     [option value][option value]...
18614
18615 where option is one of
18616 -m           update methodology      value: MERGE or COPY
18617 -k           keyword expansion       value: expansion mode
18618
18619 and value is a single-quote delimited value.
18620 @end example
18621
18622 @ignore
18623 @example
18624 *.nib    -f 'unwrap %s' -t 'wrap %s %s' -m 'COPY'
18625 *.c      -t 'indent %s %s'
18626 @end example
18627 @c When does the filter need to be an absolute pathname
18628 @c and when will something like the above work?  I
18629 @c suspect it relates to the PATH of the server (which
18630 @c in turn depends on all kinds of stuff, e.g. inetd
18631 @c for pserver).  I'm not sure whether/where to discuss
18632 @c this.
18633 @c FIXME: What do the %s's stand for?
18634
18635 @noindent
18636 The above example of a @file{cvswrappers} file
18637 states that all files/directories that end with a @code{.nib}
18638 should be filtered with the @file{wrap} program before
18639 checking the file into the repository. The file should
18640 be filtered though the @file{unwrap} program when the
18641 file is checked out of the repository. The
18642 @file{cvswrappers} file also states that a @code{COPY}
18643 methodology should be used when updating the files in
18644 the repository (that is, no merging should be performed).
18645
18646 @c What pitfalls arise when using indent this way?  Is
18647 @c it a winning thing to do?  Would be nice to at least
18648 @c hint at those issues; we want our examples to tell
18649 @c how to solve problems, not just to say that cvs can
18650 @c do certain things.
18651 The last example line says that all files that end with
18652 @code{.c} should be filtered with @file{indent}
18653 before being checked into the repository. Unlike the previous
18654 example, no filtering of the @code{.c} file is done when
18655 it is checked out of the repository.
18656 @noindent
18657 The @code{-t} filter is called with two arguments,
18658 the first is the name of the file/directory to filter
18659 and the second is the pathname to where the resulting
18660 filtered file should be placed.
18661
18662 @noindent
18663 The @code{-f} filter is called with one argument,
18664 which is the name of the file to filter from. The end
18665 result of this filter will be a file in the users directory
18666 that they can work on as they normally would.
18667
18668 Note that the @samp{-t}/@samp{-f} features do not
18669 conveniently handle one portion of @sc{cvs}'s operation:
18670 determining when files are modified.  @sc{cvs} will still
18671 want a file (or directory) to exist, and it will use
18672 its modification time to determine whether a file is
18673 modified.  If @sc{cvs} erroneously thinks a file is
18674 unmodified (for example, a directory is unchanged but
18675 one of the files within it is changed), you can force
18676 it to check in the file anyway by specifying the
18677 @samp{-f} option to @code{cvs commit} (@pxref{commit
18678 options}).
18679 @c This is, of course, a serious design flaw in -t/-f.
18680 @c Probably the whole functionality needs to be
18681 @c redesigned (starting from requirements) to fix this.
18682 @end ignore
18683
18684 @c FIXME: We don't document -W or point to where it is
18685 @c documented.  Or .cvswrappers.
18686 For example, the following command imports a
18687 directory, treating files whose name ends in
18688 @samp{.exe} as binary:
18689
18690 @example
18691 cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag
18692 @end example
18693
18694 @c Another good example, would be storing files
18695 @c (e.g. binary files) compressed in the repository.
18696 @c      ::::::::::::::::::
18697 @c      cvswrappers
18698 @c      ::::::::::::::::::
18699 @c      *.t12 -m 'COPY'
18700 @c      *.t[0-9][0-9] -f 'gunzipcp %s' -t 'gzipcp %s %s' -m 'COPY'
18701 @c
18702 @c      ::::::::::::::::::
18703 @c      gunzipcp
18704 @c      ::::::::::::::::::
18705 @c      :
18706 @c      [ -f $1 ] || exit 1
18707 @c      zcat $1 > /tmp/.#$1.$$
18708 @c      mv /tmp/.#$1.$$ $1
18709 @c
18710 @c      ::::::::::::::::::
18711 @c      gzipcp
18712 @c      ::::::::::::::::::
18713 @c      :
18714 @c      DIRNAME=`echo $1 | sed -e "s|/.*/||g"`
18715 @c      if [ ! -d $DIRNAME ] ; then
18716 @c            DIRNAME=`echo $1 | sed -e "s|.*/||g"`
18717 @c      fi
18718 @c      gzip -c  $DIRNAME  > $2
18719 @c One catch--"cvs diff" will not invoke the wrappers
18720 @c (probably a CVS bug, although I haven't thought it out).
18721
18722 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
18723 @c <en>@node commit files
18724 @node Arquivos de ???commit???
18725 @c <en>@appendixsec The commit support files
18726 @appendixsec The commit support files
18727 @c <en>@cindex Committing, administrative support files
18728 @cindex Committing, administrative support files
18729
18730 The @samp{-i} flag in the @file{modules} file can be
18731 used to run a certain program whenever files are
18732 committed (@pxref{modules}).  The files described in
18733 this section provide other, more flexible, ways to run
18734 programs whenever something is committed.
18735
18736 There are three kind of programs that can be run on
18737 commit.  They are specified in files in the repository,
18738 as described below.  The following table summarizes the
18739 file names and the purpose of the corresponding
18740 programs.
18741
18742 @table @file
18743 @item commitinfo
18744 The program is responsible for checking that the commit
18745 is allowed.  If it exits with a non-zero exit status
18746 the commit will be aborted.
18747
18748 @item verifymsg
18749 The specified program is used to evaluate the log message,
18750 and possibly verify that it contains all required
18751 fields.  This is most useful in combination with the
18752 @file{rcsinfo} file, which can hold a log message
18753 template (@pxref{rcsinfo}).
18754
18755 @item loginfo
18756 The specified program is called when the commit is
18757 complete.  It receives the log message and some
18758 additional information and can store the log message in
18759 a file, or mail it to appropriate persons, or maybe
18760 post it to a local newsgroup, or@dots{}  Your
18761 imagination is the limit!
18762 @end table
18763
18764 @menu
18765 * syntax::                      The common syntax
18766 * commitinfo::                  Pre-commit checking
18767 * verifymsg::                   How are log messages evaluated?
18768 * loginfo::                     Where should log messages be sent?
18769 @end menu
18770
18771 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18772 @node syntax
18773 @appendixsubsec The common syntax
18774 @cindex Info files (syntax)
18775 @cindex Syntax of info files
18776 @cindex Common syntax of info files
18777
18778 @c FIXME: having this so totally separate from the
18779 @c Variables node is rather bogus.
18780
18781 The administrative files such as @file{commitinfo},
18782 @file{loginfo}, @file{rcsinfo}, @file{verifymsg}, etc.,
18783 all have a common format.  The purpose of the files are
18784 described later on.  The common syntax is described
18785 here.
18786
18787 @cindex Regular expression syntax
18788 Each line contains the following:
18789 @itemize @bullet
18790 @item
18791 @c Say anything about DEFAULT and ALL?  Right now we
18792 @c leave that to the description of each file (and in fact
18793 @c the practice is inconsistent which is really annoying).
18794 A regular expression.  This is a basic regular
18795 expression in the syntax used by GNU emacs.
18796 @c FIXME: What we probably should be saying is "POSIX Basic
18797 @c Regular Expression with the following extensions (`\('
18798 @c `\|' '+' etc)"
18799 @c rather than define it with reference to emacs.
18800 @c The reference to emacs is not strictly speaking
18801 @c true, as we don't support \=, \s, or \S.  Also it isn't
18802 @c clear we should document and/or promise to continue to
18803 @c support all the obscure emacs extensions like \<.
18804 @c Also need to better cite (or include) full
18805 @c documentation for the syntax.
18806 @c Also see comment in configure.in about what happens to the
18807 @c syntax if we pick up a system-supplied regexp matcher.
18808
18809 @item
18810 A whitespace separator---one or more spaces and/or tabs.
18811
18812 @item
18813 A file name or command-line template.
18814 @end itemize
18815
18816 @noindent
18817 Blank lines are ignored.  Lines that start with the
18818 character @samp{#} are treated as comments.  Long lines
18819 unfortunately can @emph{not} be broken in two parts in
18820 any way.
18821
18822 The first regular expression that matches the current
18823 directory name in the repository is used.  The rest of the line
18824 is used as a file name or command-line as appropriate.
18825
18826 @c FIXME: need an example.  In particular, show what
18827 @c the regular expression is matched against (one
18828 @c ordinarily clueful person got confused about whether it
18829 @c includes the filename--"directory name" above should be
18830 @c unambiguous but there is nothing like an example to
18831 @c confirm people's understanding of this sort of thing).
18832
18833 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
18834 @node commitinfo
18835 @appendixsubsec Commitinfo
18836 @cindex @file{commitinfo}
18837 @cindex Commits, precommit verification of
18838 @cindex Precommit checking
18839
18840 The @file{commitinfo} file defines programs to execute
18841 whenever @samp{cvs commit} is about to execute.  These
18842 programs are used for pre-commit checking to verify
18843 that the modified, added and removed files are really
18844 ready to be committed.  This could be used, for
18845 instance, to verify that the changed files conform to
18846 to your site's standards for coding practice.
18847
18848 As mentioned earlier, each line in the
18849 @file{commitinfo} file consists of a regular expression
18850 and a command-line template.  The template can include
18851 a program name and any number of arguments you wish to
18852 supply to it.  The full path to the current source
18853 repository is appended to the template, followed by the
18854 file names of any files involved in the commit (added,
18855 removed, and modified files).
18856
18857 @cindex Exit status, of commitinfo
18858 The first line with a regular expression matching the
18859 directory within the repository will be used.  If the
18860 command returns a non-zero exit status the commit will
18861 be aborted.
18862 @c FIXME: need example(s) of what "directory within the
18863 @c repository" means.
18864
18865 @cindex DEFAULT in commitinfo
18866 If the repository name does not match any of the
18867 regular expressions in this file, the @samp{DEFAULT}
18868 line is used, if it is specified.
18869
18870 @cindex ALL in commitinfo
18871 All occurrences of the name @samp{ALL} appearing as a
18872 regular expression are used in addition to the first
18873 matching regular expression or the name @samp{DEFAULT}.
18874
18875 @c <en>@cindex @file{commitinfo}, working directory
18876 @cindex @file{commitinfo}, working directory
18877 @c <en>@cindex @file{commitinfo}, command environment
18878 @cindex @file{commitinfo}, command environment
18879 @c <en>The command will be run in the root of the workspace
18880 @c <en>containing the new versions of any files the user would like
18881 @c <en>to modify (commit), @emph{or in a copy of the workspace on
18882 @c <en>the server (@pxref{Remote repositories})}.  If a file is
18883 @c <en>being removed, there will be no copy of the file under the
18884 @c <en>current directory.  If a file is being added, there will be
18885 @c <en>no corresponding archive file in the repository unless the
18886 @c <en>file is being resurrected.
18887 The command will be run in the root of the workspace
18888 containing the new versions of any files the user would like
18889 to modify (commit), @emph{or in a copy of the workspace on
18890 the server (@pxref{Repositórios remotos})}.  If a file is
18891 being removed, there will be no copy of the file under the
18892 current directory.  If a file is being added, there will be
18893 no corresponding archive file in the repository unless the
18894 file is being resurrected.
18895
18896 Note that both the repository directory and the corresponding
18897 Attic (@pxref{Attic}) directory may need to be checked to
18898 locate the archive file corresponding to any given file being
18899 committed.  Much of the information about the specific commit
18900 request being made, including the destination branch, commit
18901 message, and command line options specified, is not available
18902 to the command.
18903
18904 @c FIXME: should discuss using commitinfo to control
18905 @c who has checkin access to what (e.g. Joe can check into
18906 @c directories a, b, and c, and Mary can check into
18907 @c directories b, c, and d--note this case cannot be
18908 @c conveniently handled with unix groups).  Of course,
18909 @c adding a new set of features to CVS might be a more
18910 @c natural way to fix this problem than telling people to
18911 @c use commitinfo.
18912 @c FIXME: Should make some reference, especially in
18913 @c the context of controlling who has access, to the fact
18914 @c that commitinfo can be circumvented.  Perhaps
18915 @c mention SETXID (but has it been carefully examined
18916 @c for holes?).  This fits in with the discussion of
18917 @c general CVS security in "Password authentication
18918 @c security" (the bit which is not pserver-specific).
18919
18920 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
18921 @node verifymsg
18922 @appendixsubsec Verifying log messages
18923 @cindex @file{verifymsg} (admin file)
18924 @cindex Log message, verifying
18925
18926 Once you have entered a log message, you can evaluate
18927 that message to check for specific content, such as
18928 a bug ID.  Use the @file{verifymsg} file to
18929 specify a program that is used to verify the log message.
18930 This program could be a simple script that checks
18931 that the entered message contains the required fields.
18932
18933 The @file{verifymsg} file is often most useful together
18934 with the @file{rcsinfo} file, which can be used to
18935 specify a log message template.
18936
18937 Each line in the @file{verifymsg} file consists of a
18938 regular expression and a command-line template.  The
18939 template must include a program name, and can include
18940 any number of arguments.  The full path to the current
18941 log message template file is appended to the template.
18942
18943 One thing that should be noted is that the @samp{ALL}
18944 keyword is not supported.  If more than one matching
18945 line is found, the first one is used.  This can be
18946 useful for specifying a default verification script in a
18947 directory, and then overriding it in a subdirectory.
18948
18949 @cindex DEFAULT in @file{verifymsg}
18950 If the repository name does not match any of the
18951 regular expressions in this file, the @samp{DEFAULT}
18952 line is used, if it is specified.
18953
18954 @cindex Exit status, of @file{verifymsg}
18955 If the verification script exits with a non-zero exit status,
18956 the commit is aborted.
18957
18958 @cindex @file{verifymsg}, changing the log message
18959 In the default configuration, CVS allows the
18960 verification script to change the log message. This is
18961 controlled via the RereadLogAfterVerify CVSROOT/config
18962 option.
18963
18964 When @samp{RereadLogAfterVerify=always} or
18965 @samp{RereadLogAfterVerify=stat}, the log message will
18966 either always be reread after the verification script
18967 is run or reread only if the log message file status
18968 has changed.
18969
18970 @xref{config}, for more on CVSROOT/config options.
18971
18972 @c <en>It is NOT a good idea for a @file{verifymsg} script to
18973 @c <en>interact directly with the user in the various
18974 @c <en>client/server methods. For the @code{pserver} method,
18975 @c <en>there is no protocol support for communicating between
18976 @c <en>@file{verifymsg} and the client on the remote end. For the
18977 @c <en>@code{ext} and @code{server} methods, it is possible
18978 @c <en>for CVS to become confused by the characters going
18979 @c <en>along the same channel as the CVS protocol
18980 @c <en>messages. See @ref{Remote repositories}, for more
18981 @c <en>information on client/server setups.  In addition, at the time
18982 @c <en>the @file{verifymsg} script runs, the CVS
18983 @c <en>server has locks in place in the repository.  If control is
18984 @c <en>returned to the user here then other users may be stuck waiting
18985 @c <en>for access to the repository.
18986 It is NOT a good idea for a @file{verifymsg} script to
18987 interact directly with the user in the various
18988 client/server methods. For the @code{pserver} method,
18989 there is no protocol support for communicating between
18990 @file{verifymsg} and the client on the remote end. For the
18991 @code{ext} and @code{server} methods, it is possible
18992 for CVS to become confused by the characters going
18993 along the same channel as the CVS protocol
18994 messages. See @ref{Repositórios remotos}, for more
18995 information on client/server setups.  In addition, at the time
18996 the @file{verifymsg} script runs, the CVS
18997 server has locks in place in the repository.  If control is
18998 returned to the user here then other users may be stuck waiting
18999 for access to the repository.
19000
19001 This option can be useful if you find yourself using an
19002 rcstemplate that needs to be modified to remove empty
19003 elements or to fill in default values.  It can also be
19004 useful if the rcstemplate has changed in the repository
19005 and the CVS/Template was not updated, but is able to be
19006 adapted to the new format by the verification script
19007 that is run by @file{verifymsg}.
19008
19009 An example of an update might be to change all
19010 occurrences of 'BugId:' to be 'DefectId:' (which can be
19011 useful if the rcstemplate has recently been changed and
19012 there are still checked-out user trees with cached
19013 copies in the CVS/Template file of the older version).
19014
19015 Another example of an update might be to delete a line
19016 that contains 'BugID: none' from the log message after
19017 validation of that value as being allowed is made.
19018
19019 The following is a little silly example of a
19020 @file{verifymsg} file, together with the corresponding
19021 @file{rcsinfo} file, the log message template and an
19022 verification  script.  We begin with the log message template.
19023 We want to always record a bug-id number on the first
19024 line of the log message.  The rest of log message is
19025 free text.  The following template is found in the file
19026 @file{/usr/cvssupport/tc.template}.
19027
19028 @example
19029 BugId:
19030 @end example
19031
19032 The script @file{/usr/cvssupport/bugid.verify} is used to
19033 evaluate the log message.
19034
19035 @example
19036 #!/bin/sh
19037 #
19038 #       bugid.verify filename
19039 #
19040 #  Verify that the log message contains a valid bugid
19041 #  on the first line.
19042 #
19043 if sed 1q < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
19044     exit 0
19045 elif sed 1q < $1 | grep '^BugId:[ ]*none$' > /dev/null; then
19046     # It is okay to allow commits with 'BugId: none',
19047     # but do not put that text into the real log message.
19048     grep -v '^BugId:[ ]*none$' > $1.rewrite
19049     mv $1.rewrite $1
19050     exit 0
19051 else
19052     echo "No BugId found."
19053     exit 1
19054 fi
19055 @end example
19056
19057 The @file{verifymsg} file contains this line:
19058
19059 @example
19060 ^tc     /usr/cvssupport/bugid.verify
19061 @end example
19062
19063 The @file{rcsinfo} file contains this line:
19064
19065 @example
19066 ^tc     /usr/cvssupport/tc.template
19067 @end example
19068
19069 The @file{config} file contains this line:
19070
19071 @example
19072 RereadLogAfterVerify=always
19073 @end example
19074
19075
19076
19077 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
19078 @node loginfo
19079 @appendixsubsec Loginfo
19080 @cindex loginfo (admin file)
19081 @cindex Storing log messages
19082 @cindex Mailing log messages
19083 @cindex Distributing log messages
19084 @cindex Log messages
19085
19086 @c "cvs commit" is not quite right.  What we
19087 @c mean is "when the repository gets changed" which
19088 @c also includes "cvs import" and "cvs add" on a directory.
19089 The @file{loginfo} file is used to control where
19090 @samp{cvs commit} log information is sent.  The first
19091 entry on a line is a regular expression which is tested
19092 against the directory that the change is being made to,
19093 relative to the @code{$CVSROOT}.  If a match is found, then
19094 the remainder of the line is a filter program that
19095 should expect log information on its standard input.
19096
19097 If the repository name does not match any of the
19098 regular expressions in this file, the @samp{DEFAULT}
19099 line is used, if it is specified.
19100
19101 All occurrences of the name @samp{ALL} appearing as a
19102 regular expression are used in addition to the first
19103 matching regular expression or @samp{DEFAULT}.
19104
19105 The first matching regular expression is used.
19106
19107 @xref{Arquivos de ???commit???}, for a description of the syntax of
19108 the @file{loginfo} file.
19109
19110 The user may specify a format string as
19111 part of the filter.  The string is composed of a
19112 @samp{%} followed by a space, or followed by a single
19113 format character, or followed by a set of format
19114 characters surrounded by @samp{@{} and @samp{@}} as
19115 separators.  The format characters are:
19116
19117 @table @t
19118 @item s
19119 file name
19120 @item V
19121 old version number (pre-checkin)
19122 @item v
19123 new version number (post-checkin)
19124 @end table
19125
19126 All other characters that appear in a format string
19127 expand to an empty field (commas separating fields are
19128 still provided).
19129
19130 For example, some valid format strings are @samp{%},
19131 @samp{%s}, @samp{%@{s@}}, and @samp{%@{sVv@}}.
19132
19133 The output will be a space separated string of tokens enclosed in
19134 quotation marks (@t{"}).
19135 Any embedded dollar signs (@t{$}), backticks (@t{`}),
19136 backslashes (@t{\}), or quotation marks will be preceded
19137 by a backslash (this allows the shell to correctly parse it
19138 as a single string, regardless of the characters it contains).
19139 For backwards compatibility, the first
19140 token will be the repository subdirectory.  The rest of the
19141 tokens will be comma-delimited lists of the information
19142 requested in the format string.  For example, if
19143 @samp{/u/src/master/yoyodyne/tc} is the repository, @samp{%@{sVv@}}
19144 is the format string, and three files (@t{ChangeLog},
19145 @t{Makefile}, @t{foo.c}) were modified, the output
19146 might be:
19147
19148 @example
19149 "yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13"
19150 @end example
19151
19152 As another example, @samp{%@{@}} means that only the
19153 name of the repository will be generated.
19154
19155 Note: when @sc{cvs} is accessing a remote repository,
19156 @file{loginfo} will be run on the @emph{remote}
19157 (i.e., server) side, not the client side (@pxref{Repositórios remotos}).
19158
19159 @menu
19160 * loginfo example::             Loginfo example
19161 * Keeping a checked out copy::  Updating a tree on every checkin
19162 @end menu
19163
19164 @c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19165 @node loginfo example
19166 @appendixsubsubsec Loginfo example
19167
19168 The following @file{loginfo} file, together with the
19169 tiny shell-script below, appends all log messages
19170 to the file @file{$CVSROOT/CVSROOT/commitlog},
19171 and any commits to the administrative files (inside
19172 the @file{CVSROOT} directory) are also logged in
19173 @file{/usr/adm/cvsroot-log}.
19174 Commits to the @file{prog1} directory are mailed to @t{ceder}.
19175
19176 @c FIXME: is it a CVS feature or bug that only the
19177 @c first matching line is used?  It is documented
19178 @c above, but is it useful?  For example, if we wanted
19179 @c to run both "cvs-log" and "Mail" for the CVSROOT
19180 @c directory, it is kind of awkward if
19181 @c only the first matching line is used.
19182 @example
19183 ALL             /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog $USER
19184 ^CVSROOT        /usr/local/bin/cvs-log /usr/adm/cvsroot-log
19185 ^prog1          Mail -s %s ceder
19186 @end example
19187
19188 The shell-script @file{/usr/local/bin/cvs-log} looks
19189 like this:
19190
19191 @example
19192 #!/bin/sh
19193 (echo "------------------------------------------------------";
19194  echo -n $2"  ";
19195  date;
19196  echo;
19197  cat) >> $1
19198 @end example
19199
19200 @node Keeping a checked out copy
19201 @appendixsubsubsec Keeping a checked out copy
19202
19203 @c What other index entries?  It seems like
19204 @c people might want to use a lot of different
19205 @c words for this functionality.
19206 @cindex Keeping a checked out copy
19207 @cindex Checked out copy, keeping
19208 @cindex Web pages, maintaining with CVS
19209
19210 It is often useful to maintain a directory tree which
19211 contains files which correspond to the latest version
19212 in the repository.  For example, other developers might
19213 want to refer to the latest sources without having to
19214 check them out, or you might be maintaining a web site
19215 with @sc{cvs} and want every checkin to cause the files
19216 used by the web server to be updated.
19217 @c Can we offer more details on the web example?  Or
19218 @c point the user at how to figure it out?  This text
19219 @c strikes me as sufficient for someone who already has
19220 @c some idea of what we mean but not enough for the naive
19221 @c user/sysadmin to understand it and set it up.
19222
19223 The way to do this is by having loginfo invoke
19224 @code{cvs update}.  Doing so in the naive way will
19225 cause a problem with locks, so the @code{cvs update}
19226 must be run in the background.
19227 @c Should we try to describe the problem with locks?
19228 @c It seems like a digression for someone who just
19229 @c wants to know how to make it work.
19230 @c Another choice which might work for a single file
19231 @c is to use "cvs -n update -p" which doesn't take
19232 @c out locks (I think) but I don't see many advantages
19233 @c of that and we might as well document something which
19234 @c works for multiple files.
19235 Here is an example for unix (this should all be on one line):
19236
19237 @example
19238 ^cyclic-pages           (date; cat; (sleep 2; cd /u/www/local-docs;
19239  cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
19240 @end example
19241
19242 This will cause checkins to repository directories
19243 starting with @code{cyclic-pages} to update the checked
19244 out tree in @file{/u/www/local-docs}.
19245 @c More info on some of the details?  The "sleep 2" is
19246 @c so if we are lucky the lock will be gone by the time
19247 @c we start and we can wait 2 seconds instead of 30.
19248
19249 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
19250 @node rcsinfo
19251 @appendixsec Rcsinfo
19252 @cindex rcsinfo (admin file)
19253 @cindex Form for log message
19254 @cindex Log message template
19255 @cindex Template for log message
19256
19257 The @file{rcsinfo} file can be used to specify a form to
19258 edit when filling out the commit log.  The
19259 @file{rcsinfo} file has a syntax similar to the
19260 @file{verifymsg}, @file{commitinfo} and @file{loginfo}
19261 files.  @xref{syntax}.  Unlike the other files the second
19262 part is @emph{not} a command-line template.  Instead,
19263 the part after the regular expression should be a full pathname to
19264 a file containing the log message template.
19265
19266 If the repository name does not match any of the
19267 regular expressions in this file, the @samp{DEFAULT}
19268 line is used, if it is specified.
19269
19270 All occurrences of the name @samp{ALL} appearing as a
19271 regular expression are used in addition to the first
19272 matching regular expression or @samp{DEFAULT}.
19273
19274 @c FIXME: should be offering advice, somewhere around
19275 @c here, about where to put the template file.  The
19276 @c verifymsg example uses /usr/cvssupport but doesn't
19277 @c say anything about what that directory is for or
19278 @c whether it is hardwired into CVS or who creates
19279 @c it or anything.  In particular we should say
19280 @c how to version control the template file.  A
19281 @c probably better answer than the /usr/cvssupport
19282 @c stuff is to use checkoutlist (with xref to the
19283 @c checkoutlist doc).
19284 @c Also I am starting to see a connection between
19285 @c this and the Keeping a checked out copy node.
19286 @c Probably want to say something about that.
19287 The log message template will be used as a default log
19288 message.  If you specify a log message with @samp{cvs
19289 commit -m @var{message}} or @samp{cvs commit -f
19290 @var{file}} that log message will override the
19291 template.
19292
19293 @xref{verifymsg}, for an example @file{rcsinfo}
19294 file.
19295
19296 When @sc{cvs} is accessing a remote repository,
19297 the contents of @file{rcsinfo} at the time a directory
19298 is first checked out will specify a template. This
19299 template will be updated on all @samp{cvs update}
19300 commands. It will also be added to new directories
19301 added with a @samp{cvs add new-directry} command.
19302 In versions of @sc{cvs} prior to version 1.12, the
19303 @file{CVS/Template} file was not updated. If the
19304 @sc{cvs} server is at version 1.12 or higher an older
19305 client may be used and the @file{CVS/Template} will
19306 be updated from the server.
19307
19308 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
19309 @c <en>@node taginfo
19310 @node taginfo
19311 @c <en>@appendixsec Taginfo
19312 @appendixsec Taginfo
19313 @c <en>@cindex taginfo (admin file)
19314 @cindex taginfo (admin file)
19315 @c <en>@cindex Tags, logging
19316 @cindex Tags, logging
19317 @c <en>@cindex Tags, verifying
19318 @cindex Tags, verifying
19319 @c <en>The @file{taginfo} file defines programs to execute
19320 @c <en>when someone executes a @code{tag} or @code{rtag}
19321 @c <en>command.  The @file{taginfo} file has the standard form
19322 @c <en>for administrative files (@pxref{syntax}),
19323 @c <en>where each line is a regular expression
19324 @c <en>followed by a command to execute.  The arguments passed
19325 @c <en>to the command are, in order, the @var{tagname},
19326 @c <en>@var{operation} (@code{add} for @code{tag},
19327 @c <en>@code{mov} for @code{tag -F}, and @code{del} for
19328 @c <en>@code{tag -d}), @var{repository}, and any remaining are
19329 @c <en>pairs of @var{filename} @var{revision}.  A non-zero
19330 @c <en>exit of the filter program will cause the tag to be
19331 @c <en>aborted.
19332 The @file{taginfo} file defines programs to execute
19333 when someone executes a @code{tag} or @code{rtag}
19334 command.  The @file{taginfo} file has the standard form
19335 for administrative files (@pxref{syntax}),
19336 where each line is a regular expression
19337 followed by a command to execute.  The arguments passed
19338 to the command are, in order, the @var{tagname},
19339 @var{operation} (@code{add} for @code{tag},
19340 @code{mov} for @code{tag -F}, and @code{del} for
19341 @code{tag -d}), @var{repository}, and any remaining are
19342 pairs of @var{filename} @var{revision}.  A non-zero
19343 exit of the filter program will cause the tag to be
19344 aborted.
19345
19346 @c <en>Here is an example of using the @file{taginfo} file
19347 @c <en>to log @code{tag} and @code{rtag}
19348 @c <en>commands.  In the @file{taginfo} file put:
19349 Here is an example of using the @file{taginfo} file
19350 to log @code{tag} and @code{rtag}
19351 commands.  In the @file{taginfo} file put:
19352
19353 @example
19354 ALL /usr/local/cvsroot/CVSROOT/loggit
19355 @end example
19356
19357 @noindent
19358 @c <en>Where @file{/usr/local/cvsroot/CVSROOT/loggit} contains the
19359 @c <en>following script:
19360 Where @file{/usr/local/cvsroot/CVSROOT/loggit} contains the
19361 following script:
19362
19363 @example
19364 #!/bin/sh
19365 echo "$@@" >>/home/kingdon/cvsroot/CVSROOT/taglog
19366 @end example
19367
19368 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
19369 @node cvsignore
19370 @appendixsec Ignoring files via cvsignore
19371 @cindex cvsignore (admin file), global
19372 @cindex Global cvsignore
19373 @cindex Ignoring files
19374 @c -- This chapter should maybe be moved to the
19375 @c tutorial part of the manual?
19376
19377 There are certain file names that frequently occur
19378 inside your working copy, but that you don't want to
19379 put under @sc{cvs} control.  Examples are all the object
19380 files that you get while you compile your sources.
19381 Normally, when you run @samp{cvs update}, it prints a
19382 line for each file it encounters that it doesn't know
19383 about (@pxref{update output}).
19384
19385 @sc{cvs} has a list of files (or sh(1) file name patterns)
19386 that it should ignore while running @code{update},
19387 @code{import} and @code{release}.
19388 @c -- Are those the only three commands affected?
19389 This list is constructed in the following way.
19390
19391 @itemize @bullet
19392 @item
19393 The list is initialized to include certain file name
19394 patterns: names associated with @sc{cvs}
19395 administration, or with other common source control
19396 systems; common names for patch files, object files,
19397 archive files, and editor backup files; and other names
19398 that are usually artifacts of assorted utilities.
19399 Currently, the default list of ignored file name
19400 patterns is:
19401
19402 @cindex Ignored files
19403 @cindex Automatically ignored files
19404 @example
19405     RCS     SCCS    CVS     CVS.adm
19406     RCSLOG  cvslog.*
19407     tags    TAGS
19408     .make.state     .nse_depinfo
19409     *~      #*      .#*     ,*      _$*     *$
19410     *.old   *.bak   *.BAK   *.orig  *.rej   .del-*
19411     *.a     *.olb   *.o     *.obj   *.so    *.exe
19412     *.Z     *.elc   *.ln
19413     core
19414 @end example
19415
19416 @item
19417 The per-repository list in
19418 @file{$CVSROOT/CVSROOT/cvsignore} is appended to
19419 the list, if that file exists.
19420
19421 @item
19422 The per-user list in @file{.cvsignore} in your home
19423 directory is appended to the list, if it exists.
19424
19425 @item
19426 Any entries in the environment variable
19427 @code{$CVSIGNORE} is appended to the list.
19428
19429 @item
19430 Any @samp{-I} options given to @sc{cvs} is appended.
19431
19432 @item
19433 As @sc{cvs} traverses through your directories, the contents
19434 of any @file{.cvsignore} will be appended to the list.
19435 The patterns found in @file{.cvsignore} are only valid
19436 for the directory that contains them, not for
19437 any sub-directories.
19438 @end itemize
19439
19440 In any of the 5 places listed above, a single
19441 exclamation mark (@samp{!}) clears the ignore list.
19442 This can be used if you want to store any file which
19443 normally is ignored by @sc{cvs}.
19444
19445 Specifying @samp{-I !} to @code{cvs import} will import
19446 everything, which is generally what you want to do if
19447 you are importing files from a pristine distribution or
19448 any other source which is known to not contain any
19449 extraneous files.  However, looking at the rules above
19450 you will see there is a fly in the ointment; if the
19451 distribution contains any @file{.cvsignore} files, then
19452 the patterns from those files will be processed even if
19453 @samp{-I !} is specified.  The only workaround is to
19454 remove the @file{.cvsignore} files in order to do the
19455 import.  Because this is awkward, in the future
19456 @samp{-I !} might be modified to override
19457 @file{.cvsignore} files in each directory.
19458
19459 Note that the syntax of the ignore files consists of a
19460 series of lines, each of which contains a space
19461 separated list of filenames.  This offers no clean way
19462 to specify filenames which contain spaces, but you can
19463 use a workaround like @file{foo?bar} to match a file
19464 named @file{foo bar} (it also matches @file{fooxbar}
19465 and the like).  Also note that there is currently no
19466 way to specify comments.
19467 @c FIXCVS?  I don't _like_ this syntax at all, but
19468 @c changing it raises all the usual compatibility
19469 @c issues and I'm also not sure what to change it to.
19470
19471 @node checkoutlist
19472 @appendixsec The checkoutlist file
19473 @cindex checkoutlist
19474
19475 It may be helpful to use @sc{cvs} to maintain your own
19476 files in the @file{CVSROOT} directory.  For example,
19477 suppose that you have a script @file{logcommit.pl}
19478 which you run by including the following line in the
19479 @file{commitinfo} administrative file:
19480
19481 @example
19482 ALL   $CVSROOT/CVSROOT/logcommit.pl
19483 @end example
19484
19485 To maintain @file{logcommit.pl} with @sc{cvs} you would
19486 add the following line to the @file{checkoutlist}
19487 administrative file:
19488
19489 @example
19490 logcommit.pl
19491 @end example
19492
19493 The format of @file{checkoutlist} is one line for each
19494 file that you want to maintain using @sc{cvs}, giving
19495 the name of the file, followed optionally by more whitespace
19496 and any error message that should print if the file cannot be
19497 checked out into CVSROOT after a commit:
19498
19499 @example
19500 logcommit.pl    Could not update CVSROOT/logcommit.pl.
19501 @end example
19502
19503 After setting up @file{checkoutlist} in this fashion,
19504 the files listed there will function just like
19505 @sc{cvs}'s built-in administrative files.  For example,
19506 when checking in one of the files you should get a
19507 message such as:
19508
19509 @example
19510 cvs commit: Rebuilding administrative file database
19511 @end example
19512
19513 @noindent
19514 and the checked out copy in the @file{CVSROOT}
19515 directory should be updated.
19516
19517 @c <en>Note that listing @file{passwd} (@pxref{Password
19518 @c <en>authentication server}) in @file{checkoutlist} is not
19519 @c <en>recommended for security reasons.
19520 Note that listing @file{passwd}
19521 (@pxref{Servidor de autenticação por senha}) in @file{checkoutlist} is not
19522 recommended for security reasons.
19523
19524 For information about keeping a checkout out copy in a
19525 more general context than the one provided by
19526 @file{checkoutlist}, see @ref{Keeping a checked out
19527 copy}.
19528
19529 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
19530 @c <en>@node history file
19531 @node arquivo history (histórico)
19532 @c <en>@appendixsec The history file
19533 @appendixsec O arquivo history (histórico)
19534 @c <en>@cindex History file
19535 @cindex Arquivo history (histórico)
19536 @c <en>@cindex Log information, saving
19537 @cindex Log information, saving
19538
19539 @c <en>The file @file{$CVSROOT/CVSROOT/history} is used
19540 @c <en>to log information for the @code{history} command
19541 @c <en>(@pxref{history}).  This file must be created to turn
19542 @c <en>on logging.  This is done automatically if the
19543 @c <en>@code{cvs init} command is used to set up the
19544 @c <en>repository (@pxref{Creating a repository}).
19545 The file @file{$CVSROOT/CVSROOT/history} is used
19546 to log information for the @code{history} command
19547 (@pxref{history}).  This file must be created to turn
19548 on logging.  This is done automatically if the
19549 @code{cvs init} command is used to set up the
19550 repository (@pxref{Criando um repositório}).
19551
19552 The file format of the @file{history} file is
19553 documented only in comments in the @sc{cvs} source
19554 code, but generally programs should use the @code{cvs
19555 history} command to access it anyway, in case the
19556 format changes with future releases of @sc{cvs}.
19557
19558 @node Variables
19559 @appendixsec Expansions in administrative files
19560 @cindex Internal variables
19561 @cindex Variables
19562
19563 Sometimes in writing an administrative file, you might
19564 want the file to be able to know various things based
19565 on environment @sc{cvs} is running in.  There are
19566 several mechanisms to do that.
19567
19568 @c <en>To find the home directory of the user running @sc{cvs}
19569 @c <en>(from the @code{HOME} environment variable), use
19570 @c <en>@samp{~} followed by @samp{/} or the end of the line.
19571 @c <en>Likewise for the home directory of @var{user}, use
19572 @c <en>@samp{~@var{user}}.  These variables are expanded on
19573 @c <en>the server machine, and don't get any reasonable
19574 @c <en>expansion if pserver (@pxref{Password authenticated})
19575 @c <en>is in use; therefore user variables (see below) may be
19576 @c <en>a better choice to customize behavior based on the user
19577 @c <en>running @sc{cvs}.
19578 To find the home directory of the user running @sc{cvs}
19579 (from the @code{HOME} environment variable), use
19580 @samp{~} followed by @samp{/} or the end of the line.
19581 Likewise for the home directory of @var{user}, use
19582 @samp{~@var{user}}.  These variables are expanded on
19583 the server machine, and don't get any reasonable
19584 expansion if pserver (@pxref{Autenticação por senha})
19585 is in use; therefore user variables (see below) may be
19586 a better choice to customize behavior based on the user
19587 running @sc{cvs}.
19588 @c Based on these limitations, should we deprecate ~?
19589 @c What is it good for?  Are people using it?
19590
19591 One may want to know about various pieces of
19592 information internal to @sc{cvs}.  A @sc{cvs} internal
19593 variable has the syntax @code{$@{@var{variable}@}},
19594 where @var{variable} starts with a letter and consists
19595 of alphanumeric characters and @samp{_}.  If the
19596 character following @var{variable} is a
19597 non-alphanumeric character other than @samp{_}, the
19598 @samp{@{} and @samp{@}} can be omitted.  The @sc{cvs}
19599 internal variables are:
19600
19601 @table @code
19602 @c <en>@item CVSROOT
19603 @item CVSROOT
19604 @c <en>@cindex CVSROOT, internal variable
19605 @cindex CVSROOT, internal variable
19606 @c <en>This is the absolute path to the current @sc{cvs} root directory.
19607 @c <en>@xref{Repository}, for a description of the various
19608 @c <en>ways to specify this, but note that the internal
19609 @c <en>variable contains just the directory and not any
19610 @c <en>of the access method information.
19611 This is the absolute path to the current @sc{cvs} root directory.
19612 @xref{Repositório}, for a description of the various
19613 ways to specify this, but note that the internal
19614 variable contains just the directory and not any
19615 of the access method information.
19616
19617 @item RCSBIN
19618 @cindex RCSBIN, internal variable
19619 In @sc{cvs} 1.9.18 and older, this specified the
19620 directory where @sc{cvs} was looking for @sc{rcs}
19621 programs.  Because @sc{cvs} no longer runs @sc{rcs}
19622 programs, specifying this internal variable is now an
19623 error.
19624
19625 @c <en>@item CVSEDITOR
19626 @item CVSEDITOR
19627 @c <en>@cindex CVSEDITOR, internal variable
19628 @cindex CVSEDITOR, internal variable
19629 @c <en>@itemx EDITOR
19630 @itemx EDITOR
19631 @c <en>@cindex EDITOR, internal variable
19632 @cindex EDITOR, internal variable
19633 @c <en>@itemx VISUAL
19634 @itemx VISUAL
19635 @c <en>@cindex VISUAL, internal variable
19636 @cindex VISUAL, internal variable
19637 @c <en>These all expand to the same value, which is the editor
19638 @c <en>that @sc{cvs} is using.  @xref{Global options}, for how
19639 @c <en>to specify this.
19640 These all expand to the same value, which is the editor
19641 that @sc{cvs} is using.  @xref{Opções globais}, for how
19642 to specify this.
19643
19644 @c <en>@item USER
19645 @item USER
19646 @c <en>@cindex USER, internal variable
19647 @cindex USER, internal variable
19648 @c <en>Username of the user running @sc{cvs} (on the @sc{cvs}
19649 @c <en>server machine).
19650 @c <en>When using pserver, this is the user specified in the repository
19651 @c <en>specification which need not be the same as the username the
19652 @c <en>server is running as (@pxref{Password authentication server}).
19653 @c <en>Do not confuse this with the environment variable of the same name.
19654 Username of the user running @sc{cvs} (on the @sc{cvs}
19655 server machine).
19656 When using pserver, this is the user specified in the repository
19657 specification which need not be the same as the username the
19658 server is running as (@pxref{Servidor de autenticação por senha}).
19659 Do not confuse this with the environment variable of the same name.
19660 @end table
19661
19662 If you want to pass a value to the administrative files
19663 which the user who is running @sc{cvs} can specify,
19664 use a user variable.
19665 @cindex User variables
19666 To expand a user variable, the
19667 administrative file contains
19668 @code{$@{=@var{variable}@}}.  To set a user variable,
19669 specify the global option @samp{-s} to @sc{cvs}, with
19670 argument @code{@var{variable}=@var{value}}.  It may be
19671 particularly useful to specify this option via
19672 @file{.cvsrc} (@pxref{~/.cvsrc}).
19673
19674 For example, if you want the administrative file to
19675 refer to a test directory you might create a user
19676 variable @code{TESTDIR}.  Then if @sc{cvs} is invoked
19677 as
19678
19679 @example
19680 cvs -s TESTDIR=/work/local/tests
19681 @end example
19682
19683 @noindent
19684 and the
19685 administrative file contains @code{sh
19686 $@{=TESTDIR@}/runtests}, then that string is expanded
19687 to @code{sh /work/local/tests/runtests}.
19688
19689 All other strings containing @samp{$} are reserved;
19690 there is no way to quote a @samp{$} character so that
19691 @samp{$} represents itself.
19692
19693 Environment variables passed to administrative files are:
19694
19695 @table @code
19696 @cindex environment variables, passed to administrative files
19697
19698 @item CVS_USER
19699 @cindex CVS_USER, environment variable
19700 The @sc{cvs}-specific username provided by the user, if it
19701 can be provided (currently just for the pserver access
19702 method), and to the empty string otherwise.  (@code{CVS_USER}
19703 and @code{USER} may differ when @file{$CVSROOT/CVSROOT/passwd}
19704 is used to map @sc{cvs} usernames to system usernames.)
19705
19706 @item LOGNAME
19707 @cindex LOGNAME, environment variable
19708 The username of the system user.
19709
19710 @item USER
19711 @cindex USER, environment variable
19712 Same as @code{LOGNAME}.
19713 Do not confuse this with the internal variable of the same name.
19714 @end table
19715
19716 @node config
19717 @appendixsec The CVSROOT/config configuration file
19718
19719 @cindex config, in CVSROOT
19720 @cindex CVSROOT/config
19721
19722 The administrative file @file{config} contains various
19723 miscellaneous settings which affect the behavior of
19724 @sc{cvs}.  The syntax is slightly different from the
19725 other administrative files.  Variables are not
19726 expanded.  Lines which start with @samp{#} are
19727 considered comments.
19728 @c FIXME: where do we define comments for the other
19729 @c administrative files.
19730 Other lines consist of a keyword, @samp{=}, and a
19731 value.  Note that this syntax is very strict.
19732 Extraneous spaces or tabs are not permitted.
19733 @c See comments in parseinfo.c:parse_config for more
19734 @c discussion of this strictness.
19735
19736 Currently defined keywords are:
19737
19738 @table @code
19739 @cindex RCSBIN, in CVSROOT/config
19740 @item RCSBIN=@var{bindir}
19741 For @sc{cvs} 1.9.12 through 1.9.18, this setting told
19742 @sc{cvs} to look for @sc{rcs} programs in the
19743 @var{bindir} directory.  Current versions of @sc{cvs}
19744 do not run @sc{rcs} programs; for compatibility this
19745 setting is accepted, but it does nothing.
19746
19747 @c <en>@cindex SystemAuth, in CVSROOT/config
19748 @cindex SystemAuth, in CVSROOT/config
19749 @c <en>@item SystemAuth=@var{value}
19750 @item SystemAuth=@var{value}
19751 @c <en>If @var{value} is @samp{yes}, then pserver should check
19752 @c <en>for users in the system's user database if not found in
19753 @c <en>@file{CVSROOT/passwd}.  If it is @samp{no}, then all
19754 @c <en>pserver users must exist in @file{CVSROOT/passwd}.
19755 @c <en>The default is @samp{yes}.  For more on pserver, see
19756 @c <en>@ref{Password authenticated}.
19757 If @var{value} is @samp{yes}, then pserver should check
19758 for users in the system's user database if not found in
19759 @file{CVSROOT/passwd}.  If it is @samp{no}, then all
19760 pserver users must exist in @file{CVSROOT/passwd}.
19761 The default is @samp{yes}.  For more on pserver, see
19762 @ref{Autenticação por senha}.
19763
19764 @ignore
19765 @cindex PreservePermissions, in CVSROOT/config
19766 @item PreservePermissions=@var{value}
19767 Enable support for saving special device files,
19768 symbolic links, file permissions and ownerships in the
19769 repository.  The default value is @samp{no}.
19770 @xref{Special Files}, for the full implications of using
19771 this keyword.
19772 @end ignore
19773
19774 @cindex TopLevelAdmin, in CVSROOT/config
19775 @item TopLevelAdmin=@var{value}
19776 Modify the @samp{checkout} command to create a
19777 @samp{CVS} directory at the top level of the new
19778 working directory, in addition to @samp{CVS}
19779 directories created within checked-out directories.
19780 The default value is @samp{no}.
19781
19782 @c <en>This option is useful if you find yourself performing
19783 @c <en>many commands at the top level of your working
19784 @c <en>directory, rather than in one of the checked out
19785 @c <en>subdirectories.  The @file{CVS} directory created there
19786 @c <en>will mean you don't have to specify @code{CVSROOT} for
19787 @c <en>each command.  It also provides a place for the
19788 @c <en>@file{CVS/Template} file (@pxref{Working directory
19789 @c <en>storage}).
19790 This option is useful if you find yourself performing
19791 many commands at the top level of your working
19792 directory, rather than in one of the checked out
19793 subdirectories.  The @file{CVS} directory created there
19794 will mean you don't have to specify @code{CVSROOT} for
19795 each command.  It also provides a place for the
19796 @file{CVS/Template} file
19797 (@pxref{Armazenamento do Diretório de trabalho}).
19798
19799 @c <en>@cindex LockDir, in CVSROOT/config
19800 @cindex LockDir, in CVSROOT/config
19801 @c <en>@item LockDir=@var{directory}
19802 @item LockDir=@var{directory}
19803 @c <en>Put @sc{cvs} lock files in @var{directory} rather than
19804 @c <en>directly in the repository.  This is useful if you want
19805 @c <en>to let users read from the repository while giving them
19806 @c <en>write access only to @var{directory}, not to the
19807 @c <en>repository.
19808 @c <en>It can also be used to put the locks on a very fast
19809 @c <en>in-memory file system to speed up locking and unlocking
19810 @c <en>the repository.
19811 @c <en>You need to create @var{directory}, but
19812 @c <en>@sc{cvs} will create subdirectories of @var{directory} as it
19813 @c <en>needs them.  For information on @sc{cvs} locks, see
19814 @c <en>@ref{Concurrency}.
19815 Put @sc{cvs} lock files in @var{directory} rather than
19816 directly in the repository.  This is useful if you want
19817 to let users read from the repository while giving them
19818 write access only to @var{directory}, not to the
19819 repository.
19820 It can also be used to put the locks on a very fast
19821 in-memory file system to speed up locking and unlocking
19822 the repository.
19823 You need to create @var{directory}, but
19824 @sc{cvs} will create subdirectories of @var{directory} as it
19825 needs them.  For information on @sc{cvs} locks, see
19826 @ref{Concorrência}.
19827
19828 @c Mention this in Compatibility section?
19829 Before enabling the LockDir option, make sure that you
19830 have tracked down and removed any copies of @sc{cvs} 1.9 or
19831 older.  Such versions neither support LockDir, nor will
19832 give an error indicating that they don't support it.
19833 The result, if this is allowed to happen, is that some
19834 @sc{cvs} users will put the locks one place, and others will
19835 put them another place, and therefore the repository
19836 could become corrupted.  @sc{cvs} 1.10 does not support
19837 LockDir but it will print a warning if run on a
19838 repository with LockDir enabled.
19839
19840 @cindex LogHistory, in CVSROOT/config
19841 @item LogHistory=@var{value}
19842 Control what is logged to the @file{CVSROOT/history} file (@pxref{history}).
19843 Default of @samp{TOEFWUPCGMAR} (or simply @samp{all}) will log
19844 all transactions.  Any subset of the default is
19845 legal.  (For example, to only log transactions that modify the
19846 @file{*,v} files, use @samp{LogHistory=TMAR}.)
19847
19848 @cindex RereadLogAfterVerify, in CVSROOT/config
19849 @cindex @file{verifymsg}, changing the log message
19850 @item RereadLogAfterVerify=@var{value}
19851 Modify the @samp{commit} command such that CVS will reread the
19852 log message after running the program specified by @file{verifymsg}.
19853 @var{value} may be one of @samp{yes} or @samp{always}, indicating that
19854 the log message should always be reread; @samp{no}
19855 or @samp{never}, indicating that it should never be
19856 reread; or @var{value} may be @samp{stat}, indicating
19857 that the file should be checked with the filesystem
19858 @samp{stat()} function to see if it has changed (see warning below)
19859 before rereading.  The default value is @samp{always}.
19860
19861 @strong{Note: the `stat' mode can cause CVS to pause for up to
19862 one extra second per directory committed.  This can be less IO and
19863 CPU intensive but is not recommended for use with large repositories}
19864
19865 @xref{verifymsg}, for more information on how verifymsg
19866 may be used.
19867
19868 @cindex UserAdminOptions, in CVSROOT/config
19869 @item UserAdminOptions=@var{value}
19870 Control what options will be allowed with the @code{cvs admin}
19871 command (@pxref{admin}) for users not in the @code{cvsadmin} group.
19872 The @var{value} string is a list of single character options
19873 which should be allowed.  If a user who is not a member of the
19874 @code{cvsadmin} group tries to execute any @code{cvs admin}
19875 option which is not listed they will will receive an error message
19876 reporting that the option is restricted.
19877
19878 If no @code{cvsadmin} group exists on the server, @sc{cvs} will
19879 ignore the @code{UserAdminOptions} keyword (@pxref{admin}).
19880
19881 When not specified, @code{UserAdminOptions} defaults to
19882 @samp{k}.  In other words, it defaults to allowing
19883 users outside of the @code{cvsadmin} group to use the
19884 @code{cvs admin} command only to change the default keyword
19885 expansion mode for files.
19886
19887 As an example, to restrict users not in the @code{cvsadmin}
19888 group to using @code{cvs admin} to change the default keyword
19889 substitution mode, lock revisions, unlock revisions, and
19890 replace the log message, use @samp{UserAdminOptions=klum}.
19891 @end table
19892
19893 @c ---------------------------------------------------------------------
19894 @c <en>@node Environment variables
19895 @node Variáveis de ambiente
19896 @c <en>@appendix All environment variables which affect CVS
19897 @appendix Todas as variáveis de ambiente que afetam o CVS
19898 @c <en>@cindex Environment variables
19899 @cindex Environment variables
19900 @c <en>@cindex Reference manual for variables
19901 @cindex Reference manual for variables
19902
19903 This is a complete list of all environment variables
19904 that affect @sc{cvs}.
19905
19906 @table @code
19907 @cindex CVSIGNORE, environment variable
19908 @item $CVSIGNORE
19909 A whitespace-separated list of file name patterns that
19910 @sc{cvs} should ignore. @xref{cvsignore}.
19911
19912 @cindex CVSWRAPPERS, environment variable
19913 @item $CVSWRAPPERS
19914 A whitespace-separated list of file name patterns that
19915 @sc{cvs} should treat as wrappers. @xref{Wrappers}.
19916
19917 @cindex CVSREAD, environment variable
19918 @cindex Read-only files, and CVSREAD
19919 @item $CVSREAD
19920 If this is set, @code{checkout} and @code{update} will
19921 try hard to make the files in your working directory
19922 read-only.  When this is not set, the default behavior
19923 is to permit modification of your working files.
19924
19925 @cindex CVSREADONLYFS, environment variable
19926 @item $CVSREADONLYFS
19927 Turns on read-only repository mode. This allows one to
19928 check out from a read-only repository, such as within
19929 an anoncvs server, or from a CDROM repository.
19930
19931 It has the same effect as if the @samp{-R} command-line
19932 option is used. This can also allow the use of
19933 read-only NFS repositories.
19934
19935 @c <en>@item $CVSUMASK
19936 @item $CVSUMASK
19937 @c <en>Controls permissions of files in the repository.  See
19938 @c <en>@ref{File permissions}.
19939 Controls permissions of files in the repository.  See
19940 @ref{Permissões de arquivos}.
19941
19942 @item $CVSROOT
19943 Should contain the full pathname to the root of the @sc{cvs}
19944 source repository (where the @sc{rcs} files are
19945 kept).  This information must be available to @sc{cvs} for
19946 most commands to execute; if @code{$CVSROOT} is not set,
19947 or if you wish to override it for one invocation, you
19948 can supply it on the command line: @samp{cvs -d cvsroot
19949 cvs_command@dots{}} Once you have checked out a working
19950 directory, @sc{cvs} stores the appropriate root (in
19951 the file @file{CVS/Root}), so normally you only need to
19952 worry about this when initially checking out a working
19953 directory.
19954
19955 @c <en>@item $CVSEDITOR
19956 @item $CVSEDITOR
19957 @c <en>@cindex CVSEDITOR, environment variable
19958 @cindex CVSEDITOR, environment variable
19959 @c <en>@itemx $EDITOR
19960 @itemx $EDITOR
19961 @c <en>@cindex EDITOR, environment variable
19962 @cindex EDITOR, environment variable
19963 @c <en>@itemx $VISUAL
19964 @itemx $VISUAL
19965 @c <en>@cindex VISUAL, environment variable
19966 @cindex VISUAL, environment variable
19967 @c <en>Specifies the program to use for recording log messages
19968 @c <en>during commit.  @code{$CVSEDITOR} overrides
19969 @c <en>@code{$EDITOR}, which overrides @code{$VISUAL}.
19970 @c <en>See @ref{Committing your changes} for more or
19971 @c <en>@ref{Global options} for alternative ways of specifying a
19972 @c <en>log editor.
19973 Specifies the program to use for recording log messages
19974 during commit.  @code{$CVSEDITOR} overrides
19975 @code{$EDITOR}, which overrides @code{$VISUAL}.
19976 See @ref{Efetivando suas alterações} for more or
19977 @ref{Opções globais} for alternative ways of specifying a
19978 log editor.
19979
19980 @cindex PATH, environment variable
19981 @item $PATH
19982 If @code{$RCSBIN} is not set, and no path is compiled
19983 into @sc{cvs}, it will use @code{$PATH} to try to find all
19984 programs it uses.
19985
19986 @cindex HOME, environment variable
19987 @item $HOME
19988 @cindex HOMEPATH, environment variable
19989 @item $HOMEPATH
19990 @cindex HOMEDRIVE, environment variable
19991 @item $HOMEDRIVE
19992 Used to locate the directory where the @file{.cvsrc}
19993 file, and other such files, are searched.  On Unix, @sc{cvs}
19994 just checks for @code{HOME}.  On Windows NT, the system will
19995 set @code{HOMEDRIVE}, for example to @samp{d:} and @code{HOMEPATH},
19996 for example to @file{\joe}.  On Windows 95, you'll
19997 probably need to set @code{HOMEDRIVE} and @code{HOMEPATH} yourself.
19998 @c We are being vague about whether HOME works on
19999 @c Windows; see long comment in windows-NT/filesubr.c.
20000
20001 @c <en>@cindex CVS_RSH, environment variable
20002 @cindex CVS_RSH, environment variable
20003 @c <en>@item $CVS_RSH
20004 @item $CVS_RSH
20005 @c <en>Specifies the external program which @sc{cvs} connects with,
20006 @c <en>when @code{:ext:} access method is specified.
20007 @c <en>@pxref{Connecting via rsh}.
20008 Specifies the external program which @sc{cvs} connects with,
20009 when @code{:ext:} access method is specified.
20010 @pxref{Se conectando via rsh}.
20011
20012 @c <en>@item $CVS_SERVER
20013 @item $CVS_SERVER
20014 @c <en>Used in client-server mode when accessing a remote
20015 @c <en>repository using @sc{rsh}.  It specifies the name of
20016 @c <en>the program to start on the server side (and any
20017 @c <en>necessary arguments) when accessing a remote repository
20018 @c <en>using the @code{:ext:}, @code{:fork:}, or @code{:server:} access methods.
20019 @c <en>The default value for @code{:ext:} and @code{:server:} is @code{cvs};
20020 @c <en>the default value for @code{:fork:} is the name used to run the client.
20021 @c <en>@pxref{Connecting via rsh}
20022 Used in client-server mode when accessing a remote
20023 repository using @sc{rsh}.  It specifies the name of
20024 the program to start on the server side (and any
20025 necessary arguments) when accessing a remote repository
20026 using the @code{:ext:}, @code{:fork:}, or @code{:server:} access methods.
20027 The default value for @code{:ext:} and @code{:server:} is @code{cvs};
20028 the default value for @code{:fork:} is the name used to run the client.
20029 @pxref{Se conectando via rsh}
20030
20031 @c <en>@item $CVS_PASSFILE
20032 @item $CVS_PASSFILE
20033 @c <en>Used in client-server mode when accessing the @code{cvs
20034 @c <en>login server}.  Default value is @file{$HOME/.cvspass}.
20035 @c <en>@pxref{Password authentication client}
20036 Used in client-server mode when accessing the @code{cvs
20037 login server}.  Default value is @file{$HOME/.cvspass}.
20038 @pxref{Cliente de autenticação por senha}
20039
20040 @c <en>@item $CVS_CLIENT_PORT
20041 @item $CVS_CLIENT_PORT
20042 @c <en>Used in client-server mode to set the port to use when accessing the server
20043 @c <en>via Kerberos, GSSAPI, or @sc{cvs}'s password authentication protocol
20044 @c <en>if the port is not specified in the CVSROOT.
20045 @c <en>@pxref{Remote repositories}
20046 Used in client-server mode to set the port to use when accessing the server
20047 via Kerberos, GSSAPI, or @sc{cvs}'s password authentication protocol
20048 if the port is not specified in the CVSROOT.
20049 @pxref{Repositórios remotos}
20050
20051 @cindex CVS_RCMD_PORT, environment variable
20052 @item $CVS_RCMD_PORT
20053 Used in client-server mode.  If set, specifies the port
20054 number to be used when accessing the @sc{rcmd} demon on
20055 the server side. (Currently not used for Unix clients).
20056
20057 @cindex CVS_CLIENT_LOG, environment variable
20058 @item $CVS_CLIENT_LOG
20059 Used for debugging only in client-server
20060 mode.  If set, everything sent to the server is logged
20061 into @file{@code{$CVS_CLIENT_LOG}.in} and everything
20062 sent from the server is logged into
20063 @file{@code{$CVS_CLIENT_LOG}.out}.
20064
20065 @cindex CVS_SERVER_SLEEP, environment variable
20066 @item $CVS_SERVER_SLEEP
20067 Used only for debugging the server side in
20068 client-server mode.  If set, delays the start of the
20069 server child process the specified amount of
20070 seconds so that you can attach to it with a debugger.
20071
20072 @cindex CVS_IGNORE_REMOTE_ROOT, environment variable
20073 @item $CVS_IGNORE_REMOTE_ROOT
20074 For @sc{cvs} 1.10 and older, setting this variable
20075 prevents @sc{cvs} from overwriting the @file{CVS/Root}
20076 file when the @samp{-d} global option is specified.
20077 Later versions of @sc{cvs} do not rewrite
20078 @file{CVS/Root}, so @code{CVS_IGNORE_REMOTE_ROOT} has no
20079 effect.
20080
20081 @cindex CVS_LOCAL_BRANCH_NUM, environment variable
20082 @item $CVS_LOCAL_BRANCH_NUM
20083 Setting this variable allows some control over the
20084 branch number that is assigned. This is specifically to
20085 support the local commit feature of CVSup. If one sets
20086 @code{CVS_LOCAL_BRANCH_NUM} to (say) 1000 then branches
20087 the local repository, the revision numbers will look
20088 like 1.66.1000.xx. There is almost a dead-set certainty
20089 that there will be no conflicts with version numbers.
20090
20091 @cindex COMSPEC, environment variable
20092 @item $COMSPEC
20093 Used under OS/2 only.  It specifies the name of the
20094 command interpreter and defaults to @sc{cmd.exe}.
20095
20096 @c <en>@cindex TMPDIR, environment variable
20097 @cindex TMPDIR, environment variable
20098 @c <en>@item $TMPDIR
20099 @item $TMPDIR
20100 @c <en>@cindex TMP, environment variable
20101 @cindex TMP, environment variable
20102 @c <en>@itemx $TMP
20103 @itemx $TMP
20104 @c <en>@cindex TEMP, environment variable
20105 @cindex TEMP, environment variable
20106 @c <en>@itemx $TEMP
20107 @itemx $TEMP
20108 @c <en>@cindex Temporary files, location of
20109 @cindex Temporary files, location of
20110 @c This is quite nuts.  We don't talk about tempnam
20111 @c or mkstemp which we sometimes use.  The discussion
20112 @c of "Global options" is semi-incoherent.
20113 @c I'm not even sure those are the only inaccuracies.
20114 @c Furthermore, the conventions are
20115 @c pretty crazy and they should be simplified.
20116 @c <en>Directory in which temporary files are located.
20117 @c <en>The @sc{cvs} server uses
20118 @c <en>@code{TMPDIR}.  @xref{Global options}, for a
20119 @c <en>description of how to specify this.
20120 @c <en>Some parts of @sc{cvs} will always use @file{/tmp} (via
20121 @c <en>the @code{tmpnam} function provided by the system).
20122 Directory in which temporary files are located.
20123 The @sc{cvs} server uses
20124 @code{TMPDIR}.  @xref{Opções globais}, for a
20125 description of how to specify this.
20126 Some parts of @sc{cvs} will always use @file{/tmp} (via
20127 the @code{tmpnam} function provided by the system).
20128
20129 On Windows NT, @code{TMP} is used (via the @code{_tempnam}
20130 function provided by the system).
20131
20132 The @code{patch} program which is used by the @sc{cvs}
20133 client uses @code{TMPDIR}, and if it is not set, uses
20134 @file{/tmp} (at least with GNU patch 2.1).  Note that
20135 if your server and client are both running @sc{cvs}
20136 1.9.10 or later, @sc{cvs} will not invoke an external
20137 @code{patch} program.
20138
20139 @cindex CVS_PID, environment variable
20140 @item $CVS_PID
20141 This is the process identification (aka pid) number of
20142 the @sc{cvs} process. It is often useful in the
20143 programs and/or scripts specified by the
20144 @file{commitinfo}, @file{verifymsg}, @file{loginfo}
20145 files.
20146 @end table
20147
20148 @c <en>@node Compatibility
20149 @node Compatibilidade
20150 @c <en>@appendix Compatibility between CVS Versions
20151 @appendix Compatibility between CVS Versions
20152
20153 @cindex CVS, versions of
20154 @cindex Versions, of CVS
20155 @cindex Compatibility, between CVS versions
20156 @c We don't mention versions older than CVS 1.3
20157 @c on the theory that it would clutter it up for the vast
20158 @c majority of people, who don't have anything that old.
20159 @c
20160 @c <en>The repository format is compatible going back to
20161 @c <en>@sc{cvs} 1.3.  But see @ref{Watches Compatibility}, if
20162 @c <en>you have copies of @sc{cvs} 1.6 or older and you want
20163 @c <en>to use the optional developer communication features.
20164 The repository format is compatible going back to
20165 @sc{cvs} 1.3.  But see @ref{Compatibilidade de ???Watches???}, if
20166 you have copies of @sc{cvs} 1.6 or older and you want
20167 to use the optional developer communication features.
20168 @c If you "cvs rm" and commit using 1.3, then you'll
20169 @c want to run "rcs -sdead <file,v>" on each of the
20170 @c files in the Attic if you then want 1.5 and
20171 @c later to recognize those files as dead (I think the
20172 @c symptom if this is not done is that files reappear
20173 @c in joins).  (Wait: the above will work but really to
20174 @c be strictly correct we should suggest checking
20175 @c in a new revision rather than just changing the
20176 @c state of the head revision, shouldn't we?).
20177 @c The old convert.sh script was for this, but it never
20178 @c did get updated to reflect use of the RCS "dead"
20179 @c state.
20180 @c Note: this is tricky to document without confusing
20181 @c people--need to carefully say what CVS version we
20182 @c are talking about and keep in mind the distinction
20183 @c between a
20184 @c repository created with 1.3 and on which one now
20185 @c uses 1.5+, and a repository on which one wants to
20186 @c use both versions side by side (e.g. during a
20187 @c transition period).
20188 @c Wait, can't CVS just detect the case in which a file
20189 @c is in the Attic but the head revision is not dead?
20190 @c Not sure whether this should produce a warning or
20191 @c something, and probably needs further thought, but
20192 @c it would appear that the situation can be detected.
20193 @c
20194 @c We might want to separate out the 1.3 compatibility
20195 @c section (for repository & working directory) from the
20196 @c rest--that might help avoid confusing people who
20197 @c are upgrading (for example) from 1.6 to 1.8.
20198 @c
20199 @c A minor incompatibility is if a current version of CVS
20200 @c puts "Nfoo" into CVS/Tag, then CVS 1.9 or older will
20201 @c see this as if there is no tag.  Seems to me this is
20202 @c too obscure to mention.
20203
20204 The working directory format is compatible going back
20205 to @sc{cvs} 1.5.  It did change between @sc{cvs} 1.3
20206 and @sc{cvs} 1.5.  If you run @sc{cvs} 1.5 or newer on
20207 a working directory checked out with @sc{cvs} 1.3,
20208 @sc{cvs} will convert it, but to go back to @sc{cvs}
20209 1.3 you need to check out a new working directory with
20210 @sc{cvs} 1.3.
20211
20212 The remote protocol is interoperable going back to @sc{cvs} 1.5, but no
20213 further (1.5 was the first official release with the remote protocol,
20214 but some older versions might still be floating around).  In many
20215 cases you need to upgrade both the client and the server to take
20216 advantage of new features and bugfixes, however.
20217
20218 @c Perhaps should be saying something here about the
20219 @c "D" lines in Entries (written by CVS 1.9; 1.8 and
20220 @c older don't use them).  These are supposed to be
20221 @c compatible in both directions, but I'm not sure
20222 @c they quite are 100%.  One common gripe is if you
20223 @c "rm -r" a directory and 1.9 gets confused, as it
20224 @c still sees it in Entries.  That one is fixed in
20225 @c (say) 1.9.6.  Someone else reported problems with
20226 @c starting with a directory which was checked out with
20227 @c an old version, and then using a new version, and
20228 @c some "D" lines appeared, but not for every
20229 @c directory, causing some directories to be skipped.
20230 @c They weren't sure how to reproduce this, though.
20231
20232 @c ---------------------------------------------------------------------
20233 @c <en>@node Troubleshooting
20234 @node Resolução de problemas
20235 @c <en>@appendix Troubleshooting
20236 @appendix Resolução de problemas
20237
20238 If you are having trouble with @sc{cvs}, this appendix
20239 may help.  If there is a particular error message which
20240 you are seeing, then you can look up the message
20241 alphabetically.  If not, you can look through the
20242 section on other problems to see if your problem is
20243 mentioned there.
20244
20245 @menu
20246 @c <en>* Error messages::              Partial list of CVS errors
20247 * Mensagens de erro::             Partial list of CVS errors
20248 @c <en>* Connection::                  Trouble making a connection to a CVS server
20249 * Conexão::                       Trouble making a connection to a CVS server
20250 @c <en>* Other problems::              Problems not readily listed by error message
20251 * Outros problemas::              Problems not readily listed by error message
20252 @end menu
20253
20254 @ignore
20255 @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
20256 @c @node Bad administrative files
20257 @appendixsec Bad administrative files
20258
20259 @c -- Give hints on how to fix them
20260 @end ignore
20261
20262 @c <en>@node Error messages
20263 @node Mensagens de erro
20264 @c <en>@appendixsec Partial list of error messages
20265 @appendixsec Partial list of error messages
20266
20267 Here is a partial list of error messages that you may
20268 see from @sc{cvs}.  It is not a complete list---@sc{cvs}
20269 is capable of printing many, many error messages, often
20270 with parts of them supplied by the operating system,
20271 but the intention is to list the common and/or
20272 potentially confusing error messages.
20273
20274 The messages are alphabetical, but introductory text
20275 such as @samp{cvs update: } is not considered in
20276 ordering them.
20277
20278 In some cases the list includes messages printed by old
20279 versions of @sc{cvs} (partly because users may not be
20280 sure which version of @sc{cvs} they are using at any
20281 particular moment).
20282 @c If we want to start retiring messages, perhaps we
20283 @c should pick a cutoff version (for example, no more
20284 @c messages which are specific to versions before 1.9)
20285 @c and then move the old messages to an "old messages"
20286 @c node rather than deleting them completely.
20287
20288 @table @code
20289 @c FIXME: What is the correct way to format a multiline
20290 @c error message here?  Maybe @table is the wrong
20291 @c choice?  Texinfo gurus?
20292 @c <en>@item @var{file}:@var{line}: Assertion '@var{text}' failed
20293 @item @var{file}:@var{line}: Assertion '@var{text}' failed
20294 @c <en>The exact format of this message may vary depending on
20295 @c <en>your system.  It indicates a bug in @sc{cvs}, which can
20296 @c <en>be handled as described in @ref{BUGS}.
20297 The exact format of this message may vary depending on
20298 your system.  It indicates a bug in @sc{cvs}, which can
20299 be handled as described in @ref{Paus}.
20300
20301 @c <en>@item cvs @var{command}: authorization failed: server @var{host} rejected access
20302 @item cvs @var{command}: authorization failed: server @var{host} rejected access
20303 @c <en>This is a generic response when trying to connect to a
20304 @c <en>pserver server which chooses not to provide a
20305 @c <en>specific reason for denying authorization.  Check that
20306 @c <en>the username and password specified are correct and
20307 @c <en>that the @code{CVSROOT} specified is allowed by @samp{--allow-root}
20308 @c <en>in @file{inetd.conf}.  See @ref{Password authenticated}.
20309 This is a generic response when trying to connect to a
20310 pserver server which chooses not to provide a
20311 specific reason for denying authorization.  Check that
20312 the username and password specified are correct and
20313 that the @code{CVSROOT} specified is allowed by @samp{--allow-root}
20314 in @file{inetd.conf}.  See @ref{Autenticação por senha}.
20315
20316 @item cvs @var{command}: conflict: removed @var{file} was modified by second party
20317 This message indicates that you removed a file, and
20318 someone else modified it.  To resolve the conflict,
20319 first run @samp{cvs add @var{file}}.  If desired, look
20320 at the other party's modification to decide whether you
20321 still want to remove it.  If you don't want to remove
20322 it, stop here.  If you do want to remove it, proceed
20323 with @samp{cvs remove @var{file}} and commit your
20324 removal.
20325 @c Tests conflicts2-142b* in sanity.sh test for this.
20326
20327 @item cannot change permissions on temporary directory
20328 @example
20329 Operation not permitted
20330 @end example
20331 This message has been happening in a non-reproducible,
20332 occasional way when we run the client/server testsuite,
20333 both on Red Hat Linux 3.0.3 and 4.1.  We haven't been
20334 able to figure out what causes it, nor is it known
20335 whether it is specific to linux (or even to this
20336 particular machine!).  If the problem does occur on
20337 other unices, @samp{Operation not permitted} would be
20338 likely to read @samp{Not owner} or whatever the system
20339 in question uses for the unix @code{EPERM} error.  If
20340 you have any information to add, please let us know as
20341 described in @ref{Paus}.  If you experience this error
20342 while using @sc{cvs}, retrying the operation which
20343 produced it should work fine.
20344 @c This has been seen in a variety of tests, including
20345 @c multibranch-2, multibranch-5, and basic1-24-rm-rm,
20346 @c so it doesn't seem particularly specific to any one
20347 @c test.
20348
20349 @c <en>@item cvs [server aborted]: Cannot check out files into the repository itself
20350 @item cvs [server aborted]: Cannot check out files into the repository itself
20351 @c <en>The obvious cause for this message (especially for
20352 @c <en>non-client/server @sc{cvs}) is that the @sc{cvs} root
20353 @c <en>is, for example, @file{/usr/local/cvsroot} and you try
20354 @c <en>to check out files when you are in a subdirectory, such
20355 @c <en>as @file{/usr/local/cvsroot/test}.  However, there is a
20356 @c <en>more subtle cause, which is that the temporary
20357 @c <en>directory on the server is set to a subdirectory of the
20358 @c <en>root (which is also not allowed).  If this is the
20359 @c <en>problem, set the temporary directory to somewhere else,
20360 @c <en>for example @file{/var/tmp}; see @code{TMPDIR} in
20361 @c <en>@ref{Environment variables}, for how to set the
20362 @c <en>temporary directory.
20363 The obvious cause for this message (especially for
20364 non-client/server @sc{cvs}) is that the @sc{cvs} root
20365 is, for example, @file{/usr/local/cvsroot} and you try
20366 to check out files when you are in a subdirectory, such
20367 as @file{/usr/local/cvsroot/test}.  However, there is a
20368 more subtle cause, which is that the temporary
20369 directory on the server is set to a subdirectory of the
20370 root (which is also not allowed).  If this is the
20371 problem, set the temporary directory to somewhere else,
20372 for example @file{/var/tmp}; see @code{TMPDIR} in
20373 @ref{Variáveis de ambiente}, for how to set the
20374 temporary directory.
20375
20376 @item cannot commit files as 'root'
20377 See @samp{'root' is not allowed to commit files}.
20378
20379 @c For one example see basica-1a10 in the testsuite
20380 @c For another example, "cvs co ." on NT; see comment
20381 @c at windows-NT/filesubr.c (expand_wild).
20382 @c For another example, "cvs co foo/bar" where foo exists.
20383 @c <en>@item cannot open CVS/Entries for reading: No such file or directory
20384 @item cannot open CVS/Entries for reading: No such file or directory
20385 @c <en>This generally indicates a @sc{cvs} internal error, and
20386 @c <en>can be handled as with other @sc{cvs} bugs
20387 @c <en>(@pxref{BUGS}).  Usually there is a workaround---the
20388 @c <en>exact nature of which would depend on the situation but
20389 @c <en>which hopefully could be figured out.
20390 This generally indicates a @sc{cvs} internal error, and
20391 can be handled as with other @sc{cvs} bugs
20392 (@pxref{Paus}).  Usually there is a workaround---the
20393 exact nature of which would depend on the situation but
20394 which hopefully could be figured out.
20395
20396 @c This is more obscure than it might sound; it only
20397 @c happens if you run "cvs init" from a directory which
20398 @c contains a CVS/Root file at the start.
20399 @item cvs [init aborted]: cannot open CVS/Root: No such file or directory
20400 This message is harmless.  Provided it is not
20401 accompanied by other errors, the operation has
20402 completed successfully.  This message should not occur
20403 with current versions of @sc{cvs}, but it is documented
20404 here for the benefit of @sc{cvs} 1.9 and older.
20405
20406 @c <en>@item cvs server: cannot open /root/.cvsignore: Permission denied
20407 @item cvs server: cannot open /root/.cvsignore: Permission denied
20408 @c <en>@itemx cvs [server aborted]: can't chdir(/root): Permission denied
20409 @itemx cvs [server aborted]: can't chdir(/root): Permission denied
20410 @c <en>See @ref{Connection}.
20411 See @ref{Conexão}.
20412
20413 @c <en>@item cvs [checkout aborted]: cannot rename file @var{file} to CVS/,,@var{file}: Invalid argument
20414 @item cvs [checkout aborted]: cannot rename file @var{file} to CVS/,,@var{file}: Invalid argument
20415 @c <en>This message has been reported as intermittently
20416 @c <en>happening with @sc{cvs} 1.9 on Solaris 2.5.  The cause is
20417 @c <en>unknown; if you know more about what causes it, let us
20418 @c <en>know as described in @ref{BUGS}.
20419 This message has been reported as intermittently
20420 happening with @sc{cvs} 1.9 on Solaris 2.5.  The cause is
20421 unknown; if you know more about what causes it, let us
20422 know as described in @ref{Paus}.
20423
20424 @c <en>@item cvs [@var{command} aborted]: cannot start server via rcmd
20425 @item cvs [@var{command} aborted]: cannot start server via rcmd
20426 @c <en>This, unfortunately, is a rather nonspecific error
20427 @c <en>message which @sc{cvs} 1.9 will print if you are
20428 @c <en>running the @sc{cvs} client and it is having trouble
20429 @c <en>connecting to the server.  Current versions of @sc{cvs}
20430 @c <en>should print a much more specific error message.  If
20431 @c <en>you get this message when you didn't mean to run the
20432 @c <en>client at all, you probably forgot to specify
20433 @c <en>@code{:local:}, as described in @ref{Repository}.
20434 This, unfortunately, is a rather nonspecific error
20435 message which @sc{cvs} 1.9 will print if you are
20436 running the @sc{cvs} client and it is having trouble
20437 connecting to the server.  Current versions of @sc{cvs}
20438 should print a much more specific error message.  If
20439 you get this message when you didn't mean to run the
20440 client at all, you probably forgot to specify
20441 @code{:local:}, as described in @ref{Repositório}.
20442
20443 @item ci: @var{file},v: bad diff output line: Binary files - and /tmp/T2a22651 differ
20444 @sc{cvs} 1.9 and older will print this message
20445 when trying to check in a binary file if
20446 @sc{rcs} is not correctly installed.  Re-read the
20447 instructions that came with your @sc{rcs} distribution
20448 and the @sc{install} file in the @sc{cvs}
20449 distribution.  Alternately, upgrade to a current
20450 version of @sc{cvs}, which checks in files itself
20451 rather than via @sc{rcs}.
20452
20453 @c <en>@item cvs checkout: could not check out @var{file}
20454 @item cvs checkout: could not check out @var{file}
20455 @c <en>With @sc{cvs} 1.9, this can mean that the @code{co} program
20456 @c <en>(part of @sc{rcs}) returned a failure.  It should be
20457 @c <en>preceded by another error message, however it has been
20458 @c <en>observed without another error message and the cause is
20459 @c <en>not well-understood.  With the current version of @sc{cvs},
20460 @c <en>which does not run @code{co}, if this message occurs
20461 @c <en>without another error message, it is definitely a @sc{cvs}
20462 @c <en>bug (@pxref{BUGS}).
20463 With @sc{cvs} 1.9, this can mean that the @code{co} program
20464 (part of @sc{rcs}) returned a failure.  It should be
20465 preceded by another error message, however it has been
20466 observed without another error message and the cause is
20467 not well-understood.  With the current version of @sc{cvs},
20468 which does not run @code{co}, if this message occurs
20469 without another error message, it is definitely a @sc{cvs}
20470 bug (@pxref{Paus}).
20471 @c My current suspicion is that the RCS in the rcs (not
20472 @c cvs/winnt/rcs57nt.zip) directory on the _Practical_
20473 @c CD is bad (remains to be confirmed).
20474 @c There is also a report of something which looks
20475 @c very similar on SGI, Irix 5.2, so I dunno.
20476
20477 @c <en>@item cvs [login aborted]: could not find out home directory
20478 @item cvs [login aborted]: could not find out home directory
20479 @c <en>This means that you need to set the environment
20480 @c <en>variables that @sc{cvs} uses to locate your home directory.
20481 @c <en>See the discussion of @code{HOME}, @code{HOMEDRIVE}, and @code{HOMEPATH} in
20482 @c <en>@ref{Environment variables}.
20483 This means that you need to set the environment
20484 variables that @sc{cvs} uses to locate your home directory.
20485 See the discussion of @code{HOME}, @code{HOMEDRIVE}, and @code{HOMEPATH} in
20486 @ref{Variáveis de ambiente}.
20487
20488 @item cvs update: could not merge revision @var{rev} of @var{file}: No such file or directory
20489 @sc{cvs} 1.9 and older will print this message if there was
20490 a problem finding the @code{rcsmerge} program.  Make
20491 sure that it is in your @code{PATH}, or upgrade to a
20492 current version of @sc{cvs}, which does not require
20493 an external @code{rcsmerge} program.
20494
20495 @item cvs [update aborted]: could not patch @var{file}: No such file or directory
20496 This means that there was a problem finding the
20497 @code{patch} program.  Make sure that it is in your
20498 @code{PATH}.  Note that despite appearances the message
20499 is @emph{not} referring to whether it can find @var{file}.
20500 If both the client and the server are running a current
20501 version of @sc{cvs}, then there is no need for an
20502 external patch program and you should not see this
20503 message.  But if either client or server is running
20504 @sc{cvs} 1.9, then you need @code{patch}.
20505
20506 @item cvs update: could not patch @var{file}; will refetch
20507 This means that for whatever reason the client was
20508 unable to apply a patch that the server sent.  The
20509 message is nothing to be concerned about, because
20510 inability to apply the patch only slows things down and
20511 has no effect on what @sc{cvs} does.
20512 @c xref to update output.  Or File status?
20513 @c Or some place else that
20514 @c explains this whole "patch"/P/Needs Patch thing?
20515
20516 @c <en>@item dying gasps from @var{server} unexpected
20517 @item dying gasps from @var{server} unexpected
20518 @c <en>There is a known bug in the server for @sc{cvs} 1.9.18
20519 @c <en>and older which can cause this.  For me, this was
20520 @c <en>reproducible if I used the @samp{-t} global option.  It
20521 @c <en>was fixed by Andy Piper's 14 Nov 1997 change to
20522 @c <en>src/filesubr.c, if anyone is curious.
20523 @c <en>If you see the message,
20524 @c <en>you probably can just retry the operation which failed,
20525 @c <en>or if you have discovered information concerning its
20526 @c <en>cause, please let us know as described in @ref{BUGS}.
20527 There is a known bug in the server for @sc{cvs} 1.9.18
20528 and older which can cause this.  For me, this was
20529 reproducible if I used the @samp{-t} global option.  It
20530 was fixed by Andy Piper's 14 Nov 1997 change to
20531 src/filesubr.c, if anyone is curious.
20532 If you see the message,
20533 you probably can just retry the operation which failed,
20534 or if you have discovered information concerning its
20535 cause, please let us know as described in @ref{Paus}.
20536
20537 @c <en>@item end of file from server (consult above messages if any)
20538 @item end of file from server (consult above messages if any)
20539 @c <en>The most common cause for this message is if you are
20540 @c <en>using an external @code{rsh} program and it exited with
20541 @c <en>an error.  In this case the @code{rsh} program should
20542 @c <en>have printed a message, which will appear before the
20543 @c <en>above message.  For more information on setting up a
20544 @c <en>@sc{cvs} client and server, see @ref{Remote repositories}.
20545 The most common cause for this message is if you are
20546 using an external @code{rsh} program and it exited with
20547 an error.  In this case the @code{rsh} program should
20548 have printed a message, which will appear before the
20549 above message.  For more information on setting up a
20550 @sc{cvs} client and server, see @ref{Repositórios remotos}.
20551
20552 @c <en>@item cvs [update aborted]: EOF in key in RCS file @var{file},v
20553 @item cvs [update aborted]: EOF in key in RCS file @var{file},v
20554 @c <en>@itemx cvs [checkout aborted]: EOF while looking for end of string in RCS file @var{file},v
20555 @itemx cvs [checkout aborted]: EOF while looking for end of string in RCS file @var{file},v
20556 @c <en>This means that there is a syntax error in the given
20557 @c <en>@sc{rcs} file.  Note that this might be true even if @sc{rcs} can
20558 @c <en>read the file OK; @sc{cvs} does more error checking of
20559 @c <en>errors in the RCS file.  That is why you may see this
20560 @c <en>message when upgrading from @sc{cvs} 1.9 to @sc{cvs}
20561 @c <en>1.10.  The likely cause for the original corruption is
20562 @c <en>hardware, the operating system, or the like.  Of
20563 @c <en>course, if you find a case in which @sc{cvs} seems to
20564 @c <en>corrupting the file, by all means report it,
20565 @c <en>(@pxref{BUGS}).
20566 @c <en>There are quite a few variations of this error message,
20567 @c <en>depending on exactly where in the @sc{rcs} file @sc{cvs}
20568 @c <en>finds the syntax error.
20569 This means that there is a syntax error in the given
20570 @sc{rcs} file.  Note that this might be true even if @sc{rcs} can
20571 read the file OK; @sc{cvs} does more error checking of
20572 errors in the RCS file.  That is why you may see this
20573 message when upgrading from @sc{cvs} 1.9 to @sc{cvs}
20574 1.10.  The likely cause for the original corruption is
20575 hardware, the operating system, or the like.  Of
20576 course, if you find a case in which @sc{cvs} seems to
20577 corrupting the file, by all means report it,
20578 (@pxref{Paus}).
20579 There are quite a few variations of this error message,
20580 depending on exactly where in the @sc{rcs} file @sc{cvs}
20581 finds the syntax error.
20582
20583 @cindex mkmodules
20584 @item cvs commit: Executing 'mkmodules'
20585 This means that your repository is set up for a version
20586 of @sc{cvs} prior to @sc{cvs} 1.8.  When using @sc{cvs}
20587 1.8 or later, the above message will be preceded by
20588
20589 @example
20590 cvs commit: Rebuilding administrative file database
20591 @end example
20592
20593 If you see both messages, the database is being rebuilt
20594 twice, which is unnecessary but harmless.  If you wish
20595 to avoid the duplication, and you have no versions of
20596 @sc{cvs} 1.7 or earlier in use, remove @code{-i mkmodules}
20597 every place it appears in your @code{modules}
20598 file.  For more information on the @code{modules} file,
20599 see @ref{modules}.
20600
20601 @c This message comes from "co", and I believe is
20602 @c possible only with older versions of CVS which call
20603 @c co.  The problem with being able to create the bogus
20604 @c RCS file still exists, though (and I think maybe
20605 @c there is a different symptom(s) now).
20606 @c FIXME: Would be nice to have a more exact wording
20607 @c for this message.
20608 @item missing author
20609 Typically this can happen if you created an RCS file
20610 with your username set to empty.  @sc{cvs} will, bogusly,
20611 create an illegal RCS file with no value for the author
20612 field.  The solution is to make sure your username is
20613 set to a non-empty value and re-create the RCS file.
20614 @c "make sure your username is set" is complicated in
20615 @c and of itself, as there are the environment
20616 @c variables the system login name, &c, and it depends
20617 @c on the version of CVS.
20618
20619 @c <en>@item cvs [checkout aborted]: no such tag @var{tag}
20620 @item cvs [checkout aborted]: no such tag @var{tag}
20621 @c <en>This message means that @sc{cvs} isn't familiar with
20622 @c <en>the tag @var{tag}.  Usually this means that you have
20623 @c <en>mistyped a tag name; however there are (relatively
20624 @c <en>obscure) cases in which @sc{cvs} will require you to
20625 @c <en>@c Search sanity.sh for "no such tag" to see some of
20626 @c <en>@c the relatively obscure cases.
20627 @c <en>try a few other @sc{cvs} commands involving that tag,
20628 @c <en>before you find one which will cause @sc{cvs} to update
20629 This message means that @sc{cvs} isn't familiar with
20630 the tag @var{tag}.  Usually this means that you have
20631 mistyped a tag name; however there are (relatively
20632 obscure) cases in which @sc{cvs} will require you to
20633 @c Search sanity.sh for "no such tag" to see some of
20634 @c the relatively obscure cases.
20635 try a few other @sc{cvs} commands involving that tag,
20636 before you find one which will cause @sc{cvs} to update
20637 @c <en>@cindex CVSROOT/val-tags file, forcing tags into
20638 @cindex CVSROOT/val-tags file, forcing tags into
20639 @c <en>@cindex val-tags file, forcing tags into
20640 @cindex val-tags file, forcing tags into
20641 @c <en>the @file{val-tags} file; see discussion of val-tags in
20642 @c <en>@ref{File permissions}.  You only need to worry about
20643 @c <en>this once for a given tag; when a tag is listed in
20644 @c <en>@file{val-tags}, it stays there.  Note that using
20645 @c <en>@samp{-f} to not require tag matches does not override
20646 @c <en>this check; see @ref{Common options}.
20647 the @file{val-tags} file; see discussion of val-tags in
20648 @ref{Permissões de arquivos}.  You only need to worry about
20649 this once for a given tag; when a tag is listed in
20650 @file{val-tags}, it stays there.  Note that using
20651 @samp{-f} to not require tag matches does not override
20652 this check; see @ref{Opções comuns}.
20653
20654 @c <en>@item *PANIC* administration files missing
20655 @item *PANIC* administration files missing
20656 @c <en>This typically means that there is a directory named
20657 @c <en>@sc{cvs} but it does not contain the administrative files
20658 @c <en>which @sc{cvs} puts in a CVS directory.  If the problem is
20659 @c <en>that you created a CVS directory via some mechanism
20660 @c <en>other than @sc{cvs}, then the answer is simple, use a name
20661 @c <en>other than @sc{cvs}.  If not, it indicates a @sc{cvs} bug
20662 @c <en>(@pxref{BUGS}).
20663 This typically means that there is a directory named
20664 @sc{cvs} but it does not contain the administrative files
20665 which @sc{cvs} puts in a CVS directory.  If the problem is
20666 that you created a CVS directory via some mechanism
20667 other than @sc{cvs}, then the answer is simple, use a name
20668 other than @sc{cvs}.  If not, it indicates a @sc{cvs} bug
20669 (@pxref{Paus}).
20670
20671 @item rcs error: Unknown option: -x,v/
20672 This message will be followed by a usage message for
20673 @sc{rcs}.  It means that you have an old version of
20674 @sc{rcs} (probably supplied with your operating
20675 system), as well as an old version of @sc{cvs}.
20676 @sc{cvs} 1.9.18 and earlier only work with @sc{rcs} version 5 and
20677 later; current versions of @sc{cvs} do not run @sc{rcs} programs.
20678 @c For more information on installing @sc{cvs}, see
20679 @c (FIXME: where?  it depends on whether you are
20680 @c getting binaries or sources or what).
20681 @c The message can also say "ci error" or something
20682 @c instead of "rcs error", I suspect.
20683
20684 @c <en>@item cvs [server aborted]: received broken pipe signal
20685 @item cvs [server aborted]: received broken pipe signal
20686 @c <en>This message seems to be caused by a hard-to-track-down
20687 @c <en>bug in @sc{cvs} or the systems it runs on (we don't
20688 @c <en>know---we haven't tracked it down yet!).  It seems to
20689 @c <en>happen only after a @sc{cvs} command has completed, and
20690 @c <en>you should be able to just ignore the message.
20691 @c <en>However, if you have discovered information concerning its
20692 @c <en>cause, please let us know as described in @ref{BUGS}.
20693 This message seems to be caused by a hard-to-track-down
20694 bug in @sc{cvs} or the systems it runs on (we don't
20695 know---we haven't tracked it down yet!).  It seems to
20696 happen only after a @sc{cvs} command has completed, and
20697 you should be able to just ignore the message.
20698 However, if you have discovered information concerning its
20699 cause, please let us know as described in @ref{Paus}.
20700
20701 @item 'root' is not allowed to commit files
20702 When committing a permanent change, @sc{cvs} makes a log entry of
20703 who committed the change.  If you are committing the change logged
20704 in as "root" (not under "su" or other root-priv giving program),
20705 @sc{cvs} cannot determine who is actually making the change.
20706 As such, by default, @sc{cvs} disallows changes to be committed by users
20707 logged in as "root".  (You can disable this option by passing the
20708 @code{--enable-rootcommit} option to @file{configure} and recompiling @sc{cvs}.
20709 On some systems this means editing the appropriate @file{config.h} file
20710 before building @sc{cvs}.)
20711
20712 @item Too many arguments!
20713 This message is typically printed by the @file{log.pl}
20714 script which is in the @file{contrib} directory in the
20715 @sc{cvs} source distribution.  In some versions of
20716 @sc{cvs}, @file{log.pl} has been part of the default
20717 @sc{cvs} installation.  The @file{log.pl} script gets
20718 called from the @file{loginfo} administrative file.
20719 Check that the arguments passed in @file{loginfo} match
20720 what your version of @file{log.pl} expects.  In
20721 particular, the @file{log.pl} from @sc{cvs} 1.3 and
20722 older expects the logfile as an argument whereas the
20723 @file{log.pl} from @sc{cvs} 1.5 and newer expects the
20724 logfile to be specified with a @samp{-f} option.  Of
20725 course, if you don't need @file{log.pl} you can just
20726 comment it out of @file{loginfo}.
20727
20728 @item cvs [update aborted]: unexpected EOF reading @var{file},v
20729 See @samp{EOF in key in RCS file}.
20730
20731 @c <en>@item cvs [login aborted]: unrecognized auth response from @var{server}
20732 @item cvs [login aborted]: unrecognized auth response from @var{server}
20733 @c <en>This message typically means that the server is not set
20734 @c <en>up properly.  For example, if @file{inetd.conf} points
20735 @c <en>to a nonexistent cvs executable.  To debug it further,
20736 @c <en>find the log file which inetd writes
20737 @c <en>(@file{/var/log/messages} or whatever inetd uses on
20738 @c <en>your system).  For details, see @ref{Connection}, and
20739 @c <en>@ref{Password authentication server}.
20740 This message typically means that the server is not set
20741 up properly.  For example, if @file{inetd.conf} points
20742 to a nonexistent cvs executable.  To debug it further,
20743 find the log file which inetd writes
20744 (@file{/var/log/messages} or whatever inetd uses on
20745 your system).  For details, see @ref{Conexão}, and
20746 @ref{Servidor de autenticação por senha}.
20747
20748 @c <en>@item cvs commit: Up-to-date check failed for `@var{file}'
20749 @item cvs commit: Up-to-date check failed for `@var{file}'
20750 @c <en>This means that someone else has committed a change to
20751 @c <en>that file since the last time that you did a @code{cvs
20752 @c <en>update}.  So before proceeding with your @code{cvs
20753 @c <en>commit} you need to @code{cvs update}.  @sc{cvs} will merge
20754 @c <en>the changes that you made and the changes that the
20755 @c <en>other person made.  If it does not detect any conflicts
20756 @c <en>it will report @samp{M @var{file}} and you are ready
20757 @c <en>to @code{cvs commit}.  If it detects conflicts it will
20758 @c <en>print a message saying so, will report @samp{C @var{file}},
20759 @c <en>and you need to manually resolve the
20760 @c <en>conflict.  For more details on this process see
20761 @c <en>@ref{Conflicts example}.
20762 This means that someone else has committed a change to
20763 that file since the last time that you did a @code{cvs
20764 update}.  So before proceeding with your @code{cvs
20765 commit} you need to @code{cvs update}.  @sc{cvs} will merge
20766 the changes that you made and the changes that the
20767 other person made.  If it does not detect any conflicts
20768 it will report @samp{M @var{file}} and you are ready
20769 to @code{cvs commit}.  If it detects conflicts it will
20770 print a message saying so, will report @samp{C @var{file}},
20771 and you need to manually resolve the
20772 conflict.  For more details on this process see
20773 @ref{Exemplo de conflitos}.
20774
20775 @item Usage:    diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1 file2 file3
20776 @example
20777 Only one of [exEX3] allowed
20778 @end example
20779 This indicates a problem with the installation of
20780 @code{diff3} and @code{rcsmerge}.  Specifically
20781 @code{rcsmerge} was compiled to look for GNU diff3, but
20782 it is finding unix diff3 instead.  The exact text of
20783 the message will vary depending on the system.  The
20784 simplest solution is to upgrade to a current version of
20785 @sc{cvs}, which does not rely on external
20786 @code{rcsmerge} or @code{diff3} programs.
20787
20788 @item warning: unrecognized response `@var{text}' from cvs server
20789 If @var{text} contains a valid response (such as
20790 @samp{ok}) followed by an extra carriage return
20791 character (on many systems this will cause the second
20792 part of the message to overwrite the first part), then
20793 it probably means that you are using the @samp{:ext:}
20794 access method with a version of rsh, such as most
20795 non-unix rsh versions, which does not by default
20796 provide a transparent data stream.  In such cases you
20797 probably want to try @samp{:server:} instead of
20798 @samp{:ext:}.  If @var{text} is something else, this
20799 may signify a problem with your @sc{cvs} server.
20800 Double-check your installation against the instructions
20801 for setting up the @sc{cvs} server.
20802 @c FIXCVS: should be printing CR as \r or \015 or some
20803 @c such, probably.
20804
20805 @c <en>@item cvs commit: [@var{time}] waiting for @var{user}'s lock in @var{directory}
20806 @item cvs commit: [@var{time}] waiting for @var{user}'s lock in @var{directory}
20807 @c <en>This is a normal message, not an error.  See
20808 @c <en>@ref{Concurrency}, for more details.
20809 This is a normal message, not an error.  See
20810 @ref{Concorrência}, for more details.
20811
20812 @item cvs commit: warning: editor session failed
20813 @cindex Exit status, of editor
20814 This means that the editor which @sc{cvs} is using exits with a nonzero
20815 exit status.  Some versions of vi will do this even when there was not
20816 a problem editing the file.  If so, point the
20817 @code{CVSEDITOR} environment variable to a small script
20818 such as:
20819
20820 @example
20821 #!/bin/sh
20822 vi $*
20823 exit 0
20824 @end example
20825
20826 @c "warning: foo was lost" and "no longer pertinent" (both normal).
20827 @c Would be nice to write these up--they are
20828 @c potentially confusing for the new user.
20829 @end table
20830
20831 @c <en>@node Connection
20832 @node Conexão
20833 @c <en>@appendixsec Trouble making a connection to a CVS server
20834 @appendixsec Trouble making a connection to a CVS server
20835
20836 This section concerns what to do if you are having
20837 trouble making a connection to a @sc{cvs} server.  If
20838 you are running the @sc{cvs} command line client
20839 running on Windows, first upgrade the client to
20840 @sc{cvs} 1.9.12 or later.  The error reporting in
20841 earlier versions provided much less information about
20842 what the problem was.  If the client is non-Windows,
20843 @sc{cvs} 1.9 should be fine.
20844
20845 If the error messages are not sufficient to track down
20846 the problem, the next steps depend largely on which
20847 access method you are using.
20848
20849 @table @code
20850 @cindex :ext:, troubleshooting
20851 @item :ext:
20852 Try running the rsh program from the command line.  For
20853 example: "rsh servername cvs -v" should print @sc{cvs}
20854 version information.  If this doesn't work, you need to
20855 fix it before you can worry about @sc{cvs} problems.
20856
20857 @cindex :server:, troubleshooting
20858 @item :server:
20859 You don't need a command line rsh program to use this
20860 access method, but if you have an rsh program around,
20861 it may be useful as a debugging tool.  Follow the
20862 directions given for :ext:.
20863
20864 @cindex :pserver:, troubleshooting
20865 @item :pserver:
20866 Errors along the lines of "connection refused" typically indicate
20867 that inetd isn't even listening for connections on port 2401
20868 whereas errors like "connection reset by peer",
20869 "received broken pipe signal", "recv() from server: EOF",
20870 or "end of file from server"
20871 typically indicate that inetd is listening for
20872 connections but is unable to start @sc{cvs} (this is frequently
20873 caused by having an incorrect path in @file{inetd.conf}
20874 or by firewall software rejecting the connection).
20875 "unrecognized auth response" errors are caused by a bad command
20876 line in @file{inetd.conf}, typically an invalid option or forgetting
20877 to put the @samp{pserver} command at the end of the line.
20878 Another less common problem is invisible control characters that
20879 your editor "helpfully" added without you noticing.
20880
20881 One good debugging tool is to "telnet servername
20882 2401".  After connecting, send any text (for example
20883 "foo" followed by return).  If @sc{cvs} is working
20884 correctly, it will respond with
20885
20886 @example
20887 cvs [pserver aborted]: bad auth protocol start: foo
20888 @end example
20889
20890 If instead you get:
20891
20892 @example
20893 Usage: cvs [cvs-options] command [command-options-and-arguments]
20894 ...
20895 @end example
20896
20897 @noindent
20898 then you're missing the @samp{pserver} command at the end of the
20899 line in @file{inetd.conf}; check to make sure that the entire command
20900 is on one line and that it's complete.
20901
20902 Likewise, if you get something like:
20903
20904 @example
20905 Unknown command: `pserved'
20906
20907 CVS commands are:
20908         add          Add a new file/directory to the repository
20909 ...
20910 @end example
20911
20912 @noindent
20913 then you've misspelled @samp{pserver} in some way.  If it isn't
20914 obvious, check for invisible control characters (particularly
20915 carriage returns) in @file{inetd.conf}.
20916
20917 If it fails to work at all, then make sure inetd is working
20918 right.  Change the invocation in @file{inetd.conf} to run the
20919 echo program instead of cvs.  For example:
20920
20921 @example
20922 2401  stream  tcp  nowait  root /bin/echo echo hello
20923 @end example
20924
20925 After making that change and instructing inetd to
20926 re-read its configuration file, "telnet servername
20927 2401" should show you the text hello and then the
20928 server should close the connection.  If this doesn't
20929 work, you need to fix it before you can worry about
20930 @sc{cvs} problems.
20931
20932 On AIX systems, the system will often have its own
20933 program trying to use port 2401.  This is AIX's problem
20934 in the sense that port 2401 is registered for use with
20935 @sc{cvs}.  I hear that there is an AIX patch available
20936 to address this problem.
20937
20938 Another good debugging tool is the @samp{-d}
20939 (debugging) option to inetd.  Consult your system
20940 documentation for more information.
20941
20942 If you seem to be connecting but get errors like:
20943
20944 @example
20945 cvs server: cannot open /root/.cvsignore: Permission denied
20946 cvs [server aborted]: can't chdir(/root): Permission denied
20947 @end example
20948
20949 @noindent
20950 then you probably haven't specified @samp{-f} in @file{inetd.conf}.
20951 (In releases prior to @sc{cvs} 1.11.1, this problem can be caused by
20952 your system setting the @code{$HOME} environment variable
20953 for programs being run by inetd.  In this case, you can either
20954 have inetd run a shell script that unsets @code{$HOME} and then runs
20955 @sc{cvs}, or you can use @code{env} to run @sc{cvs} with a pristine
20956 environment.)
20957
20958 If you can connect successfully for a while but then can't,
20959 you've probably hit inetd's rate limit.
20960 (If inetd receives too many requests for the same service
20961 in a short period of time, it assumes that something is wrong
20962 and temporarily disables the service.)
20963 Check your inetd documentation to find out how to adjust the
20964 rate limit (some versions of inetd have a single rate limit,
20965 others allow you to set the limit for each service separately.)
20966 @end table
20967
20968 @c <en>@node Other problems
20969 @node Outros problemas
20970 @c <en>@appendixsec Other common problems
20971 @appendixsec Other common problems
20972
20973 Here is a list of problems which do not fit into the
20974 above categories.  They are in no particular order.
20975
20976 @itemize @bullet
20977 @item
20978 @c <en>On Windows, if there is a 30 second or so delay when
20979 @c <en>you run a @sc{cvs} command, it may mean that you have
20980 @c <en>your home directory set to @file{C:/}, for example (see
20981 @c <en>@code{HOMEDRIVE} and @code{HOMEPATH} in
20982 @c <en>@ref{Environment variables}).  @sc{cvs} expects the home
20983 @c <en>directory to not end in a slash, for example @file{C:}
20984 @c <en>or @file{C:\cvs}.
20985 On Windows, if there is a 30 second or so delay when
20986 you run a @sc{cvs} command, it may mean that you have
20987 your home directory set to @file{C:/}, for example (see
20988 @code{HOMEDRIVE} and @code{HOMEPATH} in
20989 @ref{Variáveis de ambiente}).  @sc{cvs} expects the home
20990 directory to not end in a slash, for example @file{C:}
20991 or @file{C:\cvs}.
20992 @c FIXCVS: CVS should at least detect this and print an
20993 @c error, presumably.
20994
20995 @item
20996 @c <en>If you are running @sc{cvs} 1.9.18 or older, and
20997 @c <en>@code{cvs update} finds a conflict and tries to
20998 @c <en>merge, as described in @ref{Conflicts example}, but
20999 @c <en>doesn't tell you there were conflicts, then you may
21000 @c <en>have an old version of @sc{rcs}.  The easiest solution
21001 @c <en>probably is to upgrade to a current version of
21002 @c <en>@sc{cvs}, which does not rely on external @sc{rcs}
21003 @c <en>programs.
21004 If you are running @sc{cvs} 1.9.18 or older, and
21005 @code{cvs update} finds a conflict and tries to
21006 merge, as described in @ref{Exemplo de conflitos}, but
21007 doesn't tell you there were conflicts, then you may
21008 have an old version of @sc{rcs}.  The easiest solution
21009 probably is to upgrade to a current version of
21010 @sc{cvs}, which does not rely on external @sc{rcs}
21011 programs.
21012 @end itemize
21013
21014 @c ---------------------------------------------------------------------
21015 @c <en>@node Credits
21016 @node Créditos
21017 @c <en>@appendix Credits
21018 @appendix Créditos
21019
21020 @cindex Contributors (manual)
21021 @cindex Credits (manual)
21022 Roland Pesch, then of Cygnus Support <@t{roland@@wrs.com}>
21023 wrote the manual pages which were distributed with
21024 @sc{cvs} 1.3.  Much of their text was copied into this
21025 manual.  He also read an early draft
21026 of this manual and contributed many ideas and
21027 corrections.
21028
21029 The mailing-list @code{info-cvs} is sometimes
21030 informative. I have included information from postings
21031 made by the following persons:
21032 David G. Grubbs <@t{dgg@@think.com}>.
21033
21034 Some text has been extracted from the man pages for
21035 @sc{rcs}.
21036
21037 The @sc{cvs} @sc{faq} by David G. Grubbs has provided
21038 useful material.  The @sc{faq} is no longer maintained,
21039 however, and this manual is about the closest thing there
21040 is to a successor (with respect to documenting how to
21041 use @sc{cvs}, at least).
21042
21043 In addition, the following persons have helped by
21044 telling me about mistakes I've made:
21045
21046 @display
21047 Roxanne Brunskill <@t{rbrunski@@datap.ca}>,
21048 Kathy Dyer <@t{dyer@@phoenix.ocf.llnl.gov}>,
21049 Karl Pingle <@t{pingle@@acuson.com}>,
21050 Thomas A Peterson <@t{tap@@src.honeywell.com}>,
21051 Inge Wallin <@t{ingwa@@signum.se}>,
21052 Dirk Koschuetzki <@t{koschuet@@fmi.uni-passau.de}>
21053 and Michael Brown <@t{brown@@wi.extrel.com}>.
21054 @end display
21055
21056 The list of contributors here is not comprehensive; for a more
21057 complete list of who has contributed to this manual see
21058 the file @file{doc/ChangeLog} in the @sc{cvs} source
21059 distribution.
21060
21061 @c ---------------------------------------------------------------------
21062 @c <en>@node BUGS
21063 @node Paus
21064 @c <en>@appendix Dealing with bugs in CVS or this manual
21065 @appendix Dealing with bugs in CVS or this manual
21066
21067 @cindex Bugs in this manual or CVS
21068 Neither @sc{cvs} nor this manual is perfect, and they
21069 probably never will be.  If you are having trouble
21070 using @sc{cvs}, or think you have found a bug, there
21071 are a number of things you can do about it.  Note that
21072 if the manual is unclear, that can be considered a bug
21073 in the manual, so these problems are often worth doing
21074 something about as well as problems with @sc{cvs} itself.
21075
21076 @cindex Reporting bugs
21077 @cindex Bugs, reporting
21078 @cindex Errors, reporting
21079 @itemize @bullet
21080 @item
21081 If you want someone to help you and fix bugs that you
21082 report, there are companies which will do that for a
21083 fee.  One such company is:
21084
21085 @cindex Ximbiot
21086 @cindex Support, getting CVS support
21087 @example
21088 Ximbiot
21089 319 S. River St.
21090 Harrisburg, PA  17104-1657
21091 USA
21092 Email: info@@ximbiot.com
21093 Phone: (717) 579-6168
21094 Fax:   (717) 234-3125
21095 @url{http://ximbiot.com/}
21096
21097 @end example
21098
21099 @item
21100 If you got @sc{cvs} through a distributor, such as an
21101 operating system vendor or a vendor of freeware
21102 @sc{cd-rom}s, you may wish to see whether the
21103 distributor provides support.  Often, they will provide
21104 no support or minimal support, but this may vary from
21105 distributor to distributor.
21106
21107 @item
21108 If you have the skills and time to do so, you may wish
21109 to fix the bug yourself.  If you wish to submit your
21110 fix for inclusion in future releases of @sc{cvs}, see
21111 the file @sc{hacking} in the @sc{cvs} source
21112 distribution.  It contains much more information on the
21113 process of submitting fixes.
21114
21115 @item
21116 There may be resources on the net which can help.  Two
21117 good places to start are:
21118
21119 @example
21120 @url{http://cvs.nongnu.org/}
21121 @end example
21122
21123 If you are so inspired, increasing the information
21124 available on the net is likely to be appreciated.  For
21125 example, before the standard @sc{cvs} distribution
21126 worked on Windows 95, there was a web page with some
21127 explanation and patches for running @sc{cvs} on Windows
21128 95, and various people helped out by mentioning this
21129 page on mailing lists or newsgroups when the subject
21130 came up.
21131
21132 @item
21133 It is also possible to report bugs to @email{bug-cvs@@nongnu.org}.
21134 Note that someone may or may not want to do anything
21135 with your bug report---if you need a solution consider
21136 one of the options mentioned above.  People probably do
21137 want to hear about bugs which are particularly severe
21138 in consequences and/or easy to fix, however.  You can
21139 also increase your odds by being as clear as possible
21140 about the exact nature of the bug and any other
21141 relevant information.  The way to report bugs is to
21142 send email to @email{bug-cvs@@nongnu.org}.  Note
21143 that submissions to @email{bug-cvs@@nongnu.org} may be distributed
21144 under the terms of the @sc{gnu} Public License, so if
21145 you don't like this, don't submit them.  There is
21146 usually no justification for sending mail directly to
21147 one of the @sc{cvs} maintainers rather than to
21148 @email{bug-cvs@@nongnu.org}; those maintainers who want to hear
21149 about such bug reports read @email{bug-cvs@@nongnu.org}.  Also note
21150 that sending a bug report to other mailing lists or
21151 newsgroups is @emph{not} a substitute for sending it to
21152 @email{bug-cvs@@nongnu.org}.  It is fine to discuss @sc{cvs} bugs on
21153 whatever forum you prefer, but there are not
21154 necessarily any maintainers reading bug reports sent
21155 anywhere except @email{bug-cvs@@nongnu.org}.
21156 @end itemize
21157
21158 @cindex Known bugs in this manual or CVS
21159 People often ask if there is a list of known bugs or
21160 whether a particular bug is a known one.  The file
21161 @sc{bugs} in the @sc{cvs} source distribution is one
21162 list of known bugs, but it doesn't necessarily try to
21163 be comprehensive.  Perhaps there will never be a
21164 comprehensive, detailed list of known bugs.
21165
21166 @c ---------------------------------------------------------------------
21167 @c <en>@node Index
21168 @node Indice
21169 @c <en>@unnumbered Index
21170 @unnumbered Índice
21171 @c <en>@cindex Index
21172 @cindex Índice
21173
21174 @printindex cp
21175
21176 @summarycontents
21177
21178 @contents
21179
21180 @bye
21181 \f
21182 Local Variables:
21183 fill-column: 55
21184 End: