summaryrefslogtreecommitdiff
path: root/doc/i18n
diff options
context:
space:
mode:
Diffstat (limited to 'doc/i18n')
-rw-r--r--doc/i18n/.cvsignore1
-rw-r--r--doc/i18n/ChangeLog11
-rw-r--r--doc/i18n/Makefile.am22
-rw-r--r--doc/i18n/Makefile.in578
-rw-r--r--doc/i18n/README11
-rw-r--r--doc/i18n/pt_BR/.cvsignore1
-rw-r--r--doc/i18n/pt_BR/ChangeLog68
-rw-r--r--doc/i18n/pt_BR/Makefile.am20
-rw-r--r--doc/i18n/pt_BR/Makefile.in421
-rw-r--r--doc/i18n/pt_BR/README21
-rw-r--r--doc/i18n/pt_BR/cvs.texinfo21184
11 files changed, 22338 insertions, 0 deletions
diff --git a/doc/i18n/.cvsignore b/doc/i18n/.cvsignore
new file mode 100644
index 0000000..f3c7a7c
--- /dev/null
+++ b/doc/i18n/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/doc/i18n/ChangeLog b/doc/i18n/ChangeLog
new file mode 100644
index 0000000..47ff29d
--- /dev/null
+++ b/doc/i18n/ChangeLog
@@ -0,0 +1,11 @@
+2005-03-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerated.
+
+2004-12-14 Derek Price <derek@ximbiot.com>
+
+ * .cvsignore, Makefile.am: New files.
+
+2003-12-15 Derek Price <derek@ximbiot.com>
+
+ * ChangeLog, README: New files.
diff --git a/doc/i18n/Makefile.am b/doc/i18n/Makefile.am
new file mode 100644
index 0000000..0e8400a
--- /dev/null
+++ b/doc/i18n/Makefile.am
@@ -0,0 +1,22 @@
+## Process this file with automake to produce Makefile.in
+# Makefile for GNU translated CVS documentation
+# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+SUBDIRS = pt_BR
+
+EXTRA_DIST = \
+ .cvsignore \
+ ChangeLog \
+ README
diff --git a/doc/i18n/Makefile.in b/doc/i18n/Makefile.in
new file mode 100644
index 0000000..6679d7c
--- /dev/null
+++ b/doc/i18n/Makefile.in
@@ -0,0 +1,578 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for GNU translated CVS documentation
+# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/i18n
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acx_extract_cpp_defn.m4 \
+ $(top_srcdir)/m4/acx_with_external_zlib.m4 \
+ $(top_srcdir)/m4/acx_with_gssapi.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 \
+ $(top_srcdir)/m4/asx_version_compare.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/bison.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/cvs_func_printf_ptr.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/filenamecat.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/gethostname.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getlogin_r.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getnline.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
+ $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glob.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes.m4 \
+ $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/mbchar.m4 \
+ $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/md5.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
+ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/onceonly_2_57.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pagealign_alloc.m4 \
+ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/restrict.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/save-cwd.m4 \
+ $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/signed.m4 \
+ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-macros.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/strstr.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/sunos57-select.m4 $(top_srcdir)/m4/time_r.m4 \
+ $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
+ $(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+ $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \
+ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xreadlink.m4 \
+ $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/yesno.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSH = @CSH@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EDITOR = @EDITOR@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FNMATCH_H = @FNMATCH_H@
+GETOPT_H = @GETOPT_H@
+GLOB_H = @GLOB_H@
+GMSGFMT = @GMSGFMT@
+HAVE_LONG_64BIT = @HAVE_LONG_64BIT@
+HAVE_LONG_LONG_64BIT = @HAVE_LONG_LONG_64BIT@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+KRB4 = @KRB4@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
+MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MKTEMP = @MKTEMP@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+PR = @PR@
+PS2PDF = @PS2PDF@
+RANLIB = @RANLIB@
+ROFF = @ROFF@
+RSH_DFLT = @RSH_DFLT@
+SENDMAIL = @SENDMAIL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+ZLIB_SUBDIRS = @ZLIB_SUBDIRS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_prefix_program = @ac_prefix_program@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+cvs_client_objects = @cvs_client_objects@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+with_default_rsh = @with_default_rsh@
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+SUBDIRS = pt_BR
+EXTRA_DIST = \
+ .cvsignore \
+ ChangeLog \
+ README
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/i18n/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/i18n/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-recursive ctags ctags-recursive \
+ distclean distclean-generic distclean-recursive distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/i18n/README b/doc/i18n/README
new file mode 100644
index 0000000..0a947ff
--- /dev/null
+++ b/doc/i18n/README
@@ -0,0 +1,11 @@
+The subdirectories of this directory contain translations of the Cederqvist
+(CVS manual). For now, you can build these files by copying them into place
+of the cvs.texinfo manual in the `doc' directory and running `make doc',
+`make pdf', `make info', or whatever would have built the regular manual in the
+form you were looking for. If anyone would like to contribute `Makefile.am's
+for the new directories, we would love to see them.
+
+P.S. I'm not sure about the organizational scheme I am using for these files.
+If anyone would like to suggest another and point me to a few example projects
+which contain translations of documentation, I would appreciate it. I've
+never dealt with translations before. (Derek Price: <derek@ximbiot.com>.)
diff --git a/doc/i18n/pt_BR/.cvsignore b/doc/i18n/pt_BR/.cvsignore
new file mode 100644
index 0000000..f3c7a7c
--- /dev/null
+++ b/doc/i18n/pt_BR/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/doc/i18n/pt_BR/ChangeLog b/doc/i18n/pt_BR/ChangeLog
new file mode 100644
index 0000000..017b68e
--- /dev/null
+++ b/doc/i18n/pt_BR/ChangeLog
@@ -0,0 +1,68 @@
+2005-09-01 Derek Price <derek@ximbiot.com>
+
+ * README, cvs.texinfo: Update email addresses and links.
+
+2005-07-20 Derek Price <derek@ximbiot.com>
+
+ * cvs.texinfo: s/cvshome.org/nongnu.org.etc.../.
+
+2005-05-01 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerated.
+
+2005-03-22 Mark D. Baushke <mdb@cvshome.org>
+
+ * Makefile.in: Regenerated.
+
+2004-12-14 Derek Price <derek@ximbiot.com>
+
+ * .cvsignore, Makefile.am: New files.
+
+2004-12-07 Mark D. Baushke <mdb@cvshome.org>
+
+ * cvs.texinfo (BUGS, What is CVS?): Remove references to Dr.
+ Pascal Molli's cvs document which is no longer available.
+
+2004-11-29 Mark D. Baushke <mdb@cvshome.org>
+
+ * cvs.texinfo: Add some missing text.
+
+2004-10-29 Mark D. Baushke <mdb@cvshome.org>
+
+ * cvs.texinfo (Common options): The -r TAG option works with
+ the cvs annotate command.
+ (Original patch from Ville Skytta <scop@cvshome.org>.)
+
+2004-04-01 Derek Price <derek@ximbiot.com>
+
+ * cvs.texinfo: Latest update.
+ (From Fred Ulisses Maranhão <fred.maranhao@click21.com.br>.)
+
+2004-02-04 Derek Price <derek@ximbiot.com>
+
+ * cvs.texinfo: Explain English words Fred could not translate in
+ English again.
+
+2004-02-04 Derek Price <derek@ximbiot.com>
+
+ * cvs.texinfo: Latest update.
+ (From Fred Ulisses Maranhão <fredm@chesf.gov.br>.)
+
+2003-12-24 Mark D. Baushke <mdb@cvshome.org>
+
+ * cvs.texinfo: Latest update.
+ (From Fred Ulisses Maranhão <fredm@chesf.gov.br>.)
+
+2003-12-16 Mark D. Baushke <mdb@cvshome.org>
+
+ * cvs.texinfo: Lastest update from Fred.
+
+2003-12-15 Derek Price <derek@ximbiot.com>
+
+ * cvs.texinfo: Explain in the English comments what some English
+ colloquialisms that Fred did not know how to translate mean.
+
+2003-12-15 Derek Price <derek@ximbiot.com>
+
+ * cvs.texinfo: Translation of the Cederqvist to Brazilian Portuguese.
+ (From Fred Ulisses Maranhão <fredm@chesf.gov.br>.)
diff --git a/doc/i18n/pt_BR/Makefile.am b/doc/i18n/pt_BR/Makefile.am
new file mode 100644
index 0000000..36a9163
--- /dev/null
+++ b/doc/i18n/pt_BR/Makefile.am
@@ -0,0 +1,20 @@
+## Process this file with automake to produce Makefile.in
+# Makefile for GNU translated CVS documentation
+# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+EXTRA_DIST = \
+ .cvsignore \
+ ChangeLog \
+ cvs.texinfo
diff --git a/doc/i18n/pt_BR/Makefile.in b/doc/i18n/pt_BR/Makefile.in
new file mode 100644
index 0000000..b51cfa1
--- /dev/null
+++ b/doc/i18n/pt_BR/Makefile.in
@@ -0,0 +1,421 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile for GNU translated CVS documentation
+# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/i18n/pt_BR
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acx_extract_cpp_defn.m4 \
+ $(top_srcdir)/m4/acx_with_external_zlib.m4 \
+ $(top_srcdir)/m4/acx_with_gssapi.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 \
+ $(top_srcdir)/m4/asx_version_compare.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/bison.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/cvs_func_printf_ptr.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/filenamecat.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/gethostname.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getlogin_r.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getnline.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettime.m4 \
+ $(top_srcdir)/m4/gettimeofday.m4 $(top_srcdir)/m4/glob.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes.m4 \
+ $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/mbchar.m4 \
+ $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/md5.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/mempcpy.m4 $(top_srcdir)/m4/memrchr.m4 \
+ $(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/onceonly_2_57.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pagealign_alloc.m4 \
+ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/restrict.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/save-cwd.m4 \
+ $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/signed.m4 \
+ $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat-macros.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/strstr.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/sunos57-select.m4 $(top_srcdir)/m4/time_r.m4 \
+ $(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
+ $(top_srcdir)/m4/tzset.m4 $(top_srcdir)/m4/uint32_t.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+ $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \
+ $(top_srcdir)/m4/vasprintf.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xgetcwd.m4 $(top_srcdir)/m4/xreadlink.m4 \
+ $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/yesno.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CSH = @CSH@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EDITOR = @EDITOR@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FNMATCH_H = @FNMATCH_H@
+GETOPT_H = @GETOPT_H@
+GLOB_H = @GLOB_H@
+GMSGFMT = @GMSGFMT@
+HAVE_LONG_64BIT = @HAVE_LONG_64BIT@
+HAVE_LONG_LONG_64BIT = @HAVE_LONG_LONG_64BIT@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+KRB4 = @KRB4@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
+MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MKTEMP = @MKTEMP@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+PR = @PR@
+PS2PDF = @PS2PDF@
+RANLIB = @RANLIB@
+ROFF = @ROFF@
+RSH_DFLT = @RSH_DFLT@
+SENDMAIL = @SENDMAIL@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+TEXI2DVI = @TEXI2DVI@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+ZLIB_CPPFLAGS = @ZLIB_CPPFLAGS@
+ZLIB_LIBS = @ZLIB_LIBS@
+ZLIB_SUBDIRS = @ZLIB_SUBDIRS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_prefix_program = @ac_prefix_program@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+cvs_client_objects = @cvs_client_objects@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+with_default_rsh = @with_default_rsh@
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+EXTRA_DIST = \
+ .cvsignore \
+ ChangeLog \
+ cvs.texinfo
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/i18n/pt_BR/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/i18n/pt_BR/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/i18n/pt_BR/README b/doc/i18n/pt_BR/README
new file mode 100644
index 0000000..993a919
--- /dev/null
+++ b/doc/i18n/pt_BR/README
@@ -0,0 +1,21 @@
+Hi,
+
+To just generate the manual in portuguese, download the file
+cvs.texinfo from the actual directory and compile the manual with:
+
+makeinfo --html cvs.texinfo
+
+If you what to help with the translation, send a message to
+bug-cvs@nongnu.org and told us what peace you want to translate.
+
+Some policy:
+
+* commit just a compileable version
+
+* don't erase original text. comment original text with '@c <en>'.
+
+* don't translate comments in english (starting with '@c '. leave them
+ untouched
+
+* don't translate examples. let's concentrate in finish the work
+ first.
diff --git a/doc/i18n/pt_BR/cvs.texinfo b/doc/i18n/pt_BR/cvs.texinfo
new file mode 100644
index 0000000..5b38ae5
--- /dev/null
+++ b/doc/i18n/pt_BR/cvs.texinfo
@@ -0,0 +1,21184 @@
+\input texinfo @c -*-texinfo-*-
+@comment Documentation for CVS.
+@setfilename cvs.info
+@macro copyleftnotice
+@noindent
+Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003 Free Software Foundation, Inc.
+
+@multitable @columnfractions .12 .88
+@item Portions
+@item @tab Copyright @copyright{} 1999, 2000, 2001, 2002, 2003 Derek R. Price,
+@item @tab Copyright @copyright{} 2002, 2003 Ximbiot @url{http://ximbiot.com},
+@item @tab Copyright @copyright{} 1992, 1993, 1999 Signum Support AB,
+@item @tab and Copyright @copyright{} others.
+@end multitable
+
+@ignore
+Permission is granted to process this file through Tex and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation
+approved by the Free Software Foundation.
+@end macro
+
+@comment This file is part of the CVS distribution.
+
+@comment CVS is free software; you can redistribute it and/or modify
+@comment it under the terms of the GNU General Public License as published by
+@comment the Free Software Foundation; either version 2, or (at your option)
+@comment any later version.
+
+@comment CVS is distributed in the hope that it will be useful,
+@comment but WITHOUT ANY WARRANTY; without even the implied warranty of
+@comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+@comment GNU General Public License for more details.
+
+@c See ../README for A4 vs. US letter size.
+@c When we provided A4 postscript, and people tried to
+@c print it on US letter, the usual complaint was that the
+@c page numbers would get cut off.
+@c If one prints US letter on A4, reportedly there is
+@c some extra space at the top and/or bottom, and the side
+@c margins are a bit narrow, but no text is lost.
+@c
+@c See
+@c http://www.ft.uni-erlangen.de/~mskuhn/iso-paper.html
+@c for more on paper sizes. Insuring that margins are
+@c big enough to print on either A4 or US letter does
+@c indeed seem to be the usual approach (RFC2346).
+
+@c This document seems to get overfull hboxes with some
+@c frequency (probably because the tendency is to
+@c sanity-check it with "make info" and run TeX less
+@c often). The big ugly boxes just seem to add insult
+@c to injury, and I'm not aware of them helping to fix
+@c the overfull hboxes at all.
+@finalout
+
+@c ???@include version.texi???
+@settitle CVS---Concurrent Versions System v@c ???@value{VERSION}???
+@setchapternewpage odd
+
+@c -- TODO list:
+@c -- Fix all lines that match "^@c -- "
+@c -- Also places marked with FIXME should be manual
+@c problems (as opposed to FIXCVS for CVS problems).
+
+@c @splitrcskeyword{} is used to avoid keyword expansion. It is replaced by
+@c @asis when generating info and dvi, and by <i></i> in the generated html,
+@c such that keywords are not expanded in the generated html.
+@ifnothtml
+@macro splitrcskeyword {arg}
+@asis{}\arg\
+@end macro
+@end ifnothtml
+
+@ifhtml
+@macro splitrcskeyword {arg}
+@i{}\arg\
+@end macro
+@end ifhtml
+
+@dircategory GNU Packages
+@direntry
+* CVS: (cvs). Concurrent Versions System
+@end direntry
+@dircategory Individual utilities
+@direntry
+* cvs: (cvs)CVS commands. Concurrent Versions System
+@end direntry
+
+@comment The titlepage section does not appear in the Info file.
+@titlepage
+@sp 4
+@comment The title is printed in a large font.
+@center @titlefont{Version Management}
+@sp
+@center @titlefont{with}
+@sp
+@center @titlefont{CVS}
+@sp 2
+@center for @sc{cvs} @c ???@value{VERSION}???
+@comment -release-
+@sp 3
+@center Per Cederqvist et al
+
+@comment The following two commands start the copyright page
+@comment for the printed manual. This will not appear in the Info file.
+@page
+@vskip 0pt plus 1filll
+@copyleftnotice
+@end titlepage
+
+@comment ================================================================
+@comment The real text starts here
+@comment ================================================================
+
+@ifnottex
+@c ---------------------------------------------------------------------
+@node Top
+@top
+
+@c <en> This info manual describes how to use and administer
+Esta página manual ensina a como usar e administrar o
+@c <en> @sc{cvs} version @value{VERSION}.
+@sc{cvs} versão @c ???@value{VERSION}???.
+@end ifnottex
+
+@ifinfo
+@copyleftnotice
+@end ifinfo
+
+@c This menu is pretty long. Not sure how easily that
+@c can be fixed (no brilliant ideas right away)...
+@menu
+@c <en>* Overview:: An introduction to CVS
+* Visão Geral:: Uma introdução ao CVS
+@c <en>* Repository:: Where all your sources are stored
+* Repositório:: Onde todos os seus fontes são guardados
+@c <en>* Starting a new project:: Starting a project with CVS
+* Começando um novo projeto:: Começando um projeto com CVS
+@c <en>* Revisions:: Numeric and symbolic names for revisions
+* Revisões:: Nomes numéricos e simbólicos para revisões
+@c <en>* Branching and merging:: Diverging/rejoining branches of development
+* Ramificando e mesclando:: Divergindo/reunindo ramos de desenvolvimento
+@c <en>* Recursive behavior:: CVS descends directories
+* Comportamento recursivo:: CVS adentra nos diretórios
+@c <en>* Adding and removing:: Adding/removing/renaming files/directories
+* Adicionando e removendo:: Adicionando/apagando/renomeando arquivos/diretórios
+@c <en>* History browsing:: Viewing the history of files in various ways
+* Navegação no Histórico:: Vendo o histórico dos arquivos de várias formas
+
+@c <en>CVS and the Real World.
+CVS e o mundo Real.
+-----------------------
+@c <en>* Binary files:: CVS can handle binary files
+* Arquivos binários:: CVS pode lidar com arquivos binários
+@c <en>* Multiple developers:: How CVS helps a group of developers
+* Múltiplos desenvolvedores:: Como CVS ajuda um grupo de desenvolvedores
+@c <en>* Revision management:: Policy questions for revision management
+* Gerenciamento de revisões:: Questões de política para gerenciamento de revisões
+@c <en>* Keyword substitution:: CVS can include the revision inside the file
+* Substituição de palavra-chave:: CVS inclui a revisão dentro do arquivo
+@c <en>* Tracking sources:: Tracking third-party sources
+* Acompanhando fontes:: Acompanhando fontes de terceiros
+@c <en>* Builds:: Issues related to CVS and builds
+* Builds:: Issues related to CVS and builds
+@c <en>* Special Files:: Devices, links and other non-regular files
+* Arquivos especiais:: Dispositivos, ligações e outros arquivos diferentes
+
+@c <en>References.
+Referências.
+-----------
+@c <en>* CVS commands:: CVS commands share some things
+* Comandos do CVS:: Comandos do CVS têm algo em comum
+@c <en>* Invoking CVS:: Quick reference to CVS commands
+* Chamando o CVS:: Referência rápida aos comandos do CVS
+@c <en>* Administrative files:: Reference manual for the Administrative files
+* Arquivos administrativos:: Manual de referência para os arquivos administrativos
+@c <en>* Environment variables:: All environment variables which affect CVS
+* Variáveis de ambiente:: Todas as variáveis de ambiente que afetam o CVS
+@c <en>* Compatibility:: Upgrading CVS versions
+* Compatibilidade:: Upgrading CVS versions
+@c <en>* Troubleshooting:: Some tips when nothing works
+* Resolução de problemas:: Algumas dicas quando nada funciona
+@c <en>* Credits:: Some of the contributors to this manual
+* Créditos:: Alguns dos contribuidores deste manual
+@c <en>* BUGS:: Dealing with bugs in CVS or this manual
+* Paus:: Lidando com paus no CVS ou neste manual
+@c <en>* Index:: Index
+* Indice:: Índice
+@end menu
+
+@c ---------------------------------------------------------------------
+@c <en>@node Overview
+@c <en>@chapter Overview
+@c <en>@cindex Overview
+@node Visão Geral
+@chapter Visão Geral
+@cindex Visão Geral
+
+@c <en>This chapter is for people who have never used
+@c <en>@sc{cvs}, and perhaps have never used version control
+@c <en>software before.
+Este capítulo é para aqueles que nunca usaram o
+@sc{cvs} antes, e talvez nunca tenham usado um programa
+de controle de versões antes.
+
+@c <en>If you are already familiar with @sc{cvs} and are just
+@c <en>trying to learn a particular feature or remember a
+@c <en>certain command, you can probably skip everything here.
+Se você já conhece o @sc{cvs} e está apenas tentando
+aprender sobre uma habilidade em particular ou lembrar
+um certo comando, você provavelmente pode pular tudo
+aqui.
+
+@menu
+@c <en>* What is CVS?:: What you can do with @sc{cvs}
+* O que é CVS?:: O que você pode fazer com @sc{cvs}
+@c <en>* What is CVS not?:: Problems @sc{cvs} doesn't try to solve
+* O que CVS não é?:: Problemas que o @sc{cvs} não tenta resolver
+@c <en>* A sample session:: A tour of basic @sc{cvs} usage
+* Uma sessão de exemplo:: Um tour pelo uso básico do @sc{cvs}
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node What is CVS?
+@c <en>@section What is CVS?
+@c <en>@cindex What is CVS?
+@c <en>@cindex Introduction to CVS
+@c <en>@cindex CVS, introduction to
+@node O que é CVS?
+@section O que é CVS?
+@cindex O que é CVS?
+@cindex Introdução ao CVS
+@cindex CVS, introdução ao
+
+@c <en>@sc{cvs} is a version control system. Using it, you can
+@c <en>record the history of your source files.
+@sc{cvs} é um sistema de controle de versões. Ao
+usá-lo, você pode registrar a história dos seus códigos
+fonte.
+
+@c -- ///
+@c -- ///Those who cannot remember the past are condemned to repeat it.
+@c -- /// -- George Santayana
+@c -- //////
+
+@c -- Insert history quote here!
+@c <en>For example, bugs sometimes creep in when
+@c <en>software is modified, and you might not detect the bug
+@c <en>until a long time after you make the modification.
+@c <en>With @sc{cvs}, you can easily retrieve old versions to see
+@c <en>exactly which change caused the bug. This can
+@c <en>sometimes be a big help.
+Por exemplo, às vezes aparecem erros quando um programa
+é modificado e você não detecta o problema até muito
+tempo depois de você ter feito a modificação. Com
+@sc{cvs}, você pode recuperar versões antigas para ver
+exatamente o que causou o erro. Isto às vezes é de
+grande ajuda.
+
+@c <en>You could of course save every version of every file
+@c <en>you have ever created. This would
+@c <en>however waste an enormous amount of disk space. @sc{cvs}
+@c <en>stores all the versions of a file in a single file in a
+@c <en>clever way that only stores the differences between
+@c <en>versions.
+Você pode, é claro, salvar toda versão de todo arquivo
+que um dia você criou. Mas isto vai consumir um enorme
+espaço no disco. O @sc{cvs} guarda todas as versões de um
+arquivo em um único arquivo em uma forma inteligente
+que guarda apenas as diferenças entre versões.
+
+@c <en>@sc{cvs} also helps you if you are part of a group of people working
+@c <en>on the same project. It is all too easy to overwrite
+@c <en>each others' changes unless you are extremely careful.
+@c <en>Some editors, like @sc{gnu} Emacs, try to make sure that
+@c <en>the same file is never modified by two people at the
+@c <en>same time. Unfortunately, if someone is using another
+@c <en>editor, that safeguard will not work. @sc{cvs} solves this problem
+@c <en>by insulating the different developers from each other. Every
+@c <en>developer works in his own directory, and @sc{cvs} merges
+@c <en>the work when each developer is done.
+@sc{cvs} também ajuda se você é parte de um grupo de
+pessoas trabalhando no mesmo projeto. É muito fácil uns
+sobreescreverem as mudanças de outros se não forem
+extremamente cuidadosos. Alguns editores, como o
+@sc{gnu} Emacs, tentam se certificar de que o mesmo
+arquivo nunca seja modificado por duas pessoas ao mesmo
+tempo. Infelizmente, se alguém estiver usando outro
+editor, está segurança não vai funcionar. O @sc{cvs}
+resolve este problema isolando os desenvolvedores uns
+dos outros. Todo desenvolvedor trabalha em seu próprio
+diretório e o @sc{cvs} mescla o trabalho quando cada
+desenvolvedor tiver terminado.
+
+@c <en>@cindex History of CVS
+@cindex História do CVS
+@c <en>@cindex CVS, history of
+@cindex CVS, história do
+@c <en>@cindex Credits (CVS program)
+@cindex Créditos (programa CVS)
+@c <en>@cindex Contributors (CVS program)
+@cindex Contribuidores (programa CVS)
+@c <en>@sc{cvs} started out as a bunch of shell scripts written by
+@c <en>Dick Grune, posted to the newsgroup
+@c <en>@code{comp.sources.unix} in the volume 6
+@c <en>release of July, 1986. While no actual code from
+@c <en>these shell scripts is present in the current version
+@c <en>of @sc{cvs} much of the @sc{cvs} conflict resolution algorithms
+@c <en>come from them.
+@sc{cvs} começou como um monte de shell scripts
+escritos por Dick Grune, postados no newsgroup
+@code{comp.sources.unix} no volume 6, de Julho de
+1986. Na verdade, nenhum código daqueles scripts está
+presente na versão atual do @sc{cvs}, mas muito dos
+algoritmos de resolução de conflitos do @sc{cvs} vem
+deles.
+
+@c <en>In April, 1989, Brian Berliner designed and coded @sc{cvs}.
+@c <en>Jeff Polk later helped Brian with the design of the @sc{cvs}
+@c <en>module and vendor branch support.
+Em abril de 1989, Brian Berliner projetou e codificou
+@sc{cvs}. Depois, Jeff Polk ajudou Brian com o projeto
+do módulo @sc{cvs} e o suporte ao ramo do fornecedor.
+
+@c <en>@cindex Source, getting CVS source
+@cindex Fontes, adquirindo os fontes do CVS
+@c <en>You can get @sc{cvs} in a variety of ways, including
+@c <en>free download from the internet. For more information
+@c <en>on downloading @sc{cvs} and other @sc{cvs} topics, see:
+Você pode conseguir o @sc{cvs} de várias formas,
+inclusive baixando gratuitamente da internet. Para
+maiores informações sobre baixar o @sc{cvs} e para
+outros tópicos sobre @sc{cvs}, veja:
+
+@example
+@url{http://cvs.nongnu.org/}
+@end example
+
+@c <en>@cindex Mailing list
+@cindex Lista de Discussão
+@c <en>@cindex List, mailing list
+@cindex Lista, lista de discussão
+@c <en>@cindex Newsgroups
+@cindex Newsgroups
+@c <en>There is a mailing list, known as @email{info-cvs@@nongnu.org},
+@c <en>devoted to @sc{cvs}. To subscribe or
+@c <en>unsubscribe
+@c <en>write to
+@c <en>@email{info-cvs-request@@nongnu.org}.
+@c <en>If you prefer a usenet group, there is a one-way mirror (posts to the email
+@c <en>list are usually sent to the news group, but not visa versa) of
+@c <en>@email{info-cvs@@nongnu.org} at @url{news:gnu.cvs.help}. The right
+@c <en>usenet group for posts is @url{news:comp.software.config-mgmt} which is for
+@c <en>@sc{cvs} discussions (along with other configuration
+@c <en>management systems). In the future, it might be
+@c <en>possible to create a
+@c <en>@code{comp.software.config-mgmt.cvs}, but probably only
+@c <en>if there is sufficient @sc{cvs} traffic on
+@c <en>@url{news:comp.software.config-mgmt}.
+Existe uma lista de discussão, conhecida como @email{info-cvs@@nongnu.org},
+dedicada ao @sc{cvs}. Para se cadastrar ou descadastrar nela
+escreva para @email{info-cvs-request@@nongnu.org}. Se você
+preferir um grupo de usenet, existe um espelho de mão
+única (postagens para a lista de email são usualmente
+mandadas para o news group, mas não vice-versa) da lista
+@email{info-cvs@@nongnu.org} em @url{news:gnu.cvs.help}. O
+grupo usenet correto para postagens é o
+@url{news:comp.software.config-mgmt} que é para
+discussões sobre @sc{cvs} (juntamente com outros
+sistemas de gerência de configuração). No futuro, poderá ser criada uma
+@code{comp.software.config-mgmt.cvs}, mas apenas se
+houver bastante tráfego sobre o @sc{cvs} na
+@url{news:comp.software.config-mgmt}.
+@c Other random data is that the tale was very
+@c skeptical of comp.software.config-mgmt.cvs when the
+@c subject came up around 1995 or so (for one
+@c thing, because creating it would be a "reorg" which
+@c would need to take a more comprehensive look at the
+@c whole comp.software.config-mgmt.* hierarchy).
+
+@c <en>You can also subscribe to the @email{bug-cvs@@nongnu.org} mailing list,
+@c <en>described in more detail in @ref{BUGS}. To subscribe
+@c <en>send mail to @email{bug-cvs-request@@nongnu.org}. There is a two-way
+@c <en>usenet mirror (posts to the usenet group are usually sent to the email list and
+@c <en>visa versa) of @email{bug-cvs@@nongnu.org} named @url{news:gnu.cvs.bug}.
+Você também pode se cadastrar na lista de discussão
+@email{bug-cvs@@nongnu.org}, descrita em maiores detalhes
+em @ref{Paus}. Para se cadastrar mande um e-mail para
+@email{bug-cvs-request@@nongnu.org}. Existe um espelho
+usenet de mão-dupla (postagens para o grupo usenet são
+usualmente mandadas para a lista e vice-versa) de
+@email{bug-cvs@@nongnu.org} chamado
+@url{news:gnu.cvs.bug}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node What is CVS not?
+@node O que CVS não é?
+@c <en>@section What is CVS not?
+@section O que CVS não é?
+@c <en>@cindex What is CVS not?
+@cindex O que CVS não é?
+
+@c <en>@sc{cvs} can do a lot of things for you, but it does
+@c <en>not try to be everything for everyone.
+@sc{cvs} pode fazer várias coisas para você, mas não
+tenta fazer tudo para todo mundo.
+
+@table @asis
+@c <en>@item @sc{cvs} is not a build system.
+@item @sc{cvs} não é um sistema de construção (build system).
+
+@c <en>Though the structure of your repository and modules
+@c <en>file interact with your build system
+@c <en>(e.g. @file{Makefile}s), they are essentially
+@c <en>independent.
+Embora a estrutura do seu repositório e arquivos de
+módulo interajam com seu sistema de construção
+(e.g. @file{Makefile}s), eles são essencialmente
+independentes.
+
+@c <en>@sc{cvs} does not dictate how you build anything. It
+@c <en>merely stores files for retrieval in a tree structure
+@c <en>you devise.
+@sc{cvs} não dita como você constroi nada. Ele apenas
+guarda arquivos para recuperação numa estrutura de
+árvore que você concebeu.
+
+@c <en>@sc{cvs} does not dictate how to use disk space in the
+@c <en>checked out working directories. If you write your
+@c <en>@file{Makefile}s or scripts in every directory so they
+@c <en>have to know the relative positions of everything else,
+@c <en>you wind up requiring the entire repository to be
+@c <en>checked out.
+@sc{cvs} não dita como usar o espaço em disco em
+diretórios de trabalho locais. Se você
+escreve seus @file{Makefile}s ou scripts em cada
+diretório, eles têm que saber a posição relativa de
+todo o resto, logo você acaba tendo que pegar todo o
+repositório.
+
+@c <en>If you modularize your work, and construct a build
+@c <en>system that will share files (via links, mounts,
+@c <en>@code{VPATH} in @file{Makefile}s, etc.), you can
+@c <en>arrange your disk usage however you like.
+Se você modularizar o seu trabalho e fizer um sistema
+de construção (build) que irá compartilhar arquivos
+(via links, mounts, @code{VPATH} em @file{Makefile}s,
+etc.), você pode organizar a sua utilização de disco de
+qualquer forma.
+
+@c <en>But you have to remember that @emph{any} such system is
+@c <en>a lot of work to construct and maintain. @sc{cvs} does
+@c <en>not address the issues involved.
+Mas você tem que lembrar que @emph{qualquer} sistema
+desse é muito trabalhoso para construir e
+manter. O @sc{cvs} não se importa com tais questões.
+
+@c <en>Of course, you should place the tools created to
+@c <en>support such a build system (scripts, @file{Makefile}s,
+@c <en>etc) under @sc{cvs}.
+Obviamente, você pode botar as ferramentas criadas para
+auxiliar tal sistema de construção (scripts,
+@file{Makefile}s, etc) dentro do @sc{cvs}.
+
+@c <en>Figuring out what files need to be rebuilt when
+@c <en>something changes is, again, something to be handled
+@c <en>outside the scope of @sc{cvs}. One traditional
+@c <en>approach is to use @code{make} for building, and use
+@c <en>some automated tool for generating the dependencies which
+@c <en>@code{make} uses.
+Definir quais arquivos precisam ser reconstruídos
+quando algo muda é, novamente, algo para ser visto fora
+do escopo do @sc{cvs}. Uma abordagem tradicional é
+usar o @code{make} para construir, e usar alguma
+ferramenta automatizada para gerar as dependências que
+o @code{make} usa.
+
+@c <en>Veja em @ref{Builds}, for more information on doing builds
+@c <en>in conjunction with @sc{cvs}.
+See @ref{Builds}, para mais informações sobre
+construção com @sc{cvs}.
+
+@c <en>@item @sc{cvs} is not a substitute for management.
+@item @sc{cvs} não substitui gerenciamento.
+
+@c <en>Your managers and project leaders are expected to talk
+@c <en>to you frequently enough to make certain you are aware
+@c <en>of schedules, merge points, branch names and release
+@c <en>dates. If they don't, @sc{cvs} can't help.
+Espera-se que seus gerentes e líderes de projetos falem
+com você com a frequência suficiente para que você
+saiba de prazos, pontos de mescla, nomes de ramos e
+datas de lançamento (release). Se eles não o fizerem, o
+@sc{cvs} não pode ajudar.
+
+@c <en>@sc{cvs} is an instrument for making sources dance to
+@c <en>your tune. But you are the piper and the composer. No
+@c <en>instrument plays itself or writes its own music.
+@sc{cvs} é um instrumento para fazer o fonte dançar
+conforme a sua música. Mas você é o maestro e o
+compositor. Nenhum instrumento toca sozinho ou escreve
+sua própria música.
+
+@c <en>@item @sc{cvs} is not a substitute for developer communication.
+@item @sc{cvs} não é um substituto para comunicação entre desenvolvedores.
+
+@c <en>When faced with conflicts within a single file, most
+@c <en>developers manage to resolve them without too much
+@c <en>effort. But a more general definition of ``conflict''
+@c <en>includes problems too difficult to solve without
+@c <en>communication between developers.
+Quando se deparam com conflitos num único arquivo, a
+maioria dos desenvolvedores conseguem resolvê-los sem
+muito esforço. Mas uma definição mais geral de
+``conflito'' inclui problemas tão difíceis de resolver
+que é necessária a comunicação entre os desenvolvedores.
+
+@c <en>@sc{cvs} cannot determine when simultaneous changes
+@c <en>within a single file, or across a whole collection of
+@c <en>files, will logically conflict with one another. Its
+@c <en>concept of a @dfn{conflict} is purely textual, arising
+@c <en>when two changes to the same base file are near enough
+@c <en>to spook the merge (i.e. @code{diff3}) command.
+@sc{cvs} não pode determinar quando é que alterações
+simultâneas em um arquivo, ou vários, vão conflitar
+logicamente umas com as outras. Seu conceito de
+@dfn{conflito} é puramente textual, surgindo quando
+duas alterações num mesmo arquivo base são próximas o
+suficiente para intimidar o comando de mescla
+(i.e. @code{diff3}).
+
+@c <en>@sc{cvs} does not claim to help at all in figuring out
+@c <en>non-textual or distributed conflicts in program logic.
+@sc{cvs} não se propõe a dar qualquer ajuda quanto a
+localizar conflitos não-textuais ou distribuídos na
+lógica de programação.
+
+@c <en>For example: Say you change the arguments to function
+@c <en>@code{X} defined in file @file{A}. At the same time,
+@c <en>someone edits file @file{B}, adding new calls to
+@c <en>function @code{X} using the old arguments. You are
+@c <en>outside the realm of @sc{cvs}'s competence.
+Por exemplo: Digamos que você altere os argumentos da
+função @code{X} definida no arquivo @file{A}. Neste
+instante, alguem altera o arquivo @file{B}, adicionando
+novas chamadas à função @code{X} usando os argumentos
+antigos. Vocês estão fora do escopo da competência do
+@sc{cvs}.
+
+@c <en>Acquire the habit of reading specs and talking to your
+@c <en>peers.
+Adquira o hábito de ler documentação e conversar com
+seus parceiros.
+
+
+@c <en>@item @sc{cvs} does not have change control
+@item @sc{cvs} não tem controle de mudanças
+
+@c <en>Change control refers to a number of things. First of
+@c <en>all it can mean @dfn{bug-tracking}, that is being able
+@c <en>to keep a database of reported bugs and the status of
+@c <en>each one (is it fixed? in what release? has the bug
+@c <en>submitter agreed that it is fixed?). For interfacing
+@c <en>@sc{cvs} to an external bug-tracking system, see the
+@c <en>@file{rcsinfo} and @file{verifymsg} files
+@c <en>(@pxref{Administrative files}).
+Controle de mudanças se refere a várias coisas. Em
+primeiro lugar, pode significar @dfn{bug-tracking
+(busca de erros)}, que é manter uma base de dados de
+erros relatados e o status de cada um (foi consertado?
+em qual lançamento? o submissor do erro concordou que o
+erro foi corrigido?). Para fazer a interface do
+@sc{cvs} com um sistema de bug-tracking externo, veja
+os arquivos @file{rcsinfo} e @file{verifymsg}
+(@pxref{Arquivos administrativos}).
+
+@c <en>Another aspect of change control is keeping track of
+@c <en>the fact that changes to several files were in fact
+@c <en>changed together as one logical change. If you check
+@c <en>in several files in a single @code{cvs commit}
+@c <en>operation, @sc{cvs} then forgets that those files were
+@c <en>checked in together, and the fact that they have the
+@c <en>same log message is the only thing tying them
+@c <en>together. Keeping a @sc{gnu} style @file{ChangeLog}
+@c <en>can help somewhat.
+Outra característica de controle de mudanças é manter
+um controle no fato de que mudanças em vários arquivos
+foram, de fato, uma única mudança lógica. Se você
+devolve vários arquivos numa única operação com
+@code{cvs commit} (efetivar), @sc{cvs} esquece que os arquivos
+foram devolvidos juntos, e o fato de eles terem a mesma
+mensagem de log é a única coisa que os une. Manter um
+@file{ChangeLog} no estilo @sc{gnu} pode de certa forma
+ajudar.
+@c FIXME: should have an xref to a section which talks
+@c more about keeping ChangeLog's with CVS, but that
+@c section hasn't been written yet.
+
+@c <en>Another aspect of change control, in some systems, is
+@c <en>the ability to keep track of the status of each
+@c <en>change. Some changes have been written by a developer,
+@c <en>others have been reviewed by a second developer, and so
+@c <en>on. Generally, the way to do this with @sc{cvs} is to
+@c <en>generate a diff (using @code{cvs diff} or @code{diff})
+@c <en>and email it to someone who can then apply it using the
+@c <en>@code{patch} utility. This is very flexible, but
+@c <en>depends on mechanisms outside @sc{cvs} to make sure
+@c <en>nothing falls through the cracks.
+Outro aspecto do controle de mudanças, em alguns
+sistemas, é a habilidade de se obter informação sobre o
+status de cada mudança. Algumas mudanças foram escritas
+por um certo desenvolvedor, outras foram revisadas por
+um segundo desenvolvedor, e por aí vai. Geralmente, a
+forma de fazer isto com o @sc{cvs} é gerando um diff
+(usando @code{cvs diff} ou @code{diff}) e mandando por
+email para alguem que possa resolver as diferenças usando o
+utilitário @code{patch}. Isto é muito flexível, mas
+depende de mecanismos externos ao @sc{cvs} para
+garantir que nada dê problema.
+
+@c <en>@item @sc{cvs} is not an automated testing program
+@item @sc{cvs} não é um programa de testes automático
+
+@c <en>It should be possible to enforce mandatory use of a
+@c <en>testsuite using the @code{commitinfo} file. I haven't
+@c <en>heard a lot about projects trying to do that or whether
+@c <en>there are subtle gotchas, however.
+é possível reforçar o uso obrigatório de uma suíte de
+testes usando o arquivo @code{commitinfo}. Eu nunca
+ouvi falar muito sobre projetos que tentam fazer isto,
+ou se existem armadilhas sutís nestes casos.
+
+@c <en>@item @sc{cvs} does not have a builtin process model
+@item @sc{cvs} não tem um modelo de processo inerente
+
+@c <en>Some systems provide ways to ensure that changes or
+@c <en>releases go through various steps, with various
+@c <en>approvals as needed. Generally, one can accomplish
+@c <en>this with @sc{cvs} but it might be a little more work.
+@c <en>In some cases you'll want to use the @file{commitinfo},
+@c <en>@file{loginfo}, @file{rcsinfo}, or @file{verifymsg}
+@c <en>files, to require that certain steps be performed
+@c <en>before cvs will allow a checkin. Also consider whether
+@c <en>features such as branches and tags can be used to
+@c <en>perform tasks such as doing work in a development tree
+@c <en>and then merging certain changes over to a stable tree
+@c <en>only once they have been proven.
+alguns sistemas fornecem formas de garantir que
+mudanças ou lançamentos sigam vários passos, com várias
+aprovações obrigatórias. Geralmente, pode-se obter
+isto com o @sc{cvs}, mas acarreta em um pouco mais de
+trabalho. Em alguns casos você vai querer usar o
+arquivo @file{commitinfo}, @file{loginfo},
+@file{rcsinfo}, ou @file{verifymsg} para exigir que
+certos passos sejam executados antes que o cvs permita
+uma devolução (checkin). Também considere se
+características tais como ramos e etiquetas (tags) podem ser usadas
+para realizar tarefas como desenvolver numa árvore de
+desenvolvimento e então mesclar certas mudanças numa
+árvore estável apenas quando eles tenham sido confirmados.
+@end table
+
+@c ---------------------------------------------------------------------
+@c <en>@node A sample session
+@node Uma sessão de exemplo
+@c <en>@section A sample session
+@section Uma sessão de exemplo
+@c <en>@cindex Example of a work-session
+@cindex Exemplo de uma sessão de trabalho
+@c <en>@cindex Getting started
+@cindex Iniciando
+@c <en>@cindex Work-session, example of
+@cindex Sessão de trabalho, exemplo de uma
+@c <en>@cindex tc, Trivial Compiler (example)
+@cindex tc, Trivial Compiler (Compilador trivial) (exemplo)
+@c <en>@cindex Trivial Compiler (example)
+@cindex Trivial Compiler (Compilador trivial) (exemplo)
+
+@c I think an example is a pretty good way to start. But
+@c somewhere in here, maybe after the sample session,
+@c we need something which is kind of
+@c a "roadmap" which is more directed at sketching out
+@c the functionality of CVS and pointing people to
+@c various other parts of the manual. As it stands now
+@c people who read in order get dumped right into all
+@c manner of hair regarding remote repositories,
+@c creating a repository, etc.
+@c
+@c The following was in the old Basic concepts node. I don't
+@c know how good a job it does at introducing modules,
+@c or whether they need to be introduced so soon, but
+@c something of this sort might go into some
+@c introductory material somewhere.
+@ignore
+@cindex Modules (intro)
+The repository contains directories and files, in an
+arbitrary tree. The @dfn{modules} feature can be used
+to group together a set of directories or files into a
+single entity (@pxref{modules}). A typical usage is to
+define one module per project.
+@end ignore
+
+@c <en>As a way of introducing @sc{cvs}, we'll go through a
+@c <en>typical work-session using @sc{cvs}. The first thing
+@c <en>to understand is that @sc{cvs} stores all files in a
+@c <en>centralized @dfn{repository} (@pxref{Repository}); this
+@c <en>section assumes that a repository is set up.
+Vamos apresentar o @sc{cvs} usando numa sessão de
+trabalho típica. A primeira coisa a saber é que
+@sc{cvs} guarda todos os arquivos em um
+@dfn{repository} centralizado (@pxref{Repositório});
+esta sessão assume que um repositório esteja ativo.
+@c I'm not sure that the sentence concerning the
+@c repository quite tells the user what they need to
+@c know at this point. Might need to expand on "centralized"
+@c slightly (maybe not here, maybe further down in the example?)
+
+@c <en>Suppose you are working on a simple compiler. The source
+@c <en>consists of a handful of C files and a @file{Makefile}.
+@c <en>The compiler is called @samp{tc} (Trivial Compiler),
+@c <en>and the repository is set up so that there is a module
+@c <en>called @samp{tc}.
+Suponha que você esteja trabalhando num compilador
+simples. O fonte é um monte de arquivos C e um
+@file{Makefile}. O compilador é chamado @samp{tc}
+(Trivial Compiler, ou Compilador trivial), e o repositório é feito de
+forma que exista um módulo chamado @samp{tc}.
+
+@menu
+@c <en>* Getting the source:: Creating a workspace
+* Obtendo os fontes:: Criando uma área de trabalho
+@c <en>* Committing your changes:: Making your work available to others
+* Efetivando suas alterações:: Disponibilizando seu trabalho para outros
+@c <en>* Cleaning up:: Cleaning up
+* Limpando:: Limpando
+@c <en>* Viewing differences:: Viewing differences
+* Vendo as diferenças:: Vendo as diferenças
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Getting the source
+@node Obtendo os fontes
+@c <en>@subsection Getting the source
+@subsection Obtendo os fontes
+@c <en>@cindex Getting the source
+@cindex Obtendo os fontes
+@c <en>@cindex Checking out source
+@cindex Pegando emprestado os fontes
+@c <en>@cindex Fetching source
+@cindex Recuperando os fontes
+@c <en>@cindex Source, getting from CVS
+@cindex Fonte, pegando do CVS
+@c <en>@cindex Checkout, example
+@cindex Checkout, exemplo
+
+@c <en>The first thing you must do is to get your own working copy of the
+@c <en>source for @samp{tc}. For this, you use the @code{checkout} command:
+A primeira coisa a fazer é pegar sua própria cópia de
+trabalho dos fontes de @samp{tc}. Para isto, use o comando
+@code{checkout} (pegar emprestado):
+
+@example
+$ cvs checkout tc
+@end example
+
+@noindent
+@c <en>This will create a new directory called @file{tc} and populate it with
+@c <en>the source files.
+Isto vai criar um novo diretório chamado @file{tc} e
+povoa-lo com os fontes.
+
+@example
+$ cd tc
+$ ls
+CVS Makefile backend.c driver.c frontend.c parser.c
+@end example
+
+@c <en>The @file{CVS} directory is used internally by
+@c <en>@sc{cvs}. Normally, you should not modify or remove
+@c <en>any of the files in it.
+O diretório @file{CVS} é usado internamente pelo
+@sc{cvs}. Normalmente, você não deve modificar ou
+remover quaisquer arquivos dele.
+
+@c <en>You start your favorite editor, hack away at @file{backend.c}, and a couple
+@c <en>of hours later you have added an optimization pass to the compiler.
+@c <en>A note to @sc{rcs} and @sc{sccs} users: There is no need to lock the files that
+@c <en>you want to edit. @xref{Multiple developers}, for an explanation.
+Você abre o seu editor favorito, trabalha no arquivo
+@file{backend.c}, e algumas horas depois você deixou o
+compilador mais otimizado. Uma observação para usuários
+de @sc{rcs} e @sc{sccs}: Não é necessário travar (lock)
+os arquivos que você quer editar. @xref{Múltiplos
+desenvolvedores}, para uma explicação.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Committing your changes
+@node Efetivando suas alterações
+@c <en>@subsection Committing your changes
+@subsection Efetivando suas alterações
+@c <en>@cindex Committing changes to files
+@cindex Efetivando mudanças nos arquivos
+@c <en>@cindex Log message entry
+@cindex Registro de mensagens de log
+
+@c <en>When you have checked that the compiler is still compilable you decide
+@c <en>to make a new version of @file{backend.c}. This will
+@c <en>store your new @file{backend.c} in the repository and
+@c <en>make it available to anyone else who is using that same
+@c <en>repository.
+Quando você se certificar que o compilador ainda é
+compilável você decide criar uma nova versão de
+@file{backend.c}. Tal ato vai botar o seu novo
+@file{backend.c} no repositório e torná-lo disponível
+para qualquer outra pessoa que esteja usando o mesmo
+repositório.
+
+@example
+$ cvs commit backend.c
+@end example
+
+@noindent
+@c <en>@sc{cvs} starts an editor, to allow you to enter a log
+@c <en>message. You type in ``Added an optimization pass.'',
+@c <en>save the temporary file, and exit the editor.
+@sc{cvs} inicia um editor, para que você possa digitar
+uma messagem de log. Você digita ``Uma otimização adicionada.'',
+salva o arquivo temporário e sai do editor.
+
+@c <en>@cindex CVSEDITOR, environment variable
+@cindex CVSEDITOR, variável de ambiente
+@c <en>@cindex EDITOR, environment variable
+@cindex EDITOR, variável de ambiente
+@c <en>The environment variable @code{$CVSEDITOR} determines
+@c <en>which editor is started. If @code{$CVSEDITOR} is not
+@c <en>set, then if the environment variable @code{$EDITOR} is
+@c <en>set, it will be used. If both @code{$CVSEDITOR} and
+@c <en>@code{$EDITOR} are not set then there is a default
+@c <en>which will vary with your operating system, for example
+@c <en>@code{vi} for unix or @code{notepad} for Windows
+@c <en>NT/95.
+A variável de ambiente @code{$CVSEDITOR} determina qual
+editor vai ser aberto. Se @code{$CVSEDITOR} não existe,
+e se a variável de ambiente @code{$EDITOR} existe, esta
+última é usada. Se nenhuma das duas @code{$CVSEDITOR} e
+@code{$EDITOR} existem então o padrão vai variar
+dependendo do sistema operacional, por exemplo,
+@code{vi} para unix ou @code{notepad} para Windows
+NT/95.
+
+@c <en>@cindex VISUAL, environment variable
+@cindex VISUAL, variável de ambiente
+@c <en>In addition, @sc{cvs} checks the @code{$VISUAL} environment
+@c <en>variable. Opinions vary on whether this behavior is desirable and
+@c <en>whether future releases of @sc{cvs} should check @code{$VISUAL} or
+@c <en>ignore it. You will be OK either way if you make sure that
+@c <en>@code{$VISUAL} is either unset or set to the same thing as
+@c <en>@code{$EDITOR}.
+Adicionalmente, @sc{cvs} busca pela variável de
+ambiente @code{$VISUAL}. Isto gera duas opiniões
+divergentes, se este é um comportamento desejável ou se
+releases futuras do @sc{cvs} devem verificar
+@code{$VISUAL} ou ignorá-la. Você vai estar OK se não
+tiver a variável @code{$VISUAL} ou se ela for igual à
+@code{$EDITOR}.
+
+@c This probably should go into some new node
+@c containing detailed info on the editor, rather than
+@c the intro. In fact, perhaps some of the stuff with
+@c CVSEDITOR and -m and so on should too.
+@c <en>When @sc{cvs} starts the editor, it includes a list of
+@c <en>files which are modified. For the @sc{cvs} client,
+@c <en>this list is based on comparing the modification time
+@c <en>of the file against the modification time that the file
+@c <en>had when it was last gotten or updated. Therefore, if
+@c <en>a file's modification time has changed but its contents
+@c <en>have not, it will show up as modified. The simplest
+@c <en>way to handle this is simply not to worry about it---if
+@c <en>you proceed with the commit @sc{cvs} will detect that
+@c <en>the contents are not modified and treat it as an
+@c <en>unmodified file. The next @code{update} will clue
+@c <en>@sc{cvs} in to the fact that the file is unmodified,
+@c <en>and it will reset its stored timestamp so that the file
+@c <en>will not show up in future editor sessions.
+Quando o @sc{cvs} inicia o editor, ele inclui uma lista
+de arquivos que foram modificados. Para o @sc{cvs}
+cliente, esta lista é baseada na comparação da data de
+modificação do arquivo com a data de modificação que o
+arquivo tinha da última vez que foi pego ou
+atualizado. Entretanto, se a data de modificação de um
+arquivo mudou mas seu conteúdo não, ele vai ser
+considerado modificado. A maneira mais fácil de lidar
+com isto é desconsidarando---se você seguir efetivando,
+o @sc{cvs} vai notar que o conteúdo está intacto e vai
+tratar o arquivo como não-modificado. O próximo
+@code{update} vai dar a dica para o @sc{cvs} de que o
+arquivo está igual, e isto vai restaurar a data,
+fazendo com que o arquivo não apareça nas próximas
+aparições do editor.
+@c FIXCVS: Might be nice if "commit" and other commands
+@c would reset that timestamp too, but currently commit
+@c doesn't.
+@c FIXME: Need to talk more about the process of
+@c prompting for the log message. Like show an example
+@c of what it pops up in the editor, for example. Also
+@c a discussion of how to get the "a)bort, c)ontinue,
+@c e)dit" prompt and what to do with it. Might also
+@c work in the suggestion that if you want a diff, you
+@c should make it before running commit (someone
+@c suggested that the diff pop up in the editor. I'm
+@c not sure that is better than telling people to run
+@c "cvs diff" first if that is what they want, but if
+@c we want to tell people that, the manual possibly
+@c should say it).
+
+@c <en>If you want to avoid
+@c <en>starting an editor you can specify the log message on
+@c <en>the command line using the @samp{-m} flag instead, like
+@c <en>this:
+Se você quer evitar o aparecimento de um editor, você
+pode especificar a mensagem de log na linha de comando
+usando a opção @samp{-m}, desta forma:
+
+@example
+$ cvs commit -m "Uma otimização adicionada" backend.c
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Cleaning up
+@node Limpando
+@c <en>@subsection Cleaning up
+@subsection Limpando
+@c <en>@cindex Cleaning up
+@cindex Limpando
+@c <en>@cindex Working copy, removing
+@cindex Cópia de trabalho, removendo
+@c <en>@cindex Removing your working copy
+@cindex Removendo sua cópia de trabalho
+@c <en>@cindex Releasing your working copy
+@cindex Lançando sua cópia de trabalho
+
+@c <en>Before you turn to other tasks you decide to remove your working copy of
+@c <en>tc. One acceptable way to do that is of course
+Antes de ir fazer outras tarefas, você decide remover
+sua cópia de trabalho de tc. Uma forma aceitável de
+fazer isto é, obviamente:
+
+@example
+$ cd ..
+$ rm -r tc
+@end example
+
+@noindent
+mas uma forma melhor é usando o comando @code{release} (@pxref{release}):
+
+@example
+$ cd ..
+$ cvs release -d tc
+M driver.c
+? tc
+You have [1] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': n
+** `release' aborted by user choice.
+@end example
+
+@c <en>The @code{release} command checks that all your modifications have been
+@c <en>committed. If history logging is enabled it also makes a note in the
+@c <en>history file. @xref{history file}.
+O comando @code{release} verifica se todas as suas
+modificações foram efetivadas. Se o registro
+histórico (history log) está ativo ele também escreve uma
+observação no arquivo de histórico. @xref{arquivo
+history (histórico)}.
+
+@c <en>When you use the @samp{-d} flag with @code{release}, it
+@c <en>also removes your working copy.
+Quando você usa a opção @samp{-d} com o @code{release},
+ele também remove a sua cópia de trabalho local.
+
+@c <en>In the example above, the @code{release} command wrote a couple of lines
+@c <en>of output. @samp{? tc} means that the file @file{tc} is unknown to @sc{cvs}.
+@c <en>That is nothing to worry about: @file{tc} is the executable compiler,
+@c <en>and it should not be stored in the repository. @xref{cvsignore},
+@c <en>for information about how to make that warning go away.
+@c <en>@xref{release output}, for a complete explanation of
+@c <en>all possible output from @code{release}.
+No exemplo acima, o comando @code{release} escreve
+poucas linhas de saída. @samp{? tc} significa que o
+arquivo @file{tc} é desconhecido pelo @sc{cvs}. Não há
+nada com que se preocupar: @file{tc} é um compilador
+executável, e não deve ser guardado no
+repositório. @xref{cvsignore}, para ver como fazer para
+sumir com este aviso. @xref{release output}, para uma
+explicação geral de todas as possíveis saídas do
+@code{release}.
+
+@c <en>@samp{M driver.c} is more serious. It means that the
+@c <en>file @file{driver.c} has been modified since it was
+@c <en>checked out.
+@samp{M driver.c} é mais sério. Significa que o arquivo
+@file{driver.c} foi modificado desde quando foi pego.
+
+@c <en>The @code{release} command always finishes by telling
+@c <en>you how many modified files you have in your working
+@c <en>copy of the sources, and then asks you for confirmation
+@c <en>before deleting any files or making any note in the
+@c <en>history file.
+O comando @code{release} sempre termina dizendo quantos
+arquivos modificados você tem em sua cópia de trabalho
+dos fontes, e então pergunta por confirmação antes de
+apagar qualquer arquivo ou escrever qualquer coisa no
+arquivo de histórico.
+
+@c <en>You decide to play it safe and answer @kbd{n @key{RET}}
+@c <en>when @code{release} asks for confirmation.
+Você decide que executar isto é seguro e responde @kbd{n @key{RET}}
+quando @code{release} pede uma confirmação.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Viewing differences
+@node Vendo as diferenças
+@c <en>@subsection Viewing differences
+@subsection Vendo diferenças
+@c <en>@cindex Viewing differences
+@cindex Vendo diferenças
+@c <en>@cindex Diff
+@cindex Diff
+
+@c <en>You do not remember modifying @file{driver.c}, so you want to see what
+@c <en>has happened to that file.
+Você não lembra se modificou @file{driver.c}. Logo,
+você precisa ver o que aconteceu com este arquivo.
+
+@example
+$ cd tc
+$ cvs diff driver.c
+@end example
+
+@c <en>This command runs @code{diff} to compare the version of @file{driver.c}
+@c <en>that you checked out with your working copy. When you see the output
+@c <en>you remember that you added a command line option that enabled the
+@c <en>optimization pass. You check it in, and release the module.
+Este comando roda o @code{diff} para comparar a versão
+de @file{driver.c} que você pegou com a da sua cópia de
+trabalho. Quando você vê a saída, você lembra de ter
+adicionado uma opção de linha de comando que permite a
+otimização. Você devolve e lança (release) o módulo.
+@c FIXME: we haven't yet defined the term "check in".
+
+@example
+@c <en>$ cvs commit -m "Added an optimization pass" driver.c
+$ cvs commit -m "Uma otimização adicionada" driver.c
+Checking in driver.c;
+/usr/local/cvsroot/tc/driver.c,v <-- driver.c
+new revision: 1.2; previous revision: 1.1
+done
+$ cd ..
+$ cvs release -d tc
+? tc
+You have [0] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': y
+@end example
+
+@c ---------------------------------------------------------------------
+@c <en>@node Repository
+@node Repositório
+@c <en>@chapter The Repository
+@chapter O Repositório
+@c <en>@cindex Repository (intro)
+@cindex Repositório (intro)
+@c <en>@cindex Repository, example
+@cindex Repositório, exemplo
+@c <en>@cindex Layout of repository
+@cindex Estrutura do repositório
+@c <en>@cindex Typical repository
+@cindex Repositório típico
+@c <en>@cindex /usr/local/cvsroot, as example repository
+@cindex /usr/local/cvsroot, como um repositório de exemplo
+@c <en>@cindex cvsroot
+@cindex cvsroot
+
+@c <en>The @sc{cvs} @dfn{repository} stores a complete copy of
+@c <en>all the files and directories which are under version
+@c <en>control.
+O @dfn{repositório} do @sc{cvs} guarda uma cópia
+completa de todos os arquivos e diretórios que estão
+sob controle de versão.
+
+@c <en>Normally, you never access any of the files in the
+@c <en>repository directly. Instead, you use @sc{cvs}
+@c <en>commands to get your own copy of the files into a
+@c <en>@dfn{working directory}, and then
+@c <en>work on that copy. When you've finished a set of
+@c <en>changes, you check (or @dfn{commit}) them back into the
+@c <en>repository. The repository then contains the changes
+@c <en>which you have made, as well as recording exactly what
+@c <en>you changed, when you changed it, and other such
+@c <en>information. Note that the repository is not a
+@c <en>subdirectory of the working directory, or vice versa;
+@c <en>they should be in separate locations.
+Normalmente, você nunca acessa qualquer dos arquivos do
+repositório diretamente. Ao invés disso, você usa os
+comandos do @sc{cvs} para pegar emprestada a sua cópia
+dos arquivos num @dfn{diretório de trabalho}, e então
+trabalhar nesta cópia. Quando você termina um conjunto
+de mudanças, você as @dfn{efetiva} no repositório. O
+repositório então passa a conter as mudanças que você
+fez, assim como gravar exatamente o que você fez,
+quando você fez e outras informações deste
+tipo. Observe que o repositório não é um subdiretório
+do diretório de trabalho nem vice-versa; eles estão em
+locais diferentes.
+@c Need some example, e.g. repository
+@c /usr/local/cvsroot; working directory
+@c /home/joe/sources. But this node is too long
+@c as it is; need a little reorganization...
+
+@c <en>@cindex :local:, setting up
+@cindex :local:, ajustando
+@c <en>@sc{cvs} can access a repository by a variety of
+@c <en>means. It might be on the local computer, or it might
+@c <en>be on a computer across the room or across the world.
+@c <en>To distinguish various ways to access a repository, the
+@c <en>repository name can start with an @dfn{access method}.
+@c <en>For example, the access method @code{:local:} means to
+@c <en>access a repository directory, so the repository
+@c <en>@code{:local:/usr/local/cvsroot} means that the
+@c <en>repository is in @file{/usr/local/cvsroot} on the
+@c <en>computer running @sc{cvs}. For information on other
+@c <en>access methods, see @ref{Remote repositories}.
+@sc{cvs} pode acessar um repositório de várias
+formas. Ele pode estar no mesmo computador, ou num
+computador do outro lado da sala, ou do outro lado do
+mundo. Para distinguir as várias formas de acessar um
+repositório o seu nome deve começar com um
+@dfn{método de acesso}. Por exemplo, o método de acesso
+@code{:local:} significa acessar um diretório que é um
+repositório. Logo, @code{:local:/usr/local/cvsroot}
+significa que o repositório está em
+@file{/usr/local/cvsroot} no computador rodando
+@sc{cvs}. Para informações sobre outros métodos de
+acesso, vá em @ref{Repositórios remotos}.
+
+@c Can se say this more concisely? Like by passing
+@c more of the buck to the Remote repositories node?
+@c <en>If the access method is omitted, then if the repository
+@c <en>starts with @samp{/}, then @code{:local:} is
+@c <en>assumed. If it does not start with @samp{/} then either
+@c <en>@code{:ext:} or @code{:server:} is assumed. For
+@c <en>example, if you have a local repository in
+@c <en>@file{/usr/local/cvsroot}, you can use
+@c <en>@code{/usr/local/cvsroot} instead of
+@c <en>@code{:local:/usr/local/cvsroot}. But if (under
+@c <en>Windows NT, for example) your local repository is
+@c <en>@file{c:\src\cvsroot}, then you must specify the access
+@c <en>method, as in @code{:local:c:/src/cvsroot}.
+Se o método de acesso é omitido e se o repositório
+começa com @samp{/}, então assume-se @code{:local:}. Se
+não começa com @samp{/} então ou @code{:ext:} ou
+@code{:server:} é assumido. Por exemplo, se você tem um
+repositório local em @file{/usr/local/cvsroot}, você
+pode usar @code{/usr/local/cvsroot} ao invés de
+@code{:local:/usr/local/cvsroot}. Mas se (no Windows
+NT, por exemplo) seu repositório local é
+@file{c:\src\cvsroot}, então você deve especificar o
+método de acesso, como em @code{:local:c:/src/cvsroot}.
+
+@c This might appear to go in Repository storage, but
+@c actually it is describing something which is quite
+@c user-visible, when you do a "cvs co CVSROOT". This
+@c isn't necessary the perfect place for that, though.
+@c <en>The repository is split in two parts. @file{$CVSROOT/CVSROOT} contains
+@c <en>administrative files for @sc{cvs}. The other directories contain the actual
+@c <en>user-defined modules.
+O repositório é separado em duas
+partes. @file{$CVSROOT/CVSROOT} contém arquivos
+administrativos do @sc{cvs}. Os outros diretórios
+contém os módulos definidos pelo usuário.
+
+@menu
+@c <en>* Specifying a repository:: Telling CVS where your repository is
+* Especificando um repositório:: Dizendo ao CVS onde está o seu repositório
+@c <en>* Repository storage:: The structure of the repository
+* Armazenamento do repositório:: A estrutura do repositório
+@c <en>* Working directory storage:: The structure of working directories
+* Armazenamento do Diretório de trabalho:: A estrutura dos diretórios de trabalho
+@c <en>* Intro administrative files:: Defining modules
+* Intro aos arquivos administrativos:: Definindo módulos
+@c <en>* Multiple repositories:: Multiple repositories
+* Repositórios múltiplos:: Repositórios múltiplos
+@c <en>* Creating a repository:: Creating a repository
+* Criando um repositório:: Criando um repositório
+@c <en>* Backing up:: Backing up a repository
+* Fazendo backup:: Criando Backup de um repositório
+@c <en>* Moving a repository:: Moving a repository
+* Movendo um repositório:: Movendo um repositório
+@c <en>* Remote repositories:: Accessing repositories on remote machines
+* Repositórios remotos:: Acessando repositórios em máquinas remotas
+@c <en>* Read-only access:: Granting read-only access to the repository
+* Acesso somente-leitura:: Dando acesso somente-leitura ao repositório
+@c <en>* Server temporary directory:: The server creates temporary directories
+* Diretório temporário do servidor:: O servidor cria diretórios temporários
+@end menu
+
+@c <en>@node Specifying a repository
+@node Especificando um repositório
+@c <en>@section Telling CVS where your repository is
+@section Dizendo ao CVS onde está o seu repositório
+
+@c <en>There are several ways to tell @sc{cvs}
+@c <en>where to find the repository. You can name the
+@c <en>repository on the command line explicitly, with the
+@c <en>@code{-d} (for "directory") option:
+Existem várias formas de dizer ao @sc{cvs} onde
+encontrar o repositório. Você pode dar o nome do
+repositório explicitamente na linha de comando, com a
+opção @code{-d} (de "diretório"):
+
+@example
+cvs -d /usr/local/cvsroot checkout yoyodyne/tc
+@end example
+
+@c <en>@cindex .profile, setting CVSROOT in
+@cindex .profile, configurando o CVSROOT no
+@c <en>@cindex .cshrc, setting CVSROOT in
+@cindex .cshrc, configurando o CVSROOT no
+@c <en>@cindex .tcshrc, setting CVSROOT in
+@cindex .tcshrc, configurando o CVSROOT no
+@c <en>@cindex .bashrc, setting CVSROOT in
+@cindex .bashrc, configurando o CVSROOT no
+@c <en>@cindex CVSROOT, environment variable
+@cindex CVSROOT, variável de ambiente
+@c <en> Or you can set the @code{$CVSROOT} environment
+@c <en>variable to an absolute path to the root of the
+@c <en>repository, @file{/usr/local/cvsroot} in this example.
+@c <en>To set @code{$CVSROOT}, @code{csh} and @code{tcsh}
+@c <en>users should have this line in their @file{.cshrc} or
+@c <en>@file{.tcshrc} files:
+ Ou você pode ajustar a variável de ambiente
+@code{$CVSROOT} para um caminho absoluto para a raiz
+(root) do repositório, @file{/usr/local/cvsroot} neste
+exemplo. Para ajustar o @code{$CVSROOT}, usuário de
+@code{csh} e @code{tcsh} devem ter esta linha no seu
+arquivo @file{.cshrc} ou @file{.tcshrc}:
+
+@example
+setenv CVSROOT /usr/local/cvsroot
+@end example
+
+@noindent
+@c <en>@code{sh} and @code{bash} users should instead have these lines in their
+@c <en>@file{.profile} or @file{.bashrc}:
+usuários de @code{sh} e @code{bash} devem, por sua vez,
+ter estas linhas nos seus @file{.profile} ou @file{.bashrc}:
+
+@example
+CVSROOT=/usr/local/cvsroot
+export CVSROOT
+@end example
+
+@c <en>@cindex Root file, in CVS directory
+@cindex O arquivo Root, no diretório CVS
+@c <en>@cindex CVS/Root file
+@cindex O arquivo CVS/Root
+@c <en> A repository specified with @code{-d} will
+@c <en>override the @code{$CVSROOT} environment variable.
+@c <en>Once you've checked a working copy out from the
+@c <en>repository, it will remember where its repository is
+@c <en>(the information is recorded in the
+@c <en>@file{CVS/Root} file in the working copy).
+ Um repositório especificado com @code{-d} se
+sobrepõe à variável de ambiente @code{$CVSROOT}. Uma
+vez que você tenha pego emprestada uma cópia de
+trabalho do repositório, ela vai se lembrar onde está o
+seu repositório (a informação é registrada no arquivo
+@file{CVS/Root} na cópia de trabalho).
+
+@c <en>The @code{-d} option and the @file{CVS/Root} file both
+@c <en>override the @code{$CVSROOT} environment variable. If
+@c <en>@code{-d} option differs from @file{CVS/Root}, the
+@c <en>former is used. Of course, for proper operation they
+@c <en>should be two ways of referring to the same repository.
+Tanto a opção @code{-d} quanto o arquivo
+@file{CVS/Root} sobreescrevem a variável de ambiente
+@code{$CVSROOT}. Se a opção @code{-d} é diferente do
+@file{CVS/Root}, a primeira é usada. Obviamente, para
+operações corretas, elas devem ser duas formas de
+referenciar o mesmo repositório.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Repository storage
+@node Armazenamento do repositório
+@c <en>@section How data is stored in the repository
+@section Como os dados são guardados no repositório
+@c <en>@cindex Repository, how data is stored
+@cindex Repositório, como os dados são guardados no
+
+@c <en>For most purposes it isn't important @emph{how}
+@c <en>@sc{cvs} stores information in the repository. In
+@c <en>fact, the format has changed in the past, and is likely
+@c <en>to change in the future. Since in almost all cases one
+@c <en>accesses the repository via @sc{cvs} commands, such
+@c <en>changes need not be disruptive.
+Para a maioria das aplicações, não importa @emph{como}
+o @sc{cvs} guarda as informações no repositório. De
+fato, o formato mudou no passado, e provavelmente vai
+mudar no futuro. Já que em quase todo os casos o acesso
+ao repositório é feito via comandos do @sc{cvs}, tais
+mudanças não serão radicais.
+
+@c <en>However, in some cases it may be necessary to
+@c <en>understand how @sc{cvs} stores data in the repository,
+@c <en>for example you might need to track down @sc{cvs} locks
+@c <en>(@pxref{Concurrency}) or you might need to deal with
+@c <en>the file permissions appropriate for the repository.
+Entretanto, em alguns casos pode ser necessário
+entender como o @sc{cvs} guarda os dados no
+repositório. Por exemplo, você pode precisar localizar
+travas do @sc{cvs} (@pxref{Concorrência}) ou você pode
+precisar lidar com permissões de arquivos apropriadas
+para o repositório.
+
+@menu
+@c <en>* Repository files:: What files are stored in the repository
+* Arquivos do repositório:: Quais arquivos são guardados no repositório
+@c <en>* File permissions:: File permissions
+* Permissões de arquivos:: Permisões de arquivos
+@c <en>* Windows permissions:: Issues specific to Windows
+* Permissões no Windows:: Questões específicas ao Windows
+@c <en>* Attic:: Some files are stored in the Attic
+* Attic:: Alguns arquivos são guardados no Attic
+@c <en>* CVS in repository:: Additional information in CVS directory
+* CVS no repositório:: Informações adicionais no diretório CVS
+@c <en>* Locks:: CVS locks control concurrent accesses
+* Travas:: Travas do CVS controlam acesso concorrente
+@c <en>* CVSROOT storage:: A few things about CVSROOT are different
+* Armazenamento do CVSROOT:: Umas poucas coisas sobre CVSROOT são diferentes
+@end menu
+
+@c <en>@node Repository files
+@node Arquivos do repositório
+@c <en>@subsection Where files are stored within the repository
+@subsection Onde arquivos são guardados dentro do repositório
+
+@c @cindex Filenames, legal
+@c @cindex Legal filenames
+@c Somewhere we need to say something about legitimate
+@c characters in filenames in working directory and
+@c repository. Not "/" (not even on non-unix). And
+@c here is a specific set of issues:
+@c Files starting with a - are handled inconsistently. They can not
+@c be added to a repository with an add command, because it they are
+@c interpreted as a switch. They can appear in a repository if they are
+@c part of a tree that is imported. They can not be removed from the tree
+@c once they are there.
+@c Note that "--" *is* supported (as a
+@c consequence of using GNU getopt). Should document
+@c this somewhere ("Common options"?). The other usual technique,
+@c "./-foo", isn't as effective, at least for "cvs add"
+@c which doesn't support pathnames containing "/".
+
+@c <en>The overall structure of the repository is a directory
+@c <en>tree corresponding to the directories in the working
+@c <en>directory. For example, supposing the repository is in
+A estrutura geral do repositório é uma árvore de
+diretórios correspondendo aos diretórios no diretório
+de trabalho. Por exemplo, suponha que o repositório
+está em
+
+@example
+/usr/local/cvsroot
+@end example
+
+@noindent
+@c <en>here is a possible directory tree (showing only the
+@c <en>directories):
+Aqui está uma possível árvore de diretórios (mostrando
+apenas os diretórios):
+
+@example
+@t{/usr}
+ |
+ +--@t{local}
+ | |
+ | +--@t{cvsroot}
+ | | |
+ | | +--@t{CVSROOT}
+@c <en> | (administrative files)
+ | (arquivos administrativos)
+ |
+ +--@t{gnu}
+ | |
+ | +--@t{diff}
+@c <en> | | (source code to @sc{gnu} diff)
+ | | (código fonte do @sc{gnu} diff)
+ | |
+ | +--@t{rcs}
+@c <en> | | (source code to @sc{rcs})
+ | | (código fonte do @sc{rcs})
+ | |
+ | +--@t{cvs}
+@c <en> | (source code to @sc{cvs})
+ | (código fonte do @sc{cvs})
+ |
+ +--@t{yoyodyne}
+ |
+ +--@t{tc}
+ | |
+ | +--@t{man}
+ | |
+ | +--@t{testing}
+ |
+ +--(other Yoyodyne software)
+@end example
+
+@c <en>With the directories are @dfn{history files} for each file
+@c <en>under version control. The name of the history file is
+@c <en>the name of the corresponding file with @samp{,v}
+@c <en>appended to the end. Here is what the repository for
+@c <en>the @file{yoyodyne/tc} directory might look like:
+Nos diretórios estão os @dfn{arquivos de histórico} para
+cada arquivo sob controle de versão. O nome do arquivo
+de histórico é o nome do arquivo correspondente com um
+@samp{,v} no final. Aqui está como o repositório do
+diretório @file{yoyodyne/tc} deve se parecer:
+@c FIXME: Should also mention CVS (CVSREP)
+@c FIXME? Should we introduce Attic with an xref to
+@c Attic? Not sure whether that is a good idea or not.
+@example
+ @code{$CVSROOT}
+ |
+ +--@t{yoyodyne}
+ | |
+ | +--@t{tc}
+ | | |
+ +--@t{Makefile,v}
+ +--@t{backend.c,v}
+ +--@t{driver.c,v}
+ +--@t{frontend.c,v}
+ +--@t{parser.c,v}
+ +--@t{man}
+ | |
+ | +--@t{tc.1,v}
+ |
+ +--@t{testing}
+ |
+ +--@t{testpgm.t,v}
+ +--@t{test2.t,v}
+@end example
+
+@c <en>@cindex History files
+@cindex Arquivos de histórico
+@c <en>@cindex RCS history files
+@cindex Arquivos de histórico do RCS
+@c The first sentence, about what history files
+@c contain, is kind of redundant with our intro to what the
+@c repository does in node Repository....
+@c <en>The history files contain, among other things, enough
+@c <en>information to recreate any revision of the file, a log
+@c <en>of all commit messages and the user-name of the person
+@c <en>who committed the revision. The history files are
+@c <en>known as @dfn{RCS files}, because the first program to
+@c <en>store files in that format was a version control system
+@c <en>known as @sc{rcs}. For a full
+@c <en>description of the file format, see the @code{man} page
+@c <en>@cite{rcsfile(5)}, distributed with @sc{rcs}, or the
+@c <en>file @file{doc/RCSFILES} in the @sc{cvs} source
+@c <en>distribution. This
+@c <en>file format has become very common---many systems other
+@c <en>than @sc{cvs} or @sc{rcs} can at least import history
+@c <en>files in this format.
+Os arquivos de histórico contém, entre outras coisas,
+informações suficientes para recriar qualquer revisão
+do arquivo, um log com todas as mensagens ???de
+commit??? e o usuário que efetivou (commit) a
+@comment This is the same as a "log message", "log entry", or whatever else
+@comment you might want to call it. It is sometimes called a "commit message"
+@comment in this manual because it is entered into the log at commit time.
+@comment -DRP
+revisão. Os arquivos de histórico são conhecidos como
+@dfn{arquivos RCS} (RCS files), pois o primeiro
+programa a guardar arquivos neste formato foi o sistema
+de controle de versões conhecido como @sc{rcs}. Para
+uma descrição completa do formato de arquivo, leia a
+página @code{man} @cite{rcsfile(5)}, distribuída com o
+@sc{rcs}, ou o arquivo @file{doc/RCSFILES} na
+distribuição dos fontes do @sc{cvs}. Este formato de
+arquivo se tornou muito comum---muitos sistemas além do
+@sc{cvs} e do @sc{rcs} podem, pelo menos, importar
+arquivos de histórico neste formato.
+@c FIXME: Think about including documentation for this
+@c rather than citing it? In the long run, getting
+@c this to be a standard (not sure if we can cope with
+@c a standards process as formal as IEEE/ANSI/ISO/etc,
+@c though...) is the way to go, so maybe citing is
+@c better.
+
+@c <en>The @sc{rcs} files used in @sc{cvs} differ in a few
+@c <en>ways from the standard format. The biggest difference
+@c <en>is magic branches; for more information see @ref{Magic
+@c <en>branch numbers}. Also in @sc{cvs} the valid tag names
+@c <en>are a subset of what @sc{rcs} accepts; for @sc{cvs}'s
+@c <en>rules see @ref{Tags}.
+Os arquivos @sc{rcs} usados no @sc{cvs} diferem em
+algumas poucas coisas do formato padrão. A maior
+diferença são os ramos mágicos; para mais informações
+veja em @ref{Números de ramos mágicos}. Além disso, no
+@sc{cvs} os nomes válidos de etiquetas (tags) é um subconjunto dos
+que são aceitos pelo @sc{rcs}; para regras do @sc{cvs},
+leia em @ref{Etiquetas}.
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@c <en>@node File permissions
+@node Permissões de arquivos
+@c <en>@subsection File permissions
+@subsection Permissões de arquivos
+@c -- Move this to @node Creating a repository or similar
+@c <en>@cindex Security, file permissions in repository
+@cindex Segurança, permissões de arquivos no repositório
+@c <en>@cindex File permissions, general
+@cindex Permissões de arquivos, geral
+@c <en>@cindex Permissions, general
+@cindex Permissões, geral
+@c FIXME: we need to somehow reflect "permissions in
+@c repository" versus "permissions in working
+@c directory" in the index entries.
+@c <en>@cindex Group, UNIX file permissions, in repository
+@cindex Grupo, permissões de arquivos UNIX, no repositório
+@c <en>@cindex Read-only files, in repository
+@cindex Arquivos somente-leitura, no repositório
+@c <en>All @samp{,v} files are created read-only, and you
+@c <en>should not change the permission of those files. The
+@c <en>directories inside the repository should be writable by
+@c <en>the persons that have permission to modify the files in
+@c <en>each directory. This normally means that you must
+@c <en>create a UNIX group (see group(5)) consisting of the
+@c <en>persons that are to edit the files in a project, and
+@c <en>set up the repository so that it is that group that
+@c <en>owns the directory.
+@c <en>(On some systems, you also need to set the set-group-ID-on-execution bit
+@c <en>on the repository directories (see chmod(1)) so that newly-created files
+@c <en>and directories get the group-ID of the parent directory rather than
+@c <en>that of the current process.)
+Todos os arquivos @samp{,v} são criados
+somente-leitura, e você não deve mudar as permissões
+destes arquivos. Os diretórios dentro do repositório
+devem dar permissão de escrita para as pessoas que tem
+permissão para modificar os arquivos em cada diretório.
+Isto normalmente significa que você deve criar um grupo
+do UNIX (veja em group(5)) consistindo nas pessoas que
+vão editar os arquivos num projeto, e ajustar o
+repositório tal que aquele grupo seja o dono do
+diretório. (Em alguns sistemas, você também vai
+precisar ajustar o bit set-group-ID-on-execution nos
+diretórios do repositório (veja em chmod(1)) de forma
+que arquivos e diretório criados recebam o ID de grupo
+do diretório pai e não do processo atual.)
+
+@c See also comment in commitinfo node regarding cases
+@c which are really awkward with unix groups.
+
+@c <en>This means that you can only control access to files on
+@c <en>a per-directory basis.
+Isto significa que você pode apenas controlar o acesso
+aos arquivos por diretório.
+
+@c <en>Note that users must also have write access to check
+@c <en>out files, because @sc{cvs} needs to create lock files
+@c <en>(@pxref{Concurrency}). You can use LockDir in CVSROOT/config
+@c <en>to put the lock files somewhere other than in the repository
+@c <en>if you want to allow read-only access to some directories
+@c <en>(@pxref{config}).
+Observe que os usuários devem ter direito de escrita
+para pegar arquivos emprestados, já que o @sc{cvs} tem
+que criar arquivos de trava (@pxref{Concorrência}). Você
+pode usar LockDir (diretório de trava) no CVSROOT/config
+para botar os arquivos de trava num lugar fora do
+repositório se você quer permitir acesso
+somente-leitura a alguns diretórios (@pxref{config}).
+
+@c CVS seems to use CVSUMASK in picking permissions for
+@c val-tags, but maybe we should say more about this.
+@c Like val-tags gets created by someone who doesn't
+@c have CVSUMASK set right?
+@c <en>@cindex CVSROOT/val-tags file, and read-only access to projects
+@cindex O arquivo CVSROOT/val-tags, e acesso somente-leitura a projetos
+@c <en>@cindex val-tags file, and read-only access to projects
+@cindex O arquivo val-tags, e acesso somente-leitura a projetos
+@c <en>Also note that users must have write access to the
+@c <en>@file{CVSROOT/val-tags} file. @sc{cvs} uses it to keep
+@c <en>track of what tags are valid tag names (it is sometimes
+@c <en>updated when tags are used, as well as when they are
+@c <en>created).
+Observe também que os usuários devem ter permissão de
+escrita ao arquivo @file{CVSROOT/val-tags}. O @sc{cvs} usa
+tal arquivo para ter controle sobre quais etiquetas
+(tags) são nomes de etiquetas válidos (é às vezes
+atualizado quando etiquetas são usadas ou criadas).
+
+@c <en>Each @sc{rcs} file will be owned by the user who last
+@c <en>checked it in. This has little significance; what
+@c <en>really matters is who owns the directories.
+Cada arquivo @sc{rcs} vai pertencer ao usuário que o
+devolveu por último. Isto tem pouco significado; o que
+realmente importa é quem possui os diretórios.
+
+@c <en>@cindex CVSUMASK, environment variable
+@cindex CVSUMASK, variável de ambiente
+@c <en>@cindex Umask, for repository files
+@cindex Umask, para arquivos do repositório
+@c <en>@sc{cvs} tries to set up reasonable file permissions
+@c <en>for new directories that are added inside the tree, but
+@c <en>you must fix the permissions manually when a new
+@c <en>directory should have different permissions than its
+@c <en>parent directory. If you set the @code{CVSUMASK}
+@c <en>environment variable that will control the file
+@c <en>permissions which @sc{cvs} uses in creating directories
+@c <en>and/or files in the repository. @code{CVSUMASK} does
+@c <en>not affect the file permissions in the working
+@c <en>directory; such files have the permissions which are
+@c <en>typical for newly created files, except that sometimes
+@c <en>@sc{cvs} creates them read-only (see the sections on
+@c <en>watches, @ref{Setting a watch}; -r, @ref{Global
+@c <en>options}; or @code{CVSREAD}, @ref{Environment variables}).
+O @sc{cvs} tenta ajustar de forma razoável as permissões para novos
+diretórios que vão sendo adicionados na árvore, mas
+você vai ter que mudar as permissões manualmente quando
+um novo diretório deve ter permissões diferentes das do
+seu diretório pai. Se você ajusta a variável de
+ambiente @code{CVSUMASK} ela vai controlar as
+permissões que o @sc{cvs} usa na criação de diretórios
+e/ou arquivos no repositório. @code{CVSUMASK} não mexe
+nas permissões do diretório de trabalho; tais arquivos
+têm as permissões que são típicas para novos arquivos,
+exceto que algumas vezes o @sc{cvs} cria os arquivos
+somente-leitura (veja as seções em ???watches???,
+@comment From Webster's:
+@comment 1. The act of watching; forbearance of sleep; vigil; wakeful,
+@comment vigilant, or constantly observant attention; close
+@comment observation; guard; preservative or preventive vigilance;
+@comment formerly, a watching or guarding by night.
+@comment
+@comment A "watch" in CVS terminology, is the command run to request
+@comment notifications of file status changes. Thus CVS keeps a "watch" on the
+@comment file for you and notifies you of changes. When you have requested
+@comment that CVS "watch" several files, it is said to be keeping "watches".
+@comment -DRP
+@ref{Ajustando um ???watch???}; -r, @ref{Opções globais}; or
+@code{CVSREAD}, @ref{Variáveis de ambiente}).
+@c FIXME: Need more discussion of which
+@c group should own the file in the repository.
+@c Include a somewhat detailed example of the usual
+@c case where CVSUMASK is 007, the developers are all
+@c in a group, and that group owns stuff in the
+@c repository. Need to talk about group ownership of
+@c newly-created directories/files (on some unices,
+@c such as SunOS4, setting the setgid bit on the
+@c directories will make files inherit the directory's
+@c group. On other unices, your mileage may vary. I
+@c can't remember what POSIX says about this, if
+@c anything).
+
+@c <en>Note that using the client/server @sc{cvs}
+@c <en>(@pxref{Remote repositories}), there is no good way to
+@c <en>set @code{CVSUMASK}; the setting on the client machine
+@c <en>has no effect. If you are connecting with @code{rsh}, you
+@c <en>can set @code{CVSUMASK} in @file{.bashrc} or @file{.cshrc}, as
+@c <en>described in the documentation for your operating
+@c <en>system. This behavior might change in future versions
+@c <en>of @sc{cvs}; do not rely on the setting of
+@c <en>@code{CVSUMASK} on the client having no effect.
+Observe que ao usar o @sc{cvs} cliente/servidor
+(@pxref{Repositórios remotos}), não há uma boa maneira
+de ajustar o @code{CVSUMASK}; o ajuste na máquina
+cliente não tem efeito. Se você está se conectando com
+@code{rsh}, você pode ajustar o @code{CVSUMASK} em
+@file{.bashrc} ou @file{.cshrc}, como descrito na
+documentação de seu sistema operacional. Este
+comportamento pode mudar em futuras versões do
+@sc{cvs}; Não se basear na configuração do @code{CVSUMASK}
+no cliente não afeta nada.
+@c FIXME: need to explain what a umask is or cite
+@c someplace which does.
+@c
+@c There is also a larger (largely separate) issue
+@c about the meaning of CVSUMASK in a non-unix context.
+@c For example, whether there is
+@c an equivalent which fits better into other
+@c protection schemes like POSIX.6, VMS, &c.
+@c
+@c FIXME: Need one place which discusses this
+@c read-only files thing. Why would one use -r or
+@c CVSREAD? Why would one use watches? How do they
+@c interact?
+@c
+@c FIXME: We need to state
+@c whether using CVSUMASK removes the need for manually
+@c fixing permissions (in fact, if we are going to mention
+@c manually fixing permission, we better document a lot
+@c better just what we mean by "fix").
+
+@c <en>Using pserver, you will generally need stricter
+@c <en>permissions on the @sc{cvsroot} directory and
+@c <en>directories above it in the tree; see @ref{Password
+@c <en>authentication security}.
+Quando usar pserver, você deve ser, em geral, mais mais
+restritivo com permissões no diretório @sc{cvsroot} e
+nos diretórios abaixo dele na árvore; veja em
+@ref{Segurança com autenticação por senha}.
+
+@c <en>@cindex Setuid
+@cindex Setuid
+@c <en>@cindex Setgid
+@cindex Setgid
+@c <en>@cindex Security, setuid
+@cindex Segurança, setuid
+@c <en>@cindex Installed images (VMS)
+@cindex ???Installed images??? (VMS)
+@comment I have no idea what I could tell you to help you translate this since
+@comment I know little of the VMS operating system. Perhaps you could look
+@comment this up in some VMS documentation somewhere?
+@comment -DRP
+@c <en>Some operating systems have features which allow a
+@c <en>particular program to run with the ability to perform
+@c <en>operations which the caller of the program could not.
+@c <en>For example, the set user ID (setuid) or set group ID
+@c <en>(setgid) features of unix or the installed image
+@c <en>feature of VMS. @sc{cvs} was not written to use such
+@c <en>features and therefore attempting to install @sc{cvs} in
+@c <en>this fashion will provide protection against only
+@c <en>accidental lapses; anyone who is trying to circumvent
+@c <en>the measure will be able to do so, and depending on how
+@c <en>you have set it up may gain access to more than just
+@c <en>@sc{cvs}. You may wish to instead consider pserver. It
+@c <en>shares some of the same attributes, in terms of
+@c <en>possibly providing a false sense of security or opening
+@c <en>security holes wider than the ones you are trying to
+@c <en>fix, so read the documentation on pserver security
+@c <en>carefully if you are considering this option
+@c <en>(@ref{Password authentication security}).
+alguns sistemas operacionais têm a habilidade de
+permitir que um programa execute com a habilidade de
+executar certas operações que quem chamou o programa
+não não tem. Por exemplo, os set user ID (setuid) ou
+set group ID (setgid) do unix ou a caracteristica de
+installed image do VMS. @sc{cvs} não foi escrito para
+usar tais habilidades, logo, tentar instalar o @sc{cvs}
+nesta forma vai gerar proteção apenas contra erros
+acidentais; qualquer um que esteja tentando driblar a
+segurança vai ser capaz de fazê-lo,
+e dependendo de como você configurou, o invasor pode ganhar
+acesso até a mais do que apenas o @sc{cvs}. Você pode
+estar considerando o uso do pserver. Ele compartilha
+alguns dos mesmos atributos, em termos de possivelmente
+fornecer uma falsa sensação de segurança ou de abrir
+buracos de segurança ainda maiores dos que os que você
+quer fechar. Portanto leia a documentação de segurança
+com pserver cuidadosamente se você está pensando nesta
+opção (@ref{Segurança com autenticação por senha}).
+
+@c <en>@node Windows permissions
+@node Permissões no Windows
+@c <en>@subsection File Permission issues specific to Windows
+@subsection Questões sobre permissões de arquivos específicas ao Windows
+@c <en>@cindex Windows, and permissions
+@cindex Windows, e permissões
+@c <en>@cindex File permissions, Windows-specific
+@cindex Permissões de arquivos, específicas ao Windows
+@c <en>@cindex Permissions, Windows-specific
+@cindex Permissões, específicas ao Windows
+
+@c <en>Some file permission issues are specific to Windows
+@c <en>operating systems (Windows 95, Windows NT, and
+@c <en>presumably future operating systems in this family.
+@c <en>Some of the following might apply to OS/2 but I'm not
+@c <en>sure).
+Algumas questões sobre permissões de arquivos são
+específicas ao sistema operacional Windows (Windows 95,
+Windows NT e presumivelmente futuros sistemas
+operacionais nesta família. Algumas coisas abaixo se
+aplicam ao OS/2 mas não estou bem certo).
+
+@c <en>If you are using local @sc{cvs} and the repository is on a
+@c <en>networked file system which is served by the Samba SMB
+@c <en>server, some people have reported problems with
+@c <en>permissions. Enabling WRITE=YES in the samba
+@c <en>configuration is said to fix/workaround it.
+@c <en>Disclaimer: I haven't investigated enough to know the
+@c <en>implications of enabling that option, nor do I know
+@c <en>whether there is something which @sc{cvs} could be doing
+@c <en>differently in order to avoid the problem. If you find
+@c <en>something out, please let us know as described in
+@c <en>@ref{BUGS}.
+Se você está usando um @sc{cvs} local e o repositório
+está num sistema de arquivos em rede de um servidor
+Samba SMB, algumas pessoas relataram problemas com
+permissões. Habilitando WRITE=YES na configuração do
+samba conserta/resolve. ???Disclaimer:??? Eu não
+@comment "Webster's Revised Unabridged Dictionary (1913)"
+@comment Disclaimer Dis*claim"er, n.
+@comment 1. One who disclaims, disowns, or renounces.
+@comment
+@comment 2. (Law) A denial, disavowal, or renunciation, as of a title,
+@comment claim, interest, estate, or trust; relinquishment or
+@comment waiver of an interest or estate. --Burrill.
+@comment
+@comment 3. A public disavowal, as of pretensions, claims, opinions,
+@comment and the like. --Burke.
+@comment
+@comment In other words, "Warning:", or "Caution:", might be appropriate.
+@comment -DRP
+investiguei o suficiente as implicações de habilitar
+esta opção, nem sei se há algo que o @sc{cvs} poderia
+fazer de diferente para evitar este problema. Se você
+souber de algo, por favor nos ponha a par como descrito
+em @ref{Paus}.
+
+@c <en>@node Attic
+@node Attic
+@c <en>@subsection The attic
+@subsection O attic
+@c <en>@cindex Attic
+@cindex Attic
+
+@c <en>You will notice that sometimes @sc{cvs} stores an
+@c <en>@sc{rcs} file in the @code{Attic}. For example, if the
+@c <en>@sc{cvsroot} is @file{/usr/local/cvsroot} and we are
+@c <en>talking about the file @file{backend.c} in the
+@c <en>directory @file{yoyodyne/tc}, then the file normally
+@c <en>would be in
+Você deve ter notado que às vezes o @sc{cvs} guarda um
+arquivo @sc{rcs} no @code{Attic}. Por exemplo, se o
+@sc{cvsroot} é @file{/usr/local/cvsroot} e nós estamos
+falando sobre o arquivo @file{backend.c} no diretório
+@file{yoyodyne/tc}, então o arquivo normalmente deve
+estar em
+
+@example
+/usr/local/cvsroot/yoyodyne/tc/backend.c,v
+@end example
+
+@noindent
+@c <en>but if it goes in the attic, it would be in
+mas se ele vai para o attic, ele deve estar em
+
+@example
+/usr/local/cvsroot/yoyodyne/tc/Attic/backend.c,v
+@end example
+
+@noindent
+@c <en>@cindex Dead state
+@cindex Estado morto
+@c <en>. It should not matter from a user point of
+@c <en>view whether a file is in the attic; @sc{cvs} keeps
+@c <en>track of this and looks in the attic when it needs to.
+@c <en>But in case you want to know, the rule is that the RCS
+@c <en>file is stored in the attic if and only if the head
+@c <en>revision on the trunk has state @code{dead}. A
+@c <en>@code{dead} state means that file has been removed, or
+@c <en>never added, for that revision. For example, if you
+@c <en>add a file on a branch, it will have a trunk revision
+@c <en>in @code{dead} state, and a branch revision in a
+@c <en>non-@code{dead} state.
+ao invés. Não importa ao usuário onde, dentro do Attic,
+fica o arquivo; @sc{cvs} mantém controle disto e busca
+no Attic quando é preciso. Mas caso você queira saber,
+a regra é que o arquivo RCS é guardado no attic se e
+somente se a ???head revision??? no tronco está no
+@comment "Head", at the front, etc. In this case, refers to the most recent
+@comment revision on the trunk, like the head of a snake would be in front.
+@comment In English, the "head of a line" is the person in front and the "tail"
+@comment the person in back.
+@comment -DRP
+estado @code{morto} (dead). Um estado @code{morto} significa
+que o arquivo foi removido, ou nunca foi adicionado,
+naquela revisão. Por exemplo, se você adiciona um
+arquivo num ramo, ele vai ter uma revisão de
+tronco num estado @code{morto} e uma revisão de
+ramo num estado não-@code{morto}.
+@c Probably should have some more concrete examples
+@c here, or somewhere (not sure exactly how we should
+@c arrange the discussion of the dead state, versus
+@c discussion of the attic).
+
+@c <en>@node CVS in repository
+@node CVS no repositório
+@c <en>@subsection The CVS directory in the repository
+@subsection O diretório CVS no repositório
+@c <en>@cindex CVS directory, in repository
+@cindex diretório CVS, no repositório
+
+@c <en>The @file{CVS} directory in each repository directory
+@c <en>contains information such as file attributes (in a file
+@c <en>called @file{CVS/fileattr}. In the
+@c <en>future additional files may be added to this directory,
+@c <en>so implementations should silently ignore additional
+@c <en>files.
+O diretório @file{CVS} em cada diretório do repositório
+contém informações tais como atributos de arquivos (num
+arquivo chamado @file{CVS/fileattr}. No futuro novos
+arquivos ficarão neste diretório, logo, implementações
+devem ignorar em silêncio arquivos adicionais.
+
+@c <en>This behavior is implemented only by @sc{cvs} 1.7 and
+@c <en>later; for details see @ref{Watches Compatibility}.
+Este comportamento é implementado apenas pelo @sc{cvs}
+1.7 e posteriores; para detalhes veja em
+@ref{Compatibilidade de ???Watches???}.
+@comment As "watches", previously.
+@comment -DRP
+
+@c <en>The format of the fileattr file is a series of entries
+@c <en>of the following form (where @samp{@{} and @samp{@}}
+@c <en>means the text between the braces can be repeated zero
+@c <en>or more times):
+O formato do arquivo fileattr é uma série de entradas
+da seguinte forma (onde @samp{@{} e @samp{@}}
+significam que o texto entre chaves pode ser repetido
+zero ou várias vezes):
+
+@var{ent-type} @var{filename} <tab> @var{attrname} = @var{attrval}
+ @{; @var{attrname} = @var{attrval}@} <linefeed>
+
+@c <en>@var{ent-type} is @samp{F} for a file, in which case the entry specifies the
+@c <en>attributes for that file.
+@var{ent-type} é @samp{F} para arquivo, neste caso a
+entrada especifica os atributos para tal arquivo.
+
+@c <en>@var{ent-type} is @samp{D},
+@c <en>and @var{filename} empty, to specify default attributes
+@c <en>to be used for newly added files.
+@var{ent-type} é @samp{D},
+e @var{filename} vazio, para especificar atributos
+padrão para serem usados em novos arquivos adicionados.
+
+@c <en>Other @var{ent-type} are reserved for future expansion. @sc{cvs} 1.9 and older
+@c <en>will delete them any time it writes file attributes.
+@c <en>@sc{cvs} 1.10 and later will preserve them.
+Outros @var{ent-type} são reservados para futuras
+expansões. @sc{cvs} 1.9 e anteriores vão deletá-los a
+toda hora que ele escrever atributos de
+arquivos. @sc{cvs} 1.10 e posteriores vão preservá-los.
+
+@c <en>Note that the order of the lines is not significant;
+@c <en>a program writing the fileattr file may
+@c <en>rearrange them at its convenience.
+Observe que a ordem das linhas não é significante; um
+programa escrevendo o arquivo fileattr pode
+rearranjá-las de acordo com sua própria conveniência.
+
+@c <en>There is currently no way of quoting tabs or linefeeds in the
+@c <en>filename, @samp{=} in @var{attrname},
+@c <en>@samp{;} in @var{attrval}, etc. Note: some implementations also
+@c <en>don't handle a NUL character in any of the fields, but
+@c <en>implementations are encouraged to allow it.
+Não existe atualmente uma forma de tratar tabulações ou quebras de linha
+como caractere no nome do arquivo, @samp{=} em @var{attrname},
+@samp{;} em @var{attrval}, etc. Obs.: algumas
+implementações também não manipulam o caractere NUL em
+nenhum dos campos, mas encorajamos implementações que
+permitam isto.
+
+@c <en>By convention, @var{attrname} starting with @samp{_} is for an attribute given
+@c <en>special meaning by @sc{cvs}; other @var{attrname}s are for user-defined attributes
+@c <en>(or will be, once implementations start supporting user-defined attributes).
+Por convenção, @var{attrname} começando com @samp{_} é
+para um atributo ao qual foi dado significado especial
+pelo @sc{cvs}; outros @var{attrname}s são para
+atributos definidos pelo usuário (ou que vão ser, já
+que implementações começaram suporte a atributos
+definidos pelo usuário).
+
+@c <en>Builtin attributes:
+Atributos internos:
+
+@table @code
+@item _watched
+@c <en>Present means the file is watched and should be checked out
+@c <en>read-only.
+Quando presente significa que o arquivo está
+???watched??? (watched) e deve ser emprestado como
+@comment As "watches", before.
+@comment -DRP
+somente-leitura.
+
+@item _watchers
+@c <en>Users with watches for this file. Value is
+@c <en>@var{watcher} > @var{type} @{ , @var{watcher} > @var{type} @}
+@c <en>where @var{watcher} is a username, and @var{type}
+@c <en>is zero or more of edit,unedit,commit separated by
+@c <en>@samp{+} (that is, nothing if none; there is no "none" or "all" keyword).
+Usuários com ???watches??? para este arquivo. O valor é
+@comment As "watches", before.
+@comment -DRP
+@var{watcher} > @var{type} @{ , @var{watcher} > @var{type} @}
+onde @var{watcher} é um nome de usuário, e @var{type} é
+zero ou mais de edit,unedit,commit separados por
+@samp{+} (isto é, deixe em branco para nenhum; não há
+palavras-chave para "nenhum" ou "todos").
+
+@item _editors
+@c <en>Users editing this file. Value is
+@c <en>@var{editor} > @var{val} @{ , @var{editor} > @var{val} @}
+@c <en>@c <en>where @var{editor} is a username, and @var{val} is
+@c <en>@var{time}+@var{hostname}+@var{pathname}, where
+@c <en>@var{time} is when the @code{cvs edit} command (or
+@c <en>equivalent) happened,
+@c <en>and @var{hostname} and @var{pathname} are for the working directory.
+Usuários editando este arquivo. O valor é
+@var{editor} > @var{val} @{ , @var{editor} > @var{val} @}
+onde @var{editor} é um username, e @var{val} é
+@var{time}+@var{hostname}+@var{pathname}, onde
+@var{time} é quando o comando @code{cvs edit} (ou outro
+equivalente) aconteceu, e @var{hostname} e
+@var{pathname} são do diretório de trabalho.
+@end table
+
+Example:
+
+@c FIXME: sanity.sh should contain a similar test case
+@c so we can compare this example from something from
+@c Real Life(TM). See cvsclient.texi (under Notify) for more
+@c discussion of the date format of _editors.
+@example
+Ffile1 _watched=;_watchers=joe>edit,mary>commit
+Ffile2 _watched=;_editors=sue>8 Jan 1975+workstn1+/home/sue/cvs
+D _watched=
+@end example
+
+@noindent
+@c <en>means that the file @file{file1} should be checked out
+@c <en>read-only. Furthermore, joe is watching for edits and
+@c <en>mary is watching for commits. The file @file{file2}
+@c <en>should be checked out read-only; sue started editing it
+@c <en>on 8 Jan 1975 in the directory @file{/home/sue/cvs} on
+@c <en>the machine @code{workstn1}. Future files which are
+@c <en>added should be checked out read-only. To represent
+@c <en>this example here, we have shown a space after
+@c <en>@samp{D}, @samp{Ffile1}, and @samp{Ffile2}, but in fact
+@c <en>there must be a single tab character there and no spaces.
+significa que o arquivo @file{file1} deve ser pego como
+somente-leitura. Além disso, joe está ???watching???
+edições e mary está ???watching??? ???commits???. O
+@comment "Watching", as "watches", before.
+@comment "Commits" are checkins, i.e. via the `cvs commit' command.
+@comment -DRP
+arquivo @file{file2} deve ser pego somente-leitura; sue
+comecou a edita-lo em 8 Jan 1975 no diretorio
+@file{/home/sue/cvs} na maquina
+@code{workstn1}. Futuros arquivos que forem adicionados
+devem ser pegos somente-leitura. Para representar este
+exemplo aqui, nós mostramos um espaco depois de
+@samp{D}, @samp{Ffile1}, e @samp{Ffile2}, mas de fato
+existe um caractere de tab e nenhum espaco.
+
+@c <en>@node Locks
+@node Travas
+@c <en>@subsection CVS locks in the repository
+@subsection travas CVS no repositório
+
+@c <en>@cindex #cvs.rfl, technical details
+@cindex #cvs.rfl, detalhes técnicos
+@c <en>@cindex #cvs.pfl, technical details
+@cindex #cvs.pfl, detalhes técnicos
+@c <en>@cindex #cvs.wfl, technical details
+@cindex #cvs.wfl, detalhes técnicos
+@c <en>@cindex #cvs.lock, technical details
+@cindex #cvs.lock, detalhes técnicos
+@c <en>@cindex Locks, cvs, technical details
+@cindex Travas, cvs, detalhes técnicos
+@c <en>For an introduction to @sc{cvs} locks focusing on
+@c <en>user-visible behavior, see @ref{Concurrency}. The
+@c <en>following section is aimed at people who are writing
+@c <en>tools which want to access a @sc{cvs} repository without
+@c <en>interfering with other tools accessing the same
+@c <en>repository. If you find yourself confused by concepts
+@c <en>described here, like @dfn{read lock}, @dfn{write lock},
+@c <en>and @dfn{deadlock}, you might consult the literature on
+@c <en>operating systems or databases.
+Para uma introdução às travas (locks) no @sc{cvs}
+focando no comportamento visível ao usuário, veja em
+@ref{Concorrência}. A seção seguinte foi feita para
+para pessoas que escrevem ferramentas as quais precisam
+acessar um repositório @sc{cvs} sem interferir com
+outras ferramentas acessando o mesmo repositório. Se
+você se sentir confuso com os conceitos descritos aqui,
+como @dfn{read lock}, @dfn{write lock} e
+@dfn{deadlock}, você deve consultar a literatura de
+sistemas operacionais e bancos de dados.
+
+@c <en>@cindex #cvs.tfl
+@cindex #cvs.tfl
+@c <en>Any file in the repository with a name starting
+@c <en>with @file{#cvs.rfl.} is a read lock. Any file in
+@c <en>the repository with a name starting with
+@c <en>@file{#cvs.pfl} is a promotable read lock. Any file in
+@c <en>the repository with a name starting with
+@c <en>@file{#cvs.wfl} is a write lock. Old versions of @sc{cvs}
+@c <en>(before @sc{cvs} 1.5) also created files with names starting
+@c <en>with @file{#cvs.tfl}, but they are not discussed here.
+@c <en>The directory @file{#cvs.lock} serves as a master
+@c <en>lock. That is, one must obtain this lock first before
+@c <en>creating any of the other locks.
+Qualquer arquivo no repositório com um nome começando
+com @file{#cvs.rfl.} é uma trava de leitura. Qualquer
+arquivo no repositório com um nome comçando com
+@file{#cvs.pfl} é uma trava de leitura
+???promotable???. Qualquer arquivo no repositório com
+um nome começando com
+@file{#cvs.wfl} é uma trava de escrita. Versões antigas
+do @sc{cvs} (antes do @sc{cvs} 1.5) também criavam
+arquivos com nomes começando com @file{#cvs.tfl}, mas
+estes não são discutidos aqui.
+
+@c <en>The directory @file{#cvs.lock} serves as a master
+@c <en>lock. That is, one must obtain this lock first before
+@c <en>creating any of the other locks.
+O diretório @file{#cvs.lock} funciona como uma trava
+mestra. Isto é, deve-se obter esta trava antes de
+criar qualquer das outras travas.
+
+@c <en>To obtain a readlock, first create the @file{#cvs.lock}
+@c <en>directory. This operation must be atomic (which should
+@c <en>be true for creating a directory under most operating
+@c <en>systems). If it fails because the directory already
+@c <en>existed, wait for a while and try again. After
+@c <en>obtaining the @file{#cvs.lock} lock, create a file
+@c <en>whose name is @file{#cvs.rfl.} followed by information
+@c <en>of your choice (for example, hostname and process
+@c <en>identification number). Then remove the
+@c <en>@file{#cvs.lock} directory to release the master lock.
+@c <en>Then proceed with reading the repository. When you are
+@c <en>done, remove the @file{#cvs.rfl} file to release the
+@c <en>read lock.
+Para obter uma trava de leitura, primeiro crie o diretório
+@file{#cvs.lock}. Esta operação deve ser atômica (o
+que deve ser verdade para a criação de um diretório na
+maioria dos sistemas operacionais). Se isto falha por
+que o diretório já existe, espere um tempinho e tente de
+novo. Depois de obter a trava @file{#cvs.lock}, crie
+um arquivo cujo nome seja @file{#cvs.rfl.} seguido pela
+informação de sua escolha (por exemplo, nome de host e
+nmero de identificaçao de processo). Então remova o
+diretório @file{#cvs.lock} para ativar a trava
+mestra. Então começe a ler o repositório. Quando você
+terminar, remova o arquivo @file{#cvs.rfl} para
+liberar a trava de leitura.
+
+@c <en>Promotable read locks are a concept you may not find in other literature on
+@c <en>concurrency. They are used to allow a two (or more) pass process to only lock
+@c <en>a file for read on the first (read) pass(es), then upgrade its read locks to
+@c <en>write locks if necessary for a final pass, still assured that the files have
+@c <en>not changed since they were first read. @sc{cvs} uses promotable read locks,
+@c <en>for example, to prevent commit and tag verification passes from interfering
+@c <en>with other reading processes. It can then lock only a single directory at a
+@c <en>time for write during the write pass.
+Promotable read locks are a concept you may not find in other literature on
+concurrency. They are used to allow a two (or more) pass process to only lock
+a file for read on the first (read) pass(es), then upgrade its read locks to
+write locks if necessary for a final pass, still assured that the files have
+not changed since they were first read. @sc{cvs} uses promotable read locks,
+for example, to prevent commit and tag verification passes from interfering
+with other reading processes. It can then lock only a single directory at a
+time for write during the write pass.
+
+@c <en>To obtain a promotable read lock, first create the @file{#cvs.lock} directory,
+@c <en>as with a non-promotable read lock. Then check
+@c <en>that there are no files that start with
+@c <en>@file{#cvs.pfl}. If there are, remove the master @file{#cvs.lock} directory,
+@c <en>wait awhile (CVS waits 30 seconds between lock attempts), and try again. If
+@c <en>there are no other promotable locks, go ahead and create a file whose name is
+@c <en>@file{#cvs.pfl} followed by information of your choice (for example, CVS uses
+@c <en>its hostname and the process identification number of the CVS server process
+@c <en>creating the lock). If versions of @sc{cvs} older than version 1.12.4 access
+@c <en>your repository directly (not via a @sc{cvs} server of version 1.12.4 or
+@c <en>later), then you should also create a read lock since older versions of CVS
+@c <en>will ignore the promotable lock when attempting to create their own write lock.
+@c <en>Then remove the master @file{#cvs.lock} directory in order to allow other
+@c <en>processes to obtain read locks.
+To obtain a promotable read lock, first create the @file{#cvs.lock} directory,
+as with a non-promotable read lock. Then check
+that there are no files that start with
+@file{#cvs.pfl}. If there are, remove the master @file{#cvs.lock} directory,
+wait awhile (CVS waits 30 seconds between lock attempts), and try again. If
+there are no other promotable locks, go ahead and create a file whose name is
+@file{#cvs.pfl} followed by information of your choice (for example, CVS uses
+its hostname and the process identification number of the CVS server process
+creating the lock). If versions of @sc{cvs} older than version 1.12.4 access
+your repository directly (not via a @sc{cvs} server of version 1.12.4 or
+later), then you should also create a read lock since older versions of CVS
+will ignore the promotable lock when attempting to create their own write lock.
+Then remove the master @file{#cvs.lock} directory in order to allow other
+processes to obtain read locks.
+
+@c <en>To obtain a writelock, first create the
+@c <en>@file{#cvs.lock} directory, as with readlocks. Then
+@c <en>check that there are no files whose names start with
+@c <en>@file{#cvs.rfl.} and no files whose names start with @file{#cvs.pfl} that are
+@c <en>not owned by the process attempting to get the write lock. If either exist,
+@c <en>remove @file{#cvs.lock}, wait for a while, and try again. If
+@c <en>there are no readers or promotable locks from other processes, then create a
+@c <en>file whose name is @file{#cvs.wfl} followed by information of your choice
+@c <en>(again, CVS uses the hostname and server process identification
+@c <en>number). Remove your @file{#cvs.pfl} file if present. Hang on to the
+@c <en>@file{#cvs.lock} lock. Proceed
+@c <en>with writing the repository. When you are done, first
+@c <en>remove the @file{#cvs.wfl} file and then the
+@c <en>@file{#cvs.lock} directory. Note that unlike the
+@c <en>@file{#cvs.rfl} file, the @file{#cvs.wfl} file is just
+@c <en>informational; it has no effect on the locking operation
+@c <en>beyond what is provided by holding on to the
+@c <en>@file{#cvs.lock} lock itself.
+Para obter uma trava de escrita, primeiro crie o
+diretório @file{#cvs.lock}, da mesma forma que com as
+travas de leitura. Então verifique se não existem
+arquivos cujos nomes começam com @file{#cvs.rfl.} e se
+não existem arquivos cujo nome começa com
+@file{#cvs.pfl} que não tenha como dono o processo
+tentando ter a trava de escrita. Se ???either???
+existe, remova o @file{#cvs.lock}, espere um momento, e
+tente de novo. Se não existem ???readers??? ou travas
+???promotable??? de outros processos, então crie um
+arquivo cujo nome é @file{#cvs.wfl} seguido de
+informações da sua escolha (novamente, o CVS usa o
+hostname e o ???server process identification
+number??). Remove your @file{#cvs.pfl} file if present. Hang on to the
+@file{#cvs.lock} lock. Escreva no repositório. Quando
+tiver terminado, primeiro remova o arquivo
+@file{#cvs.wfl} e então o diretório
+@file{#cvs.lock}. Observe que ao contrário do arquivo
+@file{#cvs.rfl}, o arquivo @file{#cvs.wfl} é apenas
+informativo; ele não tem efeito na operação de trava
+além do que é feito pelo ato de manter a trava
+@file{#cvs.lock}.
+
+@c <en>Note that each lock (writelock or readlock) only locks
+@c <en>a single directory in the repository, including
+@c <en>@file{Attic} and @file{CVS} but not including
+@c <en>subdirectories which represent other directories under
+@c <en>version control. To lock an entire tree, you need to
+@c <en>lock each directory (note that if you fail to obtain
+@c <en>any lock you need, you must release the whole tree
+@c <en>before waiting and trying again, to avoid deadlocks).
+Observe que cada trava (de escrita ou leitura) apenas trava um
+único diretório no
+repositório, inclusive no caso do @file{Attic} e do @file{CVS}
+sem incluir os subdiretórios que representam outros
+diretórios sob controle de versão. Para travar uma
+árvore inteira, voc precisa travar cada diretório
+(observe que se você não conseguir obter alguma trava
+que você precise, você deve liberar a árvore toda antes
+para esperar e tentar novamente, para evitar ???deadlocks???).
+@comment "Deadlock" is a computer science term which refers to the scenario
+@comment where two processes end up waiting on each other in such a way that
+@comment neither will ever get the lock and therefore neither process will
+@comment ever run again, and therefore both are said to be "dead".
+@comment
+@comment For example, say process 1 wants to lock files "A" and "B", and so
+@comment does process 2. If process 1 locks "A" first, and process 2 locks
+@comment file "B" first, then process begins waiting to lock "B" while process
+@comment 2 waits to lock "A", then both processes will wait indefinately, a
+@comment commonly encountered problem with file locking, especially for
+@comment inexperienced programmers.
+@comment -DRP
+
+@c <en>Note also that @sc{cvs} expects writelocks to control
+@c <en>access to individual @file{foo,v} files. @sc{rcs} has
+@c <en>a scheme where the @file{,foo,} file serves as a lock,
+@c <en>but @sc{cvs} does not implement it and so taking out a
+@c <en>@sc{cvs} writelock is recommended. See the comments at
+@c <en>rcs_internal_lockfile in the @sc{cvs} source code for
+@c <en>further discussion/rationale.
+Observe também que o @sc{cvs} espera travas de escrita
+para controlar o acesso a arquivos @file{foo,v}
+individuais. O @sc{rcs} tem um esquema onde o arquivo
+@file{,foo,} funciona como uma trava, mas o @sc{cvs}
+não implementa isso. Portanto, fazer uma trava de escrita
+no @sc{cvs} é recomendado. Veja os comentários no
+rcs_internal_lockfile no código fonte do @sc{cvs} para
+mais discussões/explicações.
+
+@c <en>@node CVSROOT storage
+@node Armazenamento do CVSROOT
+@c <en>@subsection How files are stored in the CVSROOT directory
+@subsection Como os arquivos são guardados no diretório CVSROOT
+@c <en>@cindex CVSROOT, storage of files
+@cindex CVSROOT, armazenamento de arquivos
+
+@c <en>The @file{$CVSROOT/CVSROOT} directory contains the
+@c <en>various administrative files. In some ways this
+@c <en>directory is just like any other directory in the
+@c <en>repository; it contains @sc{rcs} files whose names end
+@c <en>in @samp{,v}, and many of the @sc{cvs} commands operate
+@c <en>on it the same way. However, there are a few
+@c <en>differences.
+O diretório @file{$CVSROOT/CVSROOT} contém os vários
+arquivos administrativos. Em alguns aspectos este
+diretório é igual a qualquer outro diretório no
+repositório; ele contém arquivos @sc{rcs} cujos nomes
+terminam em @samp{,v}, e muitos dos comandos do
+@sc{cvs} operam neles do mesmo jeito. Entretanto,
+existem algumas poucas diferenças.
+
+@c <en>For each administrative file, in addition to the
+@c <en>@sc{rcs} file, there is also a checked out copy of the
+@c <en>file. For example, there is an @sc{rcs} file
+@c <en>@file{loginfo,v} and a file @file{loginfo} which
+@c <en>contains the latest revision contained in
+@c <en>@file{loginfo,v}. When you check in an administrative
+@c <en>file, @sc{cvs} should print
+Para cada arquivo administrativo, além do arquivo
+@sc{rcs}, existe também uma cópia de trabalho do
+arquivo. Por exemplo, existe um arquivo @sc{rcs}
+@file{loginfo,v} e um arquivo @file{loginfo} que contém
+a ultima revisão contida em @file{loginfo,v}. Quando
+você devolve um arquivo administrativo, o @sc{cvs} vai
+mostrar
+
+@example
+cvs commit: Rebuilding administrative file database
+@end example
+
+@noindent
+@c <en>and update the checked out copy in
+@c <en>@file{$CVSROOT/CVSROOT}. If it does not, there is
+@c <en>something wrong (@pxref{BUGS}). To add your own files
+@c <en>to the files to be updated in this fashion, you can add
+@c <en>them to the @file{checkoutlist} administrative file
+@c <en>(@pxref{checkoutlist}).
+e atualizar a cópia de trabalho em
+@file{$CVSROOT/CVSROOT}. Se não fizer, tem algo errado
+(@pxref{Paus}). Para adicionar os seus próprios
+arquivos aos arquivos a serem atualizados desta
+maneira, você pode adicioná-los ao arquivo
+administrativo @file{checkoutlist}
+(@pxref{checkoutlist}).
+
+@c <en>@cindex modules.db
+@cindex modules.db
+@c <en>@cindex modules.pag
+@cindex modules.pag
+@c <en>@cindex modules.dir
+@cindex modules.dir
+@c <en>By default, the @file{modules} file behaves as
+@c <en>described above. If the modules file is very large,
+@c <en>storing it as a flat text file may make looking up
+@c <en>modules slow (I'm not sure whether this is as much of a
+@c <en>concern now as when @sc{cvs} first evolved this
+@c <en>feature; I haven't seen benchmarks). Therefore, by
+@c <en>making appropriate edits to the @sc{cvs} source code
+@c <en>one can store the modules file in a database which
+@c <en>implements the @code{ndbm} interface, such as Berkeley
+@c <en>db or GDBM. If this option is in use, then the modules
+@c <en>database will be stored in the files @file{modules.db},
+@c <en>@file{modules.pag}, and/or @file{modules.dir}.
+Por padrão o arquivo @file{modules} se comporta como
+descrito acima. Se o arquivo modules é muito grande,
+guardar ele como um arquivo de texto normal faz a busca
+por módulos lenta (Não estou bem certo se isso importa
+tanto agora como quando o @sc{cvs} primeiramente
+desenvolveu esta habilidade; não vi avaliações).
+Entretanto, fazendo edições apropriadas no código fonte
+do @sc{cvs} pode-se guardar o arquivo modules num banco
+de dados que implementa a interface @code{ndbm}, tais
+como o Berkeley db ou GDBM. Se esta opção está em uso,
+então o banco de dados modules será guardado nos
+arquivos @file{modules.db}, @file{modules.pag}, e/ou @file{modules.dir}.
+@c I think fileattr also will use the database stuff.
+@c Anything else?
+
+@c <en>For information on the meaning of the various
+@c <en>administrative files, see @ref{Administrative files}.
+Para informações sobre o significado dos vários arquivos administrativos,
+veja em @ref{Arquivos administrativos}.
+
+@c <en>@node Working directory storage
+@node Armazenamento do Diretório de trabalho
+@c <en>@section How data is stored in the working directory
+@section Como os dados são guardados no diretório de trabalho
+
+@c FIXME: Somewhere we should discuss timestamps (test
+@c case "stamps" in sanity.sh). But not here. Maybe
+@c in some kind of "working directory" chapter which
+@c would encompass the "Builds" one? But I'm not sure
+@c whether that is a good organization (is it based on
+@c what the user wants to do?).
+
+@c <en>@cindex CVS directory, in working directory
+@cindex diretório CVS, no diretório de trabalho
+@c <en>While we are discussing @sc{cvs} internals which may
+@c <en>become visible from time to time, we might as well talk
+@c <en>about what @sc{cvs} puts in the @file{CVS} directories
+@c <en>in the working directories. As with the repository,
+@c <en>@sc{cvs} handles this information and one can usually
+@c <en>access it via @sc{cvs} commands. But in some cases it
+@c <en>may be useful to look at it, and other programs, such
+@c <en>as the @code{jCVS} graphical user interface or the
+@c <en>@code{VC} package for emacs, may need to look at it.
+@c <en>Such programs should follow the recommendations in this
+@c <en>section if they hope to be able to work with other
+@c <en>programs which use those files, including future
+@c <en>versions of the programs just mentioned and the
+@c <en>command-line @sc{cvs} client.
+Assim como estamos conversando sobre as entranhas do
+@sc{cvs}, que podem ficar visíveis de tempos em tempos,
+também devemos falar sobre o que o @sc{cvs} bota nos
+diretórios @file{CVS} nos diretórios de trabalho.
+Assim como com o repositório, o @sc{cvs} manipula esta
+informação e pode-se acessá-la normalmente via comandos
+@sc{cvs}. Mas em alguns casos pode ser útil dar uma
+olhada, e outros programas, como a interface de usuário
+gráfica @code{jCVS} ou o pacote para emacs @code{VC},
+precisarem ver o que tem lá. Tais programas devem
+seguir as recomendações nesta seção se eles querem
+interagir com outros programas que usam estes arquivos,
+inclusive versões futuras dos programas mencinados logo
+acima e o cliente em linha-de-comando do @sc{cvs}.
+
+@c <en>The @file{CVS} directory contains several files.
+@c <en>Programs which are reading this directory should
+@c <en>silently ignore files which are in the directory but
+@c <en>which are not documented here, to allow for future
+@c <en>expansion.
+O diretório @file{CVS} contém vários
+arquivos. Programas que estão lendo este diretório
+devem ignorar em silêncio arquivos que encontrem no
+diretório mas que não estejam documentados aqui, para
+permitir expansões futuras.
+
+@c <en>The files are stored according to the text file
+@c <en>convention for the system in question. This means that
+@c <en>working directories are not portable between systems
+@c <en>with differing conventions for storing text files.
+@c <en>This is intentional, on the theory that the files being
+@c <en>managed by @sc{cvs} probably will not be portable between
+@c <en>such systems either.
+Os arquivos são guardados de acordo com a convenção de
+arquivo de texto do sistema em questão. Isto significa
+que diretórios de trabalho não são portáveis entre
+sistemas com diferentes convenções para armazenar
+arquivos de texto. Isto é de propósito, baseado na
+teoria de que os arquivos sendo gerenciados pelo
+@sc{cvs} provavelmente também não seriam portáveis
+entre tais sistemas.
+
+@table @file
+@item Root
+@c <en>This file contains the current @sc{cvs} root, as
+@c <en>described in @ref{Specifying a repository}.
+Este arquivo contém a raiz atual do @sc{cvs}, como
+descrito em @ref{Especificando um repositório}.
+
+@c <en>@cindex Repository file, in CVS directory
+@cindex O arquivo Repository, no diretório CVS
+@c <en>@cindex CVS/Repository file
+@cindex O arquivo CVS/Repository
+@c <en>@item Repository
+@item Repositório
+@c <en>This file contains the directory within the repository
+@c <en>which the current directory corresponds with. It can
+@c <en>be either an absolute pathname or a relative pathname;
+@c <en>@sc{cvs} has had the ability to read either format
+@c <en>since at least version 1.3 or so. The relative
+@c <en>pathname is relative to the root, and is the more
+@c <en>sensible approach, but the absolute pathname is quite
+@c <en>common and implementations should accept either. For
+@c <en>example, after the command
+Este arquivo contém o diretório no qual está o
+repositório correspondente ao diretório atual. Pode
+ser um caminho absoluto ou relativo; @sc{cvs} adquiriu
+a habilidade de ler ambos os formatos desde a versão
+1.3. O caminho é relativo à raiz (root), e é a
+abordagem mais racional, mas o caminho absoluto é
+mais comum e ambos devem ser aceitos. Por exemplo,
+depois do comando
+
+@example
+cvs -d :local:/usr/local/cvsroot checkout yoyodyne/tc
+@end example
+
+@noindent
+@c <en>@file{Root} will contain
+o @file{Root} vai conter
+
+@example
+:local:/usr/local/cvsroot
+@end example
+
+@noindent
+@c <en>and @file{Repository} will contain either
+e o @file{Repositório} vai conter ou
+
+@example
+/usr/local/cvsroot/yoyodyne/tc
+@end example
+
+@noindent
+@c <en>or
+ou
+
+@example
+yoyodyne/tc
+@end example
+
+@c <en>If the particular working directory does not correspond
+@c <en>to a directory in the repository, then @file{Repository}
+@c <en>should contain @file{CVSROOT/Emptydir}.
+Se o diretório de trabalho particular não corresponde a
+um diretório no repositório, então o @file{Repositório}
+deve conter @file{CVSROOT/Emptydir}.
+@c <en>@cindex Emptydir, in CVSROOT directory
+@cindex Emptydir, no diretório CVSROOT
+@c <en>@cindex CVSROOT/Emptydir directory
+@cindex O diretório CVSROOT/Emptydir
+
+@c <en>@cindex Entries file, in CVS directory
+@cindex O arquivo Entries, no diretório do CVS
+@c <en>@cindex CVS/Entries file
+@cindex O arquivo CVS/Entries
+@c <en>@item Entries
+@item Entries
+@c <en>This file lists the files and directories in the
+@c <en>working directory.
+@c <en>The first character of each line indicates what sort of
+@c <en>line it is. If the character is unrecognized, programs
+@c <en>reading the file should silently skip that line, to
+@c <en>allow for future expansion.
+Este arquivo relaciona os arquivos e diretórios no
+diretório de trabalho. O primeiro caractere de cada
+linha indica de que tipo é a linha. Se caractere não
+for reconhecido, os programas lendo o arquivo devem
+pular de linha em silêncio, para permitir futuras expansões.
+
+@c <en>If the first character is @samp{/}, then the format is:
+Se o primeiro caractere é @samp{/}, então o formato é:
+
+@example
+/@var{name}/@var{revision}/@var{timestamp}[+@var{conflict}]/@var{options}/@var{tagdate}
+@end example
+
+@noindent
+@c <en>where @samp{[} and @samp{]} are not part of the entry,
+@c <en>but instead indicate that the @samp{+} and conflict
+@c <en>marker are optional. @var{name} is the name of the
+@c <en>file within the directory. @var{revision} is the
+@c <en>revision that the file in the working derives from, or
+@c <en>@samp{0} for an added file, or @samp{-} followed by a
+@c <en>revision for a removed file. @var{timestamp} is the
+@c <en>timestamp of the file at the time that @sc{cvs} created
+@c <en>it; if the timestamp differs with the actual
+@c <en>modification time of the file it means the file has
+@c <en>been modified. It is stored in
+@c <en>the format used by the ISO C asctime() function (for
+@c <en>example, @samp{Sun Apr 7 01:29:26 1996}). One may
+@c <en>write a string which is not in that format, for
+@c <en>example, @samp{Result of merge}, to indicate that the
+@c <en>file should always be considered to be modified. This
+@c <en>is not a special case; to see whether a file is
+@c <en>modified a program should take the timestamp of the file
+@c <en>and simply do a string compare with @var{timestamp}.
+@c <en>If there was a conflict, @var{conflict} can be set to
+@c <en>the modification time of the file after the file has been
+@c <en>written with conflict markers (@pxref{Conflicts example}).
+@c <en>Thus if @var{conflict} is subsequently the same as the actual
+@c <en>modification time of the file it means that the user
+@c <en>has obviously not resolved the conflict. @var{options}
+@c <en>contains sticky options (for example @samp{-kb} for a
+@c <en>binary file). @var{tagdate} contains @samp{T} followed
+@c <en>by a tag name, or @samp{D} for a date, followed by a
+@c <en>sticky tag or date. Note that if @var{timestamp}
+@c <en>contains a pair of timestamps separated by a space,
+@c <en>rather than a single timestamp, you are dealing with a
+@c <en>version of @sc{cvs} earlier than @sc{cvs} 1.5 (not
+@c <en>documented here).
+Onde @samp{[} e @samp{]} não são partes da entrada, mas
+indicam que o @samp{+} e o marcador de conflito são
+opcionais. @var{name} é o nome do arquivo no
+diretório. @var{revision} e a revisão da qual o
+arquivo no diretório de trabalho deriva, ou @samp{0}
+para um arquivo adicionado, ou @samp{-} seguido de uma
+revisão para um arquivo removido. @var{timestamp} é o
+???timestamp??? do arquivo quando o @sc{cvs} o criou;
+@comment As a file system timestamp. Usually a creation time or modification
+@comment time or something. I'm not sure what they were prior to CVS 1.5.
+@comment -DRP
+se o timestamp difere da hora de modificação do
+arquivo, significa que o arquivo foi modificado. É
+armazenado no formato usando pela função ISO C
+asctime() (por exemplo, @samp{Sun Apr 7 01:29:26
+1996}). Pode-se escrever uma string que não esteja
+neste formato, por exemplo, @samp{Result of merge},
+para indicar que o arquivo deve ser sempre considerado
+como modificado. Este não é um caso especial; para ver
+se um arquivo é modificado, um programa pode pegar o
+timestamp do arquivo e simplesmente criar uma string e
+comparar com @var{timestamp}. Se existe um conflito,
+@var{conflict} pode ser ajustada para o tempo de
+modificação do arquivo depois do arquivo ter sido
+escrito com marcações de conflito (@pxref{Exemplo de conflitos}).
+Logo, se @var{conflict} é posteriormente o mesmo que o
+tempo de modificação real do arquivo significa que o
+usuário obviamente não resolveu o conflito. @var{options}
+contém opções adesivas (por exemplo @samp{-kb} para um
+arquivo binário). @var{tagdate} contém @samp{T}
+seguindo de um nome de etiqueta (tag), ou @samp{D} para
+uma data, seguido de uma data ou etiqueta adesiva.
+Observe que se @var{timestamp} contém um par de
+timestamps separados por um espaço, ao invés de um
+único timestamp, você está lidando com uma versão do
+@sc{cvs} anterior ao @sc{cvs} 1.5 (sem documentação aqui).
+
+@c <en>The timezone on the timestamp in CVS/Entries (local or
+@c <en>universal) should be the same as the operating system
+@c <en>stores for the timestamp of the file itself. For
+@c <en>example, on Unix the file's timestamp is in universal
+@c <en>time (UT), so the timestamp in CVS/Entries should be
+@c <en>too. On @sc{vms}, the file's timestamp is in local
+@c <en>time, so @sc{cvs} on @sc{vms} should use local time.
+@c <en>This rule is so that files do not appear to be modified
+@c <en>merely because the timezone changed (for example, to or
+@c <en>from summer time).
+O fuso horário do timestamp no CVS/Entries (local ou
+universal) deve ser igual ao que o sistema
+operacional guarda para o timestamp do próprio arquivo.
+Por exemplo, no Unix o timestamp do arquivo está em
+tempo universal (universal time - UT). Logo, o
+timestamp em CVS/Entries deve estar assim também. No
+@sc{vms}, o timestamp do arquivo está em hora
+local, logo, o @sc{cvs} no @sc{vms} deve usar hora
+local. Esta regra é para que arquivos não pareçam estar
+modificados simplesmente por que o fuso horário mudou
+(por exemplo, saindo ou entrando no horário de verão).
+@c See comments and calls to gmtime() and friends in
+@c src/vers_ts.c (function time_stamp).
+
+@c <en>If the first character of a line in @file{Entries} is
+@c <en>@samp{D}, then it indicates a subdirectory. @samp{D}
+@c <en>on a line all by itself indicates that the program
+@c <en>which wrote the @file{Entries} file does record
+@c <en>subdirectories (therefore, if there is such a line and
+@c <en>no other lines beginning with @samp{D}, one knows there
+@c <en>are no subdirectories). Otherwise, the line looks
+@c <en>like:
+Se o primeiro caractere de uma linha em @file{Entries}
+é @samp{D}, então ele indica um subdiretório. @samp{D}
+sozinho em uma linha indica que o programa
+que escreveu o arquivo @file{Entries} registra
+subdiretórios (portanto, se existe tal linha e nenhuma
+outra linha começando com @samp{D}, conclui-se que não
+há subdiretórios). Caso contrário, a linha vai se
+parecer com:
+
+@example
+D/@var{name}/@var{filler1}/@var{filler2}/@var{filler3}/@var{filler4}
+@end example
+
+@noindent
+@c <en>where @var{name} is the name of the subdirectory, and
+@c <en>all the @var{filler} fields should be silently ignored,
+@c <en>for future expansion. Programs which modify
+@c <en>@code{Entries} files should preserve these fields.
+onde @var{name} é o nome do subdiretório, e todos os
+campos @var{filler} devem ser ignorados em silêncio,
+para expansões futuras. Programas que modificam
+arquivos @code{Entries} devem manter estes campos.
+
+@c <en>The lines in the @file{Entries} file can be in any order.
+As linhas no arquivo @file{Entries} podem estar em
+qualquer ordem.
+
+@c <en>@cindex Entries.Log file, in CVS directory
+@cindex O arquivo Entries.Log, no diretório CVS
+@c <en>@cindex CVS/Entries.Log file
+@cindex O arquivo CVS/Entries.Log
+@c <en>@item Entries.Log
+@item Entries.Log
+@c <en>This file does not record any information beyond that
+@c <en>in @file{Entries}, but it does provide a way to update
+@c <en>the information without having to rewrite the entire
+@c <en>@file{Entries} file, including the ability to preserve
+@c <en>the information even if the program writing
+@c <en>@file{Entries} and @file{Entries.Log} abruptly aborts.
+@c <en>Programs which are reading the @file{Entries} file
+@c <en>should also check for @file{Entries.Log}. If the latter
+@c <en>exists, they should read @file{Entries} and then apply
+@c <en>the changes mentioned in @file{Entries.Log}. After
+@c <en>applying the changes, the recommended practice is to
+@c <en>rewrite @file{Entries} and then delete @file{Entries.Log}.
+@c <en>The format of a line in @file{Entries.Log} is a single
+@c <en>character command followed by a space followed by a
+@c <en>line in the format specified for a line in
+@c <en>@file{Entries}. The single character command is
+@c <en>@samp{A} to indicate that the entry is being added,
+@c <en>@samp{R} to indicate that the entry is being removed,
+@c <en>or any other character to indicate that the entire line
+@c <en>in @file{Entries.Log} should be silently ignored (for
+@c <en>future expansion). If the second character of the line
+@c <en>in @file{Entries.Log} is not a space, then it was
+@c <en>written by an older version of @sc{cvs} (not documented
+@c <en>here).
+Este arquivo não registra qualquer informação a mais
+que no @file{Entries}, mas fornece um jeito de
+atualizar a informação sem ter que reescrever todo o
+arquivo @file{Entries}, incluindo a habilidade de
+preservar a informação mesmo se o programa que estava
+escrevendo o @file{Entries} e o @file{Entries.Log}
+aborta abruptamente. Programas que estão lendo o
+arquivo @file{Entries} devem também verificar pelo
+@file{Entries.Log}. Se este último existe, eles devem
+ler o @file{Entries} e então aplicar as mudanças
+mencionadas no @file{Entries.Log}. Depois de aplicar
+as mudanças, a prática recomendada é reescrever o
+@file{Entries} e depois apagar o @file{Entries.Log}. O
+formato de uma linha no @file{Entries.Log} é um comando
+de um caractere seguido de um espaço seguido por uma
+linha no formato especificado para uma linha no
+@file{Entries}. O caractere de comando é
+@samp{A} para indicar que a entrada está sendo
+adicionada, @samp{R} para indicar que a entrada está
+sendo removida, ou qualquer outro caractere para
+indicar que a linha inteira em @file{Entries.Log} deve
+ser ignorada em silêncio (para expansão futura). Se o
+segundo caractere da linha em @file{Entries.Log} não é
+um espaço, então foi escrito por uma versão antiga do
+@sc{cvs} (não documentada aqui).
+
+@c <en>Programs which are writing rather than reading can
+@c <en>safely ignore @file{Entries.Log} if they so choose.
+Programas que estão escrevendo ao invés de lendo podem
+seguramente ignorar @file{Entries.Log} se assim escolherem.
+
+@c <en>@cindex Entries.Backup file, in CVS directory
+@cindex O arquivo Entries.Backup, no diretório CVS
+@c <en>@cindex CVS/Entries.Backup file
+@cindex O arquivo CVS/Entries.Backup
+@c <en>@item Entries.Backup
+@item Entries.Backup
+@c <en>This is a temporary file. Recommended usage is to
+@c <en>write a new entries file to @file{Entries.Backup}, and
+@c <en>then to rename it (atomically, where possible) to @file{Entries}.
+Este é um arquivo temporário. O uso recomendado é
+escrever um novo arquivo entries para o
+@file{Entries.Backup}, e então renomeá-lo
+(atomicamente, quando possível) para @file{Entries}.
+
+@c <en>@cindex Entries.Static file, in CVS directory
+@cindex O arquivo Entries.Static, no diretório CVS
+@c <en>@cindex CVS/Entries.Static file
+@cindex O arquivo CVS/Entries.Static
+@c <en>@item Entries.Static
+@item Entries.Static
+@c <en>The only relevant thing about this file is whether it
+@c <en>exists or not. If it exists, then it means that only
+@c <en>part of a directory was gotten and @sc{cvs} will
+@c <en>not create additional files in that directory. To
+@c <en>clear it, use the @code{update} command with the
+@c <en>@samp{-d} option, which will get the additional files
+@c <en>and remove @file{Entries.Static}.
+A única coisa relevante sobre este arquivo é se ele
+existe ou não. Se ele existe, então quer dizer que
+apenas parte de um diretório foi pego e o @sc{cvs} não
+vai criar arquivos adicionais neste diretório. Para
+limpar isto, use o comando @code{update} com a opção
+@samp{-d}, a qual vai pegar os arquivos adicionais e
+remover @file{Entries.Static}.
+@c FIXME: This needs to be better documented, in places
+@c other than Working Directory Storage.
+@c FIXCVS: The fact that this setting exists needs to
+@c be more visible to the user. For example "cvs
+@c status foo", in the case where the file would be
+@c gotten except for Entries.Static, might say
+@c something to distinguish this from other cases.
+@c One thing that periodically gets suggested is to
+@c have "cvs update" print something when it skips
+@c files due to Entries.Static, but IMHO that kind of
+@c noise pretty much makes the Entries.Static feature
+@c useless.
+
+@c <en>@cindex Tag file, in CVS directory
+@cindex O arquivo Tag, no diretório CVS
+@c <en>@cindex CVS/Tag file
+@cindex O arquivo CVS/Tag
+@c <en>@cindex Sticky tags/dates, per-directory
+@cindex Por diretório, etiquetas/datas adesivas
+@c <en>@cindex Per-directory sticky tags/dates
+@cindex Etiquetas/datas adesivas por diretório
+@c <en>@item Tag
+@item Tag (Etiqueta)
+@c <en>This file contains per-directory sticky tags or dates.
+@c <en>The first character is @samp{T} for a branch tag,
+@c <en>@samp{N} for a non-branch tag, or @samp{D} for a date,
+@c <en>or another character to mean the file should be
+@c <en>silently ignored, for future expansion. This character
+@c <en>is followed by the tag or date. Note that
+@c <en>per-directory sticky tags or dates are used for things
+@c <en>like applying to files which are newly added; they
+@c <en>might not be the same as the sticky tags or dates on
+@c <en>individual files. For general information on sticky
+@c <en>tags and dates, see @ref{Sticky tags}.
+Este arquivo contém as etiquetas (tags) ou datas
+adesivas por diretório. O primeiro caractere é @samp{T}
+para uma etiqueta de ramo, @samp{N} para uma etiqueta
+que não é de ramo, ou @samp{D} para uma data, ou outro
+caractere que quer dizer que o arquivo deve ser
+ignorado em silêncio, para expansão futura. Este
+caractere é seguido de uma etiqueta ou data. Observe
+que etiquetas ou data adesivas por diretório são usadas
+para coisas como ???applying to??? arquivos que
+acabaram de ser adicionados; ???they (the tags or the files)???
+podem não ser os mesmos assim como as etiquetas
+adesivas ou datas em arquivos isolados. Para
+informações gerais sobre etiquetas adesivas ou datas,
+veja em @ref{Etiquetas adesivas}.
+@c FIXME: This needs to be much better documented,
+@c preferably not in the context of "working directory
+@c storage".
+@c FIXME: The Sticky tags node needs to discuss, or xref to
+@c someplace which discusses, per-directory sticky
+@c tags and the distinction with per-file sticky tags.
+
+@c <en>@cindex Notify file, in CVS directory
+@cindex O arquivo Notify, no diretório CVS
+@c <en>@cindex CVS/Notify file
+@cindex O arquivo CVS/Notify
+@c <en>@item Notify
+@item Notify
+@c <en>This file stores notifications (for example, for
+@c <en>@code{edit} or @code{unedit}) which have not yet been
+@c <en>sent to the server. Its format is not yet documented
+@c <en>here.
+Este arquivo guarda notificações (por exemplo, sobre
+@code{edit} ou @code{unedit}) que ainda não foram
+mandadas para o servidor. Seu formato ainda não está
+documentado aqui.
+
+@c <en>@cindex Notify.tmp file, in CVS directory
+@cindex O arquivo Notify.tmp, no diretório CVS
+@c <en>@cindex CVS/Notify.tmp file
+@cindex O arquivo CVS/Notify.tmp
+@c <en>@item Notify.tmp
+@item Notify.tmp
+@c <en>This file is to @file{Notify} as @file{Entries.Backup}
+@c <en>is to @file{Entries}. That is, to write @file{Notify},
+@c <en>first write the new contents to @file{Notify.tmp} and
+@c <en>then (atomically where possible), rename it to
+@c <en>@file{Notify}.
+Este arquivo está para @file{Notify} como o @file{Entries.Backup}
+está para @file{Entries}. Ou seja, para escrever em
+@file{Notify}, escreva o novo conteúdo primeiro em
+@file{Notify.tmp} e então (atomicamente, quando
+possível), renomeie-o para @file{Notify}.
+
+@c <en>@cindex Base directory, in CVS directory
+@cindex Diretório Base, no diretório CVS
+@c <en>@cindex CVS/Base directory
+@cindex Diretório CVS/Base
+@c <en>@item Base
+@item Base
+@c <en>If watches are in use, then an @code{edit} command
+@c <en>stores the original copy of the file in the @file{Base}
+@c <en>directory. This allows the @code{unedit} command to
+@c <en>operate even if it is unable to communicate with the
+@c <en>server.
+Se os ???watches??? estão em uso, então um comando
+@code{edit} guarda a cópia original do arquivo no
+diretório @file{Base}. Isto permite que o comando
+@code{unedit} opere mesmo se estiver sem comunicação
+com o servidor.
+
+@c <en>@cindex Baserev file, in CVS directory
+@cindex O arquivo Baserev, no diretório CVS
+@c <en>@cindex CVS/Baserev file
+@cindex O arquivo CVS/Baserev
+@c <en>@item Baserev
+@item Baserev
+@c <en>The file lists the revision for each of the files in
+@c <en>the @file{Base} directory. The format is:
+O arquivo lista a revisão de cada arquivo no diretório
+@file{Base}. O formato é:
+
+@example
+B@var{name}/@var{rev}/@var{expansion}
+@end example
+
+@noindent
+@c <en>where @var{expansion} should be ignored, to allow for
+@c <en>future expansion.
+Onde @var{expansion} deve ser ignorada para permitir
+expansão futura.
+
+@c <en>@cindex Baserev.tmp file, in CVS directory
+@cindex O arquivo Baserev.tmp, no diretório CVS
+@c <en>@cindex CVS/Baserev.tmp file
+@cindex O arquivo CVS/Baserev.tmp
+@c <en>@item Baserev.tmp
+@item Baserev.tmp
+@c <en>This file is to @file{Baserev} as @file{Entries.Backup}
+@c <en>is to @file{Entries}. That is, to write @file{Baserev},
+@c <en>first write the new contents to @file{Baserev.tmp} and
+@c <en>then (atomically where possible), rename it to
+@c <en>@file{Baserev}.
+Este arquivo está para @file{Baserev} assim como
+@file{Entries.Backup} está para @file{Entries}. Ou
+seja, para escrever em @file{Baserev}, escreva o novo
+conteúdo primeiro em @file{Baserev.tmp} e então
+(atomicamente, quando possível), renomei-o para @file{Baserev}.
+
+@c <en>@cindex Template file, in CVS directory
+@cindex O arquivo Template, no diretório CVS
+@c <en>@cindex CVS/Template file
+@cindex O arquivo CVS/Template
+@c <en>@item Template
+@item Template
+@c <en>This file contains the template specified by the
+@c <en>@file{rcsinfo} file (@pxref{rcsinfo}). It is only used
+@c <en>by the client; the non-client/server @sc{cvs} consults
+@c <en>@file{rcsinfo} directly.
+Este arquivo contém o modelo (template) especificado
+pelo arquivo @file{rcsinfo} (@pxref{rcsinfo}). Ele é
+usado apenas pelo cliente; o ???non-client/server???
+@sc{cvs} consulta o @file{rcsinfo} diretamente.
+@end table
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Intro administrative files
+@node Intro aos arquivos administrativos
+@c <en>@section The administrative files
+@section Os arquivos administrativos
+@c <en>@cindex Administrative files (intro)
+@cindex Arquivos administrativos (intro)
+@c <en>@cindex Modules file
+@cindex O arquivo Modules
+@c <en>@cindex CVSROOT, module name
+@cindex CVSROOT, nome de módulo
+@c <en>@cindex Defining modules (intro)
+@cindex Definindo módulos (intro)
+
+@c FIXME: this node should be reorganized into "general
+@c information about admin files" and put the "editing
+@c admin files" stuff up front rather than jumping into
+@c the details of modules right away. Then the
+@c Administrative files node can go away, the information
+@c on each admin file distributed to a place appropriate
+@c to its function, and this node can contain a table
+@c listing each file and a @ref to its detailed description.
+
+@c <en>The directory @file{$CVSROOT/CVSROOT} contains some @dfn{administrative
+@c <en>files}. @xref{Administrative files}, for a complete description.
+@c <en>You can use @sc{cvs} without any of these files, but
+@c <en>some commands work better when at least the
+@c <en>@file{modules} file is properly set up.
+O diretório @file{$CVSROOT/CVSROOT} contém alguns
+@dfn{Arquivos administrativos}. @xref{Arquivos
+administrativos}, para uma descrição completa. Você
+pode usar o @sc{cvs} sem nenhum destes arquivos, mas
+alguns comandos funcionam melhor quando pelo menos o
+arquivo @file{modules} está bem configurado.
+
+@c <en>The most important of these files is the @file{modules}
+@c <en>file. It defines all modules in the repository. This
+@c <en>is a sample @file{modules} file.
+O mais importante destes arquivos é o arquivo
+@file{modules}. Ele define todos os módulos no
+repositório. Este é um exemplo de um arquivo @file{modules}.
+
+@c FIXME: The CVSROOT line is a goofy example now that
+@c mkmodules doesn't exist.
+@example
+CVSROOT CVSROOT
+modules CVSROOT modules
+cvs gnu/cvs
+rcs gnu/rcs
+diff gnu/diff
+tc yoyodyne/tc
+@end example
+
+@c <en>The @file{modules} file is line oriented. In its
+@c <en>simplest form each line contains the name of the
+@c <en>module, whitespace, and the directory where the module
+@c <en>resides. The directory is a path relative to
+@c <en>@code{$CVSROOT}. The last four lines in the example
+@c <en>above are examples of such lines.
+O arquivo @file{modules} é baseado em linha. Na sua
+forma simples, cada linha contém o nome do módulo, um
+espaço e o diretório onde o módulo está. O diretório é
+um caminho relativo em @code{$CVSROOT}. As últimas
+quatro linhas no exemplo acima são exemplos de tais linhas.
+
+@c FIXME: might want to introduce the concept of options in modules file
+@c (the old example which was here, -i mkmodules, is obsolete).
+
+@c <en>The line that defines the module called @samp{modules}
+@c <en>uses features that are not explained here.
+@c <en>@xref{modules}, for a full explanation of all the
+@c <en>available features.
+A linha que define o módulo chamado @samp{modules} usa
+funcionalidades que não são explicadas
+aqui. @xref{modules}, para uma explicação completa
+destas funcionalidades.
+
+@c FIXME: subsection without node is bogus
+@c <en>@subsection Editing administrative files
+@subsection Editando arquivos administrativos
+@c <en>@cindex Editing administrative files
+@cindex Editando arquivos administrativos
+@c <en>@cindex Administrative files, editing them
+@cindex Arquivos administrativos, editando
+
+@c <en>You edit the administrative files in the same way that you would edit
+@c <en>any other module. Use @samp{cvs checkout CVSROOT} to get a working
+@c <en>copy, edit it, and commit your changes in the normal way.
+Você edita os arquivos administrativos da mesma forma
+que você deve deve editar qualquer outro módulo. Use
+@samp{cvs checkout CVSROOT} para obter uma cópia de
+trabalho, edite-a e ???commit??? suas mudanças normalmente.
+
+@c <en>It is possible to commit an erroneous administrative
+@c <en>file. You can often fix the error and check in a new
+@c <en>revision, but sometimes a particularly bad error in the
+@c <en>administrative file makes it impossible to commit new
+@c <en>revisions.
+É possível ???commit??? um arquivo administrativo
+corrompido. Em geral, você pode consertar o erro e
+devolvê-lo numa nova revisão, mas às vezes um erro
+particularmente ruim nos arquivos administrativos torna
+impossível ???commit??? novas revisões.
+@c @xref{Bad administrative files} for a hint
+@c about how to solve such situations.
+@c -- administrative file checking--
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Multiple repositories
+@node Repositórios múltiplos
+@c <en>@section Multiple repositories
+@section Repositórios múltiplos
+@c <en>@cindex Multiple repositories
+@cindex Repositórios múltiplos
+@c <en>@cindex Repositories, multiple
+@cindex Repositórios, múltiplos
+@c <en>@cindex Many repositories
+@cindex Muitos repositórios
+@c <en>@cindex Parallel repositories
+@cindex Repositórios paralelos
+@c <en>@cindex Disjoint repositories
+@cindex Repositórios Disjuntos
+@c <en>@cindex CVSROOT, multiple repositories
+@cindex CVSROOT, Repositórios Múltiplos
+
+@c <en>In some situations it is a good idea to have more than
+@c <en>one repository, for instance if you have two
+@c <en>development groups that work on separate projects
+@c <en>without sharing any code. All you have to do to have
+@c <en>several repositories is to specify the appropriate
+@c <en>repository, using the @code{CVSROOT} environment
+@c <en>variable, the @samp{-d} option to @sc{cvs}, or (once
+@c <en>you have checked out a working directory) by simply
+@c <en>allowing @sc{cvs} to use the repository that was used
+@c <en>to check out the working directory
+@c <en>(@pxref{Specifying a repository}).
+Em algumas situações é uma boa idéia ter mais de um
+repositório. Por exemplo, se você tem duas equipes de
+desenvolvimento que trabalham em projetos separados sem
+compartilhar nenhum código. Tudo que você tem que
+fazer para ter vários repositórios é especificar o
+repositório apropriado, usando a variável de ambiente
+@code{CVSROOT} ou a opção @samp{-d} com o @sc{cvs}, ou
+(depois de ter pego um diretório de trabalho)
+simplesmente deixando o @sc{cvs} usar o repositório de
+onde veio o diretório de trabalho (@pxref{Especificando
+um repositório}).
+
+@c <en>The big advantage of having multiple repositories is
+@c <en>that they can reside on different servers. With @sc{cvs}
+@c <en>version 1.10, a single command cannot recurse into
+@c <en>directories from different repositories. With development
+@c <en>versions of @sc{cvs}, you can check out code from multiple
+@c <en>servers into your working directory. @sc{cvs} will
+@c <en>recurse and handle all the details of making
+@c <en>connections to as many server machines as necessary to
+@c <en>perform the requested command. Here is an example of
+@c <en>how to set up a working directory:
+A grande vantagem de ter múltiplos repositórios é que
+eles podem residir em diferentes servidores. Com o
+@sc{cvs} versão 1.10, um comando não pode fazer
+recursão ???into??? diretórios ???from??? repositórios
+diferentes. Com ???development versions??? do
+@sc{cvs}, você pode obter código de múltiplos
+servidores para o seu diretório de trabalho. @sc{cvs}
+vai fazer a recursão e cuidar dos detalhes para fazer
+conexão em quantas máquinas quantas forem necessárias
+para executar o comando pedido. Aqui está um exemplo
+de como preparar um diretório de trabalho:
+
+@example
+cvs -d server1:/cvs co dir1
+cd dir1
+cvs -d server2:/root co sdir
+cvs update
+@end example
+
+@c <en>The @code{cvs co} commands set up the working
+@c <en>directory, and then the @code{cvs update} command will
+@c <en>contact server2, to update the dir1/sdir subdirectory,
+@c <en>and server1, to update everything else.
+Os comandos @code{cvs co} acima preparam o diretório de
+trabalho. Depois de feitos, o comando @code{cvs update}
+vai contactar o server2, para atualizar o subdiretório
+dir1/sdir e o server1, para atualizar o resto.
+
+@c FIXME: Does the FAQ have more about this? I have a
+@c dim recollection, but I'm too lazy to check right now.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Creating a repository
+@node Criando um repositório
+@c <en>@section Creating a repository
+@section Criando um repositório
+
+@c <en>@cindex Repository, setting up
+@cindex Repositório, preparando
+@c <en>@cindex Creating a repository
+@cindex Criando um repositório
+@c <en>@cindex Setting up a repository
+@cindex Preparando um repositório
+
+@c <en>To set up a @sc{cvs} repository, first choose the
+@c <en>machine and disk on which you want to store the
+@c <en>revision history of the source files. CPU and memory
+@c <en>requirements are modest, so most machines should be
+@c <en>adequate. For details see @ref{Server requirements}.
+Para preparar um repositório do @sc{cvs}, escolha
+primeiramente a máquina e o disco onde você deseja
+armazenar o histórico de revisões dos fontes.
+requisitos de CPU e memória são modestos. Portanto,
+muitas máquinas serão adequadas. Para detalhes, veja
+em @ref{Requisitos do servidor}.
+@c Possible that we should be providing a quick rule of
+@c thumb, like the 32M memory for the server. That
+@c might increase the number of people who are happy
+@c with the answer, without following the xref.
+
+@c <en>To estimate disk space
+@c <en>requirements, if you are importing RCS files from
+@c <en>another system, the size of those files is the
+@c <en>approximate initial size of your repository, or if you
+@c <en>are starting without any version history, a rule of
+@c <en>thumb is to allow for the server approximately three
+@c <en>times the size of the code to be under @sc{cvs} for the
+@c <en>repository (you will eventually outgrow this, but not
+@c <en>for a while). On the machines on which the developers
+@c <en>will be working, you'll want disk space for
+@c <en>approximately one working directory for each developer
+@c <en>(either the entire tree or a portion of it, depending
+@c <en>on what each developer uses).
+Para estimar os requisitos de espaço em disco, se você
+estiver importando arquivos RCS de outro sistema, o
+tamanho destes arquivos vai ser o tamanho inicial do
+seu repositório, ou se você está começando sem nenhum
+histórico de versões, uma boa regra é reservar para o
+repositório do servidor três vezes o tamanho do código
+que estará sob os cuidados do @sc{cvs} (Isto vai
+eventualmente estourar, mas não por enquanto).
+Nas máquinas dos desenvolvedores, você vai pracisar de
+aproximadamente o espaço em disco de um diretório de
+trabalho para cada desenvolvedor (ou a árvore inteira
+ou uma porção dela, dependendo do que o desenvolvedor
+usa).
+
+@c <en>The repository should be accessible
+@c <en>(directly or via a networked file system) from all
+@c <en>machines which want to use @sc{cvs} in server or local
+@c <en>mode; the client machines need not have any access to
+@c <en>it other than via the @sc{cvs} protocol. It is not
+@c <en>possible to use @sc{cvs} to read from a repository
+@c <en>which one only has read access to; @sc{cvs} needs to be
+@c <en>able to create lock files (@pxref{Concurrency}).
+O repositório deve estar acessível (diretamente ou
+através de um sistema de arquivos de rede) ???from???
+@c from-translator-to-reviewer: "from" or "to"?
+todas as máquinas que queiram usar o @sc{cvs} em modo
+servidor ou localmente; a máquina cliente só precisa
+ter acesso a ele através do protocolo do @sc{cvs}. Não
+é possível usar o @sc{cvs} para ler de um repositório
+onde só se tem permissão de leitura, pois o @sc{cvs}
+tem que ser capaz de criar arquivos de trava
+(@pxref{Concorrência}).
+
+@c <en>@cindex init (subcommand)
+@cindex init (subcommand)
+@c <en>To create a repository, run the @code{cvs init}
+@c <en>command. It will set up an empty repository in the
+@c <en>@sc{cvs} root specified in the usual way
+@c <en>(@pxref{Repository}). For example,
+Para criar um repositório, rode o comando @code{cvs
+init}. Ele vai criar um repositório vazio no raiz do
+@sc{cvs} especificado da forma usual
+(@pxref{Repositório}). For example,
+
+@example
+cvs -d /usr/local/cvsroot init
+@end example
+
+@c <en>@code{cvs init} is careful to never overwrite any
+@c <en>existing files in the repository, so no harm is done if
+@c <en>you run @code{cvs init} on an already set-up
+@c <en>repository.
+O @code{cvs init} tem o cuidado de nunca sobreescrever
+nenhum arquivo no repositório, logo, não há perigo em
+rodar o @code{cvs init} num repositório já criado.
+
+@c <en>@code{cvs init} will enable history logging; if you
+@c <en>don't want that, remove the history file after running
+@c <en>@code{cvs init}. @xref{history file}.
+@code{cvs init} pode guardar um registro histórico
+(history log); se
+você não quer guardar isto, remova o arquivo history
+depois de rodar o @code{cvs init}. @xref{arquivo
+history (histórico)}.
+
+@c <en>@node Backing up
+@node Fazendo backup
+@c <en>@section Backing up a repository
+@section Fazendo backup de um repositório
+@c <en>@cindex Repository, backing up
+@cindex Repositório, fazendo backup
+@c <en>@cindex Backing up, repository
+@cindex Fazendo backup, repositório
+
+@c <en>There is nothing particularly magical about the files
+@c <en>in the repository; for the most part it is possible to
+@c <en>back them up just like any other files. However, there
+@c <en>are a few issues to consider.
+Não há nada particularmente mágico sobre os arquivos no
+repositório; Para a maior parte deles é possível fazer
+backup da mesma forma que com qualquer
+arquivo. Entretanto, existem alguns fatos a considerar.
+
+@c <en>@cindex Locks, cvs, and backups
+@cindex Travas, cvs e backups
+@c <en>@cindex #cvs.rfl, and backups
+@cindex #cvs.rfl, and backups
+@c <en>The first is that to be paranoid, one should either not
+@c <en>use @sc{cvs} during the backup, or have the backup
+@c <en>program lock @sc{cvs} while doing the backup. To not
+@c <en>use @sc{cvs}, you might forbid logins to machines which
+@c <en>can access the repository, turn off your @sc{cvs}
+@c <en>server, or similar mechanisms. The details would
+@c <en>depend on your operating system and how you have
+@c <en>@sc{cvs} set up. To lock @sc{cvs}, you would create
+@c <en>@file{#cvs.rfl} locks in each repository directory.
+@c <en>See @ref{Concurrency}, for more on @sc{cvs} locks.
+@c <en>Having said all this, if you just back up without any
+@c <en>of these precautions, the results are unlikely to be
+@c <en>particularly dire. Restoring from backup, the
+@c <en>repository might be in an inconsistent state, but this
+@c <en>would not be particularly hard to fix manually.
+Primeiramente, para ser paranóico, alguem não deve nem
+sequer usar o @sc{cvs} durante o backup, ou fazer o
+programa de backup travar o @sc{cvs} enquanto estiver
+executando. Para o @sc{cvs} não ser usado, você deve
+proibir logins para máquinas que possam acessar o
+repositório ou desligar o seu servidor @sc{cvs} or
+algum mecanismo similar. Os detalhes vão depender do
+seu sistema operacional e de como você configurou o seu
+@sc{cvs}. Para travar o @sc{cvs}, você deve criar
+travas @file{#cvs.rfl} em cada diretório do
+repositório. Veja em @ref{Concorrência}, para saber
+mais sobre travas no @sc{cvs}. ???Having said all
+this???,
+@c from-translator-to-reviewer can I substitute for
+@c "nevertheless"?
+se você apenas fizer o backup sem nenhuma
+destas precauções, os resultados dificilmente vão ser
+catastróficos. Ao recuperar do backup, o repositório
+pode estar em um estado inconsistente, mas isto não
+deve ser muito difícil de consertar manualmente.
+
+@c <en>When you restore a repository from backup, assuming
+@c <en>that changes in the repository were made after the time
+@c <en>of the backup, working directories which were not
+@c <en>affected by the failure may refer to revisions which no
+@c <en>longer exist in the repository. Trying to run @sc{cvs}
+@c <en>in such directories will typically produce an error
+@c <en>message. One way to get those changes back into the
+@c <en>repository is as follows:
+Quando você recupera um repositório de um backup,
+supondo que mudanças no repositório foram feitas depois
+da criação do backup, diretório de trabalho que não
+foram afetados pela falha podem se referenciar a
+revisões que não mais existam no repositório. Tentar
+rodar o @sc{cvs} em tais diretórios vai gerar uma
+mensagem de erro. uma forma de desfazer estas mudanças
+no repositório é dada a seguir:
+
+@itemize @bullet
+@item
+@c <en>Get a new working directory.
+Gere um novo diretório de trabalho.
+
+@item
+@c <en>Copy the files from the working directory from before
+@c <en>the failure over to the new working directory (do not
+@c <en>copy the contents of the @file{CVS} directories, of
+@c <en>course).
+Copie os arquivos do diretório de trabalho de
+antes da falha para o novo diretório de trabalho (não
+copie o conteúdo dos diretórios @file{CVS}, obviamente).
+
+@item
+@c <en>Working in the new working directory, use commands such
+@c <en>as @code{cvs update} and @code{cvs diff} to figure out
+@c <en>what has changed, and then when you are ready, commit
+@c <en>the changes into the repository.
+Mexa no novo diretório de trabalho, usando comandos
+como @code{cvs update} e @code{cvs diff} para descobrir
+o que mudou, e quando terminar, faça ???commit??? nas
+mudanças para o repositório.
+@end itemize
+
+@c <en>@node Moving a repository
+@node Movendo um repositório
+@c <en>@section Moving a repository
+@section Movendo um repositório
+@c <en>@cindex Repository, moving
+@cindex Repositório, movendo
+@c <en>@cindex Moving a repository
+@cindex Movendo um repositório
+@c <en>@cindex Copying a repository
+@cindex Copiando um repositório
+
+@c <en>Just as backing up the files in the repository is
+@c <en>pretty much like backing up any other files, if you
+@c <en>need to move a repository from one place to another it
+@c <en>is also pretty much like just moving any other
+@c <en>collection of files.
+Assim como fazer backup dos arquivos no repositório é
+muito parecido com fazer backup de quaisquer outros
+arquivos, se você precisar mover um repositório de um
+lugar para outro, é muito parecido com simplesmente
+mover uma coleção de arquivos.
+
+@c <en>The main thing to consider is that working directories
+@c <en>point to the repository. The simplest way to deal with
+@c <en>a moved repository is to just get a fresh working
+@c <en>directory after the move. Of course, you'll want to
+@c <en>make sure that the old working directory had been
+@c <en>checked in before the move, or you figured out some
+@c <en>other way to make sure that you don't lose any
+@c <en>changes. If you really do want to reuse the existing
+@c <en>working directory, it should be possible with manual
+@c <en>surgery on the @file{CVS/Repository} files. You can
+@c <en>see @ref{Working directory storage}, for information on
+@c <en>the @file{CVS/Repository} and @file{CVS/Root} files, but
+@c <en>unless you are sure you want to bother, it probably
+@c <en>isn't worth it.
+O mais importante a se considerar é que diretórios de
+trabalho apontam para o repositório. A forma mais
+simples de lidar com um repositório movido é
+simplesmente pegar um diretório de trabalho novo logo
+após da mudança. É claro que você vai querer se
+certificar que o diretório de trabalho antigo foi
+devolvido antes da mudança, ou usar de qualquer outro
+artifício para se certificar de que não perderá nenhuma
+mudança. Se você realmente quer reusar o antigo diretório de
+trabalho, é possível, desde que você faça uma operação
+manual nos arquivos @file{CVS/Repository}. Você pode
+ver em @ref{Armazenamento do Diretório de trabalho},
+para informações sobre os arquivos
+@file{CVS/Repository} e @file{CVS/Root}, mas só se você
+quiser ter aborrecimentos, caso contrário esta opção
+não é boa.
+@c FIXME: Surgery on CVS/Repository should be avoided
+@c by making RELATIVE_REPOS the default.
+@c FIXME-maybe: might want some documented way to
+@c change the CVS/Root files in some particular tree.
+@c But then again, I don't know, maybe just having
+@c people do this in perl/shell/&c isn't so bad...
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Remote repositories
+@node Repositórios remotos
+@c <en>@section Remote repositories
+@section Repositórios remotos
+@c <en>@cindex Repositories, remote
+@cindex Repositórios, remotos
+@c <en>@cindex Remote repositories
+@cindex Repositórios remotos
+@c <en>@cindex Client/Server Operation
+@cindex Operação cliente/Servidor
+@c <en>@cindex Server, CVS
+@cindex Servidor, CVS
+@c <en>@cindex Remote repositories, port specification
+@cindex Repositórios remotos, especificação de porta
+@c <en>@cindex Repositories, remote, port specification
+@cindex Repositórios, remotos, especificação de porta
+@c <en>@cindex Client/Server Operation, port specification
+@cindex Operação cliente/Servidor, especificação de porta
+@c <en>@cindex pserver (client/server connection method), port specification
+@cindex pserver (método de conexão cliente/servidor), especificação de porta
+@c <en>@cindex kserver (client/server connection method), port specification
+@cindex kserver (método de conexão cliente/servidor), especificação de porta
+@c <en>@cindex gserver (client/server connection method), port specification
+@cindex gserver (método de conexão cliente/servidor), especificação de porta
+@c <en>@cindex port, specifying for remote repositories
+@cindex porta, especificação para repositórios remotos
+
+@c <en> Your working copy of the sources can be on a
+@c <en>different machine than the repository. Using @sc{cvs}
+@c <en>in this manner is known as @dfn{client/server}
+@c <en>operation. You run @sc{cvs} on a machine which can
+@c <en>mount your working directory, known as the
+@c <en>@dfn{client}, and tell it to communicate to a machine
+@c <en>which can mount the repository, known as the
+@c <en>@dfn{server}. Generally, using a remote
+@c <en>repository is just like using a local one, except that
+@c <en>the format of the repository name is:
+Sua cópia de trabalho dos fontes pode estar em
+uma máquina diferente da do repositório. Esta forma de
+usar o @sc{cvs} é chamada operação
+@dfn{client/server}. Você roda o @sc{cvs} numa máquina
+que possa montar seu diretório de trabalho, conhecida
+como o @dfn{cliente}, e diz a ela para se comunicar com
+uma máquina que pode montar o repositório, chamada de
+@dfn{servidor}. No geral, usar um repositório remoto
+é a mesma coisa que usar um local, exceto que o formato
+do nome do repositório é:
+
+@example
+[:@var{method}:][[@var{user}][:@var{password}]@@]@var{hostname}[:[@var{port}]]/path/to/repository
+@end example
+
+@c <en>Specifying a password in the repository name is not recommended during
+@c <en>checkout, since this will cause @sc{cvs} to store a cleartext copy of the
+@c <en>password in each created directory. @code{cvs login} first instead
+@c <en>(@pxref{Password authentication client}).
+Colocar a senha no nome do repositório durante
+operações de checkout não é recomendado, já que isto
+vai fazer com que o @sc{cvs} guarde uma cópia da senha
+em texto em cada diretório criado. Dê um @code{cvs
+login} primeiro ao invés disto
+(@pxref{Cliente de autenticação por senha}).
+
+@c <en>The details of exactly what needs to be set up depend
+@c <en>on how you are connecting to the server.
+Os detalhes de exatamente o que precisa ser preparado
+depende de como você está conectado ao seu servidor.
+
+@c <en>If @var{method} is not specified, and the repository
+@c <en>name contains @samp{:}, then the default is @code{ext}
+@c <en>or @code{server}, depending on your platform; both are
+@c <en>described in @ref{Connecting via rsh}.
+Se @var{method} não está especificado, e se o nome do
+repositório contém @samp{:}, então o padrão é
+@code{ext} ou @code{server}, dependendo de sua
+plataforma; ambos estão descritos em
+@ref{Se conectando via rsh}.
+@c Should we try to explain which platforms are which?
+@c Platforms like unix and VMS, which only allow
+@c privileged programs to bind to sockets <1024 lose on
+@c :server:
+@c Platforms like Mac and VMS, whose rsh program is
+@c unusable or nonexistent, lose on :ext:
+@c Platforms like OS/2 and NT probably could plausibly
+@c default either way (modulo -b troubles).
+
+@c FIXME: We need to have a better way of explaining
+@c what method to use. This presentation totally
+@c obscures the fact that :ext: and CVS_RSH is the way to
+@c use SSH, for example. Plus it incorrectly implies
+@c that you need an @code{rsh} binary on the client to use
+@c :server:.
+@c Also note that rsh not pserver is the right choice if you want
+@c users to be able to create their own repositories
+@c (because of the --allow-root related issues).
+@menu
+@c <en>* Server requirements:: Memory and other resources for servers
+* Requisitos do servidor:: Memória e outros recursos para servidores
+@c <en>* Connecting via rsh:: Using the @code{rsh} program to connect
+* Se conectando via rsh:: Usando o programa @code{rsh} para se conectar
+@c <en>* Password authenticated:: Direct connections using passwords
+* Autenticação por senha:: Conexões diretas usando senhas
+@c <en>* GSSAPI authenticated:: Direct connections using GSSAPI
+* Autenticação GSSAPI:: Conexões diretas usando GSSAPI
+@c <en>* Kerberos authenticated:: Direct connections with kerberos
+* Autenticação kerberos:: Conexões diretas com kerberos
+@c <en>* Connecting via fork:: Using a forked @code{cvs server} to connect
+* Conectando via fork:: Usando um forked @code{cvs server} para conectar
+@end menu
+
+@c <en>@node Server requirements
+@node Requisitos do servidor
+@c <en>@subsection Server requirements
+@subsection Requisitos do servidor
+
+@c <en>The quick answer to what sort of machine is suitable as
+@c <en>a server is that requirements are modest---a server
+@c <en>with 32M of memory or even less can handle a fairly
+@c <en>large source tree with a fair amount of activity.
+A resposta rápida para que tipo de máquina é adequada
+para um servidor é que os requisitos são modestos---um
+servidor com 32M de memória ou até menos pode manipular
+uma árvore de fontes realmente grande com uma boa
+quantidade de atividade.
+@c Say something about CPU speed too? I'm even less sure
+@c what to say on that subject...
+
+@c <en>The real answer, of course, is more complicated.
+@c <en>Estimating the known areas of large memory consumption
+@c <en>should be sufficient to estimate memory requirements.
+@c <en>There are two such areas documented here; other memory
+@c <en>consumption should be small by comparison (if you find
+@c <en>that is not the case, let us know, as described in
+@c <en>@ref{BUGS}, so we can update this documentation).
+A resposta real, obviamente, é mais complicada. Estimar
+as áreas conhecidas de grande consumo de memória deve
+ser suficiente para estimar os requisitos de
+memória. Existem duas destas tais áreas documentadas
+aqui; Outros consumos de memória devem ser pequenos
+relativamente (se você notar que este não é o caso, nos
+faça saber, como descrito em @ref{Paus}, assim
+poderemos atualizar este documento).
+
+@c <en>The first area of big memory consumption is large
+@c <en>checkouts, when using the @sc{cvs} server. The server
+@c <en>consists of two processes for each client that it is
+@c <en>serving. Memory consumption on the child process
+@c <en>should remain fairly small. Memory consumption on the
+@c <en>parent process, particularly if the network connection
+@c <en>to the client is slow, can be expected to grow to
+@c <en>slightly more than the size of the sources in a single
+@c <en>directory, or two megabytes, whichever is larger.
+A primeira área de grande consumo de memória são os
+grandes checkouts, quando usando o servidor @sc{cvs}.
+O servidor consiste de dois processos para cada cliente
+que está servindo. O consumo de memória no processo
+filho deve permanecer pequeno. O consumo de memória no
+processo pai, perticularmente se a conexão de rede com
+o cliente é pequena, pode crescer para algo um pouco
+maior que o tamanho dos fontes num diretório, ou dois
+megabytes, o que for maior.
+@c "two megabytes" of course is SERVER_HI_WATER. But
+@c we don't mention that here because we are
+@c documenting the default configuration of CVS. If it
+@c is a "standard" thing to change that value, it
+@c should be some kind of run-time configuration.
+@c
+@c See cvsclient.texi for more on the design decision
+@c to not have locks in place while waiting for the
+@c client, which is what results in memory consumption
+@c as high as this.
+
+@c <en>Multiplying the size of each @sc{cvs} server by the
+@c <en>number of servers which you expect to have active at
+@c <en>one time should give an idea of memory requirements for
+@c <en>the server. For the most part, the memory consumed by
+@c <en>the parent process probably can be swap space rather
+@c <en>than physical memory.
+Multiplicando o tamanho de cada servidor @sc{cvs} pelo
+número de servidores que você espera ter ativos em cada
+momento deve dar uma idéia dos requisitos de memória
+para cada servidor. Para a maior parte, a memória
+consumida pelo processo pai pode provavelmente ser
+espaço de troca ao invés de memória física.
+@c Has anyone verified that notion about swap space?
+@c I say it based pretty much on guessing that the
+@c ->text of the struct buffer_data only gets accessed
+@c in a first in, first out fashion, but I haven't
+@c looked very closely.
+
+@c What about disk usage in /tmp on the server? I think that
+@c it can be substantial, but I haven't looked at this
+@c again and tried to figure it out ("cvs import" is
+@c probably the worst case...).
+
+@c <en>The second area of large memory consumption is
+@c <en>@code{diff}, when checking in large files. This is
+@c <en>required even for binary files. The rule of thumb is
+@c <en>to allow about ten times the size of the largest file
+@c <en>you will want to check in, although five times may be
+@c <en>adequate. For example, if you want to check in a file
+@c <en>which is 10 megabytes, you should have 100 megabytes of
+@c <en>memory on the machine doing the checkin (the server
+@c <en>machine for client/server, or the machine running
+@c <en>@sc{cvs} for non-client/server). This can be swap
+@c <en>space rather than physical memory. Because the memory
+@c <en>is only required briefly, there is no particular need
+@c <en>to allow memory for more than one such checkin at a
+@c <en>time.
+A segunda área de grande consumo de memória é o
+@code{diff}, quando trazendo grandes arquivos. Isto é
+preciso mesmo para arquivos binários. A boa prática é
+permitir cerca de dez vezes o tamanho do maior arquivo
+que você vai devolver ao servidor, embora cinco vezes
+seja adequado. Por exemplo, se você quer devolver um
+arquivo de 10 megabytes, você deve ter 100 megabytes of
+memory na máquina fazendo a devolução (o servidor para
+o caso cliente/servidor, ou a máquina rodando o
+@sc{cvs} para não-cliente/servidor). Esta memória pode
+ser espaço de troca ao invés de memória física. Já que
+a memória é requerida apenas brevemente, não existe
+necessidade especial para fornecer memória para mais
+de uma devolução ao mesmo tempo.
+@c The 5-10 times rule of thumb is from Paul Eggert for
+@c GNU diff. I don't think it is in the GNU diff
+@c manual or anyplace like that.
+@c
+@c Probably we could be saying more about
+@c non-client/server CVS.
+@c I would guess for non-client/server CVS in an NFS
+@c environment the biggest issues are the network and
+@c the NFS server.
+
+@c <en>Resource consumption for the client is even more
+@c <en>modest---any machine with enough capacity to run the
+@c <en>operating system in question should have little
+@c <en>trouble.
+O consumo de recursos no cliente é ainda mais
+modesto---qualquer máquina com capacidade suficiente
+para rodar o SO em questão não deve ter muitos
+problemas.
+@c Is that true? I think the client still wants to
+@c (bogusly) store entire files in memory at times.
+
+@c <en>For information on disk space requirements, see
+@c <en>@ref{Creating a repository}.
+Para informações sobre requisitos de espaço em disco,
+veja em @ref{Criando um repositório}.
+
+@c <en>@node Connecting via rsh
+@node Se conectando via rsh
+@c <en>@subsection Connecting with rsh
+@subsection Se conectando via rsh
+
+@c <en>@cindex rsh
+@cindex rsh
+@c <en>@sc{cvs} uses the @samp{rsh} protocol to perform these
+@c <en>operations, so the remote user host needs to have a
+@c <en>@file{.rhosts} file which grants access to the local
+@c <en>user. Note that the program that @sc{cvs} uses for this
+@c <en>purpose may be specified using the @file{--with-rsh}
+@c <en>flag to configure.
+O @sc{cvs} usa o protocolo @samp{rsh} para realizar
+estas operações, logo, a máquina do usuário remoto tem
+que ter um arquivo @file{.rhosts} que dê acesso para o
+usuário local. Observe que o programa que o @sc{cvs}
+usa para este objetivo deve ser especificado usando a
+opção @file{--with-rsh} para configurar.
+
+@c <en>For example, suppose you are the user @samp{mozart} on
+@c <en>the local machine @samp{toe.example.com}, and the
+@c <en>server machine is @samp{faun.example.org}. On
+@c <en>faun, put the following line into the file
+@c <en>@file{.rhosts} in @samp{bach}'s home directory:
+Por exemplo, suponha que você é o usuário @samp{mozart}
+na máquina local @samp{toe.example.com}, e a máquina
+servidora é @samp{faun.example.org}. Em faun, ponha a
+seguinte linha no arquivo @file{.rhosts} no diretório
+pessoal de @samp{bach}:
+
+@example
+toe.example.com mozart
+@end example
+
+@noindent
+@c <en>Then test that @samp{rsh} is working with
+E faça o teste para ver que o @samp{rsh} está
+funcionando com
+
+@example
+rsh -l bach faun.example.org 'echo $PATH'
+@end example
+
+@c <en>@cindex CVS_SERVER, environment variable
+@cindex CVS_SERVER, variável de ambiente
+@c <en>Next you have to make sure that @code{rsh} will be able
+@c <en>to find the server. Make sure that the path which
+@c <en>@code{rsh} printed in the above example includes the
+@c <en>directory containing a program named @code{cvs} which
+@c <en>is the server. You need to set the path in
+@c <en>@file{.bashrc}, @file{.cshrc}, etc., not @file{.login}
+@c <en>or @file{.profile}. Alternately, you can set the
+@c <en>environment variable @code{CVS_SERVER} on the client
+@c <en>machine to the filename of the server you want to use,
+@c <en>for example @file{/usr/local/bin/cvs-1.6}.
+A seguir você vai ter que se certificar que o
+@code{rsh} vai ser capaz de acessar o servidor.
+Verifique se o caminho que o @code{rsh} mostrou no
+exemplo acima inclui o diretório contendo um programa
+chamado @code{cvs} que está no servidor. Você precisa
+ajustar o caminho no @file{.bashrc}, @file{.cshrc},
+etc., não no @file{.login} ou no @file{.profile}.
+Alternativamente, você pode ajustar a variável de
+ambiente @code{CVS_SERVER} na máquina cliente para o
+nome do arquivo do servidor que você quer usar, por
+exemplo @file{/usr/local/bin/cvs-1.6}.
+@c FIXME: there should be a way to specify the
+@c program in CVSROOT, not CVS_SERVER, so that one can use
+@c different ones for different roots. e.g. ":server;cvs=cvs-1.6:"
+@c instead of ":server:".
+
+@c <en>There is no need to edit @file{inetd.conf} or start a
+@c <en>@sc{cvs} server daemon.
+Não há necessidade de se editar o @file{inetd.conf} ou
+iniciar um daemon (serviço) servidor de @sc{cvs}.
+
+@c <en>@cindex :server:, setting up
+@cindex :servidor:, ajustando
+@c <en>@cindex :ext:, setting up
+@cindex :ext:, ajustando
+@c <en>@cindex Kerberos, using kerberized rsh
+@cindex Kerberos, usando rsh kerberizado
+@c <en>@cindex SSH (rsh replacement)
+@cindex SSH (substituto do rsh)
+@c <en>@cindex rsh replacements (Kerberized, SSH, &c)
+@cindex Substitutos do rsh (Kerberizado, SSH, &c)
+@c <en>There are two access methods that you use in @code{CVSROOT}
+@c <en>for rsh. @code{:server:} specifies an internal rsh
+@c <en>client, which is supported only by some @sc{cvs} ports.
+@c <en>@code{:ext:} specifies an external rsh program. By
+@c <en>default this is @code{rsh} (unless otherwise specified
+@c <en>by the @file{--with-rsh} flag to configure) but you may set the
+@c <en>@code{CVS_RSH} environment variable to invoke another
+@c <en>program which can access the remote server (for
+@c <en>example, @code{remsh} on HP-UX 9 because @code{rsh} is
+@c <en>something different). It must be a program which can
+@c <en>transmit data to and from the server without modifying
+@c <en>it; for example the Windows NT @code{rsh} is not
+@c <en>suitable since it by default translates between CRLF
+@c <en>and LF. The OS/2 @sc{cvs} port has a hack to pass @samp{-b}
+@c <en>to @code{rsh} to get around this, but since this could
+@c <en>potentially cause problems for programs other than the
+@c <en>standard @code{rsh}, it may change in the future. If
+@c <en>you set @code{CVS_RSH} to @code{SSH} or some other rsh
+@c <en>replacement, the instructions in the rest of this
+@c <en>section concerning @file{.rhosts} and so on are likely
+@c <en>to be inapplicable; consult the documentation for your rsh
+@c <en>replacement.
+Existem dois métodos de acesso que você pode usar no
+@code{CVSROOT} para rsh. @code{:server:} especifica um
+cliente rsh interno, que é suportado apenas por
+alguns portes do @sc{cvs}. @code{:ext:} especifica um
+programa rsh externo. Por padrão é o @code{rsh} (a
+menos que se especifique o contrário pela opção
+@file{--with-rsh}) mas você pode ajustar a variável de
+ambiente @code{CVS_RSH} para invocar outro programa que
+pode acessar o servidor remoto (por exemplo,
+@code{remsh} num HP-UX 9 já que o @code{rsh} é de certa
+forma diferente). Deve ser um programa que transmita
+dados de e para o servidor sem modificar nada; por
+exemplo, o @code{rsh} do Windows NT não é adequado já
+que por padrão ele permuta CRLF com LF. O porte do
+@sc{cvs} para OS/2 tem um ???hack??? para passar
+@samp{-b} para o @code{rsh} para contornar isso, mas
+já que isso pode potencialmente causar problemas para
+outros programas que não sejam o @code{rsh} padrão,
+isso deve mudar no futuro. Se você ajustar o
+@code{CVS_RSH} para @code{SSH} ou algum outro
+substituto do rsh, as instruções no restante desta seção a
+respeito do arquivo @file{.rhosts} e outros
+provavelmente não se aplicarão; consulte a documentação
+do seu substituto do rsh.
+@c FIXME: there should be a way to specify the
+@c program in CVSROOT, not CVS_RSH, so that one can use
+@c different ones for different roots. e.g. ":ext;rsh=remsh:"
+@c instead of ":ext:".
+@c See also the comment in src/client.c for rationale
+@c concerning "rsh" being the default and never
+@c "remsh".
+
+@c <en>Continuing our example, supposing you want to access
+@c <en>the module @file{foo} in the repository
+@c <en>@file{/usr/local/cvsroot/}, on machine
+@c <en>@file{faun.example.org}, you are ready to go:
+Continuando nosso exemplo, supondo que você quer
+acessar o módulo @file{foo} no repositório
+@file{/usr/local/cvsroot/}, da máquina
+@file{faun.example.org}, você está pronto para seguir:
+
+@example
+cvs -d :ext:bach@@faun.example.org:/usr/local/cvsroot checkout foo
+@end example
+
+@noindent
+@c <en>(The @file{bach@@} can be omitted if the username is
+@c <en>the same on both the local and remote hosts.)
+(O @file{bach@@} pode ser omitido se o nome de usuário
+é o mesmo tanto no servidor como no cliente.)
+
+@c Should we mention "rsh host echo hi" and "rsh host
+@c cat" (the latter followed by typing text and ^D)
+@c as troubleshooting techniques? Probably yes
+@c (people tend to have trouble setting this up),
+@c but this kind of thing can be hard to spell out.
+
+@c <en>@node Password authenticated
+@node Autenticação por senha
+@c <en>@subsection Direct connection with password authentication
+@subsection Conexões diretas com autenticação por senha
+
+@c <en>The @sc{cvs} client can also connect to the server
+@c <en>using a password protocol. This is particularly useful
+@c <en>if using @code{rsh} is not feasible (for example,
+@c <en>the server is behind a firewall), and Kerberos also is
+@c <en>not available.
+O cliente @sc{cvs} também pode se conectar ao servidor
+usando um protocolo de senha. Isto é particularmente
+útil se não se pode usar o @code{rsh} (por exemplo, se
+o servidor está atrás de um firewall), e o Kerberos
+também não está disponível.
+
+@c <en> To use this method, it is necessary to make
+@c <en>some adjustments on both the server and client sides.
+ Para usar este método é necessário fazer
+ajustes tanto do lado do cliente como no do servidor.
+
+@menu
+@c <en>* Password authentication server:: Setting up the server
+* Servidor de autenticação por senha:: Ajustando o servidor
+@c <en>* Password authentication client:: Using the client
+* Cliente de autenticação por senha:: Usando o cliente
+@c <en>* Password authentication security:: What this method does and does not do
+* Segurança com autenticação por senha:: O que este método faz e o que ele não faz
+@end menu
+
+@c <en>@node Password authentication server
+@node Servidor de autenticação por senha
+@c <en>@subsubsection Setting up the server for password authentication
+@subsubsection Ajustando o servidor para autenticação por senha
+
+@c <en>First of all, you probably want to tighten the
+@c <en>permissions on the @file{$CVSROOT} and
+@c <en>@file{$CVSROOT/CVSROOT} directories. See @ref{Password
+@c <en>authentication security}, for more details.
+Antes de tudo, você provavelmente vai querer amarrar as
+permissões nos diretórios @file{$CVSROOT} e
+@file{$CVSROOT/CVSROOT}. Veja em
+@ref{Segurança com autenticação por senha}
+para mais informações.
+
+@c <en>@cindex pserver (subcommand)
+@cindex pserver (subcomando)
+@c <en>@cindex Remote repositories, port specification
+@cindex Repositórios remotos, especificação de porta
+@c <en>@cindex Repositories, remote, port specification
+@cindex Repositórios, remotos, especificação de porta
+@c <en>@cindex Client/Server Operation, port specification
+@cindex Operação cliente/Servidor, especificação de porta
+@c <en>@cindex pserver (client/server connection method), port specification
+@cindex pserver (método de conexão cliente/servidor), especificação de porta
+@c <en>@cindex kserver (client/server connection method), port specification
+@cindex kserver (método de conexão cliente/servidor), especificação de porta
+@c <en>@cindex gserver (client/server connection method), port specification
+@cindex gserver (método de conexão cliente/servidor), especificação de porta
+@c <en>@cindex port, specifying for remote repositories
+@cindex porta, especificação para repositórios remotos
+@c <en>@cindex Password server, setting up
+@cindex Servidor por senha, ajustando
+@c <en>@cindex Authenticating server, setting up
+@cindex Servidor por autenticação, ajustando
+@c <en>@cindex inetd, configuring for pserver
+@cindex inetd, configurando para pserver
+@c <en>@cindex xinetd, configuring for pserver
+@cindex xinetd, configurando para pserver
+@c FIXME: this isn't quite right regarding port
+@c numbers; CVS looks up "cvspserver" in
+@c /etc/services (on unix, but what about non-unix?).
+@c <en>On the server side, the file @file{/etc/inetd.conf}
+@c <en>needs to be edited so @code{inetd} knows to run the
+@c <en>command @code{cvs pserver} when it receives a
+@c <en>connection on the right port. By default, the port
+@c <en>number is 2401; it would be different if your client
+@c <en>were compiled with @code{CVS_AUTH_PORT} defined to
+@c <en>something else, though. This can also be specified in the CVSROOT variable
+@c <en>(@pxref{Remote repositories}) or overridden with the CVS_CLIENT_PORT
+@c <en>environment variable (@pxref{Environment variables}).
+No lado do servidor, o arquivo @file{/etc/inetd.conf}
+precisa ser editado para que o @code{inetd} saiba rodar
+o comando @code{cvs pserver} quando ele recebe uma
+conexão pela porta certa. Por padrão, a porta de
+número 2401; entretanto, isto pode ser diferente se seu
+cliente foi compilado com @code{CVS_AUTH_PORT} definido
+para outra coisa. Esta porta também pode ser
+especificada na variável CVSROOT
+(@pxref{Repositórios remotos}) ou sobreescrita com a variável de
+ambiente CVS_CLIENT_PORT (@pxref{Variáveis de ambiente}).
+
+@c <en> If your @code{inetd} allows raw port numbers in
+@c <en>@file{/etc/inetd.conf}, then the following (all on a
+@c <en>single line in @file{inetd.conf}) should be sufficient:
+ Se seu @code{inetd} permite ???raw port
+numbers??? no @file{/etc/inetd.conf}, então o seguinte
+(tudo na mesma linha do @file{inetd.conf}) deve ser suficiente:
+
+@example
+2401 stream tcp nowait root /usr/local/bin/cvs
+cvs -f --allow-root=/usr/cvsroot pserver
+@end example
+
+@noindent
+@c <en>(You could also use the
+@c <en>@samp{-T} option to specify a temporary directory.)
+(Você pode usar também a opção @samp{-T} para
+especificar um diretório temporário.)
+
+@c <en>The @samp{--allow-root} option specifies the allowable
+@c <en>@sc{cvsroot} directory. Clients which attempt to use a
+@c <en>different @sc{cvsroot} directory will not be allowed to
+@c <en>connect. If there is more than one @sc{cvsroot}
+@c <en>directory which you want to allow, repeat the option.
+@c <en>(Unfortunately, many versions of @code{inetd} have very small
+@c <en>limits on the number of arguments and/or the total length
+@c <en>of the command. The usual solution to this problem is
+@c <en>to have @code{inetd} run a shell script which then invokes
+@c <en>@sc{cvs} with the necessary arguments.)
+A opção @samp{--allow-root} especifica o diretório
+@sc{cvsroot} permitido. Clientes que tentem usar um
+diretório @sc{cvsroot} diferente não conseguirão se
+conectar. Se você quer permitir mais de um diretório
+@sc{cvsroot}, repita a opção.
+(Infelismente, muitas versões do @code{inetd} têm um
+limite muito baixo do número de argumentos e/ou do
+comprimento total do comando. A solução usual para
+este problema é fazer o @code{inetd} rodar um script de
+shell que invoque o @sc{cvs} com os argumentos
+necessários.)
+
+@c <en> If your @code{inetd} wants a symbolic service
+@c <en>name instead of a raw port number, then put this in
+@c <en>@file{/etc/services}:
+ Se seu @code{inetd} precisa de um nome
+simbólico de serviço ao invés de um número de porta,
+ponha em @file{/etc/services}:
+
+@example
+cvspserver 2401/tcp
+@end example
+
+@noindent
+@c <en>and put @code{cvspserver} instead of @code{2401} in @file{inetd.conf}.
+e ponha @code{cvspserver} no lugar de @code{2401} no @file{inetd.conf}.
+
+@c <en>If your system uses @code{xinetd} instead of @code{inetd},
+@c <en>the procedure is slightly different.
+@c <en>Create a file called @file{/etc/xinetd.d/cvspserver} containing the following:
+Se seu sistema usa @code{xinetd} no lugar de @code{inetd},
+o procedimento é um pouco diferente. Crie um arquivo
+chamado @file{/etc/xinetd.d/cvspserver} contendo o seguinte:
+
+@example
+service cvspserver
+@{
+ port = 2401
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ user = root
+ passenv = PATH
+ server = /usr/local/bin/cvs
+ server_args = -f --allow-root=/usr/cvsroot pserver
+@}
+@end example
+
+@noindent
+@c <en>(If @code{cvspserver} is defined in @file{/etc/services}, you can omit
+@c <en>the @code{port} line.)
+(Se @code{cvspserver} é definido no
+@file{/etc/services}, você pode omitir a linha @code{port}.)
+
+@c <en> Once the above is taken care of, restart your
+@c <en>@code{inetd}, or do whatever is necessary to force it
+@c <en>to reread its initialization files.
+ Uma vez que as instruções acima foram seguidas,
+reinicie seu @code{inetd}, ou faça o que for necessário
+para forçá-lo a reler seus arquivos de inicialização.
+
+@c <en>If you are having trouble setting this up, see
+@c <en>@ref{Connection}.
+Se você enfrentar problemas, veja em @ref{Conexão}.
+
+@c <en>@cindex CVS passwd file
+@cindex Arquivo passwd do CVS
+@c <en>@cindex passwd (admin file)
+@cindex passwd (arquivo administrativo)
+@c <en>Because the client stores and transmits passwords in
+@c <en>cleartext (almost---see @ref{Password authentication
+@c <en>security}, for details), a separate @sc{cvs} password
+@c <en>file is generally used, so people don't compromise
+@c <en>their regular passwords when they access the
+@c <en>repository. This file is
+@c <en>@file{$CVSROOT/CVSROOT/passwd} (@pxref{Intro
+@c <en>administrative files}). It uses a colon-separated
+@c <en>format, similar to @file{/etc/passwd} on Unix systems,
+@c <en>except that it has fewer fields: @sc{cvs} username,
+@c <en>optional password, and an optional system username for
+@c <en>@sc{cvs} to run as if authentication succeeds. Here is
+@c <en>an example @file{passwd} file with five entries:
+Como o cliente guarda e transmite as senhas em texto simples
+(praticamente---veja @ref{Segurança com autenticação por senha}
+para detalhes), um arquivo de senhas do @sc{cvs} é
+geralmente usado, de forma que as pessoas nao
+comprometam suas senhas regulares quando acessam o
+repositório. Este arquivo é o
+@file{$CVSROOT/CVSROOT/passwd} (@pxref{Intro aos
+arquivos administrativos}). Ele usa um formato
+separado por dois pontos, similar ao do
+@file{/etc/passwd} dos sistemas Unix, exceto que este
+tem menos campos: nome do usuário @sc{cvs}, senha
+opcional, e um nome de usuário de sistema opcional para
+o @sc{cvs} rodar como ele se ocorrer a autenticação.
+Aqui está um exemplo de arquivo @file{passwd} com cinco
+entradas:
+
+@example
+anonymous:
+bach:ULtgRLXo7NRxs
+spwang:1sOp854gDF3DY
+melissa:tGX1fS8sun6rY:pubcvs
+qproj:XR4EZcEs0szik:pubcvs
+@end example
+
+@noindent
+@c <en>(The passwords are encrypted according to the standard
+@c <en>Unix @code{crypt()} function, so it is possible to
+@c <en>paste in passwords directly from regular Unix
+@c <en>@file{/etc/passwd} files.)
+(As senhas são criptografadas de acordo com a função
+Unix @code{crypt()} padrão, portanto é possível copiar
+senhas diretamente de arquivos @file{/etc/passwd}
+normais do Unix.)
+
+@c <en>The first line in the example will grant access to any
+@c <en>@sc{cvs} client attempting to authenticate as user
+@c <en>@code{anonymous}, no matter what password they use,
+@c <en>including an empty password. (This is typical for
+@c <en>sites granting anonymous read-only access; for
+@c <en>information on how to do the "read-only" part, see
+@c <en>@ref{Read-only access}.)
+A primeira linha no exemplo vai dar acesso a qualquer
+cliente @sc{cvs} que tente se autenticar como o usuário
+@code{anonymous} (anônimo), qualquer que seja a senha
+que ele esteja usando, até mesmo uma senha vazia.
+(Isto é típico de sítios que dão acesso somente-leitura
+anônimo; para informações sobre como fazer a parte
+"somente-leitura", veja em @ref{Acesso somente-leitura}.)
+
+@c <en>The second and third lines will grant access to
+@c <en>@code{bach} and @code{spwang} if they supply their
+@c <en>respective plaintext passwords.
+As segunda e terceira linhas vão fornecer acesso a
+@code{bach} e @code{spwang} se eles fornecerem suas
+respectivas senhas em texto simples.
+
+@c <en>@cindex User aliases
+@cindex User aliases
+@c <en>The fourth line will grant access to @code{melissa}, if
+@c <en>she supplies the correct password, but her @sc{cvs}
+@c <en>operations will actually run on the server side under
+@c <en>the system user @code{pubcvs}. Thus, there need not be
+@c <en>any system user named @code{melissa}, but there
+@c <en>@emph{must} be one named @code{pubcvs}.
+A quarta linha vai dar acesso a @code{melissa}, se ela
+fornecer a senha correta, mas suas opareções no
+@sc{cvs} vão ser rodadas, na verdade, como o usuário de
+sistema @code{pubcvs} no lado do servidor. Logo, não
+há a necessidade de haver qualquer usuário chamado
+@code{melissa}, mas @emph{tem que} haver um chamado
+@code{pubcvs}.
+
+@c <en>The fifth line shows that system user identities can be
+@c <en>shared: any client who successfully authenticates as
+@c <en>@code{qproj} will actually run as @code{pubcvs}, just
+@c <en>as @code{melissa} does. That way you could create a
+@c <en>single, shared system user for each project in your
+@c <en>repository, and give each developer their own line in
+@c <en>the @file{$CVSROOT/CVSROOT/passwd} file. The @sc{cvs}
+@c <en>username on each line would be different, but the
+@c <en>system username would be the same. The reason to have
+@c <en>different @sc{cvs} usernames is that @sc{cvs} will log their
+@c <en>actions under those names: when @code{melissa} commits
+@c <en>a change to a project, the checkin is recorded in the
+@c <en>project's history under the name @code{melissa}, not
+@c <en>@code{pubcvs}. And the reason to have them share a
+@c <en>system username is so that you can arrange permissions
+@c <en>in the relevant area of the repository such that only
+@c <en>that account has write-permission there.
+A quinta linha mostra que identidades de usuários de
+sistema podem ser compartilhadas: qualquer cliente que
+se autentique com sucesso como @code{qproj} vai na
+verdade rodar como @code{pubcvs}, da mesma forma que
+@code{melissa} faz. Desta forma você pode criar um
+único e compartilhado usuário de sistema para cada
+projeto no seu repositório, e dar a cada desenvolvedor
+sua própria linha no arquivo
+@file{$CVSROOT/CVSROOT/passwd}. O nome de usuário do
+@sc{cvs} em cada linha vai ser diferente, mas o usuário
+de sistema vai ser o mesmo. A razão para se ter
+diferentes nomes de usuários do @sc{cvs} é que o
+@sc{cvs} vai registrar suas ações sob estes nomes:
+quando @code{melissa} submete (commit) uma mudança ao
+projeto, o checkin é gravado no histórico do projeto em
+nome de @code{melissa}, não de @code{pubcvs}. E a
+razão para tê-los compartilhando um usuário de sistema
+é que você pode ajeitar as permissões da área relevante
+do repositório de forma que apenas aquela conta tenha
+permissão de leitura lá.
+
+@c <en>If the system-user field is present, all
+@c <en>password-authenticated @sc{cvs} commands run as that
+@c <en>user; if no system user is specified, @sc{cvs} simply
+@c <en>takes the @sc{cvs} username as the system username and
+@c <en>runs commands as that user. In either case, if there
+@c <en>is no such user on the system, then the @sc{cvs}
+@c <en>operation will fail (regardless of whether the client
+@c <en>supplied a valid password).
+Se o campo do usuário de sistema está presente, todos
+os comandos do @sc{cvs} com autenticação por senha
+rodarão como aquele usuário; se nenhum usuário é
+especificado, o @sc{cvs} simplesmente vai usar o nome
+de usuário do @sc{cvs} como o nome de usuário de
+sistema e rodar os comandos como este usuário. Em
+qualquer caso, se não existir tal usuário no sistema, a
+operação do @sc{cvs} vai falhar (independente do
+cliente ter fornecido uma senha válida).
+
+@c <en>The password and system-user fields can both be omitted
+@c <en>(and if the system-user field is omitted, then also
+@c <en>omit the colon that would have separated it from the
+@c <en>encrypted password). For example, this would be a
+@c <en>valid @file{$CVSROOT/CVSROOT/passwd} file:
+Os campos de senha e usuário de sistema podem ser ambos
+omitidos (e se o campo de usuário de sistema for
+omitido, então a vírgula que o separava da senha
+criptografada também pode ser omitida). Por exemplo,
+isto pode ser um arquivo @file{$CVSROOT/CVSROOT/passwd} válido:
+
+@example
+anonymous::pubcvs
+fish:rKa5jzULzmhOo:kfogel
+sussman:1sOp854gDF3DY
+@end example
+
+@noindent
+@c <en>When the password field is omitted or empty, then the
+@c <en>client's authentication attempt will succeed with any
+@c <en>password, including the empty string. However, the
+@c <en>colon after the @sc{cvs} username is always necessary,
+@c <en>even if the password is empty.
+Quando o campo senha não existe ou é vazio, então uma
+tentativa de autenticação do cliente vai funcionar
+qualquer que seja a senha, inclusive a senha vazia.
+Entretanto, o dois pontos antes do nome de usuário do
+@sc{cvs} é sempre necessário, mesmo se a senha for vazia.
+
+@c <en>@sc{cvs} can also fall back to use system authentication.
+@c <en>When authenticating a password, the server first checks
+@c <en>for the user in the @file{$CVSROOT/CVSROOT/passwd}
+@c <en>file. If it finds the user, it will use that entry for
+@c <en>authentication as described above. But if it does not
+@c <en>find the user, or if the @sc{cvs} @file{passwd} file
+@c <en>does not exist, then the server can try to authenticate
+@c <en>the username and password using the operating system's
+@c <en>user-lookup routines (this "fallback" behavior can be
+@c <en>disabled by setting @code{SystemAuth=no} in the
+@c <en>@sc{cvs} @file{config} file, @pxref{config}).
+O @sc{cvs} também pode recorrer à autenticação do
+sistema. Quando autenticando uma senha, o servidor
+primeiro procura pelo usuário no arquivo
+@file{$CVSROOT/CVSROOT/passwd}. Se ele encontra o
+usuário, ele vai usar aquela entrada para autenticar
+como descrito acima. Mas se o usuário não for
+encontrado, ou se o arquivo @file{passwd} do @sc{cvs}
+não existe, então o servidor pode tentar autenticar o
+nome de usuário e a senha usando as rotinas de
+???user-lookup??? do sistema operacional (Este
+comportamento "alternativo" pode ser desabilitado ajustando
+o @code{SystemAuth=no} no arquivo @file{config} do
+@sc{cvs}, @pxref{config}).
+
+@c <en>The default fallback behaviour is to look in
+@c <en>@file{/etc/passwd} for this system password unless your
+@c <en>system has PAM (Pluggable Authentication Modules)
+@c <en>and your @sc{cvs} server executable was configured to
+@c <en>use it at compile time (using @code{./configure --enable-pam} - see the
+@c <en>INSTALL file for more). In this case, PAM will be consulted instead.
+@c <en>This means that @sc{cvs} can be configured to use any password
+@c <en>authentication source PAM can be configured to use (possibilities
+@c <en>include a simple UNIX password, NIS, LDAP, and others) in its
+@c <en>global configuration file (usually @file{/etc/pam.conf}
+@c <en>or possibly @file{/etc/pam.d/cvs}). See your PAM documentation
+@c <en>for more details on PAM configuration.
+O comportamento alternativo é procurar no
+@file{/etc/passwd} por este usuário de sistema a menos
+que seu sistema tenha PAM (Pluggable Authentication
+Modules) e seu servidor do @sc{cvs} executável foi
+configurado para usar PAM em tempo de compilação
+(usando @code{./configure --enable-pam} - veja no
+arquivo INSTALL para saber mais). Neste caso, PAM é
+que vai autenticar. Isto significa que o @sc{cvs} pode
+ser configurado para usar qualquer fonte de
+autenticação por senha que PAM possa ser configurada
+para usar (as possibilidades incluem senha simples de
+UNIX, NIS, LDAP, e outras) no seu arquivo de
+configuração global (em geral @file{/etc/pam.conf}
+ou possivelmente @file{/etc/pam.d/cvs}). Veja em sua
+documentação do PAM para mais detalhes sobre a
+configuração do PAM.
+
+@c <en>Note that PAM is an experimental feature in @sc{cvs} and feedback is
+@c <en>encouraged. Please send a mail to one of the @sc{cvs} mailing lists
+@c <en>(@code{info-cvs@@nongnu.org} or @code{bug-cvs@@nongnu.org}) if you use the
+@c <en>@sc{cvs} PAM support.
+Observe que PAM é uma funcionalidade experimental no
+@sc{cvs} e feedback é encorajado. Por favor, mande
+e-mail para uma das listas do @sc{cvs}
+(@code{info-cvs@@nongnu.org} ou @code{bug-cvs@@nongnu.org})
+se você usa o suporte a PAM do @sc{cvs}. As listas são
+em inglês.
+
+@c <en>@strong{WARNING: Using PAM gives the system administrator much more
+@c <en>flexibility about how @sc{cvs} users are authenticated but
+@c <en>no more security than other methods. See below for more.}
+@strong{ATENÇÃO: Usar PAM dá ao administrador do
+sistema muito mais flexibilidade sobre como os usuários
+do @sc{cvs} são autenticados mas não dá mais segurança
+que outros métodos. Veja abaixo mais detalhes.}
+
+@c <en>CVS needs an "auth" and "account" module in the
+@c <en>PAM configuration file. A typical PAM configuration
+@c <en>would therefore have the following lines
+@c <en>in @file{/etc/pam.conf} to emulate the standard @sc{cvs}
+@c <en>system @file{/etc/passwd} authentication:
+CVS precisa de um módulo "auth" e "account" no arquivo
+de configuração PAM. Uma configuração PAM típica deve
+portanto ter as seguintes linhas no
+@file{/etc/pam.conf} para simular a autenticação
+@file{/etc/passwd} do sistema @sc{cvs} padrão:
+
+@example
+cvs auth required pam_unix.so
+cvs account required pam_unix.so
+@end example
+
+@c <en>The the equivalent @file{/etc/pam.d/cvs} would contain
+O @file{/etc/pam.d/cvs} equivalente deve conter
+
+@example
+auth required pam_unix.so
+account required pam_unix.so
+@end example
+
+@c <en>Some systems require a full path to the module so that
+@c <en>@file{pam_unix.so} (Linux) would become something like
+@c <en>@file{/usr/lib/security/$ISA/pam_unix.so.1} (Sun Solaris).
+@c <en>See the @file{contrib/pam} subdirectory of the @sc{cvs}
+@c <en>source distribution for further example configurations.
+Alguns sistemas necessitam de um caminho completo para
+o módulo de forma que @file{pam_unix.so} (Linux) vai se
+tornar algo do tipo
+@file{/usr/lib/security/$ISA/pam_unix.so.1} (Sun
+Solaris). Veja o subdiretório @file{contrib/pam} da
+distribuição em código fonte do @sc{cvs} para mais
+exemplos de configuração.
+
+@c <en>The PAM service name given above as "cvs" is just
+@c <en>the service name in the default configuration amd can be
+@c <en>set using
+@c <en>@code{./configure --with-hardcoded-pam-service-name=<pam-service-name>}
+@c <en>before compiling. @sc{cvs} can also be configured to use whatever
+@c <en>name it is invoked as as its PAM service name using
+@c <en>@code{./configure --without-hardcoded-pam-service-name}, but this
+@c <en>feature should not be used if you may not have control of the name
+@c <en>@sc{cvs} will be invoked as.
+O nome de serviço PAM dado abaixo como "cvs" é apenas o
+nome do serviço na configuração padrão e pode ser
+mudado usando
+@code{./configure --with-hardcoded-pam-service-name=<pam-service-name>}
+antes de compilar. ??? @sc{cvs} can also be configured to use whatever
+name it is invoked as as its PAM service name using
+@code{./configure
+--without-hardcoded-pam-service-name}???, mas esta
+característica não deve ser usada se você não tiver
+controle do nome com o qual o @sc{cvs} será chamado.
+
+@c <en>Be aware, also, that falling back to system
+@c <en>authentication might be a security risk: @sc{cvs}
+@c <en>operations would then be authenticated with that user's
+@c <en>regular login password, and the password flies across
+@c <en>the network in plaintext. See @ref{Password
+@c <en>authentication security} for more on this.
+@c <en>This may be more of a problem with PAM authentication
+@c <en>because it is likely that the source of the system
+@c <en>password is some central authentication service like
+@c <en>LDAP which is also used to authenticate other services.
+Esteja avisado, além disso, que recorrer a autenticação
+do sistema pode ser um risco de segurança: as operações
+do @sc{cvs} deveram ser autenticadas com a senha do
+usuário regular, e a senha vai passar pela rede em
+texto plano. Veja em @ref{Segurança com autenticação por senha}
+para saber mais. Isto pode ser um problema a mais com
+autenticação PAM por que é provável que a fonte do
+sistema de senhas é algum serviço de autenticação
+central como o LDAP, que é usado para autenticar outros
+serviços.
+
+@c <en>On the other hand, PAM makes it very easy to change your password
+@c <en>regularly. If they are given the option of a one-password system for
+@c <en>all of their activities, users are often more willing to change their
+@c <en>password on a regular basis.
+Por outro lado, PAM faz com que seja fácil mudar a
+senha regularmente. Se os usuários têm um sistema de
+senha única, são mais fáceis de convencer a trocar de
+senha regularmente.
+
+@c <en>In the non-PAM configuration where the password is stored in the
+@c <en>@file{CVSROOT/passwd} file, it is difficult to change passwords on a
+@c <en>regular basis since only administrative users (or in some cases
+@c <en>processes that act as an administrative user) are typicaly given
+@c <en>access to modify this file. Either there needs to be some
+@c <en>hand-crafted web page or set-uid program to update the file, or the
+@c <en>update needs to be done by submitting a request to an administrator to
+@c <en>perform the duty by hand. In the first case, having to remember to
+@c <en>update a separate password on a periodic basis can be difficult. In
+@c <en>the second case, the manual nature of the change will typically mean
+@c <en>that the password will not be changed unless it is absolutely
+@c <en>necessary.
+Numa configuração não-PAM, onde a senha é guardada no
+arquivo @file{CVSROOT/passwd}, é difícil mudar as
+senhas regularmente já que apenas usuários
+administradores (ou em alguns casos, processos que agem
+como usuários administradores) têm acesso de escrita ao
+arquivo. ???Either there needs to be some
+hand-crafted web page or set-uid program to update the file, or the
+update needs to be done by submitting a request to an administrator to
+perform the duty by hand???. No primeiro caso, ter que
+lembrar de uma senha a parte periodicamente pode ser
+difícil. No segundo caso, a natureza manual da mudança
+vai significar que a senha não vai ser mudada até que
+seja absolutamente necessário.
+
+@c <en>Note that PAM administrators should probably avoid configuring
+@c <en>one-time-passwords (OTP) for @sc{cvs} authentication/authorization. If
+@c <en>OTPs are desired, the administrator may wish to encourage the use of
+@c <en>one of the other Client/Server access methods. See the section on
+@c <en>@pxref{Remote repositories} for a list of other methods.
+Observe que os administradores do PAM vão evitar
+configurar one-time-passwords (OTP) para
+autenticação/autorização do @sc{cvs}. Se os OTPs são
+desejados, o administrador vai querer encorajar o uso
+de um dos outros métodos de acesso cliente/servidor.
+Veja a seção em @pxref{Repositórios remotos} para uma
+lista de outros métodos.
+
+@c <en>Right now, the only way to put a password in the
+@c <en>@sc{cvs} @file{passwd} file is to paste it there from
+@c <en>somewhere else. Someday, there may be a @code{cvs
+@c <en>passwd} command.
+Por agora, a única forma de botar uma senha no arquivo
+@file{passwd} do @sc{cvs} é colar de algum outro lugar.
+Algum dia vai haver um comando @code{cvs passwd}.
+
+@c <en>Unlike many of the files in @file{$CVSROOT/CVSROOT}, it
+@c <en>is normal to edit the @file{passwd} file in-place,
+@c <en>rather than via @sc{cvs}. This is because of the
+@c <en>possible security risks of having the @file{passwd}
+@c <en>file checked out to people's working copies. If you do
+@c <en>want to include the @file{passwd} file in checkouts of
+@c <en>@file{$CVSROOT/CVSROOT}, see @ref{checkoutlist}.
+Ao contrário da maioria dos arquivos no
+@file{$CVSROOT/CVSROOT}, é normal editar o arquivo
+@file{passwd} in loco, ao invés de pelo @sc{cvs}. Isto
+é devido a possíveis riscos de segurança ao se ter
+cópias do arquivo @file{passwd} baixadas para o
+diretório de trabalho das pessoas. Se você quer
+incluir o arquivo @file{passwd} nos checkouts de
+@file{$CVSROOT/CVSROOT}, veja em @ref{checkoutlist}.
+
+@c We might also suggest using the @code{htpasswd} command
+@c from freely available web servers as well, but that
+@c would open up a can of worms in that the users next
+@c questions are likely to be "where do I get it?" and
+@c "how do I use it?"
+@c Also note that htpasswd, at least the version I had,
+@c likes to clobber the third field.
+
+@c <en>@node Password authentication client
+@node Cliente de autenticação por senha
+@c <en>@subsubsection Using the client with password authentication
+@subsubsection Usando o cliente com autenticação por senha
+@c <en>@cindex Login (subcommand)
+@cindex Login (subcomando)
+@c <en>@cindex Password client, using
+@cindex Cliente por senha, usando
+@c <en>@cindex Authenticated client, using
+@cindex Cliente autenticado, usando
+@c <en>@cindex :pserver:, setting up
+@cindex :pserver:, ajustando
+@c <en>To run a @sc{cvs} command on a remote repository via
+@c <en>the password-authenticating server, one specifies the
+@c <en>@code{pserver} protocol, optional username, repository host, an
+@c <en>optional port number, and path to the repository. For example:
+Para rodar um comando @sc{cvs} num repositório remoto
+via servidor de autenticação por senha, deve-se
+espedificar o protocolo @code{pserver}, um nome de
+usuário opcional, a máquina do repositório, uma porta
+opcional, e o caminho para o repositório. Por exemplo:
+
+@example
+cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
+@end example
+
+@noindent
+@c <en>or
+or
+
+@example
+CVSROOT=:pserver:bach@@faun.example.org:2401/usr/local/cvsroot
+cvs checkout someproj
+@end example
+
+@c <en>However, unless you're connecting to a public-access
+@c <en>repository (i.e., one where that username doesn't
+@c <en>require a password), you'll need to supply a password or @dfn{log in} first.
+@c <en>Logging in verifies your password with the repository and stores it in a file.
+@c <en>It's done with the @code{login} command, which will
+@c <en>prompt you interactively for the password if you didn't supply one as part of
+@c <en>@var{$CVSROOT}:
+Entretanto, a menos que você esteja conectado a um
+repositório de acesso público (i.e., um daqueles que o
+usuário não precisa de senha), você vai precisar
+fornecer uma senha ou @dfn{se logar} antes. Ao se
+logar, a sua senha é comparada com a do repositório e
+guardada num arquivo. Isto é feito com o comando
+@code{login}, que vai pedir a sua senha interativamente
+se você não forneceu ela como parte do @var{$CVSROOT}:
+
+@example
+cvs -d :pserver:bach@@faun.example.org:/usr/local/cvsroot login
+CVS password:
+@end example
+
+@noindent
+@c <en>or
+or
+
+@example
+cvs -d :pserver:bach:p4ss30rd@@faun.example.org:/usr/local/cvsroot login
+@end example
+
+@c <en>After you enter the password, @sc{cvs} verifies it with
+@c <en>the server. If the verification succeeds, then that
+@c <en>combination of username, host, repository, and password
+@c <en>is permanently recorded, so future transactions with
+@c <en>that repository won't require you to run @code{cvs
+@c <en>login}. (If verification fails, @sc{cvs} will exit
+@c <en>complaining that the password was incorrect, and
+@c <en>nothing will be recorded.)
+Depois de fornecer a senha, o @sc{cvs} a verifica no
+servidor. Se a verificação procede, então esta
+combinação de usuário, máquina, repositório e senha é
+gravada permanentemente de forma que futuras transações
+com este repositório não vão requerer a execução de
+@code{cvs login}. (Se a verificação falhar, @sc{cvs}
+vai sair avisando que a senha está incorreta e nada vai
+ser gravado.)
+
+@c <en>The records are stored, by default, in the file
+@c <en>@file{$HOME/.cvspass}. That file's format is
+@c <en>human-readable, and to a degree human-editable, but
+@c <en>note that the passwords are not stored in
+@c <en>cleartext---they are trivially encoded to protect them
+@c <en>from "innocent" compromise (i.e., inadvertent viewing
+@c <en>by a system administrator or other non-malicious
+@c <en>person).
+A gravação é feita, por padrão, no arquivo
+@file{$HOME/.cvspass}. O arquivo tem formato
+legível, e num certo nível, editável, mas observe que
+as senhas não são guardadas em texto plano---elas são
+codificadas trivialmente para proteger contra
+???compromise??? "inocente" (i.e., um administrador
+desavisado dar uma olhada ou outra pessoa sem segundas
+intenções).
+
+@c <en>@cindex CVS_PASSFILE, environment variable
+@c <en>You can change the default location of this file by
+@c <en>setting the @code{CVS_PASSFILE} environment variable.
+@c <en>If you use this variable, make sure you set it
+@c <en>@emph{before} @code{cvs login} is run. If you were to
+@c <en>set it after running @code{cvs login}, then later
+@c <en>@sc{cvs} commands would be unable to look up the
+@c <en>password for transmission to the server.
+@cindex CVS_PASSFILE, variável de ambiente
+Você pode mudar o local padrão deste arquivo ajustando
+a variável de ambiente @code{CVS_PASSFILE}. Se você
+usar esta variável, certifique-se de fazer isto
+@emph{antes} de rodar @code{cvs login}. Se você fizer
+isto depois de rodar o @code{cvs login}, então mais
+tarde os comandos do @sc{cvs} vão ser incapazes de
+encontrar a senha para mandar para o servidor.
+
+@c <en>Once you have logged in, all @sc{cvs} commands using
+@c <en>that remote repository and username will authenticate
+@c <en>with the stored password. So, for example
+Uma vez que você esteja autenticado, todos os comandos
+do @sc{cvs} que usam o repositório remoto e senha vão
+se autenticar com a senha armazenada. Então, por exemplo
+
+@example
+cvs -d :pserver:bach@@faun.example.org:/usr/local/cvsroot checkout foo
+@end example
+
+@c <en>@noindent
+@c <en>should just work (unless the password changes on the
+@c <en>server side, in which case you'll have to re-run
+@c <en>@code{cvs login}).
+@noindent
+vai funcionar (a menos que a senha mude no servidor,
+onde neste caso você vai ter que rodar de novo
+@code{cvs login}).
+
+@c <en>Note that if the @samp{:pserver:} were not present in
+@c <en>the repository specification, @sc{cvs} would assume it
+@c <en>should use @code{rsh} to connect with the server
+@c <en>instead (@pxref{Connecting via rsh}).
+Observe que se o @samp{:pserver:} não estiver presente
+na especificação do repositório, o @sc{cvs} vai assumir
+que deve usar o @code{rsh} para se conectar com o
+servidor, neste caso (@pxref{Se conectando via rsh}).
+
+@c <en>Of course, once you have a working copy checked out and
+@c <en>are running @sc{cvs} commands from within it, there is
+@c <en>no longer any need to specify the repository
+@c <en>explicitly, because @sc{cvs} can deduce the repository
+@c <en>from the working copy's @file{CVS} subdirectory.
+É claro que, uma vez que você tenha uma cópia de
+trabalho baixada e está rodando comandos @sc{cvs} de
+dentro dela, não existe mais a necessidade de
+explicitar o repositório, já que o @sc{cvs} pode
+deduzir o repositório a partir do subdiretório
+@file{CVS} da cópia de trabalho.
+
+@c FIXME: seems to me this needs somewhat more
+@c explanation.
+@c <en>@cindex Logout (subcommand)
+@c <en>The password for a given remote repository can be
+@c <en>removed from the @code{CVS_PASSFILE} by using the
+@c <en>@code{cvs logout} command.
+@cindex Logout (subcomando)
+A senha para um dado repositório remoto pode ser
+removida do @code{CVS_PASSFILE} usando o comando
+@code{cvs logout}.
+
+@c <en>@node Password authentication security
+@node Segurança com autenticação por senha
+@c <en>@subsubsection Security considerations with password authentication
+@subsubsection Considerações de segurança com autenticação por senha
+
+@c <en>@cindex Security, of pserver
+@cindex Segurança com pserver
+@c <en>The passwords are stored on the client side in a
+@c <en>trivial encoding of the cleartext, and transmitted in
+@c <en>the same encoding. The encoding is done only to
+@c <en>prevent inadvertent password compromises (i.e., a
+@c <en>system administrator accidentally looking at the file),
+@c <en>and will not prevent even a naive attacker from gaining
+@c <en>the password.
+As senhas são guardadas no cliente com uma codificação
+trivial de texto, e transmitidas na mesma codificação.
+Esta codificação é feita apenas para prevenir uma
+quebra de segredo inadvertida (i.e., um administrador
+de sistema acidentalmente olhar o arquivo), e não
+evita nem mesmo que um atacante ingênuo consiga a
+senha.
+
+@c FIXME: The bit about "access to the repository
+@c implies general access to the system is *not* specific
+@c to pserver; it applies to kerberos and SSH and
+@c everything else too. Should reorganize the
+@c documentation to make this clear.
+@c <en>The separate @sc{cvs} password file (@pxref{Password
+@c <en>authentication server}) allows people
+@c <en>to use a different password for repository access than
+@c <en>for login access. On the other hand, once a user has
+@c <en>non-read-only
+@c <en>access to the repository, she can execute programs on
+@c <en>the server system through a variety of means. Thus, repository
+@c <en>access implies fairly broad system access as well. It
+@c <en>might be possible to modify @sc{cvs} to prevent that,
+@c <en>but no one has done so as of this writing.
+O arquivo de senhas do @sc{cvs} em separado
+(@pxref{Servidor de autenticação por senha}) permite
+que as pessoas usem uma senha de acesso ao repositório
+deferente da senha de login. Por outro lado, uma vez
+que um usuário tenha acesso maior que somente-leitura,
+ele pode executar programas no sistema do servidor de
+várias formas. Então, o acesso ao repositório implica
+acesso ao sistema como um todo. É possível modificar o
+@sc{cvs} para evitar isto, mas até agora ninguem agiu
+neste sentido.
+@c OpenBSD uses chroot() and copies the repository to
+@c provide anonymous read-only access (for details see
+@c http://www.openbsd.org/anoncvs.shar). While this
+@c closes the most obvious holes, I'm not sure it
+@c closes enough holes to recommend it (plus it is
+@c *very* easy to accidentally screw up a setup of this
+@c type).
+
+@c <en>Note that because the @file{$CVSROOT/CVSROOT} directory
+@c <en>contains @file{passwd} and other files which are used
+@c <en>to check security, you must control the permissions on
+@c <en>this directory as tightly as the permissions on
+@c <en>@file{/etc}. The same applies to the @file{$CVSROOT}
+@c <en>directory itself and any directory
+@c <en>above it in the tree. Anyone who has write access to
+@c <en>such a directory will have the ability to become any
+@c <en>user on the system. Note that these permissions are
+@c <en>typically tighter than you would use if you are not
+@c <en>using pserver.
+observe que já que o diretório @file{$CVSROOT/CVSROOT}
+contém o arquivo @file{passwd} e outros arquivos que
+são usados para verificações de segurança, você deve
+controlar as permissões neste diretório com o mesmo
+cuidado que tem com as permissões em @file{/etc}. O
+mesmo se aplica ao próprio diretório @file{$CVSROOT} e
+qualquer diretório acima dele na árvore de diretórios.
+Qualquer pessoas que tenha permissão de escrita a algum
+destes diretórios vai ter a habilidade de se tornar
+qualquer usuário do sistema. Observe que estas
+permissões são em geral mais rígidas que as que você
+usaria se você não estivesse usando o pserver.
+@c TODO: Would be really nice to document/implement a
+@c scheme where the CVS server can run as some non-root
+@c user, e.g. "cvs". CVSROOT/passwd would contain a
+@c bunch of entries of the form foo:xxx:cvs (or the "cvs"
+@c would be implicit). This would greatly reduce
+@c security risks such as those hinted at in the
+@c previous paragraph. I think minor changes to CVS
+@c might be required but mostly this would just need
+@c someone who wants to play with it, document it, &c.
+
+@c <en>In summary, anyone who gets the password gets
+@c <en>repository access (which may imply some measure of general system
+@c <en>access as well). The password is available to anyone
+@c <en>who can sniff network packets or read a protected
+@c <en>(i.e., user read-only) file. If you want real
+@c <en>security, get Kerberos.
+Resumindo, qualquer um que consiga as senhas vai ter
+acesso ao repositório (que implica de certa forma
+acesso ao sistema em geral). A senha está disponível
+para qualquer um que possa ???sniff??? pacotes de rede
+ou ler um arquivo protegido (i.e., somente-leitura para
+usuários). Se você quer segurança real, use Kerberos.
+
+@c <en>@node GSSAPI authenticated
+@node Autenticação GSSAPI
+@c <en>@subsection Direct connection with GSSAPI
+@subsection Conexão direta com GSSAPI
+
+@c <en>@cindex GSSAPI
+@cindex GSSAPI
+@c <en>@cindex Security, GSSAPI
+@cindex Segurança, GSSAPI
+@c <en>@cindex :gserver:, setting up
+@cindex :gserver:, ajustando
+@c <en>@cindex Kerberos, using :gserver:
+@cindex Kerberos, usando :gserver:
+@c <en>GSSAPI is a generic interface to network security
+@c <en>systems such as Kerberos 5.
+@c <en>If you have a working GSSAPI library, you can have
+@c <en>@sc{cvs} connect via a direct @sc{tcp} connection,
+@c <en>authenticating with GSSAPI.
+GSSAPI é uma interface genérica para sistemas de
+segurança em rede como o Kerberos 5. Se você tem uma
+biblioteca GSSAPI funcionando, você pode ter seu
+@sc{cvs} conectado via uma conexão @sc{tcp} direta, se
+autenticando com GSSAPI.
+
+@c <en>To do this, @sc{cvs} needs to be compiled with GSSAPI
+@c <en>support; when configuring @sc{cvs} it tries to detect
+@c <en>whether GSSAPI libraries using kerberos version 5 are
+@c <en>present. You can also use the @file{--with-gssapi}
+@c <en>flag to configure.
+Para isto, o @sc{cvs} precisa ter sido compilado com
+suporte a GSSAPI; quando você estiver configurando o
+@sc{cvs} ele vai tentar detectar se as bibliotecas
+GSSAPI usando kerberos versão 5 estão presentes. Você
+também pode configurar isto com opção @file{--with-gssapi}.
+
+@c <en>The connection is authenticated using GSSAPI, but the
+@c <en>message stream is @emph{not} authenticated by default.
+@c <en>You must use the @code{-a} global option to request
+@c <en>stream authentication.
+A conexão é autenticada usando GSSAPI, mas o fluxo de
+mensagem @emph{não é} autenticado por padrão. Você deve
+usar a opção global @code{-a} para pedir autenticação
+de fluxo.
+
+@c <en>The data transmitted is @emph{not} encrypted by
+@c <en>default. Encryption support must be compiled into both
+@c <en>the client and the server; use the
+@c <en>@file{--enable-encrypt} configure option to turn it on.
+@c <en>You must then use the @code{-x} global option to
+@c <en>request encryption.
+Os dados transmitidos @emph{não} são criptografados por
+padrão. Suporte a criptografia deve ser compilado
+tanto no cliente quanto no servidor; use a opção de
+configuração @file{--enable-encrypt} para ativar isto.
+Com isto você deve usar a opção global @code{-x} para
+pedir criptografia.
+
+@c <en>GSSAPI connections are handled on the server side by
+@c <en>the same server which handles the password
+@c <en>authentication server; see @ref{Password authentication
+@c <en>server}. If you are using a GSSAPI mechanism such as
+@c <en>Kerberos which provides for strong authentication, you
+@c <en>will probably want to disable the ability to
+@c <en>authenticate via cleartext passwords. To do so, create
+@c <en>an empty @file{CVSROOT/passwd} password file, and set
+@c <en>@code{SystemAuth=no} in the config file
+@c <en>(@pxref{config}).
+Conexões GSSAPI são tratadas no lado servidor pelo
+mesmo servidor que cuida de autenticação por senha;
+veja em @ref{Servidor de autenticação por senha}. Se
+você está usando um mecanismo GSSAPI como o Kerberos,
+que fornece autenticação forte, você vai provavelmente
+querer impedir autenticação via senhas em texto plano.
+Para tal, crie um arquivo de senha
+@file{CVSROOT/passwd} vazio e faça @code{SystemAuth=no}
+no arquivo config (@pxref{config}).
+
+@c <en>The GSSAPI server uses a principal name of
+@c <en>cvs/@var{hostname}, where @var{hostname} is the
+@c <en>canonical name of the server host. You will have to
+@c <en>set this up as required by your GSSAPI mechanism.
+O servidor GSSAPI usa um nome principal de
+cvs/@var{hostname}, onde @var{hostname} é o nome
+canônico da máquina servidora. Você vai ter que
+ajustar isto como é exigido pelo seu mecanismo GSSAPI.
+
+@c <en>To connect using GSSAPI, use @samp{:gserver:}. For
+@c <en>example,
+Para se conectar usando GSSAPI, use @samp{:gserver:}. Por
+exemplo,
+
+@example
+cvs -d :gserver:faun.example.org:/usr/local/cvsroot checkout foo
+@end example
+
+@c <en>@node Kerberos authenticated
+@node Autenticação kerberos
+@c <en>@subsection Direct connection with kerberos
+@subsection Conexão direta com kerberos
+
+@c <en>@cindex Kerberos, using :kserver:
+@cindex Kerberos, usando :kserver:
+@c <en>@cindex Security, kerberos
+@cindex Segurança, kerberos
+@c <en>@cindex :kserver:, setting up
+@cindex :kserver:, ajustando
+@c <en>The easiest way to use kerberos is to use the kerberos
+@c <en>@code{rsh}, as described in @ref{Connecting via rsh}.
+@c <en>The main disadvantage of using rsh is that all the data
+@c <en>needs to pass through additional programs, so it may be
+@c <en>slower. So if you have kerberos installed you can
+@c <en>connect via a direct @sc{tcp} connection,
+@c <en>authenticating with kerberos.
+A forma mais fácil de usar kerberos é usar o @code{rsh}
+kerberos, como descrito em @ref{Se conectando via
+rsh}. A principal desvantagem de usar rsh é que todos
+os dados precisam passar por outros programas, o que é
+mais lento. Portanto, se você tem kerberos instalado,
+você pode se conectar via conexão @sc{tcp} direta,
+autenticando com kerberos.
+
+@c <en>This section concerns the kerberos network security
+@c <en>system, version 4. Kerberos version 5 is supported via
+@c <en>the GSSAPI generic network security interface, as
+@c <en>described in the previous section.
+Esta seção diz respeito ao sistema de segurança de rede
+kerberos (kerberos network security system), versão 4.
+Kerberos versão 5 é suportado pela interface de
+segurança de rede genérica GSSAPI, como descrito na
+seção anterior.
+
+@c <en>To do this, @sc{cvs} needs to be compiled with kerberos
+@c <en>support; when configuring @sc{cvs} it tries to detect
+@c <en>whether kerberos is present or you can use the
+@c <en>@file{--with-krb4} flag to configure.
+Para isto, o @sc{cvs} precisa ter sido compilado com
+suporte a kerberos; quando você estiver configurando o
+@sc{cvs} ele vai tentar detectar se as bibliotecas
+kerberos estão presentes ou você pode configurar isto
+com a opção @file{--with-krb4}.
+
+@c <en>The data transmitted is @emph{not} encrypted by
+@c <en>default. Encryption support must be compiled into both
+@c <en>the client and server; use the
+@c <en>@file{--enable-encryption} configure option to turn it
+@c <en>on. You must then use the @code{-x} global option to
+@c <en>request encryption.
+Os dados transmitidos @emph{não} são criptografados por
+padrão. Suporte a criptografia deve ser compilado
+tanto no cliente quanto no servidor; use a opção de
+configuração @file{--enable-encryption} para ativar
+isto. Você deve então usar a opção global @code{-x}
+para pedir criptografia.
+
+@c <en>@cindex CVS_CLIENT_PORT
+@cindex CVS_CLIENT_PORT
+@c <en>You need to edit @file{inetd.conf} on the server
+@c <en>machine to run @code{cvs kserver}. The client uses
+@c <en>port 1999 by default; if you want to use another port
+@c <en>specify it in the @code{CVSROOT} (@pxref{Remote repositories})
+@c <en>or the @code{CVS_CLIENT_PORT} environment variable
+@c <en>(@pxref{Environment variables}) on the client.
+Você precisa editar o @file{inetd.conf} no servidor
+para rodar @code{cvs kserver}. O cliente usa a porta
+1999 por padrão; se você quer usar outra porta
+especifique ela no @code{CVSROOT} (@pxref{Repositórios remotos})
+ou na variável de ambiente @code{CVS_CLIENT_PORT}
+(@pxref{Variáveis de ambiente}) no cliente.
+
+@c <en>@cindex kinit
+@cindex kinit
+@c <en>When you want to use @sc{cvs}, get a ticket in the
+@c <en>usual way (generally @code{kinit}); it must be a ticket
+@c <en>which allows you to log into the server machine. Then
+@c <en>you are ready to go:
+Quando você quiser usar o @sc{cvs}, pegue um tíquete da
+forma usual (geralmente @code{kinit}); ele pode ser um
+tíquete que te permite se autenticar na máquina
+servidora. Então você estará pronto para seguir:
+
+@example
+cvs -d :kserver:faun.example.org:/usr/local/cvsroot checkout foo
+@end example
+
+@c <en>Previous versions of @sc{cvs} would fall back to a
+@c <en>connection via rsh; this version will not do so.
+Versões anteriores do @sc{cvs} podem recair numa
+conexão via rsh; esta versão não vai fazer isso.
+
+@c <en>@node Connecting via fork
+@node Conectando via fork
+@c <en>@subsection Connecting with fork
+@subsection Conectando via fork
+
+@c <en>@cindex fork, access method
+@cindex fork, método de acesso
+@c <en>@cindex :fork:, setting up
+@cindex :fork:, ajustando
+@c <en>This access method allows you to connect to a
+@c <en>repository on your local disk via the remote protocol.
+@c <en>In other words it does pretty much the same thing as
+@c <en>@code{:local:}, but various quirks, bugs and the like are
+@c <en>those of the remote @sc{cvs} rather than the local
+@c <en>@sc{cvs}.
+Este método de acesso permite a você conectar a um
+repositório no seu disco local via um protocolo
+remoto. Em outras palavras, ele faz praticamente a
+mesma coisa que @code{:local:}, mas várias peduliaridades, paus
+e coisas do gênero são os mesmos do @sc{cvs} remoto ao
+invés do @sc{cvs} local.
+
+@c <en>For day-to-day operations you might prefer either
+@c <en>@code{:local:} or @code{:fork:}, depending on your
+@c <en>preferences. Of course @code{:fork:} comes in
+@c <en>particularly handy in testing or
+@c <en>debugging @code{cvs} and the remote protocol.
+@c <en>Specifically, we avoid all of the network-related
+@c <en>setup/configuration, timeouts, and authentication
+@c <en>inherent in the other remote access methods but still
+@c <en>create a connection which uses the remote protocol.
+Para trabalhar no dia-a-dia você vai preferir ou o
+@code{:local:} ou o @code{:fork:}, dependendo de suas
+preferências. É claro que @code{:fork:} é bastante
+útil em testes ou depuração do @code{cvs} e o protocolo
+remoto. Especificamente, nós evitamos todas as
+configurações/ajustes relacionados a redes, sessões
+expirando e autenticação inerentes de métodos de acesso
+remoto mas ainda assim criamos uma conexão que usa o
+protocolo remoto.
+
+@c <en>To connect using the @code{fork} method, use
+@c <en>@samp{:fork:} and the pathname to your local
+@c <en>repository. For example:
+Para se conectar usando o método @code{fork}, use
+@samp{:fork:} e o caminho para seu repositório local.
+Por exemplo:
+
+@example
+cvs -d :fork:/usr/local/cvsroot checkout foo
+@end example
+
+@c <en>@cindex CVS_SERVER, and :fork:
+@cindex CVS_SERVER, and :fork:
+@c <en>As with @code{:ext:}, the server is called @samp{cvs}
+@c <en>by default, or the value of the @code{CVS_SERVER}
+@c <en>environment variable.
+Assim como com @code{:ext:}, o servidor é chamado
+@samp{cvs} por padrão, ou o valor da variável de
+ambiente @code{CVS_SERVER}.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Read-only access
+@node Acesso somente-leitura
+@c <en>@section Read-only repository access
+@section Acesso somente-leitura ao repositório
+@c <en>@cindex Read-only repository access
+@cindex Acesso somente-leitura ao repositório
+@c <en>@cindex readers (admin file)
+@cindex readers (arquivo administrativo)
+@c <en>@cindex writers (admin file)
+@cindex writers (arquivo administrativo)
+
+@c <en> It is possible to grant read-only repository
+@c <en>access to people using the password-authenticated
+@c <en>server (@pxref{Password authenticated}). (The
+@c <en>other access methods do not have explicit support for
+@c <en>read-only users because those methods all assume login
+@c <en>access to the repository machine anyway, and therefore
+@c <en>the user can do whatever local file permissions allow
+@c <en>her to do.)
+ É possível permitir acesso somente-leitura ao
+repositório a pessoas usando o servidor de autenticação
+por senha (@pxref{Autenticação por senha}). (Os outros
+métodos de acesso não tem suporte explícito para
+somente-leitura de usuários, já que todos estes métodos
+assumem acesso por login à máquina do repositório de
+qualquer forma, e portanto o usuário pode fazer o que
+as permissões de arquivos locais permitirem.)
+
+@c <en> A user who has read-only access can do only
+@c <en>those @sc{cvs} operations which do not modify the
+@c <en>repository, except for certain ``administrative'' files
+@c <en>(such as lock files and the history file). It may be
+@c <en>desirable to use this feature in conjunction with
+@c <en>user-aliasing (@pxref{Password authentication server}).
+Um usuário que tem acesso somente-leitura pode realizar
+apenas as operações do @sc{cvs} que não modificam o
+repositório, exceto alguns arquivos ``administrativos''
+(tais como arquivos de trava e o arquivo history).
+Pode ser desejável usar esta habilidade em conjunto com
+???``user-aliasing''??? (@pxref{Servidor de autenticação por
+senha}).
+
+@c <en>Unlike with previous versions of @sc{cvs}, read-only
+@c <en>users should be able merely to read the repository, and
+@c <en>not to execute programs on the server or otherwise gain
+@c <en>unexpected levels of access. Or to be more accurate,
+@c <en>the @emph{known} holes have been plugged. Because this
+@c <en>feature is new and has not received a comprehensive
+@c <en>security audit, you should use whatever level of
+@c <en>caution seems warranted given your attitude concerning
+@c <en>security.
+Ao contrário de versões anteriores do @sc{cvs},
+usuários somente-leitura são capazes de simplesmente
+ler o repositório, e não de executar programas no
+servidor ou ainda conseguir níveis de acessos extras.
+Ou, para ser mais preciso, os papéis @emph{conhecidos}
+foram ???plugged???. Pelo fato de esta característica
+ser nova e ainda não ter recebido uma auditoria de
+segurança abrangente, você deve usar quaisquer níveis
+de precaução que pareçam seguros de acordo com a sua
+forma de agir com respeito a segurança.
+
+@c <en> There are two ways to specify read-only access
+@c <en>for a user: by inclusion, and by exclusion.
+ Existem duas formas de estabelecer acesso
+somente-leitura para um usuário: por inclusão ou por exclusão.
+
+@c <en> "Inclusion" means listing that user
+@c <en>specifically in the @file{$CVSROOT/CVSROOT/readers}
+@c <en>file, which is simply a newline-separated list of
+@c <en>users. Here is a sample @file{readers} file:
+ "Inclusão" significa botar aquele usuário
+específico no arquivo @file{$CVSROOT/CVSROOT/readers},
+que é simplesmente uma lista de usuários separados por
+quebra de linha. Aqui está um exemplo do @file{readers}:
+
+@example
+melissa
+splotnik
+jrandom
+@end example
+
+@noindent
+@c <en> (Don't forget the newline after the last user.)
+ (Não esqueça a quebra de linha depois do último
+usuário.)
+
+@c <en> "Exclusion" means explicitly listing everyone
+@c <en>who has @emph{write} access---if the file
+ "Exclusão" significa listar explicitamente
+todos que têm acesso de @emph{escrita}---se o arquivo
+
+@example
+$CVSROOT/CVSROOT/writers
+@end example
+
+@noindent
+@c <en>exists, then only
+@c <en>those users listed in it have write access, and
+@c <en>everyone else has read-only access (of course, even the
+@c <en>read-only users still need to be listed in the
+@c <en>@sc{cvs} @file{passwd} file). The
+@c <en>@file{writers} file has the same format as the
+@c <en>@file{readers} file.
+existe, então apenas os usuários que constam nele teram
+acesso de escrita, e qualquer outra pessoa acesso
+somente-leitura (obviamente, mesmo os usuários
+somente-leitura devem ainda ser listados no arquivo
+@file{passwd} do @sc{cvs}). O arquivo @file{writers}
+tem o mesmo formato do arquivo @file{readers}.
+
+@c <en> Note: if your @sc{cvs} @file{passwd}
+@c <en>file maps cvs users onto system users (@pxref{Password
+@c <en>authentication server}), make sure you deny or grant
+@c <en>read-only access using the @emph{cvs} usernames, not
+@c <en>the system usernames. That is, the @file{readers} and
+@c <en>@file{writers} files contain cvs usernames, which may
+@c <en>or may not be the same as system usernames.
+ Observação: se seu arquivo @file{passwd} do
+@sc{cvs} associa usuários do cvs com usuários do
+sistema (@pxref{Servidor de autenticação por
+senha}), certifique-se de que você esteja
+negando ou fornecendo acesso somente-leitura usando os
+usuários @emph{do cvs}, e não os do sistema. Ou seja,
+os arquivos @file{readers} e @file{writers} contêm
+nomes de usuários do cvs, que não necessáriamente têm o
+mesmo nome que usuários do sistema.
+
+@c <en> Here is a complete description of the server's
+@c <en>behavior in deciding whether to grant read-only or
+@c <en>read-write access:
+ Here is a complete description of the server's
+behavior in deciding whether to grant read-only or
+read-write access:
+
+@c <en> If @file{readers} exists, and this user is
+@c <en>listed in it, then she gets read-only access. Or if
+@c <en>@file{writers} exists, and this user is NOT listed in
+@c <en>it, then she also gets read-only access (this is true
+@c <en>even if @file{readers} exists but she is not listed
+@c <en>there). Otherwise, she gets full read-write access.
+ If @file{readers} exists, and this user is
+listed in it, then she gets read-only access. Or if
+@file{writers} exists, and this user is NOT listed in
+it, then she also gets read-only access (this is true
+even if @file{readers} exists but she is not listed
+there). Otherwise, she gets full read-write access.
+
+@c <en> Of course there is a conflict if the user is
+@c <en>listed in both files. This is resolved in the more
+@c <en>conservative way, it being better to protect the
+@c <en>repository too much than too little: such a user gets
+@c <en>read-only access.
+ Of course there is a conflict if the user is
+listed in both files. This is resolved in the more
+conservative way, it being better to protect the
+repository too much than too little: such a user gets
+read-only access.
+
+@c <en>@node Server temporary directory
+@node Diretório temporário do servidor
+@c <en>@section Temporary directories for the server
+@section Temporary directories for the server
+@c <en>@cindex Temporary directories, and server
+@cindex Temporary directories, and server
+@c <en>@cindex Server, temporary directories
+@cindex Server, temporary directories
+
+@c <en>While running, the @sc{cvs} server creates temporary
+@c <en>directories. They are named
+While running, the @sc{cvs} server creates temporary
+directories. They are named
+
+@example
+cvs-serv@var{pid}
+@end example
+
+@noindent
+@c <en>where @var{pid} is the process identification number of
+@c <en>the server.
+@c <en>They are located in the directory specified by
+@c <en>the @samp{-T} global option (@pxref{Global options}),
+@c <en>the @code{TMPDIR} environment variable (@pxref{Environment variables}),
+@c <en>or, failing that, @file{/tmp}.
+where @var{pid} is the process identification number of
+the server.
+They are located in the directory specified by
+the @samp{-T} global option (@pxref{Opções globais}),
+the @code{TMPDIR} environment variable (@pxref{Variáveis de ambiente}),
+or, failing that, @file{/tmp}.
+
+@c <en>In most cases the server will remove the temporary
+@c <en>directory when it is done, whether it finishes normally
+@c <en>or abnormally. However, there are a few cases in which
+@c <en>the server does not or cannot remove the temporary
+@c <en>directory, for example:
+In most cases the server will remove the temporary
+directory when it is done, whether it finishes normally
+or abnormally. However, there are a few cases in which
+the server does not or cannot remove the temporary
+directory, for example:
+
+@itemize @bullet
+@item
+@c <en>If the server aborts due to an internal server error,
+@c <en>it may preserve the directory to aid in debugging
+If the server aborts due to an internal server error,
+it may preserve the directory to aid in debugging
+
+@item
+@c <en>If the server is killed in a way that it has no way of
+@c <en>cleaning up (most notably, @samp{kill -KILL} on unix).
+If the server is killed in a way that it has no way of
+cleaning up (most notably, @samp{kill -KILL} on unix).
+
+@item
+@c <en>If the system shuts down without an orderly shutdown,
+@c <en>which tells the server to clean up.
+If the system shuts down without an orderly shutdown,
+which tells the server to clean up.
+@end itemize
+
+@c <en>In cases such as this, you will need to manually remove
+@c <en>the @file{cvs-serv@var{pid}} directories. As long as
+@c <en>there is no server running with process identification
+@c <en>number @var{pid}, it is safe to do so.
+In cases such as this, you will need to manually remove
+the @file{cvs-serv@var{pid}} directories. As long as
+there is no server running with process identification
+number @var{pid}, it is safe to do so.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Starting a new project
+@node Começando um novo projeto
+@c <en>@chapter Starting a project with CVS
+@chapter Começando um projeto com o CVS
+@c <en>@cindex Starting a project with CVS
+@cindex Começando um projeto com CVS
+@c <en>@cindex Creating a project
+@cindex Criando um projeto
+
+@comment --moduledb--
+@c <en>Because renaming files and moving them between
+@c <en>directories is somewhat inconvenient, the first thing
+@c <en>you do when you start a new project should be to think
+@c <en>through your file organization. It is not impossible
+@c <en>to rename or move files, but it does increase the
+@c <en>potential for confusion and @sc{cvs} does have some
+@c <en>quirks particularly in the area of renaming
+@c <en>directories. @xref{Moving files}.
+Já que renomear e mover arquivos entre diretórios é um
+tanto quanto inconveniente, a primeira coisa a fazer
+quando você começa um novo projeto deve ser ponderar a
+respeito da organização dos arquivos. Não é impossível
+renomear ou mover arquivos, mas isto aumenta as chances
+de erro e o @sc{cvs} tem algumas idiossincrasias em
+especial quanto a renomear diretórios. @xref{Movendo arquivos}.
+
+@c <en>What to do next depends on the situation at hand.
+O que fazer depende da situação em que você está.
+
+@menu
+@c <en>* Setting up the files:: Getting the files into the repository
+* Ajustando os arquivos:: Botando os arquivos no repositório
+@c <en>* Defining the module:: How to make a module of the files
+* Definindo o módulo:: How to make a module of the files
+@end menu
+@c -- File permissions!
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Setting up the files
+@node Ajustando os arquivos
+@c <en>@section Setting up the files
+@section Ajustando os arquivos
+
+@c <en>The first step is to create the files inside the repository. This can
+@c <en>be done in a couple of different ways.
+O primeiro passo é criar os arquivos dentro do
+repositório. Isto pode ser feito de algumas maneiras diferentes.
+
+@c -- The contributed scripts
+@menu
+@c <en>* From files:: This method is useful with old projects
+@c <en> where files already exists.
+* De arquivos:: Este método é útil para projetos
+ antigos cujos arquivos já existem.
+@c <en>* From other version control systems:: Old projects where you want to
+@c <en> preserve history from another system.
+* De outros sistemas de controle de versão:: Projetos antigos onde você quer
+ preservar o histórico de outro sistema.
+@c <en>* From scratch:: Creating a directory tree from scratch.
+* Do zero:: Criando uma árvore de diretórios
+ do zero.
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@c <en>@node From files
+@node De arquivos
+@c <en>@subsection Creating a directory tree from a number of files
+@subsection Criando uma árvore de diretórios de uma quantidade de arquivos
+@c <en>@cindex Importing files
+@cindex Importando arquivos
+
+@c <en>When you begin using @sc{cvs}, you will probably already have several
+@c <en>projects that can be
+@c <en>put under @sc{cvs} control. In these cases the easiest way is to use the
+@c <en>@code{import} command. An example is probably the easiest way to
+@c <en>explain how to use it. If the files you want to install in
+@c <en>@sc{cvs} reside in @file{@var{wdir}}, and you want them to appear in the
+@c <en>repository as @file{$CVSROOT/yoyodyne/@var{rdir}}, you can do this:
+Quando você começa a usar o @sc{cvs}, provavelmente vai
+ter vários projetos que podem ser postos sob controle
+do @sc{cvs}. Nestes casos a forma mais fácil é usar o
+comando @code{import}. Um exemplo é provavelmente a
+forma mais fácil de explicar como se usa o
+@code{import}. Se os arquivos que você quer instalar
+no @sc{cvs} estão em @file{@var{wdir}}, e você quer que
+eles estejam no repositório
+@file{$CVSROOT/yoyodyne/@var{rdir}}, você pode fazer isto:
+
+@example
+$ cd @var{wdir}
+$ cvs import -m "Imported sources" yoyodyne/@var{rdir} yoyo start
+@end example
+
+@c <en>Unless you supply a log message with the @samp{-m}
+@c <en>flag, @sc{cvs} starts an editor and prompts for a
+@c <en>message. The string @samp{yoyo} is a @dfn{vendor tag},
+@c <en>and @samp{start} is a @dfn{release tag}. They may fill
+@c <en>no purpose in this context, but since @sc{cvs} requires
+@c <en>them they must be present. @xref{Tracking sources}, for
+@c <en>more information about them.
+A menos que você forneca uma mensagem de log (registro)
+com a opção @samp{-m}, o @sc{cvs} vai iniciar um editor
+e esperar uma mensagem. A string @samp{yoyo} é uma
+@dfn{etiqueta de fornecedor} (vendor tag), e
+@samp{start} é uma @dfn{etiqueta de release} (release
+tag). Eles podem não fazer sentido neste contexto, mas
+já que o @sc{cvs} exige, elas devem estar presentes.
+@xref{Acompanhando fontes}, para mais informações sobre
+isto.
+
+@c <en>You can now verify that it worked, and remove your
+@c <en>original source directory.
+Você agora pode verificar se está funcionando, e então
+apagar seu diretório do código fonte original.
+@c FIXME: Need to say more about "verify that it
+@c worked". What should the user look for in the output
+@c from "diff -r"?
+
+@example
+$ cd ..
+@c <en>$ cvs checkout yoyodyne/@var{rdir} # @r{Explanation below}
+$ cvs checkout yoyodyne/@var{rdir} # @r{Explanation below}
+$ diff -r @var{wdir} yoyodyne/@var{rdir}
+$ rm -r @var{wdir}
+@end example
+
+@noindent
+@c <en>Erasing the original sources is a good idea, to make sure that you do
+@c <en>not accidentally edit them in @var{wdir}, bypassing @sc{cvs}.
+@c <en>Of course, it would be wise to make sure that you have
+@c <en>a backup of the sources before you remove them.
+Erasing the original sources is a good idea, to make sure that you do
+not accidentally edit them in @var{wdir}, bypassing @sc{cvs}.
+Of course, it would be wise to make sure that you have
+a backup of the sources before you remove them.
+
+@c <en>The @code{checkout} command can either take a module
+@c <en>name as argument (as it has done in all previous
+@c <en>examples) or a path name relative to @code{$CVSROOT},
+@c <en>as it did in the example above.
+The @code{checkout} command can either take a module
+name as argument (as it has done in all previous
+examples) or a path name relative to @code{$CVSROOT},
+as it did in the example above.
+
+@c <en>It is a good idea to check that the permissions
+@c <en>@sc{cvs} sets on the directories inside @code{$CVSROOT}
+@c <en>are reasonable, and that they belong to the proper
+@c <en>groups. @xref{File permissions}.
+It is a good idea to check that the permissions
+@sc{cvs} sets on the directories inside @code{$CVSROOT}
+are reasonable, and that they belong to the proper
+groups. @xref{Permissões de arquivos}.
+
+@c <en>If some of the files you want to import are binary, you
+@c <en>may want to use the wrappers features to specify which
+@c <en>files are binary and which are not. @xref{Wrappers}.
+If some of the files you want to import are binary, you
+may want to use the wrappers features to specify which
+files are binary and which are not. @xref{Wrappers}.
+
+@c The node name is too long, but I am having trouble
+@c thinking of something more concise.
+@c <en>@node From other version control systems
+@node De outros sistemas de controle de versão
+@c <en>@subsection Creating Files From Other Version Control Systems
+@subsection Criando os Arquivos de Outros Sistemas de Controle de Versões
+@c <en>@cindex Importing files, from other version control systems
+@cindex Outros Sistemas de Controle de Versões, Importando Arquivos de
+
+@c <en>If you have a project which you are maintaining with
+@c <en>another version control system, such as @sc{rcs}, you
+@c <en>may wish to put the files from that project into
+@c <en>@sc{cvs}, and preserve the revision history of the
+@c <en>files.
+If you have a project which you are maintaining with
+another version control system, such as @sc{rcs}, you
+may wish to put the files from that project into
+@sc{cvs}, and preserve the revision history of the
+files.
+
+@table @asis
+@cindex RCS, importing files from
+@cindex RCS, importing files from
+@item From RCS
+@item From RCS
+@c <en>If you have been using @sc{rcs}, find the @sc{rcs}
+@c <en>files---usually a file named @file{foo.c} will have its
+@c <en>@sc{rcs} file in @file{RCS/foo.c,v} (but it could be
+@c <en>other places; consult the @sc{rcs} documentation for
+@c <en>details). Then create the appropriate directories in
+@c <en>@sc{cvs} if they do not already exist. Then copy the
+@c <en>files into the appropriate directories in the @sc{cvs}
+@c <en>repository (the name in the repository must be the name
+@c <en>of the source file with @samp{,v} added; the files go
+@c <en>directly in the appropriate directory of the repository,
+@c <en>not in an @file{RCS} subdirectory). This is one of the
+@c <en>few times when it is a good idea to access the @sc{cvs}
+@c <en>repository directly, rather than using @sc{cvs}
+@c <en>commands. Then you are ready to check out a new
+@c <en>working directory.
+If you have been using @sc{rcs}, find the @sc{rcs}
+files---usually a file named @file{foo.c} will have its
+@sc{rcs} file in @file{RCS/foo.c,v} (but it could be
+other places; consult the @sc{rcs} documentation for
+details). Then create the appropriate directories in
+@sc{cvs} if they do not already exist. Then copy the
+files into the appropriate directories in the @sc{cvs}
+repository (the name in the repository must be the name
+of the source file with @samp{,v} added; the files go
+directly in the appropriate directory of the repository,
+not in an @file{RCS} subdirectory). This is one of the
+few times when it is a good idea to access the @sc{cvs}
+repository directly, rather than using @sc{cvs}
+commands. Then you are ready to check out a new
+working directory.
+@c Someday there probably should be a "cvs import -t
+@c rcs" or some such. It could even create magic
+@c branches. It could also do something about the case
+@c where the RCS file had a (non-magic) "0" branch.
+
+@c <en>The @sc{rcs} file should not be locked when you move it
+@c <en>into @sc{cvs}; if it is, @sc{cvs} will have trouble
+@c <en>letting you operate on it.
+The @sc{rcs} file should not be locked when you move it
+into @sc{cvs}; if it is, @sc{cvs} will have trouble
+letting you operate on it.
+@c What is the easiest way to unlock your files if you
+@c have them locked? Especially if you have a lot of them?
+@c This is a CVS bug/misfeature; importing RCS files
+@c should ignore whether they are locked and leave them in
+@c an unlocked state. Yet another reason for a separate
+@c "import RCS file" command.
+
+@c How many is "many"? Or do they just import RCS files?
+@c <en>@item From another version control system
+@item From another version control system
+@c <en>Many version control systems have the ability to export
+@c <en>@sc{rcs} files in the standard format. If yours does,
+@c <en>export the @sc{rcs} files and then follow the above
+@c <en>instructions.
+Many version control systems have the ability to export
+@sc{rcs} files in the standard format. If yours does,
+export the @sc{rcs} files and then follow the above
+instructions.
+
+@c <en>Failing that, probably your best bet is to write a
+@c <en>script that will check out the files one revision at a
+@c <en>time using the command line interface to the other
+@c <en>system, and then check the revisions into @sc{cvs}.
+@c <en>The @file{sccs2rcs} script mentioned below may be a
+@c <en>useful example to follow.
+Failing that, probably your best bet is to write a
+script that will check out the files one revision at a
+time using the command line interface to the other
+system, and then check the revisions into @sc{cvs}.
+The @file{sccs2rcs} script mentioned below may be a
+useful example to follow.
+
+@c <en>@cindex SCCS, importing files from
+@cindex SCCS, importing files from
+@c <en>@item From SCCS
+@item From SCCS
+@c <en>There is a script in the @file{contrib} directory of
+@c <en>the @sc{cvs} source distribution called @file{sccs2rcs}
+@c <en>which converts @sc{sccs} files to @sc{rcs} files.
+@c <en>Note: you must run it on a machine which has both
+@c <en>@sc{sccs} and @sc{rcs} installed, and like everything
+@c <en>else in contrib it is unsupported (your mileage may
+@c <en>vary).
+There is a script in the @file{contrib} directory of
+the @sc{cvs} source distribution called @file{sccs2rcs}
+which converts @sc{sccs} files to @sc{rcs} files.
+Note: you must run it on a machine which has both
+@sc{sccs} and @sc{rcs} installed, and like everything
+else in contrib it is unsupported (your mileage may
+vary).
+
+@c <en>@cindex PVCS, importing files from
+@cindex PVCS, importing files from
+@c <en>@item From PVCS
+@item From PVCS
+@c <en>There is a script in the @file{contrib} directory of
+@c <en>the @sc{cvs} source distribution called @file{pvcs_to_rcs}
+@c <en>which converts @sc{pvcs} archives to @sc{rcs} files.
+@c <en>You must run it on a machine which has both
+@c <en>@sc{pvcs} and @sc{rcs} installed, and like everything
+@c <en>else in contrib it is unsupported (your mileage may
+@c <en>vary). See the comments in the script for details.
+There is a script in the @file{contrib} directory of
+the @sc{cvs} source distribution called @file{pvcs_to_rcs}
+which converts @sc{pvcs} archives to @sc{rcs} files.
+You must run it on a machine which has both
+@sc{pvcs} and @sc{rcs} installed, and like everything
+else in contrib it is unsupported (your mileage may
+vary). See the comments in the script for details.
+@end table
+@c CMZ and/or PATCHY were systems that were used in the
+@c high energy physics community (especially for
+@c CERNLIB). CERN has replaced them with CVS, but the
+@c CAR format seems to live on as a way to submit
+@c changes. There is a program car2cvs which converts
+@c but I'm not sure where one gets a copy.
+@c Not sure it is worth mentioning here, since it would
+@c appear to affect only one particular community.
+@c Best page for more information is:
+@c http://wwwcn1.cern.ch/asd/cvs/index.html
+@c See also:
+@c http://ecponion.cern.ch/ecpsa/cernlib.html
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@c <en>@node From scratch
+@node Do zero
+@c <en>@subsection Creating a directory tree from scratch
+@subsection Criando uma árvore de diretórios do zero
+
+@c Also/instead should be documenting
+@c $ cvs co -l .
+@c $ mkdir tc
+@c $ cvs add tc
+@c $ cd tc
+@c $ mkdir man
+@c $ cvs add man
+@c etc.
+@c Using import to create the directories only is
+@c probably a somewhat confusing concept.
+@c <en>For a new project, the easiest thing to do is probably
+@c <en>to create an empty directory structure, like this:
+For a new project, the easiest thing to do is probably
+to create an empty directory structure, like this:
+
+@example
+$ mkdir tc
+$ mkdir tc/man
+$ mkdir tc/testing
+@end example
+
+@c <en>After that, you use the @code{import} command to create
+@c <en>the corresponding (empty) directory structure inside
+@c <en>the repository:
+After that, you use the @code{import} command to create
+the corresponding (empty) directory structure inside
+the repository:
+
+@example
+$ cd tc
+@c <en>$ cvs import -m "Created directory structure" yoyodyne/@var{dir} yoyo start
+$ cvs import -m "Created directory structure" yoyodyne/@var{dir} yoyo start
+@end example
+
+@c <en>Then, use @code{add} to add files (and new directories)
+@c <en>as they appear.
+Then, use @code{add} to add files (and new directories)
+as they appear.
+
+@c <en>Check that the permissions @sc{cvs} sets on the
+@c <en>directories inside @code{$CVSROOT} are reasonable.
+Check that the permissions @sc{cvs} sets on the
+directories inside @code{$CVSROOT} are reasonable.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Defining the module
+@node Definindo o módulo
+@c <en>@section Defining the module
+@section Definindo o módulo
+@c <en>@cindex Defining a module
+@cindex Defining a module
+@c <en>@cindex Editing the modules file
+@cindex Editing the modules file
+@c <en>@cindex Module, defining
+@cindex Module, defining
+@c <en>@cindex Modules file, changing
+@cindex Modules file, changing
+
+@c <en>The next step is to define the module in the
+@c <en>@file{modules} file. This is not strictly necessary,
+@c <en>but modules can be convenient in grouping together
+@c <en>related files and directories.
+The next step is to define the module in the
+@file{modules} file. This is not strictly necessary,
+but modules can be convenient in grouping together
+related files and directories.
+
+@c <en>In simple cases these steps are sufficient to define a module.
+In simple cases these steps are sufficient to define a module.
+
+@enumerate
+@item
+@c <en>Get a working copy of the modules file.
+Get a working copy of the modules file.
+
+@example
+$ cvs checkout CVSROOT/modules
+$ cd CVSROOT
+@end example
+
+@item
+@c <en>Edit the file and insert a line that defines the module. @xref{Intro
+@c <en>administrative files}, for an introduction. @xref{modules}, for a full
+@c <en>description of the modules file. You can use the
+@c <en>following line to define the module @samp{tc}:
+Edit the file and insert a line that defines the module.
+@xref{Intro aos arquivos administrativos}, for an
+introduction. @xref{modules}, for a full description
+of the modules file. You can use the following line to
+define the module @samp{tc}:
+
+@example
+tc yoyodyne/tc
+@end example
+
+@item
+@c <en>Commit your changes to the modules file.
+Commit your changes to the modules file.
+
+@example
+@c <en>$ cvs commit -m "Added the tc module." modules
+$ cvs commit -m "Added the tc module." modules
+@end example
+
+@item
+@c <en>Release the modules module.
+Release the modules module.
+
+@example
+$ cd ..
+$ cvs release -d CVSROOT
+@end example
+@end enumerate
+
+@c ---------------------------------------------------------------------
+@c <en>@node Revisions
+@node Revisões
+@c <en>@chapter Revisions
+@chapter Revisões
+
+@comment <en>For many uses of @sc{cvs}, one doesn't need to worry
+@comment <en>too much about revision numbers; @sc{cvs} assigns
+@comment <en>numbers such as @code{1.1}, @code{1.2}, and so on, and
+@comment <en>that is all one needs to know. However, some people
+@comment <en>prefer to have more knowledge and control concerning
+@comment <en>how @sc{cvs} assigns revision numbers.
+Para muitos usos do @sc{cvs}, não é necessário se
+preocupar com o número de revisões; o @sc{cvs} atribui
+números tais como @code{1.1}, @code{1.2} e por aí vai,
+e isto é tudo que se precisa saber. Entretanto,
+Algumas pessoas preferem ter mais conhecimento e
+controle a respeito de como o @sc{cvs} atribui números
+de revisão.
+
+@c <en>If one wants to keep track of a set of revisions
+@c <en>involving more than one file, such as which revisions
+@c <en>went into a particular release, one uses a @dfn{tag},
+@c <en>which is a symbolic revision which can be assigned to a
+@c <en>numeric revision in each file.
+Se você quiser marcar um conjunto de revisões
+envolvendo mais de um arquivo, tais como as revisões
+que integram uma release, pode usar uma @dfn{etiqueta} (tag),
+que é uma revisão simbólica que pode ser associada a uma
+revisão numérica em cada um dos arquivos.
+
+@menu
+@c <en>* Revision numbers:: The meaning of a revision number
+* Números de revisão:: O significado dos números de revisão
+@c <en>* Versions revisions releases:: Terminology used in this manual
+* Versões revisões releases:: Terminologia usada neste manual
+@c <en>* Assigning revisions:: Assigning revisions
+* Atribuindo revisões:: Atribuindo revisões
+@c <en>* Tags:: Tags--Symbolic revisions
+* Etiquetas:: Etiquetas (Tags)--Revisões Simbólicas
+@c <en>* Tagging the working directory:: The cvs tag command
+* Etiquetando o diretório de trabalho:: O comando cvs tag
+@c <en>* Tagging by date/tag:: The cvs rtag command
+* Etiquetando por data/etiqueta:: O comando cvs rtag
+@c <en>* Modifying tags:: Adding, renaming, and deleting tags
+* Modificando etiquetas:: Adicionando, renomeando e apagando etiquetas
+@c <en>* Tagging add/remove:: Tags with adding and removing files
+* Etiquetando adicionados/removidos:: Etiquetas com arquivos adicionados e removidos
+@c <en>* Sticky tags:: Certain tags are persistent
+* Etiquetas adesivas:: Certas etiquetas são persistentes
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Revision numbers
+@node Números de revisão
+@c <en>@section Revision numbers
+@section Números de revisão
+@c <en>@cindex Revision numbers
+@cindex Números de revisão
+@c <en>@cindex Revision tree
+@cindex Árvore de revisão
+@c <en>@cindex Linear development
+@cindex Desenvolvimento linear
+@c <en>@cindex Number, revision-
+@cindex Revisão, número de
+@c <en>@cindex Decimal revision number
+@cindex Número de revisão decimal
+@c <en>@cindex Branch number
+@cindex Número de ramo
+@c <en>@cindex Number, branch
+@cindex Ramo, número de
+
+@c <en>Each version of a file has a unique @dfn{revision
+@c <en>number}. Revision numbers look like @samp{1.1},
+@c <en>@samp{1.2}, @samp{1.3.2.2} or even @samp{1.3.2.2.4.5}.
+@c <en>A revision number always has an even number of
+@c <en>period-separated decimal integers. By default revision
+@c <en>1.1 is the first revision of a file. Each successive
+@c <en>revision is given a new number by increasing the
+@c <en>rightmost number by one. The following figure displays
+@c <en>a few revisions, with newer revisions to the right.
+Cada versão de um arquivo tem um @dfn{número de
+revisão} único. Números de revisão são coisas do tipo
+@samp{1.1}, @samp{1.2}, @samp{1.3.2.2} ou até mesmo
+@samp{1.3.2.2.4.5}. Um número de revisão sempre tem uma
+quantidade par de números inteiros na base dez
+separados por ponto. Por padrão, a revisão 1.1 é a
+primeira revisão de um arquivo. Cada revisão sucessiva
+ganha um novo número somando um ao número mais a
+direita. A figura a seguir mostra mostra algumas
+revisões, com a revisão mais nova mais à direita.
+
+@example
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+@end example
+
+@c <en>It is also possible to end up with numbers containing
+@c <en>more than one period, for example @samp{1.3.2.2}. Such
+@c <en>revisions represent revisions on branches
+@c <en>(@pxref{Branching and merging}); such revision numbers
+@c <en>are explained in detail in @ref{Branches and
+@c <en>revisions}.
+Também é possível ter números com mais de um ponto, por
+exemplo @samp{1.3.2.2}. Tais revisões representam
+revisões em ramos (@pxref{Ramificando e mesclando});
+estes números de revisão são explicados em detalhes em
+@ref{Ramos e revisões}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Versions revisions releases
+@node Versões revisões releases
+@c <en>@section Versions, revisions and releases
+@section Versões, revisões e releases
+@c <en>@cindex Revisions, versions and releases
+@cindex Revisões, versões e releases
+@c <en>@cindex Versions, revisions and releases
+@cindex Versões, revisões e releases
+@c <en>@cindex Releases, revisions and versions
+@cindex Releases, revisões e versões
+
+@c <en>A file can have several versions, as described above.
+@c <en>Likewise, a software product can have several versions.
+@c <en>A software product is often given a version number such
+@c <en>as @samp{4.1.1}.
+Um arquivo pode ter várias versões, como descrito
+acima. Da mesma forma, um produto de software também
+pode ter várias versões. Frequentemente um produto de
+software recebe um número de versão, tal como @samp{4.1.1}.
+
+@c <en>Versions in the first sense are called @dfn{revisions}
+@c <en>in this document, and versions in the second sense are
+@c <en>called @dfn{releases}. To avoid confusion, the word
+@c <en>@dfn{version} is almost never used in this document.
+Versões, neste documento são chamadas, principalmente,
+de @dfn{revisões} , e também de @dfn{releases}. Para evitar
+confusão, o termo @dfn{versão} praticamente não é usado
+neste documento.
+
+@c <en>@node Assigning revisions
+@node Atribuindo revisões
+@c <en>@section Assigning revisions
+@section Atribuindo revisões
+
+@c We avoid the "major revision" terminology. It seems
+@c like jargon. Hopefully "first number" is clear enough.
+@c
+@c Well, in the context of software release numbers,
+@c "major" and "minor" release or version numbers are
+@c documented in at least the GNU Coding Standards, but I'm
+@c still not sure I find that a valid reason to apply the
+@c terminology to RCS revision numbers. "First", "Second",
+@c "subsequent", and so on is almost surely clearer,
+@c especially to a novice reader. -DRP
+@c <en>By default, @sc{cvs} will assign numeric revisions by
+@c <en>leaving the first number the same and incrementing the
+@c <en>second number. For example, @code{1.1}, @code{1.2},
+@c <en>@code{1.3}, etc.
+Por padrão, @sc{cvs} vai atribuir revisões numéricas
+mantendo o primeiro número e aumentando o segundo. Por
+exemplo, @code{1.1}, @code{1.2}, @code{1.3}, etc.
+
+@c <en>When adding a new file, the second number will always
+@c <en>be one and the first number will equal the highest
+@c <en>first number of any file in that directory. For
+@c <en>example, the current directory contains files whose
+@c <en>highest numbered revisions are @code{1.7}, @code{3.1},
+@c <en>and @code{4.12}, then an added file will be given the
+@c <en>numeric revision @code{4.1}.
+Quando um novo arquivo é adicionado, o segundo número
+vai ser sempre o um e o primeiro número vai ser igual
+ao maior primeiro número de qualquer arquivo no
+diretório. Por exemplo, se o diretório atual contiver
+arquivos os quais o maior número de revisão seram
+@code{1.7}, @code{3.1} e @code{4.12}, então um arquivo
+adicionado vai receber a revisão numérica @code{4.1}.
+
+@c This is sort of redundant with something we said a
+@c while ago. Somewhere we need a better way of
+@c introducing how the first number can be anything
+@c except "1", perhaps. Also I don't think this
+@c presentation is clear on why we are discussing releases
+@c and first numbers of numeric revisions in the same
+@c breath.
+@c <en>Normally there is no reason to care
+@c <en>about the revision numbers---it is easier to treat them
+@c <en>as internal numbers that @sc{cvs} maintains, and tags
+@c <en>provide a better way to distinguish between things like
+@c <en>release 1 versus release 2 of your product
+@c <en>(@pxref{Tags}). However, if you want to set the
+@c <en>numeric revisions, the @samp{-r} option to @code{cvs
+@c <en>commit} can do that. The @samp{-r} option implies the
+@c <en>@samp{-f} option, in the sense that it causes the
+@c <en>files to be committed even if they are not modified.
+Normalmente não há razão para se preocupar com números
+de revisão---é melhor tratá-los como numeração interna
+que o @sc{cvs} mantém, e etiquetas (tags) fornecem uma
+forma melhor de distinguir entre coisas tais como
+release 1 e release 2 de seu produto
+(@pxref{Etiquetas}). Entretando, se você quiser
+ajustar as revisões numéricas, a opção @samp{-r} do
+@code{cvs commit} pode fazer isto. A opção @samp{-r}
+implica na opção @samp{-f}, no sentido de que ela faz
+com que os arquivos sejam submetidos mesmo caso eles
+não estejam modificados.
+
+@c <en>For example, to bring all your files up to
+@c <en>revision 3.0 (including those that haven't changed),
+@c <en>you might invoke:
+Por exemplo, para subir todos os arquivos para a
+revisão 3.0 (inclusive os que não sofreram mudanças),
+você deve invocar:
+
+@example
+$ cvs commit -r 3.0
+@end example
+
+@c <en>Note that the number you specify with @samp{-r} must be
+@c <en>larger than any existing revision number. That is, if
+@c <en>revision 3.0 exists, you cannot @samp{cvs commit
+@c <en>-r 1.3}. If you want to maintain several releases in
+@c <en>parallel, you need to use a branch (@pxref{Branching and merging}).
+Observe que o número que você especificar com a opção
+@samp{-r} deve ser maior que qualquer número de revisão
+existente. Ou seja, se a revisão 3.0 existe, você não
+pode fazer @samp{cvs commit -r 1.3}. Se você quiser
+manter várias releases em paralelo, você deve usar um ramo
+(@pxref{Ramificando e mesclando}).
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Tags
+@node Etiquetas
+@c <en>@section Tags--Symbolic revisions
+@section Etiquetas (Tags)--Revisões simbólicas
+@c <en>@cindex Tags
+@cindex Etiquetas
+
+@c <en>The revision numbers live a life of their own. They
+@c <en>need not have anything at all to do with the release
+@c <en>numbers of your software product. Depending
+@c <en>on how you use @sc{cvs} the revision numbers might change several times
+@c <en>between two releases. As an example, some of the
+@c <en>source files that make up @sc{rcs} 5.6 have the following
+@c <en>revision numbers:
+Os números de revisão tem uma vida a parte. Eles não
+precisam ter nada a ver com os números de release de
+seu produto de software. Dependendo de como você usa o
+@sc{cvs}, os números de revisão podem mudar várias
+vezes entre duas releases. Como um exemplo, alguns dos
+arquivos fonte do @sc{rcs} 5.6 tinham os seguintes
+números de revisão:
+@c <en>@cindex RCS revision numbers
+@cindex números de revisão do RCS
+
+@example
+ci.c 5.21
+co.c 5.9
+ident.c 5.3
+rcs.c 5.12
+rcsbase.h 5.11
+rcsdiff.c 5.10
+rcsedit.c 5.11
+rcsfcmp.c 5.9
+rcsgen.c 5.10
+rcslex.c 5.11
+rcsmap.c 5.2
+rcsutil.c 5.10
+@end example
+
+@c <en>@cindex tag (subcommand), introduction
+@cindex tag (subcomando), introdução
+@c <en>@cindex Tags, symbolic name
+@cindex Etiquetas, nome simbólico
+@c <en>@cindex Symbolic name (tag)
+@cindex Nome simbólico (etiqueta)
+@c <en>@cindex Name, symbolic (tag)
+@cindex Simbólico, nome (etiqueta)
+@c <en>@cindex HEAD, as reserved tag name
+@cindex HEAD, nome de etiqueta reservado
+@c <en>@cindex BASE, as reserved tag name
+@cindex BASE, nome de etiqueta reservado
+@c <en>You can use the @code{tag} command to give a symbolic name to a
+@c <en>certain revision of a file. You can use the @samp{-v} flag to the
+@c <en>@code{status} command to see all tags that a file has, and
+@c <en>which revision numbers they represent. Tag names must
+@c <en>start with an uppercase or lowercase letter and can
+@c <en>contain uppercase and lowercase letters, digits,
+@c <en>@samp{-}, and @samp{_}. The two tag names @code{BASE}
+@c <en>and @code{HEAD} are reserved for use by @sc{cvs}. It
+@c <en>is expected that future names which are special to
+@c <en>@sc{cvs} will be specially named, for example by
+@c <en>starting with @samp{.}, rather than being named analogously to
+@c <en>@code{BASE} and @code{HEAD}, to avoid conflicts with
+@c <en>actual tag names.
+Você pode usar o comando @code{tag} para dar um nome
+simbólico para uma certa revisão de um arquivo. Você
+pode usar a opção @samp{-v} com o comando @code{status}
+para ver todas as etiquetas que um arquivo possui, e
+que números de revisão elas representam. Nomes de
+etiqueta devem começar com letra maiúscula ou minúscula
+e pode conter letras maiúsculas e minúsculas, dígitos,
+@samp{-} e @samp{_}. Os dois nomes de etiqueta
+@code{BASE} e @code{HEAD} são reservados para o
+@sc{cvs}. É esperado que nomes futuros que sejam
+especiais para o @sc{cvs} recebam nomes especiais, por
+exemplo começando com @samp{.}, sendo então nomeados de
+forma análoga a @code{BASE} e @code{HEAD}, para evitar
+conflitos com os nomes de etiqueta atuais.
+@c Including a character such as % or = has also been
+@c suggested as the naming convention for future
+@c special tag names. Starting with . is nice because
+@c that is not a legal tag name as far as RCS is concerned.
+@c FIXME: CVS actually accepts quite a few characters
+@c in tag names, not just the ones documented above
+@c (see RCS_check_tag). RCS
+@c defines legitimate tag names by listing illegal
+@c characters rather than legal ones. CVS is said to lose its
+@c mind if you try to use "/" (try making such a tag sticky
+@c and using "cvs status" client/server--see remote
+@c protocol format for entries line for probable cause).
+@c TODO: The testsuite
+@c should test for whatever are documented above as
+@c officially-OK tag names, and CVS should at least reject
+@c characters that won't work, like "/".
+
+@c <en>You'll want to choose some convention for naming tags,
+@c <en>based on information such as the name of the program
+@c <en>and the version number of the release. For example,
+@c <en>one might take the name of the program, immediately
+@c <en>followed by the version number with @samp{.} changed to
+@c <en>@samp{-}, so that @sc{cvs} 1.9 would be tagged with the name
+@c <en>@code{cvs1-9}. If you choose a consistent convention,
+@c <en>then you won't constantly be guessing whether a tag is
+@c <en>@code{cvs-1-9} or @code{cvs1_9} or what. You might
+@c <en>even want to consider enforcing your convention in the
+@c <en>@file{taginfo} file (@pxref{taginfo}).
+Você vai querer definir algumas convenções para nomear
+etiquetas, baseado em informações tais como nome do
+programa e número da versão da release. Por exemplo,
+algume pode pegar o nome do programa, seguindo pelo
+número de versão com o @samp{.} trocado por @samp{-},
+de forma que o @sc{cvs} 1.9 seja etiquetado com o nome
+de @code{cvs1-9}. Se você escolhe uma convenção
+consistente, você não vai precisar ficar constantemente
+adivinhando se a etiqueta é @code{cvs-1-9} ou
+@code{cvs1_9} ou sei lá o que. Você pode até mesmo
+considerar reforçar esta convenção no arquivo
+@file{taginfo} (@pxref{taginfo}).
+@c Might be nice to say more about using taginfo this
+@c way, like giving an example, or pointing out any particular
+@c issues which arise.
+
+@c <en>@cindex Adding a tag
+@cindex Adicionando uma etiqueta
+@c <en>@cindex Tags, example
+@cindex Etiquetas, exemplo
+@c <en>The following example shows how you can add a tag to a
+@c <en>file. The commands must be issued inside your working
+@c <en>directory. That is, you should issue the
+@c <en>command in the directory where @file{backend.c}
+@c <en>resides.
+O exemplo seguinte mostra como você pode adicionar uma
+etiqueta a um arquivo. Os comandos devem ser
+executados de dentro do seu diretório de trabalho. Ou
+seja, você deve executar o comando no diretório onde @file{backend.c}
+fica.
+
+@example
+$ cvs tag rel-0-4 backend.c
+T backend.c
+$ cvs status -v backend.c
+===================================================================
+File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-0-4 (revision: 1.4)
+
+@end example
+
+@c <en>For a complete summary of the syntax of @code{cvs tag},
+@c <en>including the various options, see @ref{Invoking CVS}.
+Para um resumo completo da sintaxe de @code{cvs tag},
+incluindo as várias opções, veja em @ref{Chamando o CVS}.
+
+@c <en>There is seldom reason to tag a file in isolation. A more common use is
+@c <en>to tag all the files that constitute a module with the same tag at
+@c <en>strategic points in the development life-cycle, such as when a release
+@c <en>is made.
+Existem poucas razões para etiquetar um arquivo em
+separado. Um uso mais comum é etiquetar todos os
+arquivos que fazem parte de um módulo com a mesma
+etiqueta em momentos estratégicos do ciclo de vida do
+desenvolvimento, como por exemplo, quando fica pronta
+uma release.
+
+@example
+$ cvs tag rel-1-0 .
+cvs tag: Tagging .
+T Makefile
+T backend.c
+T driver.c
+T frontend.c
+T parser.c
+@end example
+
+@noindent
+@c <en>(When you give @sc{cvs} a directory as argument, it generally applies the
+@c <en>operation to all the files in that directory, and (recursively), to any
+@c <en>subdirectories that it may contain. @xref{Recursive behavior}.)
+(Quando você passa um diretório para o @sc{cvs} como
+argumento, ele geralmente realiza a operação em todos
+os arquivos do diretório e (recursivamente) a todo
+subdiretório que ele contenha.
+@xref{Comportamento recursivo}.)
+
+@c <en>@cindex Retrieving an old revision using tags
+@cindex Retrieving an old revision using tags
+@c <en>@cindex Tags, retrieving old revisions
+@cindex Tags, retrieving old revisions
+@c <en>The @code{checkout} command has a flag, @samp{-r}, that lets you check out
+@c <en>a certain revision of a module. This flag makes it easy to
+@c <en>retrieve the sources that make up release 1.0 of the module @samp{tc} at
+@c <en>any time in the future:
+O comando @code{checkout} tem uma opção, @samp{-r}, que
+permite pegar uma certa revisão de um módulo. Esta
+opção torna fácil recuperar as ontes que fizeram parte
+da release 1.0 do módulo @samp{tc} a qualquer momento
+no futuro:
+
+@example
+$ cvs checkout -r rel-1-0 tc
+@end example
+
+@noindent
+@c <en>This is useful, for instance, if someone claims that there is a bug in
+@c <en>that release, but you cannot find the bug in the current working copy.
+Isto pode ser útil, por exemplo, se alguem afirma que
+tem um pau naquela versão, mas você não acha o pau na
+cópia de trabalho mais recente.
+
+@c <en>You can also check out a module as it was at any given date.
+@c <en>@xref{checkout options}. When specifying @samp{-r} to
+@c <en>any of these commands, you will need beware of sticky
+@c <en>tags; see @ref{Sticky tags}.
+Você também pode pegar um módulo do jeito que ele
+estava em qualquer data. @xref{checkout options}.
+Quando usar @samp{-r} em qualquer destes comandos, você
+vai precisar estar atento às etiquetas adesivas; veja
+em @ref{Etiquetas adesivas}.
+
+@c <en>When you tag more than one file with the same tag you
+@c <en>can think about the tag as "a curve drawn through a
+@c <en>matrix of filename vs. revision number." Say we have 5
+@c <en>files with the following revisions:
+Quando você etiqueta mais de um arquivo com a mesma
+etiqueta você pode pensar na etiqueta como "uma curva
+desenhada ao longo da matriz de nomes de arquivo por
+números de revisão". Digamos que temos 5 arquivos com
+as seguintes revisões:
+
+@example
+@group
+ file1 file2 file3 file4 file5
+
+ 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG
+ 1.2*- 1.2 1.2 -1.2*-
+ 1.3 \- 1.3*- 1.3 / 1.3
+ 1.4 \ 1.4 / 1.4
+ \-1.5*- 1.5
+ 1.6
+@end group
+@end example
+
+@c <en>At some time in the past, the @code{*} versions were tagged.
+@c <en>You can think of the tag as a handle attached to the curve
+@c <en>drawn through the tagged revisions. When you pull on
+@c <en>the handle, you get all the tagged revisions. Another
+@c <en>way to look at it is that you "sight" through a set of
+@c <en>revisions that is "flat" along the tagged revisions,
+@c <en>like this:
+Em algum momento no passado, as versões com @code{*}
+foram etiquetadas. Você pode pensar na etiqueta como
+uma alça presa à curva que passa pelas revisões
+marcadas. Quando você puxa a alça, vem as revisões
+etiquetadas. outra maneira de perceber isto é ver
+através de um conjunto de revisões que foram alinhadas
+pelas revisões etiquetadas, como isto:
+
+@example
+@group
+ file1 file2 file3 file4 file5
+
+ 1.1
+ 1.2
+ 1.1 1.3 _
+ 1.1 1.2 1.4 1.1 /
+ 1.2*----1.3*----1.5*----1.2*----1.1* (--- <--- Look here
+ 1.3 1.6 1.3 \_
+ 1.4 1.4
+ 1.5
+@end group
+@end example
+
+@c <en>@node Tagging the working directory
+@node Etiquetando o diretório de trabalho
+@c <en>@section Specifying what to tag from the working directory
+@section Especificando o que etiquetar no diretório de trabalho
+
+@c <en>@cindex tag (subcommand)
+@cindex tag (subcomando)
+@c <en>The example in the previous section demonstrates one of
+@c <en>the most common ways to choose which revisions to tag.
+@c <en>Namely, running the @code{cvs tag} command without
+@c <en>arguments causes @sc{cvs} to select the revisions which
+@c <en>are checked out in the current working directory. For
+@c <en>example, if the copy of @file{backend.c} in working
+@c <en>directory was checked out from revision 1.4, then
+@c <en>@sc{cvs} will tag revision 1.4. Note that the tag is
+@c <en>applied immediately to revision 1.4 in the repository;
+@c <en>tagging is not like modifying a file, or other
+@c <en>operations in which one first modifies the working
+@c <en>directory and then runs @code{cvs commit} to transfer
+@c <en>that modification to the repository.
+O exemplo na seção anterior demonstra uma das formas
+mais comuns de escolher que revisões etiquetar. A
+saber, rodando o comando @code{cvs tag} sem argumentos
+faz com que o @sc{cvs} selecione as revisões que estão
+presentes no diretório de trabalho atual. Por exemplo,
+se a cópia do arquivo @file{backend.c} no diretório de
+trabalho foi pega da revisão 1.4, então o @sc{cvs} vai
+etiquetar a revisão 1.4. Observe que a etiqueta é
+aplicada na revisão 1.4 no repositório imediatamente;
+Etiquetar não funciona como modificar arquivos ou
+outras operações nas quais primeiros você modifica o
+diretório de trabalho e então roda o @code{cvs commit}
+para mandar as modificações para o repositório.
+
+@c <en>One potentially surprising aspect of the fact that
+@c <en>@code{cvs tag} operates on the repository is that you
+@c <en>are tagging the checked-in revisions, which may differ
+@c <en>from locally modified files in your working directory.
+@c <en>If you want to avoid doing this by mistake, specify the
+@c <en>@samp{-c} option to @code{cvs tag}. If there are any
+@c <en>locally modified files, @sc{cvs} will abort with an
+@c <en>error before it tags any files:
+Um aspecto potencialmente confuso no fato de o comando
+@code{cvs tag} operar no repositório é que você está
+etiquetando revisões devolvidas, que podem diferir de
+arquivos localmente modificados no seu diretório de
+trabalho. Se você quer evitar fazer isto por engano,
+use a opção @samp{-c} no @code{cvs tag}. Se existe
+qualquer arquivo localmente modificado, o @sc{cvs} vai
+abortar com erro antes de etiquetar qualquer arquivo:
+
+@example
+$ cvs tag -c rel-0-4
+cvs tag: backend.c is locally modified
+cvs [tag aborted]: correct the above errors first!
+@end example
+
+@c <en>@node Tagging by date/tag
+@node Etiquetando por data/etiqueta
+@c <en>@section Specifying what to tag by date or revision
+@section Especificando o que etiquetar por data ou revisão
+@c <en>@cindex rtag (subcommand)
+@cindex rtag (subcomando)
+
+@c <en>The @code{cvs rtag} command tags the repository as of a
+@c <en>certain date or time (or can be used to tag the latest
+@c <en>revision). @code{rtag} works directly on the
+@c <en>repository contents (it requires no prior checkout and
+@c <en>does not look for a working directory).
+O comando @code{cvs rtag} etiqueta o repositório em uma
+certa data ou hora (ou pode ser usado para etiquetar a
+última revisão). @code{rtag} trabalha diretamente no
+repositório (não requer um checkout e não procura por
+um diretório de trabalho).
+
+@c <en>The following options specify which date or revision to
+@c <en>tag. See @ref{Common options}, for a complete
+@c <en>description of them.
+As seguintes opções especificam que data ou revisão
+etiquetar. Veja em @ref{Opções comuns}, para uma
+descrição completa delas.
+
+@table @code
+@c <en>@item -D @var{data}
+@item -D @var{data}
+@c <en>Tag the most recent revision no later than @var{date}.
+Etiqueta a revisão mais recente que seja anterior a @var{data}.
+
+@c <en>@item -f
+@item -f
+@c <en>Only useful with the @samp{-D @var{date}} or @samp{-r @var{tag}}
+@c <en>flags. If no matching revision is found, use the most
+@c <en>recent revision (instead of ignoring the file).
+Útil apenas em conjunto com @samp{-D @var{data}} ou
+@samp{-r @var{etiqueta}}. Se não encontrar uma revisã
+casando com o padrão, usar a revisão mais recente (ao
+invés de ignorar o arquivo).
+
+@c <en>@item -r @var{tag}
+@item -r @var{etiqueta}
+@c <en>Only tag those files that contain existing tag @var{tag}.
+Etiqueta apenas os arquivos que contém a etiqueta
+@var{etiqueta} existente.
+@end table
+
+@c <en>The @code{cvs tag} command also allows one to specify
+@c <en>files by revision or date, using the same @samp{-r},
+@c <en>@samp{-D}, and @samp{-f} options. However, this
+@c <en>feature is probably not what you want. The reason is
+@c <en>that @code{cvs tag} chooses which files to tag based on
+@c <en>the files that exist in the working directory, rather
+@c <en>than the files which existed as of the given tag/date.
+@c <en>Therefore, you are generally better off using @code{cvs
+@c <en>rtag}. The exceptions might be cases like:
+O comando @code{cvs tag} também permite que você
+especifique arquivos por revisão ou data, usando as
+mesmas opções @samp{-r}, @samp{-D} e @samp{-f}.
+Entretanto, este característica não é provavelmente o
+que você quer. A razão é que o @code{cvs tag} escolhe
+que arquivos etiquetar baseado nos arquivos que existem
+no diretório de trabalho, ao invés de arquivos que
+existem na dada etiqueta/data. Portanto, você é
+geralmente ???better off??? usar @code{cvs rtag}. As
+exceções devem ser casos como:
+
+@example
+cvs tag -r 1.4 stable backend.c
+@end example
+
+@c <en>@node Modifying tags
+@node Modificando etiquetas
+@c <en>@section Deleting, moving, and renaming tags
+@section Apagando, movendo e renomeando etiquetas
+
+@c Also see:
+@c "How do I move or rename a magic branch tag?"
+@c in the FAQ (I think the issues it talks about still
+@c apply, but this could use some sanity.sh work).
+
+@c <en>Normally one does not modify tags. They exist in order
+@c <en>to record the history of the repository and so deleting
+@c <en>them or changing their meaning would, generally, not be
+@c <en>what you want.
+Normalmente não se modificam etiquetas. Elas existem
+para registrar o histórico do repositório e, portanto,
+apagá-las ou alterar o significado delas não é, em
+geral, o que você quer.
+
+@c <en>However, there might be cases in which one uses a tag
+@c <en>temporarily or accidentally puts one in the wrong
+@c <en>place. Therefore, one might delete, move, or rename a
+@c <en>tag.
+Entretanto, podem haver casos nos quais alguem usa a
+etiqueta temporariamente ou bota no lugar errado por
+acidente. Logo, é possível apagar, mover, ou renomear
+uma etiqueta.
+
+@noindent
+@c <en>@strong{WARNING: the commands in this section are
+@c <en>dangerous; they permanently discard historical
+@c <en>information and it can be difficult or impossible to
+@c <en>recover from errors. If you are a @sc{cvs}
+@c <en>administrator, you may consider restricting these
+@c <en>commands with the @file{taginfo} file (@pxref{taginfo}).}
+@strong{ATENÇÃO: os comandos nesta seção são perigosos;
+eles apagam permanentemente informações históricas e
+pode ser difícil ou impossível recuperar tais
+informações em caso de erro. Se você é um
+administrador do @sc{cvs}, você deve considerar
+restringir estes comandos com o arquivo @file{taginfo}
+(@pxref{taginfo}).}
+
+@c <en>@cindex Deleting tags
+@cindex Apagando etiquetas
+@c <en>@cindex Deleting branch tags
+@cindex Apagando etiquetas de ramos
+@c <en>@cindex Removing tags
+@cindex Removendo etiquetas
+@c <en>@cindex Removing branch tags
+@cindex Removendo etiquetas de ramos
+@c <en>@cindex Tags, deleting
+@cindex Etiquetas, apagando
+@c <en>@cindex Branch tags, deleting
+@cindex Etiquetas de ramos, apagando
+@c <en>To delete a tag, specify the @samp{-d} option to either
+@c <en>@code{cvs tag} or @code{cvs rtag}. For example:
+Para apagar uma etiqueta, especifique a opção @samp{-d}
+tanto para @code{cvs tag} quanto para @code{cvs rtag}. Por exemplo:
+
+@example
+cvs rtag -d rel-0-4 tc
+@end example
+
+@noindent
+@c <en>deletes the non-branch tag @code{rel-0-4} from the module @code{tc}.
+@c <en>In the event that branch tags are encountered within the repository
+@c <en>with the given name, a warning message will be issued and the branch
+@c <en>tag will not be deleted. If you are absolutely certain you know what
+@c <en>you are doing, the @code{-B} option may be specified to allow deletion
+@c <en>of branch tags. In that case, any non-branch tags encountered will
+@c <en>trigger warnings and will not be deleted.
+apaga a etiqueta ???non-branch??? @code{rel-0-4} do
+módulo @code{tc}. No caso de etiquetas de ramos serem
+encontradas no repositório com o nome dado, uma
+mensagem de aviso vai ser mostrada e a etiqueta de ramo
+não vai ser apagada. Se você está absolutamente certo
+de que sabe o que está fazendo, a opção @code{-B} pode
+ser especificada para permitir que se apague as
+etiquetas de ramos. Neste caso, qualquer etiqueta
+???non-branch??? encontrada vai disparar avisos e não
+vai ser apagada.
+
+@noindent
+@c <en>@strong{WARNING: Moving branch tags is very dangerous! If you think
+@c <en>you need the @code{-B} option, think again and ask your @sc{cvs}
+@c <en>administrator about it (if that isn't you). There is almost certainly
+@c <en>another way to accomplish what you want to accomplish.}
+@strong{ATENÇÃO: Mover etiquetas de ramos é muito
+perigoso! Se você pensa que precisa da opção
+@code{-B}, pense duas vezes e pergunte a seu
+administrador do @sc{cvs} sobre ela (se não for você).
+É quase certo que existe outra forma de alcançar o seu objetivo.}
+
+@c <en>@cindex Moving tags
+@cindex Movendo etiquetas
+@c <en>@cindex Moving branch tags
+@cindex Movendo etiquetas de ramos
+@c <en>@cindex Tags, moving
+@cindex Etiquetas, movendo
+@c <en>@cindex Branch tags, moving
+@cindex Etiquetas de ramos, movendo
+@c <en>When we say @dfn{move} a tag, we mean to make the same
+@c <en>name point to different revisions. For example, the
+@c <en>@code{stable} tag may currently point to revision 1.4
+@c <en>of @file{backend.c} and perhaps we want to make it
+@c <en>point to revision 1.6. To move a non-branch tag, specify the
+@c <en>@samp{-F} option to either @code{cvs tag} or @code{cvs
+@c <en>rtag}. For example, the task just mentioned might be
+@c <en>accomplished as:
+Quando falamos em @dfn{mover} uma etiqueta, queremos
+dizer fazer com que o mesmo nome aponte para diferentes
+revisões. Por exemplo, a etiqueta @code{stable} pode
+atualmente apontar para a revisão 1.4 do arquivo
+@file{backend.c} e talvez nós queiramos fazé-la apontar
+para a revisão 1.6. Para mover uma etiqueta
+???non-branch???, Use a opção @samp{-F} tanto com o
+@code{cvs tag} oquanto com o @code{cvs rtag}. Por
+exemplo, esta mudança pode ser alcançada com:
+
+@example
+cvs tag -r 1.6 -F stable backend.c
+@end example
+
+@noindent
+@c <en>If any branch tags are encountered in the repository
+@c <en>with the given name, a warning is issued and the branch
+@c <en>tag is not disturbed. If you are absolutely certain you
+@c <en>wish to move the branch tag, the @code{-B} option may be specified.
+@c <en>In that case, non-branch tags encountered with the given
+@c <en>name are ignored with a warning message.
+Se alguma etiqueta de ramo for encontrada no
+repositório com o nome dado, um aviso é mostrado e a
+etiqueta de ramo não é alterada. Se você está
+absolutamente certo de que você quer mover a etiquta de
+ramo, a opção @code{-B} pode ser especificada. Neste
+caso, etiquetas ???non-branch??? encontradas com o nome
+dado serão ignoradas com uma mensagem de aviso.
+
+@noindent
+@c <en>@strong{WARNING: Moving branch tags is very dangerous! If you think you
+@c <en>need the @code{-B} option, think again and ask your @sc{cvs}
+@c <en>administrator about it (if that isn't you). There is almost certainly
+@c <en>another way to accomplish what you want to accomplish.}
+@strong{ATENÇÃO: Mover etiquetas de ramos é muito
+perigoso! Se você pensa que precisa da opção
+@code{-B}, pense duas vezes e pergunte a seu
+administrador do @sc{cvs} sobre ela (se não for você).
+É quase certo que existe outra forma de alcançar o seu objetivo.}
+
+@c <en>@cindex Renaming tags
+@cindex Renomeando etiquetas
+@c <en>@cindex Tags, renaming
+@cindex Etiquetas, renomeando
+@c <en>When we say @dfn{rename} a tag, we mean to make a
+@c <en>different name point to the same revisions as the old
+@c <en>tag. For example, one may have misspelled the tag name
+@c <en>and want to correct it (hopefully before others are
+@c <en>relying on the old spelling). To rename a tag, first
+@c <en>create a new tag using the @samp{-r} option to
+@c <en>@code{cvs rtag}, and then delete the old name. (Caution:
+@c <en>this method will not work with branch tags.)
+@c <en>This leaves the new tag on exactly the
+@c <en>same files as the old tag. For example:
+Quando falamos em @dfn{renomear} uma etiqueta, queremos
+dizer fazer com que um nome diferente aponte para para
+as mesmas revisões que a etiqueta antiga. Por exemplo,
+alguem pode ter digitado errado o nome de uma etiqueta
+e quer corrigir isto (de preferência antes que outros
+caiam no mesmo erro). Para renomear uma etiqueta,
+primeiro crie uma nova etiqueta usando a opção
+@samp{-r} para o @code{cvs rtag}, e então apague o nome
+antigo. (Cuidado: este método não vai funcionar com
+etiquetas de ramos). Isto deixa a nova etiqueta
+exatamente nos mesmos arquivos que a etiqueta antiga.
+Por exemplo:
+
+@example
+cvs rtag -r old-name-0-4 rel-0-4 tc
+cvs rtag -d old-name-0-4 tc
+@end example
+
+@c <en>@node Tagging add/remove
+@node Etiquetando adicionados/removidos
+@c <en>@section Tagging and adding and removing files
+@section Etiquetando e adicionando e removendo arquivos
+
+@c <en>The subject of exactly how tagging interacts with
+@c <en>adding and removing files is somewhat obscure; for the
+@c <en>most part @sc{cvs} will keep track of whether files
+@c <en>exist or not without too much fussing. By default,
+@c <en>tags are applied to only files which have a revision
+@c <en>corresponding to what is being tagged. Files which did
+@c <en>not exist yet, or which were already removed, simply
+@c <en>omit the tag, and @sc{cvs} knows to treat the absence
+@c <en>of a tag as meaning that the file didn't exist as of
+@c <en>that tag.
+O tema a respeito de como exatamente etiquetas
+interagem com arquivos adicionados e removidos é de
+certa forma obscuro; Normalmente, o @sc{cvs} vai
+verificar quais arquivos existem ou não sem muita
+confusão. Por padrão, etiquetas são aplicadas apenas a
+arquivos que tenham uma revisão correspondendo ao que
+está sendo etiquetado. Arquivos que ainda não existem,
+ou que já foram removidos, simplesmente omitem a
+etiqueta, e o @sc{cvs} trata a ausência de uma
+etiqueta como significando que o arquivo não existia na
+criação da etiqueta.
+
+@c <en>However, this can lose a small amount of information.
+@c <en>For example, suppose a file was added and then removed.
+@c <en>Then, if the tag is missing for that file, there is no
+@c <en>way to know whether the tag refers to the time before
+@c <en>the file was added, or the time after it was removed.
+@c <en>If you specify the @samp{-r} option to @code{cvs rtag},
+@c <en>then @sc{cvs} tags the files which have been removed,
+@c <en>and thereby avoids this problem. For example, one
+@c <en>might specify @code{-r HEAD} to tag the head.
+Entretanto, Isto pode perder uma pequena quantidade de
+informação. Por exemplo, suponha que um arquivo foi
+adicionado e então removido. Então, se a etiqueta está
+faltando para aquele arquivo, não há como se descobrir
+se a data da etiqueta é posterior à adição ou anterior
+à remoção do arquivo. Se você usa a opção @samp{-r}
+para @code{cvs rtag}, então o @sc{cvs} etiqueta os
+arquivos que foram removidos, e portanto remove este
+problema. Por exemplo, alguem pode especificar @code{-r
+HEAD} para etiquetar a head.
+
+@c <en>On the subject of adding and removing files, the
+@c <en>@code{cvs rtag} command has a @samp{-a} option which
+@c <en>means to clear the tag from removed files that would
+@c <en>not otherwise be tagged. For example, one might
+@c <en>specify this option in conjunction with @samp{-F} when
+@c <en>moving a tag. If one moved a tag without @samp{-a},
+@c <en>then the tag in the removed files might still refer to
+@c <en>the old revision, rather than reflecting the fact that
+@c <en>the file had been removed. I don't think this is
+@c <en>necessary if @samp{-r} is specified, as noted above.
+A respeito de adicionar e remover arquivos, o comando
+@code{cvs rtag} tem a opção @samp{-a} que significa
+limpar a etiqueta de arquivos removidos que ???would
+not otherwise be tagged???. Por exemplo, alguem pode
+especificar esta opção em conjunto com @samp{-F} quando
+mover uma etiqueta. Se alguem mover uma etiqueta sem o
+@samp{-a}, então a etiqueta nos arquivos removidos vai
+continuar fazendo referência à revisão antiga, Ao invés
+de refletir o fato de que o arquivo foi removido. Eu
+não acho que isto seja necessário se @samp{-r} é
+especificado, como falado acima.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Sticky tags
+@node Etiquetas adesivas
+@c <en>@section Sticky tags
+@section Etiquetas adesivas
+@c <en>@cindex Sticky tags
+@cindex Etiquetas adesivas
+@c <en>@cindex Tags, sticky
+@cindex Adesivas, etiquetas
+
+@c A somewhat related issue is per-directory sticky
+@c tags (see comment at CVS/Tag in node Working
+@c directory storage); we probably want to say
+@c something like "you can set a sticky tag for only
+@c some files, but you don't want to" or some such.
+
+@c <en>Sometimes a working copy's revision has extra data
+@c <en>associated with it, for example it might be on a branch
+@c <en>(@pxref{Branching and merging}), or restricted to
+@c <en>versions prior to a certain date by @samp{checkout -D}
+@c <en>or @samp{update -D}. Because this data persists --
+@c <en>that is, it applies to subsequent commands in the
+@c <en>working copy -- we refer to it as @dfn{sticky}.
+Algumas vezes, um cópia de tabalho de uma revisão tem
+dados extra associados a ela, por exemplo, ela pode
+estar num ramo (@pxref{Ramificando e mesclando}), ou
+restrita a uma versão anterior a uma certa data por
+@samp{checkout -D} ou @samp{update -D}. Já que este
+dado persiste -- ou seja, ele se aplica a comandos
+subseqüentes na cópia de trabalho -- nós o chamamos de
+@dfn{adesivos}.
+
+@c <en>Most of the time, stickiness is an obscure aspect of
+@c <en>@sc{cvs} that you don't need to think about. However,
+@c <en>even if you don't want to use the feature, you may need
+@c <en>to know @emph{something} about sticky tags (for
+@c <en>example, how to avoid them!).
+Na maioria das vezes, ser adesivo é um aspecto obscuro
+do @sc{cvs} que você não precisa saber a respeito.
+Entretanto, mesmo se você não quiser usar esta
+habilidade, você vai precisar saber @emph{alguma
+coisa} sobre etiquetas adesivas (sticky tags) (por
+exemplo, como evitá-las!).
+
+@c <en>You can use the @code{status} command to see if any
+@c <en>sticky tags or dates are set:
+Você pode usar o comando @code{status} para ver se
+alguma etiqueta ou data adesiva estão ligadas:
+
+@example
+$ cvs status driver.c
+===================================================================
+File: driver.c Status: Up-to-date
+
+ Version: 1.7.2.1 Sat Dec 5 19:35:03 1992
+ RCS Version: 1.7.2.1 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+@end example
+
+@c <en>@cindex Resetting sticky tags
+@cindex Zerando etiquetas adesivas
+@c <en>@cindex Sticky tags, resetting
+@cindex Etiquetas adesivas, zerando
+@c <en>@cindex Deleting sticky tags
+@cindex Apagando etiquetas adesivas
+@c <en>The sticky tags will remain on your working files until
+@c <en>you delete them with @samp{cvs update -A}. The
+@c <en>@samp{-A} option merges local changes into the version of the
+@c <en>file from the head of the trunk, removing any sticky tags,
+@c <en>dates, or options. See @ref{update} for more on the operation
+@c <en>of @code{cvs update}.
+As etiquetas adesivas vão permanecer nos seus arquivos
+de trabalho até que você apague elas com @samp{cvs
+update -A}. A opção @samp{-A} mescla as alterações
+locais na versão do arquivo na cabeça (head) do tronco,
+removendo qualquer etiqueta, data ou opção adesiva.
+Veja em @ref{update} para mais a respeito desta
+operação do @code{cvs update}.
+
+@c <en>@cindex Sticky date
+@cindex Data adesiva
+@c <en>The most common use of sticky tags is to identify which
+@c <en>branch one is working on, as described in
+@c <en>@ref{Accessing branches}. However, non-branch
+@c <en>sticky tags have uses as well. For example,
+@c <en>suppose that you want to avoid updating your working
+@c <en>directory, to isolate yourself from possibly
+@c <en>destabilizing changes other people are making. You
+@c <en>can, of course, just refrain from running @code{cvs
+@c <en>update}. But if you want to avoid updating only a
+@c <en>portion of a larger tree, then sticky tags can help.
+@c <en>If you check out a certain revision (such as 1.4) it
+@c <en>will become sticky. Subsequent @code{cvs update}
+@c <en>commands will
+@c <en>not retrieve the latest revision until you reset the
+@c <en>tag with @code{cvs update -A}. Likewise, use of the
+@c <en>@samp{-D} option to @code{update} or @code{checkout}
+@c <en>sets a @dfn{sticky date}, which, similarly, causes that
+@c <en>date to be used for future retrievals.
+O uso mais comum de etiquetas adesivas é identificar em
+que ramo se está trabalhando, como descrito em
+@ref{Acessando ramos}. Entretanto, etiquetas adesivas
+em ???non-branch??? também têm seu uso. Por exemplo,
+suponha que você quer evitar atualizar seu diretório de
+trabalho, para se isolar de mudanças que outras pessoas
+estão fazendo que possam que possam desestabilizar seu
+trabalho. Você pode, claro, simplesmente não rodar o @code{cvs
+update}. Mas se você quer evitar atualizar (fazer
+update) apenas uma parte de uma grande árvore, então
+etiquetas adesivas podem ajudar. Se você pega uma certa
+revsão (como a 1.4) ela vai se tornar adesiva.
+comandos @code{cvs update} subsequentes não vão trazer
+a revisão mais nova até que você limpe a etiqueta com os
+comandos @code{cvs update -A}. Da mesma forma, o uso da
+opção @samp{-D} em @code{update} ou @code{checkout}
+define uma @dfn{data adesiva}, que, similarmente, faz
+com que a data seja usada para futuras ???retrievals???.
+
+@c <en>People often want to retrieve an old version of
+@c <en>a file without setting a sticky tag. This can
+@c <en>be done with the @samp{-p} option to @code{checkout} or
+@c <en>@code{update}, which sends the contents of the file to
+@c <en>standard output. For example:
+É normal as pessoas quererem recuperar uma versão
+antiga de um arquivo sem definir uma etiqueta adesiva.
+Isto pode ser feito com a opção @samp{-p} no
+@code{checkout} ou @code{update}, que manda o conteúdo
+do arquivo para a saída padrão. Por exemplo:
+@example
+$ cvs update -p -r 1.1 file1 >file1
+===================================================================
+Checking out file1
+RCS: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
+VERS: 1.1
+***************
+$
+@end example
+
+@c <en>However, this isn't the easiest way, if you are asking
+@c <en>how to undo a previous checkin (in this example, put
+@c <en>@file{file1} back to the way it was as of revision
+@c <en>1.1). In that case you are better off using the
+@c <en>@samp{-j} option to @code{update}; for further
+@c <en>discussion see @ref{Merging two revisions}.
+Entretanto, esta não é a forma mais fácil, se você está
+querendo desfazer um envio anterior (neste exemplo,
+devolver o arquivo @file{file1} ao que ele era na
+revisão 1.1). Neste caso é melhor usar a opção
+@samp{-j} com o @code{update}; Para maiores detalhes,
+veja em @ref{Mesclando duas revisões}.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Branching and merging
+@node Ramificando e mesclando
+@c <en>@chapter Branching and merging
+@chapter Ramificando e mesclando
+@c <en>@cindex Branching
+@cindex Ramificando
+@c <en>@cindex Merging
+@cindex Mesclando
+@c <en>@cindex Copying changes
+@cindex Copying changes
+@c <en>@cindex Main trunk and branches
+@cindex Tronco principal e ramos
+@c <en>@cindex Revision tree, making branches
+@cindex Revision tree, making branches
+@c <en>@cindex Branches, copying changes between
+@cindex Branches, copying changes between
+@c <en>@cindex Changes, copying between branches
+@cindex Changes, copying between branches
+@c <en>@cindex Modifications, copying between branches
+@cindex Modifications, copying between branches
+
+@c <en>@sc{cvs} allows you to isolate changes onto a separate
+@c <en>line of development, known as a @dfn{branch}. When you
+@c <en>change files on a branch, those changes do not appear
+@c <en>on the main trunk or other branches.
+O @sc{cvs} permite isolar mudanças em uma linha de
+desenvolvimento separada, chamada de @dfn{ramo}.
+Quando você muda os arquivos de um ramo, aquelas
+mudanças não aparecem no tronco principal ou em outros ramos.
+
+@c <en>Later you can move changes from one branch to another
+@c <en>branch (or the main trunk) by @dfn{merging}. Merging
+@c <en>involves first running @code{cvs update -j}, to merge
+@c <en>the changes into the working directory.
+@c <en>You can then commit that revision, and thus effectively
+@c <en>copy the changes onto another branch.
+Mais tarde você pode mover as mudanças de um ramo para
+outro (ou para o tronco principal) com uma
+@dfn{mesclagem}. Mesclar é primeiro rodar um @code{cvs
+update -j}, para mesclar as mudanças no seu diretório
+de trabalho. Depois efetivar (commit) esta revisão, e
+finalmente fazer a efetiva destas mudanças de um ramo
+para outro.
+
+@menu
+@c <en>* Branches motivation:: What branches are good for
+* Motivação para ramos:: Para que ramos são bons
+@c <en>* Creating a branch:: Creating a branch
+* Criando um ramo:: Criando um ramo
+@c <en>* Accessing branches:: Checking out and updating branches
+* Acessando ramos:: Pegando e devolvendo ramos
+@c <en>* Branches and revisions:: Branches are reflected in revision numbers
+* Ramos e revisões:: Ramificar se reflete nos números de revisão
+@c <en>* Magic branch numbers:: Magic branch numbers
+* Números de ramos mágicos:: Magic branch numbers
+@c <en>* Merging a branch:: Merging an entire branch
+* Mesclando um ramo:: Mesclando um ramo inteiro
+@c <en>* Merging more than once:: Merging from a branch several times
+* Mesclando mais de uma vez:: Mesclando a partir de um ramo várias vezes
+@c <en>* Merging two revisions:: Merging differences between two revisions
+* Mesclando duas revisões:: Mesclando diferenças entre duas revisões
+@c <en>* Merging adds and removals:: What if files are added or removed?
+* Mesclando adicionados e removidos:: E se arquivos forem adicionados ou removidos?
+@c <en>* Merging and keywords:: Avoiding conflicts due to keyword substitution
+* Mesclagem e palavras-chave:: Evitando conflitos devido a substituição de palavras-chave
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Branches motivation
+@node Motivação para ramos
+@c <en>@section What branches are good for
+@section Para que ramos são bons
+@c <en>@cindex Branches motivation
+@cindex Motivação para ramos
+@c <en>@cindex What branches are good for
+@cindex Para que ramos são bons
+@c <en>@cindex Motivation for branches
+@cindex Motivation for branches
+
+@c FIXME: this node mentions one way to use branches,
+@c but it is by no means the only way. For example,
+@c the technique of committing a new feature on a branch,
+@c until it is ready for the main trunk. The whole
+@c thing is generally speaking more akin to the
+@c "Revision management" node although it isn't clear to
+@c me whether policy matters should be centralized or
+@c distributed throughout the relevant sections.
+@c <en>Suppose that release 1.0 of tc has been made. You are continuing to
+@c <en>develop tc, planning to create release 1.1 in a couple of months. After a
+@c <en>while your customers start to complain about a fatal bug. You check
+@c <en>out release 1.0 (@pxref{Tags}) and find the bug
+@c <en>(which turns out to have a trivial fix). However, the current revision
+@c <en>of the sources are in a state of flux and are not expected to be stable
+@c <en>for at least another month. There is no way to make a
+@c <en>bugfix release based on the newest sources.
+Suponha que a release 1.0 de tc está pronta. Você está
+continua desenvolvendo tc, e planeja lançar a release
+1.1 em alguns meses. Depois de um tempo seus
+consumidores começam a reclamar de um erro fatal. Você
+baixa a release 1.0 (@pxref{Etiquetas}) e encontra o
+erro (que tem um conserto fácil). Entretanto, a
+revisão atual dos fontes está num estado do fluxo de
+desenvolvimento que você não espera que estaja estável
+em pelo menos um mês. Não tem jeito de lançar uma
+release baseada nos fontes mais novos.
+
+@c <en>The thing to do in a situation like this is to create a @dfn{branch} on
+@c <en>the revision trees for all the files that make up
+@c <en>release 1.0 of tc. You can then make
+@c <en>modifications to the branch without disturbing the main trunk. When the
+@c <en>modifications are finished you can elect to either incorporate them on
+@c <en>the main trunk, or leave them on the branch.
+O que se há para fazer numa situação como esta é criar
+um @dfn{ramo} na árvore de revisões para todos os
+arquivos que integram a release 1.0 de tc. Você pode
+então fazer modificações no ramo sem perturbar o tronco
+principal. Quando as modificações terminarem você pode
+decidir se incorporam elas ao tronco ou deixa elas no ramo.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Creating a branch
+@node Criando um ramo
+@c <en>@section Creating a branch
+@section Criando um ramo
+@c <en>@cindex Creating a branch
+@cindex Criando um ramo
+@c <en>@cindex Branch, creating a
+@cindex Ramo, criando um
+@c <en>@cindex tag (subcommand), creating a branch using
+@cindex tag (subcomando), criando um ramo usando
+@c <en>@cindex rtag (subcommand), creating a branch using
+@cindex rtag (subcomando), criando um ramo usando
+
+@c <en>You can create a branch with @code{tag -b}; for
+@c <en>example, assuming you're in a working copy:
+Você pode criar um ramo com @code{tag -b}; por exemplo,
+supondo que você está numa cópia de trabalho:
+
+@example
+$ cvs tag -b rel-1-0-patches
+@end example
+
+@c FIXME: we should be more explicit about the value of
+@c having a tag on the branchpoint. For example
+@c "cvs tag rel-1-0-patches-branchpoint" before
+@c the "cvs tag -b". This points out that
+@c rel-1-0-patches is a pretty awkward name for
+@c this example (more so than for the rtag example
+@c below).
+
+@c <en>This splits off a branch based on the current revisions
+@c <en>in the working copy, assigning that branch the name
+@c <en>@samp{rel-1-0-patches}.
+Isto inicia um ramo baseado nas revisões atuais na
+cópia de trabalho, dando a este ramo o nome
+@samp{rel-1-0-patches}.
+
+@c <en>It is important to understand that branches get created
+@c <en>in the repository, not in the working copy. Creating a
+@c <en>branch based on current revisions, as the above example
+@c <en>does, will @emph{not} automatically switch the working
+@c <en>copy to be on the new branch. For information on how
+@c <en>to do that, see @ref{Accessing branches}.
+É importante entender que ramos são criados no
+repositório, e não na cópia de tarbalho. Criar um ramo
+baseado nas revisões atuais, como no exemplo acima,
+@emph{Não} vai mudar automaticamente a cópia de
+trabalho para o novo ramo. Para informações sobre
+como fazer isto, veja em @ref{Acessando ramos}.
+
+@c <en>You can also create a branch without reference to any
+@c <en>working copy, by using @code{rtag}:
+Você também pode criar um ramo sem referência a
+qualquer cópia de trabalho usando @code{rtag}:
+
+@example
+$ cvs rtag -b -r rel-1-0 rel-1-0-patches tc
+@end example
+
+@c <en>@samp{-r rel-1-0} says that this branch should be
+@c <en>rooted at the revision that
+@c <en>corresponds to the tag @samp{rel-1-0}. It need not
+@c <en>be the most recent revision -- it's often useful to
+@c <en>split a branch off an old revision (for example, when
+@c <en>fixing a bug in a past release otherwise known to be
+@c <en>stable).
+@samp{-r rel-1-0} diz que este ramo deve ser iniciado
+na revisão que corresponde à etiqueta (tag)
+@samp{rel-1-0}. Não precisa ser a revisão mais recente
+-- é útil às vezes separar um ramo a partir de uma
+revisão antiga (por exemplo, quando se está consertando
+um erro numa release anterior que se pensava estar
+estável).
+
+@c <en>As with @samp{tag}, the @samp{-b} flag tells
+@c <en>@code{rtag} to create a branch (rather than just a
+@c <en>symbolic revision name). Note that the numeric
+@c <en>revision number that matches @samp{rel-1-0} will
+@c <en>probably be different from file to file.
+Assim como no @samp{tag}, a opção @samp{-b} diz ao
+@code{rtag} para criar um ramo (ao invés de
+simplesmente um nome de revisão simbólico). Observe
+que o número de revisão simbólico que casa com
+@samp{rel-1-0} provavelmente ser diferente de arquivo
+para arquivo.
+
+@c <en>So, the full effect of the command is to create a new
+@c <en>branch -- named @samp{rel-1-0-patches} -- in module
+@c <en>@samp{tc}, rooted in the revision tree at the point tagged
+@c <en>by @samp{rel-1-0}.
+Então, O efeito total do comando é criar um novo ramo
+-- chamado @samp{rel-1-0-patches} -- no módulo
+@samp{tc}, partindo da árvore de revisão no ponto
+etiquetado como @samp{rel-1-0}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Accessing branches
+@node Acessando ramos
+@c <en>@section Accessing branches
+@section Acessando ramos
+@c <en>@cindex Check out a branch
+@cindex Check out a branch
+@c <en>@cindex Retrieve a branch
+@cindex Retrieve a branch
+@c <en>@cindex Access a branch
+@cindex Access a branch
+@c <en>@cindex Identifying a branch
+@cindex Identifying a branch
+@c <en>@cindex Branch, check out
+@cindex Branch, check out
+@c <en>@cindex Branch, retrieving
+@cindex Branch, retrieving
+@c <en>@cindex Branch, accessing
+@cindex Branch, accessing
+@c <en>@cindex Branch, identifying
+@cindex Branch, identifying
+
+@c <en>You can retrieve a branch in one of two ways: by
+@c <en>checking it out fresh from the repository, or by
+@c <en>switching an existing working copy over to the branch.
+Você pode recuperar um ramo de duas formas: pegando um
+cópia zerada dele do repositório, ou alternando de uma
+cópia de trabalho já existente para o ramo.
+
+@c <en>To check out a branch from the repository, invoke
+@c <en>@samp{checkout} with the @samp{-r} flag, followed by
+@c <en>the tag name of the branch (@pxref{Creating a branch}):
+Para pegar um ramo do repositório, chame o
+@samp{checkout} com a opção @samp{-r}, seguida pelo
+nome da etiqueta do ramo (@pxref{Criando um ramo}):
+
+@example
+$ cvs checkout -r rel-1-0-patches tc
+@end example
+
+@c <en>Or, if you already have a working copy, you can switch
+@c <en>it to a given branch with @samp{update -r}:
+Ou, se você já tem uma cópia de trabalho, você pode
+alternar dela para um dado ramo com @samp{update -r}:
+
+@example
+$ cvs update -r rel-1-0-patches tc
+@end example
+
+@noindent
+@c <en>or equivalently:
+ou equivalentemente:
+
+@example
+$ cd tc
+$ cvs update -r rel-1-0-patches
+@end example
+
+@c <en>It does not matter if the working copy was originally
+@c <en>on the main trunk or on some other branch -- the above
+@c <en>command will switch it to the named branch. And
+@c <en>similarly to a regular @samp{update} command,
+@c <en>@samp{update -r} merges any changes you have made,
+@c <en>notifying you of conflicts where they occur.
+Não importa se a cópia de tabalho estava originalmente
+no tronco principal ou em algum outro ramo -- o comando
+acima vai alternar ela para o ramo dado. E
+similarmente ao comando @samp{update} normal,
+@samp{update -r} mescla quaisquer mudanças que você
+tenha feito, notificando você sobre conflitos onde eles
+ocorrerem.
+
+@c <en>Once you have a working copy tied to a particular
+@c <en>branch, it remains there until you tell it otherwise.
+@c <en>This means that changes checked in from the working
+@c <en>copy will add new revisions on that branch, while
+@c <en>leaving the main trunk and other branches unaffected.
+Uma vez que você tenha uma cópia de trabalho referente
+a um dado, ela continua no ramo até que se diga o
+contrário. Isto significa que mudanças inseridas a
+partir da cópia de trabalho vão adicionar novas
+revisões naquele ramo, enquanto que não afeta o tronco
+principal nem os outros ramos.
+
+@c <en>@cindex Branches, sticky
+@cindex Ramos, adesivos
+@c <en>To find out what branch a working copy is on, you can
+@c <en>use the @samp{status} command. In its output, look for
+@c <en>the field named @samp{Sticky tag} (@pxref{Sticky tags})
+@c <en>-- that's @sc{cvs}'s way of telling you the branch, if
+@c <en>any, of the current working files:
+Para saber em qual ramo uma cópia de trabalho está,
+você precisa usar o comando @samp{status}. Na saída do
+comando procure pelo campo chamado @samp{Sticky tag}
+(etiqueta adesiva) (@pxref{Etiquetas adesivas})
+-- esta é a forma do @sc{cvs} de dizer a você o ramo,
+se é que se está num, dos arquivos de trabalho atuais:
+
+@example
+$ cvs status -v driver.c backend.c
+===================================================================
+File: driver.c Status: Up-to-date
+
+ Version: 1.7 Sat Dec 5 18:25:54 1992
+ RCS Version: 1.7 /u/cvsroot/yoyodyne/tc/driver.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.7.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.7.2)
+ rel-1-0 (revision: 1.7)
+
+===================================================================
+File: backend.c Status: Up-to-date
+
+ Version: 1.4 Tue Dec 1 14:39:01 1992
+ RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v
+ Sticky Tag: rel-1-0-patches (branch: 1.4.2)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ rel-1-0-patches (branch: 1.4.2)
+ rel-1-0 (revision: 1.4)
+ rel-0-4 (revision: 1.4)
+
+@end example
+
+@c <en>Don't be confused by the fact that the branch numbers
+@c <en>for each file are different (@samp{1.7.2} and
+@c <en>@samp{1.4.2} respectively). The branch tag is the
+@c <en>same, @samp{rel-1-0-patches}, and the files are
+@c <en>indeed on the same branch. The numbers simply reflect
+@c <en>the point in each file's revision history at which the
+@c <en>branch was made. In the above example, one can deduce
+@c <en>that @samp{driver.c} had been through more changes than
+@c <en>@samp{backend.c} before this branch was created.
+Não se confunda pelo fato de que os números de ramo de
+cada arquivo serem diferentes (@samp{1.7.2} e
+@samp{1.4.2} respectivamente). A etiqueta do ramo é a
+mesma, @samp{rel-1-0-patches}, e os arquivos estão na
+verdade no mesmo ramo. Os números simplesmente
+refletem o ponto em que cada arquivo estava no
+histórico de revisão quando o ramo foi criado. No
+exemplo acima, pode-se deduzir que @samp{driver.c}
+tinha tido mais alterações que @samp{backend.c} antes
+do ramo ter sido criado.
+
+@c <en>See @ref{Branches and revisions} for details about how
+@c <en>branch numbers are constructed.
+Veja em @ref{Ramos e revisões} para detalhes a respeito
+de como números de ramos são criados.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Branches and revisions
+@node Ramos e revisões
+@c <en>@section Branches and revisions
+@section Ramos e revisões
+@c <en>@cindex Branch number
+@cindex Número de ramo
+@c <en>@cindex Number, branch
+@cindex Ramo, número de
+@c <en>@cindex Revision numbers (branches)
+@cindex Números de revisão (ramos)
+
+@c <en>Ordinarily, a file's revision history is a linear
+@c <en>series of increments (@pxref{Revision numbers}):
+Normalmente, um histórico da revisão do arquivo é uma
+séria linear de incrementos (@pxref{Números de
+revisão}):
+
+@example
+ +-----+ +-----+ +-----+ +-----+ +-----+
+ ! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 !
+ +-----+ +-----+ +-----+ +-----+ +-----+
+@end example
+
+@c <en>However, @sc{cvs} is not limited to linear development. The
+@c <en>@dfn{revision tree} can be split into @dfn{branches},
+@c <en>where each branch is a self-maintained line of
+@c <en>development. Changes made on one branch can easily be
+@c <en>moved back to the main trunk.
+Entretanto, o @sc{cvs} não está limitado a
+desenvolvimento linear. A @dfn{árvore de revisões}
+pode ser separada em @dfn{ramos},
+onde cada ramo é uma linha de desenvolvimento que se
+mantém. Mudanças feitas em um ramo podem ser facilmente
+movidas para o tronco principal.
+
+@c <en>Each branch has a @dfn{branch number}, consisting of an
+@c <en>odd number of period-separated decimal integers. The
+@c <en>branch number is created by appending an integer to the
+@c <en>revision number where the corresponding branch forked
+@c <en>off. Having branch numbers allows more than one branch
+@c <en>to be forked off from a certain revision.
+Cada ramo tem um @dfn{número de ramo}, formado por uma
+quantidade ímpar de números inteiros decimais separados
+por ponto. O número do ramo é criado anexando um
+inteiro ao número de revisão de onde o ramo
+correpondente saiu. Com números de ramo é possível se
+ter mais de uma ramificação partindo de uma certa revisão.
+
+@need 3500
+@c <en>All revisions on a branch have revision numbers formed
+@c <en>by appending an ordinal number to the branch number.
+@c <en>The following figure illustrates branching with an
+@c <en>example.
+Todas as revisões num ramo têm números de revisão
+formados pela anexação de um número ordinal ao número
+do ramo. A figura seguinte ilustra a ramificação com um exemplo.
+
+@example
+@c This example used to have a 1.2.2.4 revision, which
+@c might help clarify that development can continue on
+@c 1.2.2. Might be worth reinstating if it can be done
+@c without overfull hboxes.
+@group
+ +-------------+
+ Branch 1.2.2.3.2 -> ! 1.2.2.3.2.1 !
+ / +-------------+
+ /
+ /
+ +---------+ +---------+ +---------+
+Branch 1.2.2 -> _! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ / +---------+ +---------+ +---------+
+ /
+ /
++-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+ +---------+
+Branch 1.2.4 -> +---! 1.2.4.1 !----! 1.2.4.2 !----! 1.2.4.3 !
+ +---------+ +---------+ +---------+
+
+@end group
+@end example
+
+@c -- However, at least for me the figure is not enough. I suggest more
+@c -- text to accompany it. "A picture is worth a thousand words", so you
+@c -- have to make sure the reader notices the couple of hundred words
+@c -- *you* had in mind more than the others!
+
+@c -- Why an even number of segments? This section implies that this is
+@c -- how the main trunk is distinguished from branch roots, but you never
+@c -- explicitly say that this is the purpose of the [by itself rather
+@c -- surprising] restriction to an even number of segments.
+
+@c <en>The exact details of how the branch number is
+@c <en>constructed is not something you normally need to be
+@c <en>concerned about, but here is how it works: When
+@c <en>@sc{cvs} creates a branch number it picks the first
+@c <en>unused even integer, starting with 2. So when you want
+@c <en>to create a branch from revision 6.4 it will be
+@c <en>numbered 6.4.2. All branch numbers ending in a zero
+@c <en>(such as 6.4.0) are used internally by @sc{cvs}
+@c <en>(@pxref{Magic branch numbers}). The branch 1.1.1 has a
+@c <en>special meaning. @xref{Tracking sources}.
+Os detalhes exatos de como o número de ramo é
+construído não são algo com os quais você precisa estar
+preocupado, mas aqui vai como a coisa funciona: quando
+o @sc{cvs} cria um número de ramo ele pega o primeiro
+número par não usado, a partir de 2. Logo, quando você
+quer criar um ramo a partir da revisão 6.4 ele vai ser
+numerado 6.4.2. Todos os números de ramos terminados
+com um zero (tal como 6.4.0) são usados internamente
+pelo @sc{cvs} (@pxref{Números de ramos mágicos}). O
+ramo 1.1.1 tem um significado especial.
+@xref{Acompanhando fontes}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Magic branch numbers
+@node Números de ramos mágicos
+@c <en>@section Magic branch numbers
+@section Números de ramos mágicos
+
+@c Want xref to here from "log"?
+
+@c <en>This section describes a @sc{cvs} feature called
+@c <en>@dfn{magic branches}. For most purposes, you need not
+@c <en>worry about magic branches; @sc{cvs} handles them for
+@c <en>you. However, they are visible to you in certain
+@c <en>circumstances, so it may be useful to have some idea of
+@c <en>how it works.
+Esta seção descreve uma habilidade do @sc{cvs} chamada
+@dfn{ramos mágicos}. Para a maioria dos casos, você
+não precisa se preocupar com os ramos mágicos; o
+@sc{cvs} cuida deles para você. Entretanto, eles
+aparecem em algumas situações, sendo importante se ter
+alguma idéia de como eles funcionam.
+
+@c <en>Externally, branch numbers consist of an odd number of
+@c <en>dot-separated decimal integers. @xref{Revision
+@c <en>numbers}. That is not the whole truth, however. For
+@c <en>efficiency reasons @sc{cvs} sometimes inserts an extra 0
+@c <en>in the second rightmost position (1.2.4 becomes
+@c <en>1.2.0.4, 8.9.10.11.12 becomes 8.9.10.11.0.12 and so
+@c <en>on).
+Externamente, números de ramos consistem de uma quantidade
+ímpar de inteiros decimais separados por
+ponto. @xref{Números de revisão}. Isto não é toda a
+verdade, entretanto. Por questões de eficiência, o
+@sc{cvs} insere, em alguns momentos, um 0 extra na
+segunda posição da direita para a esquerda (1.2.4 se torna
+1.2.0.4, 8.9.10.11.12 se torna 8.9.10.11.0.12 e assim
+por diante).
+
+@c <en>@sc{cvs} does a pretty good job at hiding these so
+@c <en>called magic branches, but in a few places the hiding
+@c <en>is incomplete:
+O @sc{cvs} faz um bom trabalho escondendo estes tais
+ramos mágicos, mas em alguns lugares alguma coisa aparece:
+
+@itemize @bullet
+@ignore
+@c This is in ignore as I'm taking their word for it,
+@c that this was fixed
+@c a long time ago. But before deleting this
+@c entirely, I'd rather verify it (and add a test
+@c case to the testsuite).
+@item
+@c <en>The magic branch can appear in the output from
+@c <en>@code{cvs status} in vanilla @sc{cvs} 1.3. This is
+@c <en>fixed in @sc{cvs} 1.3-s2.
+The magic branch can appear in the output from
+@code{cvs status} in vanilla @sc{cvs} 1.3. This is
+fixed in @sc{cvs} 1.3-s2.
+
+@end ignore
+@item
+@c <en>The magic branch number appears in the output from
+@c <en>@code{cvs log}.
+O número de ramo mágico aparece na saída do
+@code{cvs log}.
+@c What output should appear instead?
+
+@item
+@c <en>You cannot specify a symbolic branch name to @code{cvs
+@c <en>admin}.
+Você não pode especificar um nome de ramo simbólico
+para o @code{cvs admin}.
+
+@end itemize
+
+@c Can CVS do this automatically the first time
+@c you check something in to that branch? Should
+@c it?
+@c <en>You can use the @code{admin} command to reassign a
+@c <en>symbolic name to a branch the way @sc{rcs} expects it
+@c <en>to be. If @code{R4patches} is assigned to the branch
+@c <en>1.4.2 (magic branch number 1.4.0.2) in file
+@c <en>@file{numbers.c} you can do this:
+Você pode usar o comando @code{admin} para reatribuir
+um nome simbólico para um ramo da forma que o @sc{rcs}
+espera que seja. Se o @code{R4patches} está atribuído
+para o ramo 1.4.2 (número de ramo mágico 1.4.0.2) no
+arquivo @file{numbers.c} você pode fazer isto:
+
+@example
+$ cvs admin -NR4patches:1.4.2 numbers.c
+@end example
+
+@c <en>It only works if at least one revision is already
+@c <en>committed on the branch. Be very careful so that you
+@c <en>do not assign the tag to the wrong number. (There is
+@c <en>no way to see how the tag was assigned yesterday).
+Isto apenas funciona se pelo menos uma revisão já está
+efetivada no ramo. Seja bastante cuidadoso para não
+atribuir a etiqueta ao número errado. (Não existe
+jeito de ver como a etiqueta estava atribuída ontem).
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Merging a branch
+@node Mesclando um ramo
+@c <en>@section Merging an entire branch
+@section Mesclando um ramo inteiro
+@c <en>@cindex Merging a branch
+@cindex Mesclando um ramo
+@c <en>@cindex -j (merging branches)
+@cindex -j (mesclando ramos)
+
+@c <en>You can merge changes made on a branch into your working copy by giving
+@c <en>the @samp{-j @var{branchname}} flag to the @code{update} subcommand. With one
+@c <en>@samp{-j @var{branchname}} option it merges the changes made between the
+@c <en>greatest common ancestor (GCA) of the branch and the destination revision (in
+@c <en>the simple case below the GCA is the point where the branch forked) and the
+@c <en>newest revision on that branch into your working copy.
+Você pode mesclar mudanças feitas num ramo em seu
+diretório de trabalho passando a opção @samp{-j
+@var{nome_do_ramo}} para o subcomando @code{update}.
+Com uma opção @samp{-j @var{nome_do_ramo}} ele mescla
+as mudançãs feitas entre o maior ancestral comum
+(greatest common ancestor - GCA) do ramo e a revisão de
+destino (no caso mais simples abaixo, o GCA é o ponto
+onde o ramo bifurcou) e a nova revisão neste ramo na
+sua cópia de trabalho.
+
+@cindex Join
+@c <en>The @samp{-j} stands for ``join''.
+O @samp{-j} significa ``join'', ``juntar''.
+
+@c <en>@cindex Branch merge example
+@cindex Exemplo de mesclagem de ramo
+@c <en>@cindex Example, branch merge
+@cindex Mesclagem de ramo, exemplo
+@c <en>@cindex Merge, branch example
+@cindex Mesclagem, de ramo, exemplo
+@c <en>Consider this revision tree:
+Considere esta árvore de revisão:
+
+@example
++-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+
+ !
+ !
+ ! +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+@end example
+
+@noindent
+@c <en>The branch 1.2.2 has been given the tag (symbolic name) @samp{R1fix}. The
+@c <en>following example assumes that the module @samp{mod} contains only one
+@c <en>file, @file{m.c}.
+O ramo 1.2.2 recebeu a etiqueta (nome simbólico)
+@samp{R1fix}. O exemplo seguinte assume que o módulo
+@samp{mod} contém apenas um arquivo, @file{m.c}.
+
+@example
+$ cvs checkout mod # @r{Retrieve the latest revision, 1.4}
+
+$ cvs update -j R1fix m.c # @r{Merge all changes made on the branch,}
+ # @r{i.e. the changes between revision 1.2}
+ # @r{and 1.2.2.2, into your working copy}
+ # @r{of the file.}
+
+$ cvs commit -m "Included R1fix" # @r{Create revision 1.5.}
+@end example
+
+@c <en>A conflict can result from a merge operation. If that
+@c <en>happens, you should resolve it before committing the
+@c <en>new revision. @xref{Conflicts example}.
+Um conflito pode resultar de uma operação de mesclagem.
+Se isto acontecer, você deve resolver isto antes de
+efetivar a nova revisão. @xref{Exemplo de conflitos}.
+
+@c <en>If your source files contain keywords (@pxref{Keyword substitution}),
+@c <en>you might be getting more conflicts than strictly necessary. See
+@c <en>@ref{Merging and keywords}, for information on how to avoid this.
+Se seu código fonte contém palavras-chave
+(@pxref{Substituição de palavra-chave}), você deve
+obter mais conflitos que os ???strictly necessary???.
+Veja em @ref{Mesclagem e palavras-chave}, para saber
+como evitar isto.
+
+@c <en>The @code{checkout} command also supports the @samp{-j @var{branchname}} flag. The
+@c <en>same effect as above could be achieved with this:
+O comando @code{checkout} também suporta a opção
+@samp{-j @var{branchname}}. O mesmo efeito que o visto
+logo acima pode ser obtido com isto:
+
+@example
+$ cvs checkout -j R1fix mod
+$ cvs commit -m "Included R1fix"
+@end example
+
+@c <en>It should be noted that @code{update -j @var{tagname}} will also work but may
+@c <en>not produce the desired result. @xref{Merging adds and removals}, for more.
+Observe que o @code{update -j @var{tagname}} também vai
+funcionar mas pode não produzir o efeito desejado.
+@xref{Mesclando adicionados e removidos}, para mais informações.
+
+@c <en>@node Merging more than once
+@node Mesclando mais de uma vez
+@c <en>@section Merging from a branch several times
+@section Mesclando a partir de um ramo várias vezes
+
+@c <en>Continuing our example, the revision tree now looks
+@c <en>like this:
+Continuando nosso exemplo, a árvore de revisão agora
+vai parecer com isto:
+
+@example
++-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+ +---------+ +---------+
+@end example
+
+@noindent
+@c <en>where the starred line represents the merge from the
+@c <en>@samp{R1fix} branch to the main trunk, as just
+@c <en>discussed.
+Onde a linha de asteriscos representa a mescla entre o
+ramo @samp{R1fix} e o tronco principal, como acabamos
+de ver.
+
+@c <en>Now suppose that development continues on the
+@c <en>@samp{R1fix} branch:
+Agora suponha que o desenvolvimento continua no ramo @samp{R1fix}:
+
+@example
++-----+ +-----+ +-----+ +-----+ +-----+
+! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- The main trunk
++-----+ +-----+ +-----+ +-----+ +-----+
+ ! *
+ ! *
+ ! +---------+ +---------+ +---------+
+Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+ +---------+ +---------+ +---------+
+@end example
+
+@noindent
+@c <en>and then you want to merge those new changes onto the
+@c <en>main trunk. If you just use the @code{cvs update -j
+@c <en>R1fix m.c} command again, @sc{cvs} will attempt to
+@c <en>merge again the changes which you have already merged,
+@c <en>which can have undesirable side effects.
+e então você quer mesclar as novas mudanças dentro do
+tronco principal. Se você usar simplesmente o comando
+@code{cvs update -j R1fix m.c} de novo, o @sc{cvs} vai
+tentar mesclar de novo as mudanças que você já mesclou,
+o que pode gerar efeitos indesejados.
+
+@c <en>So instead you need to specify that you only want to
+@c <en>merge the changes on the branch which have not yet been
+@c <en>merged into the trunk. To do that you specify two
+@c <en>@samp{-j} options, and @sc{cvs} merges the changes from
+@c <en>the first revision to the second revision. For
+@c <en>example, in this case the simplest way would be
+Então, ao invés disto, você precisa especificar que você
+quer apenas mesclar no tronco as mudanças que ainda não
+foram mescladas. Para fazer isto você especifica duas
+opções @samp{-j}, e o @sc{cvs} mescla as mudanças da
+primeira revisão na segunda revisão. Por exemplo,
+neste caso a forma mais simples será
+
+@example
+cvs update -j 1.2.2.2 -j R1fix m.c # @r{Merge changes from 1.2.2.2 to the}
+ # @r{head of the R1fix branch}
+@end example
+
+@c <en>The problem with this is that you need to specify the
+@c <en>1.2.2.2 revision manually. A slightly better approach
+@c <en>might be to use the date the last merge was done:
+O problema com isto é que você precisa especificar a
+revisão 1.2.2.2 manualmente. Uma abordagem um pouco
+melhor seria usar a data em que a última mesclagem foi
+feita:
+
+@example
+cvs update -j R1fix:yesterday -j R1fix m.c
+@end example
+
+@c <en>Better yet, tag the R1fix branch after every merge into
+@c <en>the trunk, and then use that tag for subsequent merges:
+Ou ainda melhor, etiquete o ramo R1fix depois de cada
+mesclagem no tronco, e então use a etiqueta para
+mesclagens subseqüentes:
+
+@example
+cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Merging two revisions
+@node Mesclando duas revisões
+@c <en>@section Merging differences between any two revisions
+@section Mesclando diferenças entre duas revisões quaisquer
+@c <en>@cindex Merging two revisions
+@cindex Mesclando duas revisões
+@c <en>@cindex Revisions, merging differences between
+@cindex Revisões, mesclando diferenças entre
+@c <en>@cindex Differences, merging
+@cindex Diferenças, mesclando
+
+@c <en>With two @samp{-j @var{revision}} flags, the @code{update}
+@c <en>(and @code{checkout}) command can merge the differences
+@c <en>between any two revisions into your working file.
+Com duas opções @samp{-j @var{revisão}}, o comando @code{update}
+(e @code{checkout}) pode mesclar as diferenças entre
+quaisquer duas revisões no arquivo do diretório de trabalho.
+
+@c <en>@cindex Undoing a change
+@cindex Desfazendo uma alteração
+@c <en>@cindex Removing a change
+@cindex Removendo uma alteração
+@example
+$ cvs update -j 1.5 -j 1.3 backend.c
+@end example
+
+@noindent
+@c <en>will undo all changes made between revision
+@c <en>1.3 and 1.5. Note the order of the revisions!
+vai desfazer todas as alterações feitas entre as
+revisões 1.3 e 1.5. Observe a ordem das revisões!
+
+@c <en>If you try to use this option when operating on
+@c <en>multiple files, remember that the numeric revisions will
+@c <en>probably be very different between the various files.
+@c <en>You almost always use symbolic
+@c <en>tags rather than revision numbers when operating on
+@c <en>multiple files.
+Se você tentar usar esta opção quando estiver agindo em
+vários arquivos, lembre-se que as revisões numéricas
+provavelmente vão ser bastante diferentes nos vários
+arquivos. Você vai quase sempre usar etiquetas
+simbólicas ao invés de números de revisão quando
+estiver operando em vários arquivos.
+
+@c <en>@cindex Restoring old version of removed file
+@cindex Recuperando uma versão antiga de um arquivo removido
+@c <en>@cindex Resurrecting old version of dead file
+@cindex Ressucitando uma versão antiga de um arquivo morto
+@c <en>Specifying two @samp{-j} options can also undo file
+@c <en>removals or additions. For example, suppose you have
+@c <en>a file
+@c <en>named @file{file1} which existed as revision 1.1, and
+@c <en>you then removed it (thus adding a dead revision 1.2).
+@c <en>Now suppose you want to add it again, with the same
+@c <en>contents it had previously. Here is how to do it:
+Ao especificar duas opções @samp{-j} você pode também
+desfazer uma remoção ou adição de arquivo. Por
+exemplo, suponhao que você tem um arquivo chamado
+@file{file1} que existia numa revisão 1.1, e você
+removeu ele (adicionando então uma revisão morta 1.2).
+Agora suponha que você quer adicioná-lo novamente, com
+o mesmo conteúdo que ele tinha anteriormente. Aqui
+está como fazer isto:
+
+@example
+$ cvs update -j 1.2 -j 1.1 file1
+U file1
+$ cvs commit -m test
+Checking in file1;
+/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+new revision: 1.3; previous revision: 1.2
+done
+$
+@end example
+
+@c <en>@node Merging adds and removals
+@node Mesclando adicionados e removidos
+@c <en>@section Merging can add or remove files
+@section Mesclar pode adicionar ou remover arquivos
+
+@c <en>If the changes which you are merging involve removing
+@c <en>or adding some files, @code{update -j} will reflect
+@c <en>such additions or removals.
+Se as mudanças que você está mesclando envolvem remover
+ou adicionar alguns arquivos, @code{update -j} vai
+resultar em algumas adições ou remoções.
+
+@c FIXME: This example needs a lot more explanation.
+@c We also need other examples for some of the other
+@c cases (not all--there are too many--as long as we present a
+@c coherent general principle).
+@c <en>For example:
+Por exemplo:
+@example
+cvs update -A
+touch a b c
+cvs add a b c ; cvs ci -m "added" a b c
+cvs tag -b branchtag
+cvs update -r branchtag
+touch d ; cvs add d
+rm a ; cvs rm a
+cvs ci -m "added d, removed a"
+cvs update -A
+cvs update -jbranchtag
+@end example
+
+@c <en>After these commands are executed and a @samp{cvs commit} is done,
+@c <en>file @file{a} will be removed and file @file{d} added in the main branch.
+Depois destes comandos terem sido executados e um
+@samp{cvs commit} ser feito, o arquivo @file{a} vai ser
+removido e o arquivo @file{d} adicionado no ramo principal.
+@c (which was determined by trying it)
+
+@c <en>Note that using a single static tag (@samp{-j @var{tagname}})
+@c <en>rather than a dynamic tag (@samp{-j @var{branchname}}) to merge
+@c <en>changes from a branch will usually not remove files which were removed on the
+@c <en>branch since @sc{cvs} does not automatically add static tags to dead revisions.
+@c <en>The exception to this rule occurs when
+@c <en>a static tag has been attached to a dead revision manually. Use the branch tag
+@c <en>to merge all changes from the branch or use two static tags as merge endpoints
+@c <en>to be sure that all intended changes are propagated in the merge.
+Observe que ao se usar uma única etiqueta estática
+(@samp{-j @var{tagname}}) ao invés de uma etiqueta
+dinâmica (@samp{-j @var{branchname}}) para mesclar
+mudanças a partir de um ramo normalmente não vai
+remover arquivos que foram removidos do ramo, já que o
+@sc{cvs} não adiona etiquetas estáticas a revisões
+mortas. A exceção a esta regra ocorre quando uma
+etiqueta estática foi colocada numa revisão morta
+manualmente. Use a etiqueta do ramo para mesclar todas
+as mudanças a partir do ramo ou use duas etiquetas
+estáticas como limites da mescla para ter certeza que
+todas as mudanças pretendidas vão ser propagadas na mesclagem.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Merging and keywords
+@node Mesclagem e palavras-chave
+@c <en>@section Merging and keywords
+@section Mesclagem e palavras-chave
+@c <en>@cindex Merging, and keyword substitution
+@cindex Mesclagem, e substituição de palavra-chave
+@c <en>@cindex Keyword substitution, and merging
+@cindex Substituição de palavra-chave, e mesclagem
+@c <en>@cindex -j (merging branches), and keyword substitution
+@cindex -j (mesclando ramos), e substituição de palavra-chave
+@c <en>@cindex -kk, to avoid conflicts during a merge
+@cindex -kk, para evitar conflitos durante uma mesclagem
+
+@c <en>If you merge files containing keywords (@pxref{Keyword
+@c <en>substitution}), you will normally get numerous
+@c <en>conflicts during the merge, because the keywords are
+@c <en>expanded differently in the revisions which you are
+@c <en>merging.
+Se você mescla arquivos contendo palavras-chave
+(@pxref{Substituição de palavra-chave}), você
+normalmente vai ter muitos conflitos durante a
+mesclagem, já que as palavras-chave são expandidas de
+forma diferente nas revisões que você está mesclando.
+
+@c <en>Therefore, you will often want to specify the
+@c <en>@samp{-kk} (@pxref{Substitution modes}) switch to the
+@c <en>merge command line. By substituting just the name of
+@c <en>the keyword, not the expanded value of that keyword,
+@c <en>this option ensures that the revisions which you are
+@c <en>merging will be the same as each other, and avoid
+@c <en>spurious conflicts.
+Portanto, você vai freqüentemente querer especificar a opção
+@samp{-kk} (@pxref{Modos de substituição}) na linha de
+comando do merge. Simplesmente substituindo o nome da
+palavra-chave, e não o valor expandido dela, vai
+garantir que as revisões que você vai estar mesclando
+???will be the same as each other???, e assim evitar
+conflitos falsos.
+
+@c <en>For example, suppose you have a file like this:
+Por exemplo, suponha que você tenha um arquivo como este:
+
+@example
+ +---------+
+ _! 1.1.2.1 ! <- br1
+ / +---------+
+ /
+ /
++-----+ +-----+
+! 1.1 !----! 1.2 !
++-----+ +-----+
+@end example
+
+@noindent
+@c <en>and your working directory is currently on the trunk
+@c <en>(revision 1.2). Then you might get the following
+@c <en>results from a merge:
+E seu diretório de trabalho está no momento no tronco
+(revisão 1.2). Então pode acontecer de você obter os
+seguintes resultados de uma mescla:
+
+@example
+$ cat file1
+key $@splitrcskeyword{}Revision: 1.2 $
+. . .
+$ cvs update -j br1
+U file1
+RCS file: /cvsroot/first-dir/file1,v
+retrieving revision 1.1
+retrieving revision 1.1.2.1
+Merging differences between 1.1 and 1.1.2.1 into file1
+rcsmerge: warning: conflicts during merge
+$ cat file1
+@asis{}<<<<<<< file1
+key $@splitrcskeyword{}Revision: 1.2 $
+@asis{}=======
+key $@splitrcskeyword{}Revision: 1.1.2.1 $
+@asis{}>>>>>>> 1.1.2.1
+. . .
+@end example
+
+@c <en>What happened was that the merge tried to merge the
+@c <en>differences between 1.1 and 1.1.2.1 into your working
+@c <en>directory. So, since the keyword changed from
+@c <en>@code{Revision: 1.1} to @code{Revision: 1.1.2.1},
+@c <en>@sc{cvs} tried to merge that change into your working
+@c <en>directory, which conflicted with the fact that your
+@c <en>working directory had contained @code{Revision: 1.2}.
+O que aconteceu é que a mesclagem tentou mesclar as
+diferenças entre 1.1 e 1.1.2.1 dentro de seu diretório
+de trabalho. Então, uma vez que a palavra-chave mudou
+de @code{Revision: 1.1} para @code{Revision: 1.1.2.1},
+o @sc{cvs} tentou mesclar esta mudança no seu diretório
+de trabalho, o que gerou um conflito com o fato de seu
+diretório de trabalho continha @code{Revision: 1.2}.
+
+@c <en>Here is what happens if you had used @samp{-kk}:
+Isto é o que aconteceria se você tivesse usado @samp{-kk}:
+
+@example
+$ cat file1
+key $@splitrcskeyword{}Revision: 1.2 $
+. . .
+$ cvs update -kk -j br1
+U file1
+RCS file: /cvsroot/first-dir/file1,v
+retrieving revision 1.1
+retrieving revision 1.1.2.1
+Merging differences between 1.1 and 1.1.2.1 into file1
+$ cat file1
+key $@splitrcskeyword{}Revision$
+. . .
+@end example
+
+@c <en>What is going on here is that revision 1.1 and 1.1.2.1
+@c <en>both expand as plain @code{Revision}, and therefore
+@c <en>merging the changes between them into the working
+@c <en>directory need not change anything. Therefore, there
+@c <en>is no conflict.
+O que está acontecendo aqui é que ambas as revisões 1.1
+e 1.1.2.1 expandem em um simples @code{Revision}, e
+consequentemente, não há nenhuma mudança para mesclar entre elas no
+diretório de trabalho. Portanto, não há conflito.
+
+@c <en>@strong{WARNING: In versions of @sc{cvs} prior to 1.12.2, there was a
+@c <en>major problem with using @samp{-kk} on merges. Namely, @samp{-kk}
+@c <en>overrode any default keyword expansion mode set in the archive file in
+@c <en>the repository. This could, unfortunately for some users, cause data
+@c <en>corruption in binary files (with a default keyword expansion mode set
+@c <en>to @samp{-kb}). Therefore, when a repository contained binary files,
+@c <en>conflicts had to be dealt with manually rather than using @samp{-kk} in
+@c <en>a merge command.}
+@strong{WARNING: Em versões do @sc{cvs} anteriores à
+1.12.2, existia um grande problema ao usar @samp{-kk}
+em mesclagens. A saber, @samp{-kk} sobreescrevia
+qualquer modo de expansão de palavra-chave padrão
+ajustado no arquivo do repositório. Isto podia,
+infelizmente para alguns usuários, corromper arquivos
+binários (com um modo de expansão de palavra-chave
+padrão em @samp{-kb}). Portanto, quando um repositório
+contém arquivos binários, conflitos têm que ser
+tratados manualmente ao invés de serem tratados com
+@samp{-kk} no comando de mescla.}
+
+@c <en>In @sc{cvs} version 1.12.2 and later, the keyword expansion mode
+@c <en>provided on the command line to any @sc{cvs} command no longer
+@c <en>overrides the @samp{-kb} keyword expansion mode setting for binary
+@c <en>files, though it will still override other default keyword expansion
+@c <en>modes. You can now safely merge using @samp{-kk} to avoid spurious conflicts
+@c <en>on lines containing RCS keywords, even when your repository contains
+@c <en>binary files.
+Da versão 1.12.2 para frente do @sc{cvs}, a expansão
+por palavra-chave disponível na linha de comando para
+qualquer comando do @sc{cvs} não mais sobreescreve o
+modo de expansão de palavra-chave @samp{-kb} para
+arquivos binários, embora ainda sobreescreva os outros
+modos de expansão de palavra-chave. Você pode agora
+mesclar com tranquilidade usando @samp{-kk} para evitar
+conflitos falsos em linhas contendo palavras-chave do
+RCS, mesmo quando seu repositório contém arquivos binários.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Recursive behavior
+@node Comportamento recursivo
+@c <en>@chapter Recursive behavior
+@chapter Comportamento recursivo
+@c <en>@cindex Recursive (directory descending)
+@cindex Recursivo (directory descending)
+@c <en>@cindex Directory, descending
+@cindex Directory, descending
+@c <en>@cindex Descending directories
+@cindex Descending directories
+@c <en>@cindex Subdirectories
+@cindex Subdiretórios
+
+@c <en>Almost all of the subcommands of @sc{cvs} work
+@c <en>recursively when you specify a directory as an
+@c <en>argument. For instance, consider this directory
+@c <en>structure:
+Quase todos os subcomandos do @sc{cvs} trabalham de
+forma recursiva quando você passa um diretório como
+argumento. Por exemplo, considere esta estrutura:
+
+@example
+ @code{$HOME}
+ |
+ +--@t{tc}
+ | |
+ +--@t{CVS}
+@c <en> | (internal @sc{cvs} files)
+ | (internal @sc{cvs} files)
+ +--@t{Makefile}
+ +--@t{backend.c}
+ +--@t{driver.c}
+ +--@t{frontend.c}
+ +--@t{parser.c}
+ +--@t{man}
+ | |
+ | +--@t{CVS}
+@c <en> | | (internal @sc{cvs} files)
+ | | (internal @sc{cvs} files)
+ | +--@t{tc.1}
+ |
+ +--@t{testing}
+ |
+ +--@t{CVS}
+@c <en> | (internal @sc{cvs} files)
+ | (internal @sc{cvs} files)
+ +--@t{testpgm.t}
+ +--@t{test2.t}
+@end example
+
+@noindent
+@c <en>If @file{tc} is the current working directory, the
+@c <en>following is true:
+Se @file{tc} é o diretório atual, então é verdade que:
+
+@itemize @bullet
+@item
+@c <en>@samp{cvs update testing} is equivalent to
+@samp{cvs update testing} é equivalente a
+
+@example
+cvs update testing/testpgm.t testing/test2.t
+@end example
+
+@item
+@c <en>@samp{cvs update testing man} updates all files in the
+@c <en>subdirectories
+@samp{cvs update testing man} atualiza todos os
+arquivos nos subdiretórios
+
+@item
+@c <en>@samp{cvs update .} or just @samp{cvs update} updates
+@c <en>all files in the @code{tc} directory
+@samp{cvs update .} ou simplesmente @samp{cvs update}
+atualiza todos os arquivos no diretório @code{tc}
+@end itemize
+
+@c <en>If no arguments are given to @code{update} it will
+@c <en>update all files in the current working directory and
+@c <en>all its subdirectories. In other words, @file{.} is a
+@c <en>default argument to @code{update}. This is also true
+@c <en>for most of the @sc{cvs} subcommands, not only the
+@c <en>@code{update} command.
+Se nenhum argumento é dado ao @code{update} ele
+atualiza todos os arquivos no diretório atual e nos
+seus subdiretórios recursivamente. Em outras palavras,
+O @file{.} é um argumento padrão para o @code{update}.
+O mesmo vale para a maioria dos subcomandos do
+@sc{cvs}, e não apenas para o @code{update}.
+
+@c <en>The recursive behavior of the @sc{cvs} subcommands can be
+@c <en>turned off with the @samp{-l} option.
+@c <en>Conversely, the @samp{-R} option can be used to force recursion if
+@c <en>@samp{-l} is specified in @file{~/.cvsrc} (@pxref{~/.cvsrc}).
+O comportamento recursivo dos subcomandos do @sc{cvs}
+pode ser desligado com a opção @samp{-l}. De forma
+oposta, a opção @samp{-R} pode ser usada para forçar a
+recursão se o @samp{-l} estiver especificado no
+@file{~/.cvsrc} (@pxref{~/.cvsrc}).
+
+@example
+$ cvs update -l # @r{Don't update files in subdirectories}
+@end example
+
+@c ---------------------------------------------------------------------
+@c <en>@node Adding and removing
+@node Adicionando e removendo
+@c <en>@chapter Adding, removing, and renaming files and directories
+@chapter Adicionando, removendo e renomeando arquivos e diretórios
+
+@c <en>In the course of a project, one will often add new
+@c <en>files. Likewise with removing or renaming, or with
+@c <en>directories. The general concept to keep in mind in
+@c <en>all these cases is that instead of making an
+@c <en>irreversible change you want @sc{cvs} to record the
+@c <en>fact that a change has taken place, just as with
+@c <en>modifying an existing file. The exact mechanisms to do
+@c <en>this in @sc{cvs} vary depending on the situation.
+No decorrer de um projeto, normalmente se adicionam
+arquivos. Da mesma forma se remove e se renomeia. E
+tudo isto também para diretórios. O conceito geral que
+se deve ter em mente em todos estes casos é que ao
+invés de fazer uma mudança irreversível você vai querer
+que o @sc{cvs} registre o fato de que uma mudança
+ocorreu, da mesma forma que é feito com a modificação
+de um arquivo existente. O mecanismo exato para se
+fazer isto com o @sc{cvs} varia conforme o caso.
+
+@menu
+@c <en>* Adding files:: Adding files
+* Adicionando arquivos:: Adicionando arquivos
+@c <en>* Removing files:: Removing files
+* Removendo arquivos:: Removendo arquivos
+@c <en>* Removing directories:: Removing directories
+* Removendo diretórios:: Removendo diretórios
+@c <en>* Moving files:: Moving and renaming files
+* Movendo arquivos:: Movendo e renomeando arquivos
+@c <en>* Moving directories:: Moving and renaming directories
+* Movendo diretórios:: Movendo e renomeando diretórios
+@end menu
+
+@c <en>@node Adding files
+@node Adicionando arquivos
+@c <en>@section Adding files to a directory
+@section Adicionando arquivos a um diretório
+@c <en>@cindex Adding files
+@cindex Adicionando arquivos
+
+@c <en>To add a new file to a directory, follow these steps.
+Para adicionar um novo arquivo a um diretório, siga
+estes passos.
+
+@itemize @bullet
+@item
+@c <en>You must have a working copy of the directory.
+@c <en>@xref{Getting the source}.
+Você deve ter uma cópia de trabalho do diretório.
+@xref{Obtendo os fontes}.
+
+@item
+@c <en>Create the new file inside your working copy of the directory.
+Crie o novo arquivo dentro da cópia local do diretório.
+
+@item
+@c <en>Use @samp{cvs add @var{filename}} to tell @sc{cvs} that you
+@c <en>want to version control the file. If the file contains
+@c <en>binary data, specify @samp{-kb} (@pxref{Binary files}).
+Use @samp{cvs add @var{filename}} para dizer ao
+@sc{cvs} que você quer fazer controle de versões no
+arquivo. Se o arquivo contém dados em binário,
+especifique @samp{-kb} (@pxref{Arquivos binários}).
+
+@item
+@c <en>Use @samp{cvs commit @var{filename}} to actually check
+@c <en>in the file into the repository. Other developers
+@c <en>cannot see the file until you perform this step.
+Use @samp{cvs commit @var{filename}} para de fato
+colocar o arquivo no repositório. Outros
+desenvolvedores não poderam ver o arquivo até que você
+tenha feito isto.
+@end itemize
+
+@c <en>You can also use the @code{add} command to add a new
+@c <en>directory.
+Você também pode usar o comando @code{add} para
+adicionar um novo diretório.
+@c FIXCVS and/or FIXME: Adding a directory doesn't
+@c require the commit step. This probably can be
+@c considered a CVS bug, but it is possible we should
+@c warn people since this behavior probably won't be
+@c changing right away.
+
+@c <en>Unlike most other commands, the @code{add} command is
+@c <en>not recursive. You cannot even type @samp{cvs add
+@c <en>foo/bar}! Instead, you have to
+Ao contrário da maioria dos outros comandos, o comando
+@code{add} não é recursivo. Você não pode sequer digitar @samp{cvs add
+foo/bar}! Ao invés disso, você tem que fazer
+@c FIXCVS: This is, of course, not a feature. It is
+@c just that no one has gotten around to fixing "cvs add
+@c foo/bar".
+
+@example
+$ cd foo
+$ cvs add bar
+@end example
+
+@c <en>@cindex add (subcommand)
+@cindex add (subcomando)
+@c <en>@deffn Command {cvs add} [@code{-k} kflag] [@code{-m} message] files @dots{}
+@deffn Comando {cvs add} [@code{-k} kflag] [@code{-m} mensagem] arquivos @dots{}
+
+@c <en>Schedule @var{files} to be added to the repository.
+@c <en>The files or directories specified with @code{add} must
+@c <en>already exist in the current directory. To add a whole
+@c <en>new directory hierarchy to the source repository (for
+@c <en>example, files received from a third-party vendor), use
+@c <en>the @code{import} command instead. @xref{import}.
+Agenda @var{arquivos} para serem adicionados ao repositório.
+Os arquivos ou diretórios especificados com @code{add}
+já devem existir no diretório atual. Para adicionar
+toda uma estrutura de diretórios nova ao repositório
+de fontes (por exemplo, arquivos recebidos de um
+fornecedor terceiro), use o comando @code{import} ao
+invés do @code{add}. @xref{import}.
+
+@c <en>The added files are not placed in the source repository
+@c <en>until you use @code{commit} to make the change
+@c <en>permanent. Doing an @code{add} on a file that was
+@c <en>removed with the @code{remove} command will undo the
+@c <en>effect of the @code{remove}, unless a @code{commit}
+@c <en>command intervened. @xref{Removing files}, for an
+@c <en>example.
+Os arquivos adicionados não são colocados no
+repositório de fontes até que você use o @code{commit}
+para tornar a mudança permanente. Aplicar um
+@code{add} num arquivo que foi removido com o comando
+@code{remove} vai desfazer o efeito do @code{remove}, a
+menos que haja um @code{commit} entre os dois.
+@xref{Removendo arquivos}, para um exemplo.
+
+@c <en>The @samp{-k} option specifies the default way that
+@c <en>this file will be checked out; for more information see
+@c <en>@ref{Substitution modes}.
+A opção @samp{-k} especifica a forma padrão como este
+arquivo vai ser ???checked out???; para mais
+informações veja @ref{Modos de substituição}.
+
+@c As noted in BUGS, -m is broken client/server (Nov
+@c 96). Also see testsuite log2-* tests.
+@c <en>The @samp{-m} option specifies a description for the
+@c <en>file. This description appears in the history log (if
+@c <en>it is enabled, @pxref{history file}). It will also be
+@c <en>saved in the version history inside the repository when
+@c <en>the file is committed. The @code{log} command displays
+@c <en>this description. The description can be changed using
+@c <en>@samp{admin -t}. @xref{admin}. If you omit the
+@c <en>@samp{-m @var{description}} flag, an empty string will
+@c <en>be used. You will not be prompted for a description.
+A opção @samp{-m} especifica uma descrição para o
+arquivo. Esta descrição aparece no registro histórico (history log)
+(se este estiver habilitado, @pxref{arquivo history (histórico)}).
+Ela também vai ser guardada no histórico de versões
+dentro do repositório quando o arquivo é
+???committed???. O comando @code{log} mostra esta
+descrição. A descrição pode ser alterada usando-se
+@samp{admin -t}. @xref{admin}. Se você omitir a opção
+@samp{-m @var{description}}, uma string vazia vai ser
+usada. Não vai ser pedido a você uma descrição.
+@end deffn
+
+@c <en>For example, the following commands add the file
+@c <en>@file{backend.c} to the repository:
+Por exemplo, os seguintes comandos adicionam o arquivo
+@file{backend.c} ao repositório:
+
+@c This example used to specify
+@c -m "Optimizer and code generation passes."
+@c to the cvs add command, but that doesn't work
+@c client/server (see log2 in sanity.sh). Should fix CVS,
+@c but also seems strange to document things which
+@c don't work...
+@example
+$ cvs add backend.c
+$ cvs commit -m "Early version. Not yet compilable." backend.c
+@end example
+
+@c <en>When you add a file it is added only on the branch
+@c <en>which you are working on (@pxref{Branching and merging}). You can
+@c <en>later merge the additions to another branch if you want
+@c <en>(@pxref{Merging adds and removals}).
+Quando você adiciona um arquivo ele é adicionado apenas
+no ramo no qual você está trabalhando
+(@pxref{Ramificando e mesclando}). Você pode mais
+tarde mesclar as adições a outro ramo se você quiser
+(@pxref{Mesclando adicionados e removidos}).
+@c Should we mention that earlier versions of CVS
+@c lacked this feature (1.3) or implemented it in a buggy
+@c way (well, 1.8 had many bugs in cvs update -j)?
+@c Should we mention the bug/limitation regarding a
+@c file being a regular file on one branch and a directory
+@c on another?
+@c FIXME: This needs an example, or several, here or
+@c elsewhere, for it to make much sense.
+@c Somewhere we need to discuss the aspects of death
+@c support which don't involve branching, I guess.
+@c Like the ability to re-create a release from a tag.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Removing files
+@node Removendo arquivos
+@c <en>@section Removing files
+@section Removendo arquivos
+@c <en>@cindex Removing files
+@cindex Removendo arquivos
+@c <en>@cindex Deleting files
+@cindex Apagando arquivos
+
+@c FIXME: this node wants to be split into several
+@c smaller nodes. Could make these children of
+@c "Adding and removing", probably (death support could
+@c be its own section, for example, as could the
+@c various bits about undoing mistakes in adding and
+@c removing).
+@c <en>Directories change. New files are added, and old files
+@c <en>disappear. Still, you want to be able to retrieve an
+@c <en>exact copy of old releases.
+Diretórios mudam. Novos arquivos são adicionados, e
+arquivos velhos somem. Ainda assim, você vai querer
+poder recuperar uma cópia exata de releases antigas.
+
+@c <en>Here is what you can do to remove a file,
+@c <en>but remain able to retrieve old revisions:
+Aqui está o que você pode fazer para remover um
+arquivo, mas continuar sendo capaz de recuperar
+revisões antigas dele:
+
+@itemize @bullet
+@c FIXME: should probably be saying something about
+@c having a working directory in the first place.
+@item
+@c <en>Make sure that you have not made any uncommitted
+@c <en>modifications to the file. @xref{Viewing differences},
+@c <en>for one way to do that. You can also use the
+@c <en>@code{status} or @code{update} command. If you remove
+@c <en>the file without committing your changes, you will of
+@c <en>course not be able to retrieve the file as it was
+@c <en>immediately before you deleted it.
+Certifique-se de não ter feito nenhuma alteração que
+falte fazer ???commit??? nele. @xref{Vendo as diferenças},
+para uma forma de fazer isto. Você também pode usar o comando
+@code{status} ou o @code{update}. Se você remove o
+arquivo sem fazer ???commit??? nas suas mudanças,
+obviamente você não vai ser capaz de recuperar o
+arquivo na forma como ele era imediatamente antes da remoção.
+
+@item
+@c <en>Remove the file from your working copy of the directory.
+@c <en>You can for instance use @code{rm}.
+Remova o arquivo da cópia local do seu diretório.
+Você pode usar o @code{rm}, por exemplo.
+
+@item
+@c <en>Use @samp{cvs remove @var{filename}} to tell @sc{cvs} that
+@c <en>you really want to delete the file.
+Use @samp{cvs remove @var{filename}} para dizer ao
+@sc{cvs} que você quer realmente apagar o arquivo.
+
+@item
+@c <en>Use @samp{cvs commit @var{filename}} to actually
+@c <en>perform the removal of the file from the repository.
+Use @samp{cvs commit @var{filename}} para realizar a
+remoção de fato do arquivo do repositório.
+@end itemize
+
+@c FIXME: Somehow this should be linked in with a more
+@c general discussion of death support. I don't know
+@c whether we want to use the term "death support" or
+@c not (we can perhaps get by without it), but we do
+@c need to discuss the "dead" state in "cvs log" and
+@c related subjects. The current discussion is
+@c scattered around, and not xref'd to each other.
+@c FIXME: I think this paragraph wants to be moved
+@c later down, at least after the first example.
+@c <en>When you commit the removal of the file, @sc{cvs}
+@c <en>records the fact that the file no longer exists. It is
+@c <en>possible for a file to exist on only some branches and
+@c <en>not on others, or to re-add another file with the same
+@c <en>name later. @sc{cvs} will correctly create or not create
+@c <en>the file, based on the @samp{-r} and @samp{-D} options
+@c <en>specified to @code{checkout} or @code{update}.
+Quando você faz ???commit??? na remoção do arquivo, o
+@sc{cvs} registra o fato de que o arquivo não existe
+mais. É possível para um arquivo existir apenas em
+alguns ramos e não em outros, ou re-adicionar outro
+arquivo com o mesmo nome depois. O @sc{cvs} vai de
+forma correta criar ou não criar o arquivo, baseado nas
+opões @samp{-r} e @samp{-D} especificadas no
+@code{checkout} ou no @code{update}.
+
+@c FIXME: This style seems to clash with how we
+@c document things in general.
+@c <en>@cindex Remove (subcommand)
+@cindex Remove (subcomando)
+@c <en>@deffn Command {cvs remove} [options] files @dots{}
+@deffn Comando {cvs remove} [options] files @dots{}
+
+@c <en>Schedule file(s) to be removed from the repository
+@c <en>(files which have not already been removed from the
+@c <en>working directory are not processed). This command
+@c <en>does not actually remove the file from the repository
+@c <en>until you commit the removal. For a full list of
+@c <en>options, see @ref{Invoking CVS}.
+Prepara arquivo(s) para ser removido do reporitório
+(arquivos que ainda não foram removidos do diretório de
+trabalho não são processados). Na verdade este comando
+não remove o arquivo do repositório até que você faça
+???commit??? no removido. Para uma lista completa de
+opções, veja em @ref{Chamando o CVS}.
+@end deffn
+
+@c <en>Here is an example of removing several files:
+Aqui está um exemplo de remoção de vários arquivos:
+
+@example
+$ cd test
+$ rm *.c
+$ cvs remove
+cvs remove: Removing .
+cvs remove: scheduling a.c for removal
+cvs remove: scheduling b.c for removal
+cvs remove: use 'cvs commit' to remove these files permanently
+$ cvs ci -m "Removed unneeded files"
+cvs commit: Examining .
+cvs commit: Committing .
+@end example
+
+@c <en>As a convenience you can remove the file and @code{cvs
+@c <en>remove} it in one step, by specifying the @samp{-f}
+@c <en>option. For example, the above example could also be
+@c <en>done like this:
+Por conveniência você pode remover o arquivo e fazer @code{cvs
+remove} nele de uma só vez, especificando a opção
+@samp{-f}. Por exemplo, o exemplo acima poderia ser
+feito assim:
+
+@example
+$ cd test
+$ cvs remove -f *.c
+cvs remove: scheduling a.c for removal
+cvs remove: scheduling b.c for removal
+cvs remove: use 'cvs commit' to remove these files permanently
+$ cvs ci -m "Removed unneeded files"
+cvs commit: Examining .
+cvs commit: Committing .
+@end example
+
+@c <en>If you execute @code{remove} for a file, and then
+@c <en>change your mind before you commit, you can undo the
+@c <en>@code{remove} with an @code{add} command.
+Se você executa @code{remove} para um arquivo, e então
+muda de idéia antes do ???commit???, você pode desfazer
+o @code{remove} com um @code{add}.
+@ignore
+@c is this worth saying or not? Somehow it seems
+@c confusing to me.
+@c <en>Of course,
+@c <en>since you have removed your copy of file in the working
+@c <en>directory, @sc{cvs} does not necessarily bring back the
+@c <en>contents of the file from right before you executed
+@c <en>@code{remove}; instead it gets the file from the
+@c <en>repository again.
+Obviamente, uma vez que você removeu a sua cópia local
+do arquivo no diretório de trabalho, o @sc{cvs} não vai
+trazer de volta necessariamente o conteúdo do arquivo
+exatamente como estava antes do @code{remove}; No lugar
+disto ele vai buscar o arquivo no repositório de novo.
+@end ignore
+
+@c FIXME: what if you change your mind after you commit
+@c it? (answer is also "cvs add" but we don't say that...).
+@c We need some index entries for thinks like "undoing
+@c removal" too.
+
+@example
+$ ls
+CVS ja.h oj.c
+$ rm oj.c
+$ cvs remove oj.c
+cvs remove: scheduling oj.c for removal
+cvs remove: use 'cvs commit' to remove this file permanently
+$ cvs add oj.c
+U oj.c
+cvs add: oj.c, version 1.1.1.1, resurrected
+@end example
+
+@c <en>If you realize your mistake before you run the
+@c <en>@code{remove} command you can use @code{update} to
+@c <en>resurrect the file:
+Se você notar o erro antes de rodar o comando
+@code{remove} você pode usar o @code{update} para
+resuscitar o arquivo:
+
+@example
+$ rm oj.c
+$ cvs update oj.c
+cvs update: warning: oj.c was lost
+U oj.c
+@end example
+
+@c <en>When you remove a file it is removed only on the branch
+@c <en>which you are working on (@pxref{Branching and merging}). You can
+@c <en>later merge the removals to another branch if you want
+@c <en>(@pxref{Merging adds and removals}).
+Quando você remove um arquivo ele é removido apenas do
+ramo no qual você está trabalhando (@pxref{Ramificando
+e mesclando}). Você pode depois mesclar as remoções em
+outro ramo se quiser
+(@pxref{Mesclando adicionados e removidos}).
+
+@c <en>@node Removing directories
+@node Removendo diretórios
+@c <en>@section Removing directories
+@section Removendo diretórios
+@c <en>@cindex Removing directories
+@cindex Removendo diretórios
+@c <en>@cindex Directories, removing
+@cindex Diretórios, removendo
+
+@c <en>In concept removing directories is somewhat similar to
+@c <en>removing files---you want the directory to not exist in
+@c <en>your current working directories, but you also want to
+@c <en>be able to retrieve old releases in which the directory
+@c <en>existed.
+Conceitualmente, remover diretórios é num certo sentido
+similar a remover arquivos---você quer que o diretório
+não exista mais no seu diretório de trabalho atual,
+mas você também quer ser capaz de recuperar releases
+antigas nas quais o diretório existe.
+
+@c <en>The way that you remove a directory is to remove all
+@c <en>the files in it. You don't remove the directory
+@c <en>itself; there is no way to do that.
+@c <en>Instead you specify the @samp{-P} option to
+@c <en>@code{cvs update} or @code{cvs checkout},
+@c <en>which will cause @sc{cvs} to remove empty
+@c <en>directories from working directories.
+@c <en>(Note that @code{cvs export} always removes empty directories.)
+@c <en>Probably the
+@c <en>best way to do this is to always specify @samp{-P}; if
+@c <en>you want an empty directory then put a dummy file (for
+@c <en>example @file{.keepme}) in it to prevent @samp{-P} from
+@c <en>removing it.
+A forma de remover um diretório é removendo todos os
+arquivos nele. Você não remove o diretório mesmo; não
+há jeito de fazer isto. Ao invés disto você especifica
+a opção @samp{-P} no @code{cvs update} ou no @code{cvs
+checkout}, que vai fazer com que o @sc{cvs} remova
+diretórios vazios de seus diretórios de
+trabalho. (Observe que o @code{cvs export} sempre
+remove diretórios vazios.) Provavelmente, a melhor
+maneira de fazer isto é sempre usar o @samp{-P}; se
+você quiser manter um diretório vazio, ponha um arquivo
+sem importância nele (por exemplo @file{.keepme}) para
+evitar que o @samp{-P} apague o diretório.
+
+@c I'd try to give a rationale for this, but I'm not
+@c sure there is a particularly convincing one. What
+@c we would _like_ is for CVS to do a better job of version
+@c controlling whether directories exist, to eliminate the
+@c need for -P and so that a file can be a directory in
+@c one revision and a regular file in another.
+@c <en>Note that @samp{-P} is implied by the @samp{-r} or @samp{-D}
+@c <en>options of @code{checkout}. This way
+@c <en>@sc{cvs} will be able to correctly create the directory
+@c <en>or not depending on whether the particular version you
+@c <en>are checking out contains any files in that directory.
+Observe que o @samp{-P} está implícito nas opções
+@samp{-r} ou @samp{-D} do @code{checkout}. Desta forma
+o @sc{cvs} vai ser capaz de criar ou não criar corretamente o
+diretório dependendo de ter ou não algum arquivo na
+versão que você está fazendo ???check out???.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Moving files
+@node Movendo arquivos
+@c <en>@section Moving and renaming files
+@section Movendo e renomeando arquivos
+@c <en>@cindex Moving files
+@cindex Movendo arquivos
+@c <en>@cindex Renaming files
+@cindex Renomeando arquivos
+@c <en>@cindex Files, moving
+@cindex Arquivos, movendo
+
+@c <en>Moving files to a different directory or renaming them
+@c <en>is not difficult, but some of the ways in which this
+@c <en>works may be non-obvious. (Moving or renaming a
+@c <en>directory is even harder. @xref{Moving directories}.).
+Mover arquivos para um diretório diferente ou
+renomeá-los não é difícil, mas algumas das formas de
+faze-lo podem não ser óbvias. (Mover ou renomear
+diretórios é ainda mais difícil. @xref{Movendo
+diretórios}.).
+
+@c <en>The examples below assume that the file @var{old} is renamed to
+@c <en>@var{new}.
+O exemplos abaixo assumem que o arquivo @var{antigo} foi
+renomeado para @var{novo}.
+
+@menu
+@c <en>* Outside:: The normal way to Rename
+* Outside:: A forma normal de renomear
+@c <en>* Inside:: A tricky, alternative way
+* Inside:: Uma forma ???tricky???, alternativa
+@c <en>* Rename by copying:: Another tricky, alternative way
+* Renomeando na base da cópia:: Outra forma ???tricky???, alternativa
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Outside
+@node Outside
+@c <en>@subsection The Normal way to Rename
+@subsection A forma normal de renomear
+
+@c More rename issues. Not sure whether these are
+@c worth documenting; I'm putting them here because
+@c it seems to be as good a place as any to try to
+@c set down the issues.
+@c * "cvs annotate" will annotate either the new
+@c file or the old file; it cannot annotate _each
+@c line_ based on whether it was last changed in the
+@c new or old file. Unlike "cvs log", where the
+@c consequences of having to select either the new
+@c or old name seem fairly benign, this may be a
+@c real advantage to having CVS know about renames
+@c other than as a deletion and an addition.
+
+@c <en>The normal way to move a file is to copy @var{old} to
+@c <en>@var{new}, and then issue the normal @sc{cvs} commands
+@c <en>to remove @var{old} from the repository, and add
+@c <en>@var{new} to it.
+A forma normal de mover um arquivo é copiar
+@var{antigo} para @var{novo}, e então aplicar os
+comandos normais do @sc{cvs} para, no repositório,
+remover @var{antigo} e adicionar @var{novo}.
+@c The following sentence is not true: one must cd into
+@c the directory to run "cvs add".
+@c (Both @var{old} and @var{new} could
+@c contain relative paths, for example @file{foo/bar.c}).
+
+@example
+$ mv @var{old} @var{new}
+$ cvs remove @var{old}
+$ cvs add @var{new}
+$ cvs commit -m "Renamed @var{old} to @var{new}" @var{old} @var{new}
+@end example
+
+@c <en>This is the simplest way to move a file, it is not
+@c <en>error-prone, and it preserves the history of what was
+@c <en>done. Note that to access the history of the file you
+@c <en>must specify the old or the new name, depending on what
+@c <en>portion of the history you are accessing. For example,
+@c <en>@code{cvs log @var{old}} will give the log up until the
+@c <en>time of the rename.
+Esta é a forma mais simples de mover um arquivo, não é
+anti-falhas, e vai preservar o histórico do que foi
+feito. Observe que para acessar o histórico do arquivo
+você vai precisar especificar o nome antigo ou o novo,
+dependendo de que porção do histórico você vai estar
+acessando. Por exemplo, @code{cvs log @var{antigo}}
+vai mostrar o registro (log) até o momento onde o
+arquivo foi renomeado.
+
+@c <en>When @var{new} is committed its revision numbers will
+@c <en>start again, usually at 1.1, so if that bothers you,
+@c <en>use the @samp{-r rev} option to commit. For more
+@c <en>information see @ref{Assigning revisions}.
+Quando @var{novo} é ???committed??? seus números de
+revisão vão recomeçar, normalmente em 1.1. Portanto, se
+isto te incomoda, lembre de usar a opção @samp{-r rev}
+na hora do ???commit???. Para mais informações veja em
+@ref{Atribuindo revisões}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Inside
+@node Inside
+@c <en>@subsection Moving the history file
+@subsection Movendo o arquivo com o histórico
+
+@c <en>This method is more dangerous, since it involves moving
+@c <en>files inside the repository. Read this entire section
+@c <en>before trying it out!
+Este método é mais perigoso, já que envolve
+movimentação de arquivos no repositório. Leia a seção
+toda antes de sair tentando!
+
+@example
+$ cd $CVSROOT/@var{dir}
+$ mv @var{old},v @var{new},v
+@end example
+
+@noindent
+@c <en>Advantages:
+Vantagens:
+
+@itemize @bullet
+@item
+@c <en>The log of changes is maintained intact.
+O registro (log) de alterações permanece intacto.
+
+@item
+@c <en>The revision numbers are not affected.
+Os números de revisão não são alterados.
+@end itemize
+
+@noindent
+@c <en>Disadvantages:
+Desvantagens:
+
+@itemize @bullet
+@item
+@c <en>Old releases cannot easily be fetched from the
+@c <en>repository. (The file will show up as @var{new} even
+@c <en>in revisions from the time before it was renamed).
+Releases antigas não serão mais facilmente recuperadas
+a partir do repositório. (O arquivo vai aparecer como
+@var{novo} mesmo em revisões do tempo anterior a ter
+sido renomeado).
+
+@item
+@c <en>There is no log information of when the file was renamed.
+Não há informação nos registros de quando o arquivo foi
+renomeado.
+
+@item
+@c <en>Nasty things might happen if someone accesses the history file
+@c <en>while you are moving it. Make sure no one else runs any of the @sc{cvs}
+@c <en>commands while you move it.
+Coisas ???Nasty??? podem acontecer se alguém acessar o
+arquivo de histórico enquanto você estier movendo ele.
+Certifique-se de que ninguém mais rode qualquer dos
+comandos do @sc{cvs} durante a movimentação.
+@end itemize
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Rename by copying
+@node Renomeando na base da cópia
+@c <en>@subsection Copying the history file
+@subsection Copiando o arquivo de histórico
+
+@c <en>This way also involves direct modifications to the
+@c <en>repository. It is safe, but not without drawbacks.
+Esta forma também envolve modificações diretas no
+repositório. É segura, mas tem seus incovenientes.
+
+@example
+# @r{Copy the @sc{rcs} file inside the repository}
+$ cd $CVSROOT/@var{dir}
+$ cp @var{old},v @var{new},v
+# @r{Remove the old file}
+$ cd ~/@var{dir}
+$ rm @var{old}
+$ cvs remove @var{old}
+$ cvs commit @var{old}
+# @r{Remove all tags from @var{new}}
+$ cvs update @var{new}
+$ cvs log @var{new} # @r{Remember the non-branch tag names}
+$ cvs tag -d @var{tag1} @var{new}
+$ cvs tag -d @var{tag2} @var{new}
+@dots{}
+@end example
+
+@c <en>By removing the tags you will be able to check out old
+@c <en>revisions.
+Ao remover as etiquetas você vai ser capaz de ???check
+out??? revisões antigas.
+
+@noindent
+@c <en>Advantages:
+Vantagens:
+
+@itemize @bullet
+@item
+@c FIXME: Is this true about -D now that we have death
+@c support? See 5B.3 in the FAQ.
+@c <en>Checking out old revisions works correctly, as long as
+@c <en>you use @samp{-r@var{tag}} and not @samp{-D@var{date}}
+@c <en>to retrieve the revisions.
+O ???check out??? de revisões antigas funciona corretamente,
+???as long as??? você usa @samp{-r@var{tag}} e não
+@samp{-D@var{date}} para recuperar as revisões.
+
+@item
+@c <en>The log of changes is maintained intact.
+O registro (log) de mudanças é mantido intacto.
+
+@item
+@c <en>The revision numbers are not affected.
+Os números de revisão não são afetados.
+@end itemize
+
+@noindent
+@c <en>Disadvantages:
+Desvantagens:
+
+@itemize @bullet
+@item
+@c <en>You cannot easily see the history of the file across the rename.
+Você não pode ver de forma fácil os histórico do
+arquivo através das ações de renomear.
+
+@ignore
+@c Is this true? I don't see how the revision numbers
+@c _could_ start over, when new,v is just old,v with
+@c the tags deleted.
+@c If there is some need to reinstate this text,
+@c it is "usually 1.1", not "1.0" and it needs an
+@c xref to Assigning revisions
+@item
+@c <en>Unless you use the @samp{-r rev} (@pxref{commit
+@c <en>options}) flag when @var{new} is committed its revision
+@c <en>numbers will start at 1.0 again.
+A menos que você use a opção @samp{-r rev} (@pxref{commit
+options}) quando o @var{new} for ???committed??? seus
+números de revisão vão sempre recomeçar com 1.0.
+@end ignore
+@end itemize
+
+@c ---------------------------------------------------------------------
+@c <en>@node Moving directories
+@node Movendo diretórios
+@c <en>@section Moving and renaming directories
+@section Movendo e renomeando diretórios
+@c <en>@cindex Moving directories
+@cindex Movendo diretórios
+@c <en>@cindex Renaming directories
+@cindex Renomeando diretórios
+@c <en>@cindex Directories, moving
+@cindex Diretórios, movendo
+
+@c <en>The normal way to rename or move a directory is to
+@c <en>rename or move each file within it as described in
+@c <en>@ref{Outside}. Then check out with the @samp{-P}
+@c <en>option, as described in @ref{Removing directories}.
+A forma normal de renomear ou mover um diretório é
+renomear ou mover cada arquivo dentro dele como
+descrito em @ref{Outside}. Então fazer um ???check
+out??? com a opção @samp{-P}, como descrito em
+@ref{Removendo diretórios}.
+
+@c <en>If you really want to hack the repository to rename or
+@c <en>delete a directory in the repository, you can do it
+@c <en>like this:
+Se você realmente quer ???to hack??? o repositório para
+renomear ou apagar um diretório no repositório, você
+pode fazê-lo da seguinte forma:
+
+@enumerate
+@item
+@c <en>Inform everyone who has a checked out copy of the directory that the
+@c <en>directory will be renamed. They should commit all
+@c <en>their changes, and remove their working copies,
+@c <en>before you take the steps below.
+Avise a todos que fizeram checkout do diretório que o
+diretório vai ser renomeado. Eles vão ter que fazer
+???commit??? de todas as mudanças, e remover suas
+cópias de trabalho antes que você faça os passos
+seguintes.
+
+@item
+@c <en>Rename the directory inside the repository.
+Renomeie o diretório dentro do repositório.
+
+@example
+$ cd $CVSROOT/@var{parent-dir}
+$ mv @var{old-dir} @var{new-dir}
+@end example
+
+@item
+@c <en>Fix the @sc{cvs} administrative files, if necessary (for
+@c <en>instance if you renamed an entire module).
+Conserte os arquivos administrativos do @sc{cvs}, se
+necessário (por exemplo, se você está renomeando um
+módulo inteiro).
+
+@item
+@c <en>Tell everyone that they can check out again and continue
+@c <en>working.
+Diga a todo mundo que eles podem fazer check out
+novamente e continuar o trabalho.
+
+@end enumerate
+
+@c <en>If someone had a working copy the @sc{cvs} commands will
+@c <en>cease to work for him, until he removes the directory
+@c <en>that disappeared inside the repository.
+Se alguém manteve uma cópia de trabalho, os comandos do
+@sc{cvs} vão parar de funcionar para esta pessoa até
+que ela remova o diretório que desapareceu do repositório.
+
+@c <en>It is almost always better to move the files in the
+@c <en>directory instead of moving the directory. If you move the
+@c <en>directory you are unlikely to be able to retrieve old
+@c <en>releases correctly, since they probably depend on the
+@c <en>name of the directories.
+Na maioria das vezes é melhor mover os arquivos do
+diretório ao invés de mover o diretório. Se você mover
+o diretório não há garantias de que você seja capaz de
+recuperar releases antigas corretamente, já que elas
+dependem provavelmente do nome dos diretórios.
+
+@c ---------------------------------------------------------------------
+@c <en>@node History browsing
+@node Navegação no Histórico
+@c <en>@chapter History browsing
+@chapter Navegação no Histórico
+@c <en>@cindex History browsing
+@cindex Navegação no Histórico
+@c <en>@cindex Traceability
+@cindex Rastreabilidade
+@c <en>@cindex Isolation
+@cindex Isolamento
+
+@ignore
+@c This is too long for an introduction (goal is
+@c one 20x80 character screen), and also mixes up a
+@c variety of issues (parallel development, history,
+@c maybe even touches on process control).
+
+@c -- @quote{To lose ones history is to lose ones soul.}
+@c -- ///
+@c -- ///Those who cannot remember the past are condemned to repeat it.
+@c -- /// -- George Santayana
+@c -- ///
+
+@c <en>@sc{cvs} tries to make it easy for a group of people to work
+@c <en>together. This is done in two ways:
+O @sc{cvs} tenta ajudar um grupo a trabalhar junto.
+Isto é feito de duas formas:
+
+@itemize @bullet
+@item
+@c <en>Isolation---You have your own working copy of the
+@c <en>source. You are not affected by modifications made by
+@c <en>others until you decide to incorporate those changes
+@c <en>(via the @code{update} command---@pxref{update}).
+Isolamento---Você tem a sua própria cópia de trabalho
+dos fontes. Você não é afetado por modificações feitas
+por outros até que você decida incorporar estas
+modificações (através do comando
+@code{update}---@pxref{update}).
+
+@item
+@c <en>Traceability---When something has changed, you can
+@c <en>always see @emph{exactly} what changed.
+Rastreabilidade---Quando alguma coisa mudou, você pode
+ver @emph{exatamente} o que mudou.
+@end itemize
+
+@c <en>There are several features of @sc{cvs} that together lead
+@c <en>to traceability:
+Existem várias características do @sc{cvs} que juntas
+possibilitam a rastreabilidade:
+
+@itemize @bullet
+@item
+@c <en>Each revision of a file has an accompanying log
+@c <en>message.
+Each revision of a file has an accompanying log
+message.
+
+@item
+@c <en>All commits are optionally logged to a central history
+@c <en>database.
+All commits are optionally logged to a central history
+database.
+
+@item
+@c <en>Logging information can be sent to a user-defined
+@c <en>program (@pxref{loginfo}).
+Logging information can be sent to a user-defined
+program (@pxref{loginfo}).
+@end itemize
+
+@c -- More text here.
+
+@c <en>This chapter should talk about the history file, the
+@c <en>@code{log} command, the usefulness of ChangeLogs
+@c <en>even when you run @sc{cvs}, and things like that.
+This chapter should talk about the history file, the
+@code{log} command, the usefulness of ChangeLogs
+even when you run @sc{cvs}, and things like that.
+
+@end ignore
+
+@c kind of lame, in a lot of ways the above text inside
+@c the @ignore motivates this chapter better
+@c <en>Once you have used @sc{cvs} to store a version control
+@c <en>history---what files have changed when, how, and by
+@c <en>whom, there are a variety of mechanisms for looking
+@c <en>through the history.
+Uma vez usando o @sc{cvs} para guardar um histórico do
+controle de versões---que arquivos foram mudandos,
+quando, como e por quem, existe uma variedade de
+mecanismos para procurar ao longo do histórico.
+
+@c FIXME: should also be talking about how you look at
+@c old revisions (e.g. "cvs update -p -r 1.2 foo.c").
+@menu
+@c <en>* log messages:: Log messages
+* mensagens de registro:: Mensagens de registro (log)
+@c <en>* history database:: The history database
+* history database:: The history database
+@c <en>* user-defined logging:: User-defined logging
+* user-defined logging:: User-defined logging
+@c <en>* annotate:: What revision modified each line of a file?
+* annotate:: Que revisão modificou cada linha de um arquivo?
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node log messages
+@node mensagens de registro
+@c <en>@section Log messages
+@section Mensagens de registro (log)
+
+@c FIXME: @xref to place where we talk about how to
+@c specify message to commit.
+@c <en>Whenever you commit a file you specify a log message.
+Sempre que você ???commit??? um arquivo você especifica
+uma mensagem de registro (log).
+
+@c FIXME: bring the information here, and get rid of or
+@c greatly shrink the "log" node.
+@c <en>To look through the log messages which have been
+@c <en>specified for every revision which has been committed,
+@c <en>use the @code{cvs log} command (@pxref{log}).
+Para ver todas as mensagens de registro que foram
+especificadas para cada revisão que foi
+???committed???, use o comando @code{cvs log}
+(@pxref{log}).
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node history database
+@node history database
+@c <en>@section The history database
+@section The history database
+
+@c FIXME: bring the information from the history file
+@c and history nodes here. Rewrite it to be motivated
+@c better (start out by clearly explaining what gets
+@c logged in history, for example).
+@c <en>You can use the history file (@pxref{history file}) to
+@c <en>log various @sc{cvs} actions. To retrieve the
+@c <en>information from the history file, use the @code{cvs
+@c <en>history} command (@pxref{history}).
+Você pode usar o arquivo history (@pxref{arquivo
+history (histórico)}) para registrar várias ações do @sc{cvs}.
+Para recuperar a informação do arquivo history, use o
+comando @code{cvs history} (@pxref{history}).
+
+@c <en>Note: you can control what is logged to this file by using the
+@c <en>@samp{LogHistory} keyword in the @file{CVSROOT/config} file
+@c <en>(@pxref{config}).
+Observação: você pode controlar o que vai ser
+registrado neste arquivo usando a palavra-chave
+@samp{LogHistory} no arquivo @file{CVSROOT/config}
+(@pxref{config}).
+
+@c
+@c The history database has many problems:
+@c * It is very unclear what field means what. This
+@c could be improved greatly by better documentation,
+@c but there are still non-orthogonalities (for
+@c example, tag does not record the "repository"
+@c field but most records do).
+@c * Confusion about files, directories, and modules.
+@c Some commands record one, some record others.
+@c * File removal is not logged. There is an 'R'
+@c record type documented, but CVS never uses it.
+@c * Tags are only logged for the "cvs rtag" command,
+@c not "cvs tag". The fix for this is not completely
+@c clear (see above about modules vs. files).
+@c * Are there other cases of operations that are not
+@c logged? One would hope for all changes to the
+@c repository to be logged somehow (particularly
+@c operations like tagging, "cvs admin -k", and other
+@c operations which do not record a history that one
+@c can get with "cvs log"). Operations on the working
+@c directory, like export, get, and release, are a
+@c second category also covered by the current "cvs
+@c history".
+@c * The history file does not record the options given
+@c to a command. The most serious manifestation of
+@c this is perhaps that it doesn't record whether a command
+@c was recursive. It is not clear to me whether one
+@c wants to log at a level very close to the command
+@c line, as a sort of way of logging each command
+@c (more or less), or whether one wants
+@c to log more at the level of what was changed (or
+@c something in between), but either way the current
+@c information has pretty big gaps.
+@c * Further details about a tag--like whether it is a
+@c branch tag or, if a non-branch tag, which branch it
+@c is on. One can find out this information about the
+@c tag as it exists _now_, but if the tag has been
+@c moved, one doesn't know what it was like at the time
+@c the history record was written.
+@c * Whether operating on a particular tag, date, or
+@c options was implicit (sticky) or explicit.
+@c
+@c Another item, only somewhat related to the above, is a
+@c way to control what is logged in the history file.
+@c This is probably the only good way to handle
+@c different people having different ideas about
+@c information/space tradeoffs.
+@c
+@c It isn't really clear that it makes sense to try to
+@c patch up the history file format as it exists now to
+@c include all that stuff. It might be better to
+@c design a whole new CVSROOT/nhistory file and "cvs
+@c nhistory" command, or some such, or in some other
+@c way trying to come up with a clean break from the
+@c past, which can address the above concerns. Another
+@c open question is how/whether this relates to
+@c taginfo/loginfo/etc.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node user-defined logging
+@node user-defined logging
+@c <en>@section User-defined logging
+@section User-defined logging
+
+@c FIXME: should probably also mention the fact the -l
+@c global option can disable most of the mechanisms
+@c discussed here (why? What is the -l global option for?).
+@c
+@c FIXME: probably should centralize this information
+@c here, at least to some extent. Maybe by moving the
+@c loginfo, etc., nodes here and replacing
+@c the "user-defined logging" node with one node for
+@c each method.
+@c <en>You can customize @sc{cvs} to log various kinds of
+@c <en>actions, in whatever manner you choose. These
+@c <en>mechanisms operate by executing a script at various
+@c <en>times. The script might append a message to a file
+@c <en>listing the information and the programmer who created
+@c <en>it, or send mail to a group of developers, or, perhaps,
+@c <en>post a message to a particular newsgroup. To log
+@c <en>commits, use the @file{loginfo} file (@pxref{loginfo}).
+@c <en>To log tags, use the @file{taginfo} file (@pxref{taginfo}).
+Você pode personalizar o @sc{cvs} para registrar vários
+tipos de ação, da forma que você escolher. Estes
+mecanismos operam executando um script várias vezes. O
+script deve anexar uma mensagem a um arquivo que lista
+as informações e o programador que as criou, ou mandar
+um e-mail para um grupo de desenvolvedores, ou, talvez,
+mandar uma mensagem para um newsgroup em particular.
+Para registrar os commits, usar o arquivo
+@file{loginfo} (@pxref{loginfo}). Para registrar
+etiquetamentos, use o comando @file{taginfo}
+(@pxref{taginfo}).
+@c FIXME: What is difference between doing it in the
+@c modules file and using loginfo/taginfo? Why should
+@c user use one or the other?
+@c <en>To log commits, checkouts, exports, and tags,
+@c <en>respectively, you can also use the @samp{-i},
+@c <en>@samp{-o}, @samp{-e}, and @samp{-t} options in the
+@c <en>modules file. For a more flexible way of giving
+@c <en>notifications to various users, which requires less in
+@c <en>the way of keeping centralized scripts up to date, use
+@c <en>the @code{cvs watch add} command (@pxref{Getting
+@c <en>Notified}); this command is useful even if you are not
+@c <en>using @code{cvs watch on}.
+Para registrar ???commits???, ???checkouts???,
+exportações, e etiquetagens, você pode
+usar, respectivamente, as opções @samp{-i}, @samp{-o},
+@samp{-e} e @samp{-t} no arquivo modules. Para uma
+forma mais flexível de notificar vários usuários, ???which requires less in
+the way of??? manter scripts centralizados atualizados,
+use o comando @code{cvs watch add} (@pxref{Recebendo
+Notificações}); este comando é útil mesmo se você não
+estiver usando @code{cvs watch on}.
+
+@c <en>@node annotate
+@node annotate
+@c <en>@section Annotate command
+@section O comando annotate
+@c <en>@cindex annotate (subcommand)
+@cindex annotate (subcomando)
+
+@c <en>@deffn Command {cvs annotate} [@code{-FflR}] [@code{-r rev}|@code{-D date}] files @dots{}
+@deffn Comando {cvs annotate} [@code{-FflR}] [@code{-r revisão}|@code{-D data}] arquivos @dots{}
+
+@c <en>For each file in @var{files}, print the head revision
+@c <en>of the trunk, together with information on the last
+@c <en>modification for each line. For example:
+Para cada arquivo em @var{arquivos}, imprime a revisão no topo
+ do tronco, junto com informações a respeito
+da última modificação em cada linha. Por exemplo:
+
+@example
+$ cvs annotate ssfile
+Annotations for ssfile
+***************
+1.1 (mary 27-Mar-96): ssfile line 1
+1.2 (joe 28-Mar-96): ssfile line 2
+@end example
+
+@c <en>The file @file{ssfile} currently contains two lines.
+@c <en>The @code{ssfile line 1} line was checked in by
+@c <en>@code{mary} on March 27. Then, on March 28, @code{joe}
+@c <en>added a line @code{ssfile line 2}, without modifying
+@c <en>the @code{ssfile line 1} line. This report doesn't
+@c <en>tell you anything about lines which have been deleted
+@c <en>or replaced; you need to use @code{cvs diff} for that
+@c <en>(@pxref{diff}).
+O arquivo @file{ssfile} atualmente contém duas
+linhas. A @code{linha 1 de ssfile} foi submetida por
+@code{mary} em March 27 (27 de março). Então, em March
+28 (28 de março), @code{joe} adicionou a
+@code{linha 2 de ssfile}, sem modificar a
+@code{linha 1 de ssfile}. Este relatório não te diz nada a
+respeito de linhas que foram deletadas ou substituídas;
+Você precisa usar o @code{cvs diff} para isto
+(@pxref{diff}).
+
+@end deffn
+
+@c <en>The options to @code{cvs annotate} are listed in
+@c <en>@ref{Invoking CVS}, and can be used to select the files
+@c <en>and revisions to annotate. The options are described
+@c <en>in more detail there and in @ref{Common options}.
+As opções para o @code{cvs annotate} são listadas em
+@ref{Chamando o CVS} e podem ser usadas para selecionar
+os arquivos e revisões para o annotate. As opções
+são descritas com mais detalhes lá e em @ref{Opções comuns}.
+
+@c FIXME: maybe an example using the options? Just
+@c what it means to select a revision might be worth a
+@c few words of explanation ("you want to see who
+@c changed this line *before* 1.4"...).
+
+@c ---------------------------------------------------------------------
+@c <en>@node Binary files
+@node Arquivos binários
+@c <en>@chapter Handling binary files
+@chapter Manipulando arquivos binários
+@c <en>@cindex Binary files
+@cindex Arquivos binários
+
+@c <en>The most common use for @sc{cvs} is to store text
+@c <en>files. With text files, @sc{cvs} can merge revisions,
+@c <en>display the differences between revisions in a
+@c <en>human-visible fashion, and other such operations.
+@c <en>However, if you are willing to give up a few of these
+@c <en>abilities, @sc{cvs} can store binary files. For
+@c <en>example, one might store a web site in @sc{cvs}
+@c <en>including both text files and binary images.
+O @sc{cvs} é usado normalmente para guardar arquivos
+texto. Com arquivos texto o @sc{cvs} pode mesclar
+revisões, mostrar diferenças entre revisões de uma
+forma legível para humanos, e outras operações do
+tipo. Entretanto, se você está disposto a abrir mão de
+algumas destas habilidades, o @sc{cvs} pode guardar
+arquivos binários. Por exemplo, pode-se guardar um
+site no @sc{cvs} incluindo tanto os arquivos texto
+quanto as imagens em binário.
+
+@menu
+@c <en>* Binary why:: More details on issues with binary files
+* Binary why:: Mais detalhes no que concerne a arquivos binários
+@c <en>* Binary howto:: How to store them
+* Binary howto:: Como guardá-los
+@end menu
+
+@c <en>@node Binary why
+@node Binary why
+@c <en>@section The issues with binary files
+@section The issues with binary files
+
+@c <en>While the need to manage binary files may seem obvious
+@c <en>if the files that you customarily work with are binary,
+@c <en>putting them into version control does present some
+@c <en>additional issues.
+???While??? a necessidade de armazenar arquivos
+binários se mostra óbvia se os arquivos com os quais
+você normalmente trabalha são binários, botá-los
+dentro do controle de versões requer alguns cuidados
+adicionais.
+
+@c <en>One basic function of version control is to show the
+@c <en>differences between two revisions. For example, if
+@c <en>someone else checked in a new version of a file, you
+@c <en>may wish to look at what they changed and determine
+@c <en>whether their changes are good. For text files,
+@c <en>@sc{cvs} provides this functionality via the @code{cvs
+@c <en>diff} command. For binary files, it may be possible to
+@c <en>extract the two revisions and then compare them with a
+@c <en>tool external to @sc{cvs} (for example, word processing
+@c <en>software often has such a feature). If there is no
+@c <en>such tool, one must track changes via other mechanisms,
+@c <en>such as urging people to write good log messages, and
+@c <en>hoping that the changes they actually made were the
+@c <en>changes that they intended to make.
+Uma habilidade básica de um controle de versões é mostrar
+as diferenças entre duas revisões. Por exemplo, se
+outra pessoa submete (check in) uma nova versão de um
+arquivo, você pode querer ver o que foi mudado e
+determinar quais destas mudanças foram boas. Para
+arquivos texto, o @sc{cvs} oferece esta funcionalidade
+através do comando @code{cvs diff}. Para arquivos
+binários, existe uma chance de extrair as duas
+revisões e então compará-las com uma ferramenta externa
+ao @sc{cvs} (por exemplo, alguns processadores de texto
+têm esta habilidade). Se não existe tal ferramenta, é
+possível rastrear mudanças por outros meios, como por
+exemplo convencendo as pessoas a escreverem boas
+mensagens de registro (log), e torcendo para que as
+mudanças que eles realmente fizeram foram as que eles
+tinham intenção de fazer.
+
+@c <en>Another ability of a version control system is the
+@c <en>ability to merge two revisions. For @sc{cvs} this
+@c <en>happens in two contexts. The first is when users make
+@c <en>changes in separate working directories
+@c <en>(@pxref{Multiple developers}). The second is when one
+@c <en>merges explicitly with the @samp{update -j} command
+@c <en>(@pxref{Branching and merging}).
+Outra habilidade de um sistema de controle de versões é
+a capacidade de mesclar duas revisões. No @sc{cvs}
+isto acontece em dois contextos. O primeiro é quando
+os usuáriso fazem mudanças em diretórios de trabalho
+separados (@pxref{Múltiplos desenvolvedores}). A
+segunda é quando alguém mescla explicitamente com o
+comando @samp{update -j} (@pxref{Ramificando e mesclando}).
+
+@c <en>In the case of text
+@c <en>files, @sc{cvs} can merge changes made independently,
+@c <en>and signal a conflict if the changes conflict. With
+@c <en>binary files, the best that @sc{cvs} can do is present
+@c <en>the two different copies of the file, and leave it to
+@c <en>the user to resolve the conflict. The user may choose
+@c <en>one copy or the other, or may run an external merge
+@c <en>tool which knows about that particular file format, if
+@c <en>one exists.
+@c <en>Note that having the user merge relies primarily on the
+@c <en>user to not accidentally omit some changes, and thus is
+@c <en>potentially error prone.
+No caso de arquivos texto, o @sc{cvs} pode mesclar
+mudanças feitas independentemente, e avisar sobre um
+conflito se as mudanças conflitarem. Com arquivos
+binários, o melhor que o @sc{cvs} pode fazer é
+fornecer as duas cópias diferentes do arquivo, e deixar
+a cargo do usuário a resolução do conflito. O usuário
+pode escolher uma cópia ou a outra, ou pode rodar uma
+ferramenta externa de mesclagem que entenda aquele
+formato de arquivo em particular, se é que tal
+ferramenta exista. Observe que mesclagem feita pelo
+usuário se baseia no fato de o usuário não omitir
+acidentalmente algumas mudanças, e portanto é sujeita a erros.
+
+@c <en>If this process is thought to be undesirable, the best
+@c <en>choice may be to avoid merging. To avoid the merges
+@c <en>that result from separate working directories, see the
+@c <en>discussion of reserved checkouts (file locking) in
+@c <en>@ref{Multiple developers}. To avoid the merges
+@c <en>resulting from branches, restrict use of branches.
+Se você acha que este processo é indesejável, a melhor
+escolha é evitar mesclagem. Para evitar mesclagens
+resultantes de diretórios de trabalho separados, veja a
+discussão a respeito de ???reserved checkouts??? (travas
+de arquivo) em @ref{Múltiplos desenvolvedores}. Para
+ecitar mesclagens resultantes de ramificações,
+restrinja o uso de ramos.
+
+@c <en>@node Binary howto
+@node Binary howto
+@c <en>@section How to store binary files
+@section Como guardar arquivos binários
+
+@c <en>There are two issues with using @sc{cvs} to store
+@c <en>binary files. The first is that @sc{cvs} by default
+@c <en>converts line endings between the canonical form in
+@c <en>which they are stored in the repository (linefeed
+@c <en>only), and the form appropriate to the operating system
+@c <en>in use on the client (for example, carriage return
+@c <en>followed by line feed for Windows NT).
+Existem dois aspectos a considerar quando se usa o
+@sc{cvs} para guardar arquivos binários. O primeiro é
+que o @sc{cvs}, por padrão, converte quebras de linhas
+entre a forma canônica na qual elas são guardadas no
+repositório (apenas ???linefeed???), e a forma
+apropriada para o sistema operacional no qual o cliente
+é usado (por exemplo, carriage return (retorno do
+carro) seguido por line feed (alimentação de linha)
+para o Windows NT).
+
+@c <en>The second is that a binary file might happen to
+@c <en>contain data which looks like a keyword (@pxref{Keyword
+@c <en>substitution}), so keyword expansion must be turned
+@c <en>off.
+O segundo aspecto é que um arquivo binário pode conter
+dados que se pareçam com uma palavra-chave
+(@pxref{Substituição de palavra-chave}). Logo, a
+expansão de palavra-chave deve ser desativada.
+
+@c FIXME: the third is that one can't do merges with
+@c binary files. xref to Multiple Developers and the
+@c reserved checkout issues.
+
+@c <en>The @samp{-kb} option available with some @sc{cvs}
+@c <en>commands insures that neither line ending conversion
+@c <en>nor keyword expansion will be done.
+A opção @samp{-kb} disponível com alguns comandos do
+@sc{cvs} garante que nem conversão de terminação de
+linha nem expansão de palavra-chave sejam usadas.
+
+@c <en>Here is an example of how you can create a new file
+@c <en>using the @samp{-kb} flag:
+Aqui está um exemplo de como você pode criar um novo
+arquivo usando a opção @samp{-kb}:
+
+@example
+$ echo '$@splitrcskeyword{}Id$' > kotest
+$ cvs add -kb -m"A test file" kotest
+$ cvs ci -m"First checkin; contains a keyword" kotest
+@end example
+
+@c <en>If a file accidentally gets added without @samp{-kb},
+@c <en>one can use the @code{cvs admin} command to recover.
+@c <en>For example:
+Se um arquivo for acidentalmente adicionado sem o
+@samp{-kb}, é possível usar o comando @code{cvs admin}
+para reverter. Por exemplo:
+
+@example
+$ echo '$@splitrcskeyword{}Id$' > kotest
+$ cvs add -m"A test file" kotest
+$ cvs ci -m"First checkin; contains a keyword" kotest
+$ cvs admin -kb kotest
+$ cvs update -A kotest
+# @r{For non-unix systems:}
+# @r{Copy in a good copy of the file from outside CVS}
+$ cvs commit -m "make it binary" kotest
+@end example
+
+@c Trying to describe this for both unix and non-unix
+@c in the same description is very confusing. Might
+@c want to split the two, or just ditch the unix "shortcut"
+@c (unixheads don't do much with binary files, anyway).
+@c This used to say "(Try the above example, and do a
+@c @code{cat kotest} after every command)". But that
+@c only really makes sense for the unix case.
+@c <en>When you check in the file @file{kotest} the file is
+@c <en>not preserved as a binary file, because you did not
+@c <en>check it in as a binary file. The @code{cvs
+@c <en>admin -kb} command sets the default keyword
+@c <en>substitution method for this file, but it does not
+@c <en>alter the working copy of the file that you have. If you need to
+@c <en>cope with line endings (that is, you are using
+@c <en>@sc{cvs} on a non-unix system), then you need to
+@c <en>check in a new copy of the file, as shown by the
+@c <en>@code{cvs commit} command above.
+@c <en>On unix, the @code{cvs update -A} command suffices.
+Quando você submete o arquivo @file{kotest} o arquivo
+não é mantido como um arquivo binário, por que você não
+o submeteu como arquivo binário. O comando @code{cvs
+admin -kb} ajusta o método de substituição da
+palavra-chave padrão para este arquivo, mas não altera
+a cópia de trabalho que você tem. Se você tem que
+lidar com terminações de linha (ou seja, você está usando
+o @sc{cvs} em um sistema não-unix), então você precisa
+submeter uma nova cópia do arquivo, como mostrado no comando
+@code{cvs commit} acima. No unix, o comando @code{cvs
+update -A} basta.
+@c FIXME: should also describe what the *other users*
+@c need to do, if they have checked out copies which
+@c have been corrupted by lack of -kb. I think maybe
+@c "cvs update -kb" or "cvs
+@c update -A" would suffice, although the user who
+@c reported this suggested removing the file, manually
+@c removing it from CVS/Entries, and then "cvs update"
+@c <en>(Note that you can use @code{cvs log} to determine the default keyword
+@c <en>substitution method for a file and @code{cvs status} to determine
+@c <en>the keyword substitution method for a working copy.)
+(Note que você pode usar o @code{cvs log} para
+determinar o métido de substituição de palavra-chave
+padrão para um arquivo e @code{cvs status} para
+determinar o método de substituição de palavra-chave
+para uma cópia de trabalho.)
+
+@c <en>However, in using @code{cvs admin -k} to change the
+@c <en>keyword expansion, be aware that the keyword expansion
+@c <en>mode is not version controlled. This means that, for
+@c <en>example, that if you have a text file in old releases,
+@c <en>and a binary file with the same name in new releases,
+@c <en>@sc{cvs} provides no way to check out the file in text
+@c <en>or binary mode depending on what version you are
+@c <en>checking out. There is no good workaround for this
+@c <en>problem.
+Entretanto, ao usar @code{cvs admin -k} para mudar a
+expansão de palavra-chave, esteja atento para o fato de
+que o modo de expansão de palavra-chave não tem
+controle de versão. Isto significa que, por exemplo,
+se você tem um arquivo texto em versões antigas, e um
+arquivo binário com o mesmo nome em novos releases,
+o @sc{cvs} não fornece uma forma de obter o arquivo em
+formato texto, ou binário, dependendo da versão que
+você estpa pegando. Não existe uma boa solução
+alternativa para este problema.
+
+@c <en>You can also set a default for whether @code{cvs add}
+@c <en>and @code{cvs import} treat a file as binary based on
+@c <en>its name; for example you could say that files who
+@c <en>names end in @samp{.exe} are binary. @xref{Wrappers}.
+@c <en>There is currently no way to have @sc{cvs} detect
+@c <en>whether a file is binary based on its contents. The
+@c <en>main difficulty with designing such a feature is that
+@c <en>it is not clear how to distinguish between binary and
+@c <en>non-binary files, and the rules to apply would vary
+@c <en>considerably with the operating system.
+Você também pode ajustar um padrão para quando o
+@code{cvs add} e o @code{cvs import} tratarem um
+arquivo como binário de acordo como o seu nome; por
+exemplo, você pode dizer que arquivos cujos nomes
+terminem com @samp{.exe} são binário. @xref{Wrappers}.
+Não existe atualmente uma forma de fazer o @sc{cvs}
+detectar quando um arquivo é binário baseado em seu
+conteúdo. A dificuldade principal em fazer isto é que
+não é claro como se faz para distinguir entre arquivos
+binários e não-binários, e as regras para serem
+aplicadas variam consideravelmente com o sistema
+operacional.
+@c For example, it would be good on MS-DOS-family OSes
+@c for anything containing ^Z to be binary. Having
+@c characters with the 8th bit set imply binary is almost
+@c surely a bad idea in the context of ISO-8859-* and
+@c other such character sets. On VMS or the Mac, we
+@c could use the OS's file typing. This is a
+@c commonly-desired feature, and something of this sort
+@c may make sense. But there are a lot of pitfalls here.
+@c
+@c Another, probably better, way to tell is to read the
+@c file in text mode, write it to a temp file in text
+@c mode, and then do a binary mode compare of the two
+@c files. If they differ, it is a binary file. This
+@c might have problems on VMS (or some other system
+@c with several different text modes), but in general
+@c should be relatively portable. The only other
+@c downside I can think of is that it would be fairly
+@c slow, but that is perhaps a small price to pay for
+@c not having your files corrupted. Another issue is
+@c what happens if you import a text file with bare
+@c linefeeds on Windows. Such files will show up on
+@c Windows sometimes (I think some native windows
+@c programs even write them, on occasion). Perhaps it
+@c is reasonable to treat such files as binary; after
+@c all it is something of a presumption to assume that
+@c the user would want the linefeeds converted to CRLF.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Multiple developers
+@node Múltiplos desenvolvedores
+@c <en>@chapter Multiple developers
+@chapter Múltiplos desenvolvedores
+@c <en>@cindex Multiple developers
+@cindex Múltiplos desenvolvedores
+@c <en>@cindex Team of developers
+@cindex Team of developers
+@c <en>@cindex File locking
+@cindex File locking
+@c <en>@cindex Locking files
+@cindex Locking files
+@c <en>@cindex Working copy
+@cindex Working copy
+@c <en>@cindex Reserved checkouts
+@cindex Reserved checkouts
+@c <en>@cindex Unreserved checkouts
+@cindex checkouts não-reservados
+@c <en>@cindex RCS-style locking
+@cindex RCS-style locking
+
+@c <en>When more than one person works on a software project
+@c <en>things often get complicated. Often, two people try to
+@c <en>edit the same file simultaneously. One solution, known
+@c <en>as @dfn{file locking} or @dfn{reserved checkouts}, is
+@c <en>to allow only one person to edit each file at a time.
+@c <en>This is the only solution with some version control
+@c <en>systems, including @sc{rcs} and @sc{sccs}. Currently
+@c <en>the usual way to get reserved checkouts with @sc{cvs}
+@c <en>is the @code{cvs admin -l} command (@pxref{admin
+@c <en>options}). This is not as nicely integrated into
+@c <en>@sc{cvs} as the watch features, described below, but it
+@c <en>seems that most people with a need for reserved
+@c <en>checkouts find it adequate.
+Quando mais de uma pessoa trabalham em um projeto de
+software freqüentemente surgem complicações. Às vezes
+duas pessoas tentam editar o mesmo arquivo
+simultaneamente. Uma solução, conhecida como
+@dfn{trava de arquivo} ou @dfn{???checkout???
+reservado}, é permitir, para cada arquivo, que apenas
+uma pessoa por vez edite o arquivo. Esta é a única
+solução em alguns sistemas de controle de versão,
+incluindo @sc{rcs} e @sc{sccs}. Atualmente, a forma
+normal de se ter ???checkouts??? reservados com o @sc{cvs}
+é com o comando @code{cvs admin -l} (@pxref{admin
+options}). Isto não é tão integrado com o @sc{cvs}
+quanto a habilidade de ???watch???, descrita abaixo,
+mas vemos que a maioria das pessoas que necessitam de
+???checkouts??? reservados acham isto adequado.
+@c Or "find it better than worrying about implementing
+@c nicely integrated reserved checkouts" or ...?
+@c <en>It also may be possible to use the watches
+@c <en>features described below, together with suitable
+@c <en>procedures (not enforced by software), to avoid having
+@c <en>two people edit at the same time.
+Também é possível usar a habilidade de trabalhar com
+descrita a seguir, junto com alguns procedimentos
+adequados (que o sotware não obriga), para evitar que
+duas pessoas editem o mesmo arquivo ao mesmo tempo.
+
+@c Our unreserved checkout model might not
+@c be quite the same as others. For example, I
+@c think that some systems will tend to create a branch
+@c in the case where CVS prints "up-to-date check failed".
+@c It isn't clear to me whether we should try to
+@c explore these subtleties; it could easily just
+@c confuse people.
+@c <en>The default model with @sc{cvs} is known as
+@c <en>@dfn{unreserved checkouts}. In this model, developers
+@c <en>can edit their own @dfn{working copy} of a file
+@c <en>simultaneously. The first person that commits his
+@c <en>changes has no automatic way of knowing that another
+@c <en>has started to edit it. Others will get an error
+@c <en>message when they try to commit the file. They must
+@c <en>then use @sc{cvs} commands to bring their working copy
+@c <en>up to date with the repository revision. This process
+@c <en>is almost automatic.
+O modelo padrão no @sc{cvs} é conhecido como
+@dfn{???checkouts??? não-reservados}. Neste modelo, os
+desenvolvedores podem editar sua própria @dfn{cópia de
+trabalho} de um arquivo simultaneamente. A primeira
+pessoa que ???commits??? suas mudanças não tem uma
+forma automática de saber que outra pessoa começou a
+editar o mesmo arquivo. Os outros vão receber uma
+mensagem de erro quando tentarem ???commit??? o
+arquivo. Eles então terão que usar comandos do
+@sc{cvs} para tornar sua cópia local atualizada em
+relação à revisão no repositório. Este processo é
+quase automático.
+
+@c FIXME? should probably use the word "watch" here, to
+@c tie this into the text below and above.
+@c <en>@sc{cvs} also supports mechanisms which facilitate
+@c <en>various kinds of communication, without actually
+@c <en>enforcing rules like reserved checkouts do.
+O @sc{cvs} também dá suporte a mecanismos que facilitam
+várias formas de comunicação, sem regras realmente
+obrigatórias como acontece com os ???checkouts??? reservados.
+
+@c <en>The rest of this chapter describes how these various
+@c <en>models work, and some of the issues involved in
+@c <en>choosing between them.
+O restante deste capítulo descreve como estes vários
+modelos funcionam, e alguns dos aspectos envolvidos na
+hora de escolher entre eles.
+
+@ignore
+@c <en>Here is a draft reserved checkout design or discussion
+@c <en>of the issues. This seems like as good a place as any
+@c <en>for this.
+Here is a draft reserved checkout design or discussion
+of the issues. This seems like as good a place as any
+for this.
+
+@c <en>Might want a cvs lock/cvs unlock--in which the names
+@c <en>differ from edit/unedit because the network must be up
+@c <en>for these to work. unedit gives an error if there is a
+@c <en>reserved checkout in place (so that people don't
+@c <en>accidentally leave locks around); unlock gives an error
+@c <en>if one is not in place (this is more arguable; perhaps
+@c <en>it should act like unedit in that case).
+Might want a cvs lock/cvs unlock--in which the names
+differ from edit/unedit because the network must be up
+for these to work. unedit gives an error if there is a
+reserved checkout in place (so that people don't
+accidentally leave locks around); unlock gives an error
+if one is not in place (this is more arguable; perhaps
+it should act like unedit in that case).
+
+@c <en>On the other hand, might want it so that emacs,
+@c <en>scripts, etc., can get ready to edit a file without
+@c <en>having to know which model is in use. In that case we
+@c <en>would have a "cvs watch lock" (or .cvsrc?) (that is,
+@c <en>three settings, "on", "off", and "lock"). Having cvs
+@c <en>watch lock set would cause a get to record in the CVS
+@c <en>directory which model is in use, and cause "cvs edit"
+@c <en>to change behaviors. We'd want a way to query which
+@c <en>setting is in effect (this would be handy even if it is
+@c <en>only "on" or "off" as presently). If lock is in
+@c <en>effect, then commit would require a lock before
+@c <en>allowing a checkin; chmod wouldn't suffice (might be
+@c <en>debatable--see chmod comment below, in watches--but it
+@c <en>is the way people expect RCS to work and I can't think
+@c <en>of any significant downside. On the other hand, maybe
+@c <en>it isn't worth bothering, because people who are used
+@c <en>to RCS wouldn't think to use chmod anyway).
+On the other hand, might want it so that emacs,
+scripts, etc., can get ready to edit a file without
+having to know which model is in use. In that case we
+would have a "cvs watch lock" (or .cvsrc?) (that is,
+three settings, "on", "off", and "lock"). Having cvs
+watch lock set would cause a get to record in the CVS
+directory which model is in use, and cause "cvs edit"
+to change behaviors. We'd want a way to query which
+setting is in effect (this would be handy even if it is
+only "on" or "off" as presently). If lock is in
+effect, then commit would require a lock before
+allowing a checkin; chmod wouldn't suffice (might be
+debatable--see chmod comment below, in watches--but it
+is the way people expect RCS to work and I can't think
+of any significant downside. On the other hand, maybe
+it isn't worth bothering, because people who are used
+to RCS wouldn't think to use chmod anyway).
+
+@c <en>Implementation: use file attributes or use RCS
+@c <en>locking. The former avoids more dependence on RCS
+@c <en>behaviors we will need to reimplement as we librarify
+@c <en>RCS, and makes it easier to import/export RCS files (in
+@c <en>that context, want to ignore the locker field). But
+@c <en>note that RCS locks are per-branch, which is the
+@c <en>correct behavior (this is also an issue for the "watch
+@c <en>on" features; they should be per-branch too).
+Implementation: use file attributes or use RCS
+locking. The former avoids more dependence on RCS
+behaviors we will need to reimplement as we librarify
+RCS, and makes it easier to import/export RCS files (in
+that context, want to ignore the locker field). But
+note that RCS locks are per-branch, which is the
+correct behavior (this is also an issue for the "watch
+on" features; they should be per-branch too).
+
+@c <en>Here are a few more random notes about implementation
+@c <en>details, assuming "cvs watch lock" and
+Here are a few more random notes about implementation
+details, assuming "cvs watch lock" and
+
+@c <en>CVS/Watched file? Or try to fit this into CVS/Entries somehow?
+@c <en>Cases: (1) file is checked out (unreserved or with watch on) by old
+@c <en>version of @sc{cvs}, now we do something with new one, (2) file is checked
+@c <en>out by new version, now we do something with old one.
+CVS/Watched file? Or try to fit this into CVS/Entries somehow?
+Cases: (1) file is checked out (não-reservado or with watch on) by old
+version of @sc{cvs}, now we do something with new one, (2) file is checked
+out by new version, now we do something with old one.
+
+@c <en>Remote protocol would have a "Watched" analogous to "Mode". Of course
+@c <en>it would apply to all Updated-like requests. How do we keep this
+@c <en>setting up to date? I guess that there wants to be a Watched request,
+@c <en>and the server would send a new one if it isn't up to date? (Ugh--hard
+@c <en>to implement and slows down "cvs -q update"--is there an easier way?)
+Remote protocol would have a "Watched" analogous to "Mode". Of course
+it would apply to all Updated-like requests. How do we keep this
+setting up to date? I guess that there wants to be a Watched request,
+and the server would send a new one if it isn't up to date? (Ugh--hard
+to implement and slows down "cvs -q update"--is there an easier way?)
+
+@c <en>"cvs edit"--checks CVS/Watched, and if watch lock, then sends
+@c <en>"edit-lock" request. Which comes back with a Checked-in with
+@c <en>appropriate Watched (off, on, lock, locked, or some such?), or error
+@c <en>message if already locked.
+"cvs edit"--checks CVS/Watched, and if watch lock, then sends
+"edit-lock" request. Which comes back with a Checked-in with
+appropriate Watched (off, on, lock, locked, or some such?), or error
+message if already locked.
+
+@c <en>"cvs commit"--only will commit if off/on/locked. lock is not OK.
+"cvs commit"--only will commit if off/on/locked. lock is not OK.
+
+@c <en>Doc:
+@c <en>note that "cvs edit" must be connected to network if watch lock is in
+@c <en>effect.
+Doc:
+note that "cvs edit" must be connected to network if watch lock is in
+effect.
+
+@c <en>Talk about what to do if someone has locked a file and you want to
+@c <en>edit that file. (breaking locks, or lack thereof).
+Talk about what to do if someone has locked a file and you want to
+edit that file. (breaking locks, or lack thereof).
+
+
+@c <en>One other idea (which could work along with the
+@c <en>existing "cvs admin -l" reserved checkouts, as well as
+@c <en>the above):
+One other idea (which could work along with the
+existing "cvs admin -l" reserved checkouts, as well as
+the above):
+
+@c <en>"cvs editors" could show who has the file locked, if
+@c <en>someone does.
+"cvs editors" could show who has the file locked, if
+someone does.
+
+@end ignore
+
+@menu
+@c <en>* File status:: A file can be in several states
+* Estado de arquivo:: Um arquivo pode ter vários estados
+@c <en>* Updating a file:: Bringing a file up-to-date
+* Atualizando um arquivo:: Deixando um arquivo atualizado
+@c <en>* Conflicts example:: An informative example
+* Exemplo de conflitos:: Um exemplo informativo
+@c <en>* Informing others:: To cooperate you must inform
+* Informando os outros:: Para cooperar você deve informar
+@c <en>* Concurrency:: Simultaneous repository access
+* Concorrência:: Acesso simultâneo ao repositório
+@c <en>* Watches:: Mechanisms to track who is editing files
+* ???Watches???:: Mecanismos para rastrear quem está editando arquivos
+@c <en>* Choosing a model:: Reserved or unreserved checkouts?
+* Escolhendo um modelo:: ???checkout??? reservado ou não-reservado?
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node File status
+@node Estado de arquivo
+@c <en>@section File status
+@section Estado de arquivo
+@c <en>@cindex File status
+@cindex Estado de arquivo
+@c <en>@cindex Status of a file
+@cindex Estado de um arquivo
+
+@c Shouldn't this start with an example or something,
+@c introducing the unreserved checkout model? Before we
+@c dive into listing states?
+@c <en>Based on what operations you have performed on a
+@c <en>checked out file, and what operations others have
+@c <en>performed to that file in the repository, one can
+@c <en>classify a file in a number of states. The states, as
+@c <en>reported by the @code{status} command, are:
+Baseado em quais operações você realizou num arquivo
+???checked out???, e quais operações outros realizaram
+neste arquivo no repositório, podemos classificar o
+arquivo em vários estados. Os estados, como são
+mostrados pelo comando @code{status}, são:
+
+@c The order of items is chosen to group logically
+@c similar outputs together.
+@c People who want alphabetical can use the index...
+@table @asis
+@c <en>@cindex Up-to-date
+@cindex Up-to-date (Atualizado)
+@c <en>@item Up-to-date
+@item Up-to-date (Atualizado)
+@c <en>The file is identical with the latest revision in the
+@c <en>repository for the branch in use.
+O arquivo é identico à última revisão no repositório,
+para o ramo em questão.
+@c FIXME: should we clarify "in use"? The answer is
+@c sticky tags, and trying to distinguish branch sticky
+@c tags from non-branch sticky tags seems rather awkward
+@c here.
+@c FIXME: What happens with non-branch sticky tags? Is
+@c a stuck file "Up-to-date" or "Needs checkout" or what?
+
+@c <en>@item Locally Modified
+@item Locally Modified (Modificado localmente)
+@c <en>@cindex Locally Modified
+@cindex Locally Modified (Modificado localmente)
+@c <en>You have edited the file, and not yet committed your changes.
+Você alterou o arquivo, e ainda não ???committed???
+suas mudanças.
+
+@c <en>@item Locally Added
+@item Locally Added (Adicionado localmente)
+@c <en>@cindex Locally Added
+@cindex Locally Added (Adicionado localmente)
+@c <en>You have added the file with @code{add}, and not yet
+@c <en>committed your changes.
+Você adicionou o arquivo com @code{add}, e ainda não
+???committed??? suas mudanças.
+@c There are many cases involving the file being
+@c added/removed/modified in the working directory, and
+@c added/removed/modified in the repository, which we
+@c don't try to describe here. I'm not sure that "cvs
+@c status" produces a non-confusing output in most of
+@c those cases.
+
+@c <en>@item Locally Removed
+@item Locally Removed (Removido localmente)
+@c <en>@cindex Locally Removed
+@cindex Locally Removed (Removido localmente)
+@c <en>You have removed the file with @code{remove}, and not yet
+@c <en>committed your changes.
+Você removeu o arquivo com @code{remove}, e ainda não
+???committed??? suas mudanças.
+
+@c <en>@item Needs Checkout
+@item Needs Checkout (Precisa de ???checkout???)
+@c <en>@cindex Needs Checkout
+@cindex Needs Checkout (Precisa de ???checkout???)
+@c <en>Someone else has committed a newer revision to the
+@c <en>repository. The name is slightly misleading; you will
+@c <en>ordinarily use @code{update} rather than
+@c <en>@code{checkout} to get that newer revision.
+Alguém ???committed??? uma revisão nova no repositório.
+O nome está um pouco confuso; você normalmente vai usar
+@code{update} ao invés de @code{checkout} para obter a
+nova revisão.
+
+@c <en>@item Needs Patch
+@item Needs Patch (Precisa de ???patch???)
+@c <en>@cindex Needs Patch
+@cindex Needs Patch (Precisa de ???patch???)
+@c See also newb-123j0 in sanity.sh (although that case
+@c should probably be changed rather than documented).
+@c <en>Like Needs Checkout, but the @sc{cvs} server will send
+@c <en>a patch rather than the entire file. Sending a patch or
+@c <en>sending an entire file accomplishes the same thing.
+Igual a 'Needs Checkout', mas o servidor do @sc{cvs}
+vai mandar um ???patch??? ao invés de um arquivo
+inteiro. Mandar um ???patch??? ou um arquivo inteiro
+dá no mesmo.
+
+@c <en>@item Needs Merge
+@item Needs Merge (Precisa mesclar)
+@c <en>@cindex Needs Merge
+@cindex Needs Merge (Precisa mesclar)
+@c <en>Someone else has committed a newer revision to the repository, and you
+@c <en>have also made modifications to the file.
+Outra pessoa ???committed??? uma nova revisão no
+repositório, e você fez modificações no arquivo.
+
+@c <en>@item Unresolved Conflict
+@item Unresolved Conflict (Conflito não-solucionado)
+@c <en>@cindex Unresolved Conflict
+@cindex Unresolved Conflict (Conflito não-solucionado)
+@c FIXCVS - This file status needs to be changed to some more informative
+@c text that distinguishes it more clearly from each of the Locally Added,
+@c File had conflicts on merge, and Unknown status types, but an exact and
+@c succinct wording escapes me at the moment.
+@c <en>A file with the same name as this new file has been added to the repository
+@c <en>from a second workspace. This file will need to be moved out of the way
+@c <en>to allow an @code{update} to complete.
+Um arquivo com o mesmo nome deste arquivo novo foi
+adicionado ao repositório a partir de outra área de
+trabalho. Este arquivo vai ter que ser movido para que
+não atrapalhe um @code{update} de completar.
+
+@c <en>@item File had conflicts on merge
+@item File had conflicts on merge (Arquivo teve conflitos na mescla)
+@c <en>@cindex File had conflicts on merge
+@cindex File had conflicts on merge (Arquivo teve conflitos na mescla)
+@c is it worth saying that this message was "Unresolved
+@c Conflict" in CVS 1.9 and earlier? I'm inclined to
+@c think that is unnecessarily confusing to new users.
+@c <en>This is like Locally Modified, except that a previous
+@c <en>@code{update} command gave a conflict. If you have not
+@c <en>already done so, you need to
+@c <en>resolve the conflict as described in @ref{Conflicts example}.
+Isto é parecido com 'Locally Modified', com a diferença que o comando
+@code{update} anterior produziu um conflito. Se você
+ainda não o fez, precisa resolver o conflito, como é
+descrito em @ref{Exemplo de conflitos}.
+
+@c <en>@item Unknown
+@item Unknown (Desconhecido)
+@c <en>@cindex Unknown
+@cindex Unknown (Desconhecido)
+@c <en>@sc{cvs} doesn't know anything about this file. For
+@c <en>example, you have created a new file and have not run
+@c <en>@code{add}.
+O @sc{cvs} não sabe nada a respeito deste arquivo. Por
+exemplo, você criou um novo arquivo e não rodou um
+@code{add}.
+@c
+@c "Entry Invalid" and "Classify Error" are also in the
+@c status.c. The latter definitely indicates a CVS bug
+@c (should it be worded more like "internal error" so
+@c people submit bug reports if they see it?). The former
+@c I'm not as sure; I haven't tracked down whether/when it
+@c appears in "cvs status" output.
+
+@end table
+
+@c <en>To help clarify the file status, @code{status} also
+@c <en>reports the @code{Working revision} which is the
+@c <en>revision that the file in the working directory derives
+@c <en>from, and the @code{Repository revision} which is the
+@c <en>latest revision in the repository for the branch in
+@c <en>use.
+Para facilitar o entendimento do estado do arquivo, o
+comando @code{status} também relata a @code{revisão de
+trabalho}, que é a revisão da qual o arquivo no
+diretório de trabalho deriva, e a @code{Revisão de
+repositório} que é a mais recente revisão no
+repositório, para o ramo em uso.
+@c FIXME: should we clarify "in use"? The answer is
+@c sticky tags, and trying to distinguish branch sticky
+@c tags from non-branch sticky tags seems rather awkward
+@c here.
+@c FIXME: What happens with non-branch sticky tags?
+@c What is the Repository Revision there? See the
+@c comment at vn_rcs in cvs.h, which is kind of
+@c confused--we really need to document better what this
+@c field contains.
+@c Q: Should we document "New file!" and other such
+@c outputs or are they self-explanatory?
+@c FIXME: what about the date to the right of "Working
+@c revision"? It doesn't appear with client/server and
+@c seems unnecessary (redundant with "ls -l") so
+@c perhaps it should be removed for non-client/server too?
+@c FIXME: Need some examples.
+@c FIXME: Working revision can also be something like
+@c "-1.3" for a locally removed file. Not at all
+@c self-explanatory (and it is possible that CVS should
+@c be changed rather than documenting this).
+
+@c Would be nice to have an @example showing output
+@c from cvs status, with comments showing the xref
+@c where each part of the output is described. This
+@c might fit in nicely if it is desirable to split this
+@c node in two; one to introduce "cvs status" and one
+@c to list each of the states.
+@c <en>The options to @code{status} are listed in
+@c <en>@ref{Invoking CVS}. For information on its @code{Sticky tag}
+@c <en>and @code{Sticky date} output, see @ref{Sticky tags}.
+@c <en>For information on its @code{Sticky options} output,
+@c <en>see the @samp{-k} option in @ref{update options}.
+As opções para o comando @code{status} são listadas em
+@ref{Chamando o CVS}. Para informações sobre suas
+saídas @code{Sticky tag (Etiqueta adesiva)} e
+@code{Sticky date (data adesiva)} veja em
+@ref{Etiquetas adesivas}. Para informações na saída
+@code{Sticky options (Opções adesivas)}, veja a
+opção @samp{-k} em @ref{update options}.
+
+@c <en>You can think of the @code{status} and @code{update}
+@c <en>commands as somewhat complementary. You use
+@c <en>@code{update} to bring your files up to date, and you
+@c <en>can use @code{status} to give you some idea of what an
+@c <en>@code{update} would do (of course, the state of the
+@c <en>repository might change before you actually run
+@c <en>@code{update}). In fact, if you want a command to
+@c <en>display file status in a more brief format than is
+@c <en>displayed by the @code{status} command, you can invoke
+Você pode pensar nos comandos @code{status} e
+@code{update} como complementares. Você usa o
+@code{update} para atualizar seus arquivos, e você pode
+usar o @code{status} para ter idéia do que um
+@code{update} deve fazer (obviamente, o estado do
+repositório pode mudar depois que você rodar o
+@code{update}). De fato, se você quiser um comando
+para mostrar o estado de arquivos num formato mais
+conciso do que o comando @code{status} mostra, você
+pode invocar
+
+@c <en>@cindex update, to display file status
+@cindex update, para mostrar o estado dos arquivos
+@example
+$ cvs -n -q update
+@end example
+
+@c <en>The @samp{-n} option means to not actually do the
+@c <en>update, but merely to display statuses; the @samp{-q}
+@c <en>option avoids printing the name of each directory. For
+@c <en>more information on the @code{update} command, and
+@c <en>these options, see @ref{Invoking CVS}.
+A opção @samp{-n} significa fingir que faz a
+atualização, mas simplesmente mostrar o estado; a opção
+@samp{-q} suprime a exibição do nome de cada
+diretório. Para mais informações sobre o comando
+@code{update}, e opções, veja em @ref{Chamando o CVS}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Updating a file
+@node Atualizando um arquivo
+@c <en>@section Bringing a file up to date
+@section Deixando um arquivo atualizado
+@c <en>@cindex Bringing a file up to date
+@cindex Deixando um arquivo atualizado
+@c <en>@cindex Updating a file
+@cindex Atualizando um arquivo
+@c <en>@cindex Merging a file
+@cindex Mesclando um arquivo
+@c <en>@cindex Update, introduction
+@cindex Update, introdução
+
+@c <en>When you want to update or merge a file, use the @code{update}
+@c <en>command. For files that are not up to date this is roughly equivalent
+@c <en>to a @code{checkout} command: the newest revision of the file is
+@c <en>extracted from the repository and put in your working directory.
+Quando você quiser atualizar ou mesclar um arquivo, use o
+comando @code{update}. Para arquivos que não estão
+atualizados isto é mais ou menos equivalente ao comando
+@code{checkout}: a revisão mais nova do arquivo é
+extraída do repositório e posta no diretório de trabalho.
+
+@c <en>Your modifications to a file are never lost when you
+@c <en>use @code{update}. If no newer revision exists,
+@c <en>running @code{update} has no effect. If you have
+@c <en>edited the file, and a newer revision is available,
+@c <en>@sc{cvs} will merge all changes into your working copy.
+Suas modificações num arquivo nunca são perdidas quando
+você usa @code{update}. Se não existe uma revisão mais
+nova, o @code{update} não faz nada. Se você
+editou o arquivo, e uma nova revisão está disponível, o
+@sc{cvs} vai mesclar todas as alterações na sua cópia
+de trabalho.
+
+@c <en>For instance, imagine that you checked out revision 1.4 and started
+@c <en>editing it. In the meantime someone else committed revision 1.5, and
+@c <en>shortly after that revision 1.6. If you run @code{update} on the file
+@c <en>now, @sc{cvs} will incorporate all changes between revision 1.4 and 1.6 into
+@c <en>your file.
+Por exemplo, imagine que você ???checked out??? a
+revisão 1.4 e começou a editá-la. Enquanto isto, outra
+pessoa ???committed??? a revisão 1.5, e logo depois a
+revisão 1.6. Se você rodar @code{update} no arquivo
+agora, o @sc{cvs} vai incorporar todas as mudanças
+entre a revisão 1.4 e 1.6 no seu arquivo.
+
+@c <en>@cindex Overlap
+@cindex Sobreposição
+@c <en>If any of the changes between 1.4 and 1.6 were made too
+@c <en>close to any of the changes you have made, an
+@c <en>@dfn{overlap} occurs. In such cases a warning is
+@c <en>printed, and the resulting file includes both
+@c <en>versions of the lines that overlap, delimited by
+@c <en>special markers.
+@c <en>@xref{update}, for a complete description of the
+@c <en>@code{update} command.
+Se quaisquer das mudanças entre 1.4 e 1.6 ocorreram
+suficientemente próximas de quaisquer das suas
+mudanças, uma @dfn{sobreposição} ocorre. Nestes casos
+um aviso é mostrado, e o arquivo resultante contém
+ambas as versões das linhas que se sobrepuseram,
+delimitadas por marcadores especiais. @xref{update},
+para uma descrição completa do comando @code{update}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Conflicts example
+@node Exemplo de conflitos
+@c <en>@section Conflicts example
+@section Exemplo de conflitos
+@c <en>@cindex Merge, an example
+@cindex Merge, an example
+@c <en>@cindex Example of merge
+@cindex Example of merge
+@c <en>@cindex driver.c (merge example)
+@cindex driver.c (merge example)
+
+@c <en>Suppose revision 1.4 of @file{driver.c} contains this:
+Suponha que a revisão 1.4 de @file{driver.c} contém isto:
+
+@example
+#include <stdio.h>
+
+void main()
+@{
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? 0 : 1);
+@}
+@end example
+
+@noindent
+@c <en>Revision 1.6 of @file{driver.c} contains this:
+A revisão 1.6 de @file{driver.c} contém isto:
+
+@example
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+@{
+ parse();
+ if (argc != 1)
+ @{
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ @}
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(!!nerr);
+@}
+@end example
+
+@noindent
+@c <en>Your working copy of @file{driver.c}, based on revision
+@c <en>1.4, contains this before you run @samp{cvs update}:
+@c <en>@c -- Really include "cvs"?
+Sua cópia de trabalho de @file{driver.c}, baseada na
+revisão 1.4, contém isto, antes de você rodar um @samp{cvs update}:
+@c -- Really include "cvs"?
+
+@example
+#include <stdlib.h>
+#include <stdio.h>
+
+void main()
+@{
+ init_scanner();
+ parse();
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+@}
+@end example
+
+@noindent
+@c <en>You run @samp{cvs update}:
+@c <en>@c -- Really include "cvs"?
+Então você roda o @samp{cvs update}:
+@c -- Really include "cvs"?
+
+@example
+$ cvs update driver.c
+RCS file: /usr/local/cvsroot/yoyodyne/tc/driver.c,v
+retrieving revision 1.4
+retrieving revision 1.6
+Merging differences between 1.4 and 1.6 into driver.c
+rcsmerge warning: overlaps during merge
+cvs update: conflicts found in driver.c
+C driver.c
+@end example
+
+@noindent
+@c <en>@cindex Conflicts (merge example)
+@cindex Conflitos (exemplo de mesclagem)
+@c <en>@sc{cvs} tells you that there were some conflicts.
+@c <en>Your original working file is saved unmodified in
+@c <en>@file{.#driver.c.1.4}. The new version of
+@c <en>@file{driver.c} contains this:
+O @sc{cvs} disse a você que existem conflitos.
+Seu arquivo de trabalho original é guardado sem
+modificações em @file{.#driver.c.1.4}. A nova versão
+de @file{driver.c} contém isto:
+
+@example
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+@{
+ init_scanner();
+ parse();
+ if (argc != 1)
+ @{
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ @}
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+@asis{}<<<<<<< driver.c
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+@asis{}=======
+ exit(!!nerr);
+@asis{}>>>>>>> 1.6
+@}
+@end example
+
+@noindent
+@c <en>@cindex Markers, conflict
+@cindex Marcadores, conflito
+@c <en>@cindex Conflict markers
+@cindex Marcadores de conflito
+@c <en>@cindex <<<<<<<
+@cindex <<<<<<<
+@c <en>@cindex >>>>>>>
+@cindex >>>>>>>
+@c <en>@cindex =======
+@cindex =======
+
+@c <en>Note how all non-overlapping modifications are incorporated in your working
+@c <en>copy, and that the overlapping section is clearly marked with
+@c <en>@samp{<<<<<<<}, @samp{=======} and @samp{>>>>>>>}.
+Observe como todas as modificações sem sobreposição
+foram incorporadas na sua cópia de trabalho, e que as
+seções com sobreposição são marcadas de forma clara com
+@samp{<<<<<<<}, @samp{=======} e @samp{>>>>>>>}.
+
+@c <en>@cindex Resolving a conflict
+@cindex Resolvendo um conflito
+@c <en>@cindex Conflict resolution
+@cindex Resolução de conflitos
+@c <en>You resolve the conflict by editing the file, removing the markers and
+@c <en>the erroneous line. Suppose you end up with this file:
+@c <en>@c -- Add xref to the pcl-cvs manual when it talks
+@c <en>@c -- about this.
+Você resolve o conflito editando o arquivo, removendo os
+marcadores e as linhas erradas. Suponha que você ficou
+com este arquivo:
+@c -- Add xref to the pcl-cvs manual when it talks
+@c -- about this.
+@example
+#include <stdlib.h>
+#include <stdio.h>
+
+int main(int argc,
+ char **argv)
+@{
+ init_scanner();
+ parse();
+ if (argc != 1)
+ @{
+ fprintf(stderr, "tc: No args expected.\n");
+ exit(1);
+ @}
+ if (nerr == 0)
+ gencode();
+ else
+ fprintf(stderr, "No code generated.\n");
+ exit(nerr == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+@}
+@end example
+
+@noindent
+@c <en>You can now go ahead and commit this as revision 1.7.
+Você agora pode seguir em frente e ???commit??? ele
+como a revisão 1.7.
+
+@example
+$ cvs commit -m "Initialize scanner. Use symbolic exit values." driver.c
+Checking in driver.c;
+/usr/local/cvsroot/yoyodyne/tc/driver.c,v <-- driver.c
+new revision: 1.7; previous revision: 1.6
+done
+@end example
+
+@c <en>For your protection, @sc{cvs} will refuse to check in a
+@c <en>file if a conflict occurred and you have not resolved
+@c <en>the conflict. Currently to resolve a conflict, you
+@c <en>must change the timestamp on the file. In previous
+@c <en>versions of @sc{cvs}, you also needed to
+@c <en>insure that the file contains no conflict markers.
+@c <en>Because
+@c <en>your file may legitimately contain conflict markers (that
+@c <en>is, occurrences of @samp{>>>>>>> } at the start of a
+@c <en>line that don't mark a conflict), the current
+@c <en>version of @sc{cvs} will print a warning and proceed to
+@c <en>check in the file.
+Para sua segurança, o @sc{cvs} não vai aceitar o check
+in de um arquivo se um conflito ocorreu e você não
+resolveu o conflito. Atualmente, para resolver um
+conflito, você deve mudar a data do arquivo. Em
+versões anteriores do @sc{cvs}, você também precisava
+ter certeza de que o arquivo não continha marcadores de
+conflito. Já que seu arquivo pode conter marcadores de
+conflito ???de forma legítima??? (isto é, a ocorrência
+de @samp{>>>>>>> } no começo de uma linha que não marca
+um conflito), a versão atual do @sc{cvs} vai mostrar um
+aviso e continuar a fazer o ???check in??? do arquivo.
+@c The old behavior was really icky; the only way out
+@c was to start hacking on
+@c the @code{CVS/Entries} file or other such workarounds.
+@c
+@c If the timestamp thing isn't considered nice enough,
+@c maybe there should be a "cvs resolved" command
+@c which clears the conflict indication. For a nice user
+@c interface, this should be invoked by an interactive
+@c merge tool like emerge rather than by the user
+@c directly--such a tool can verify that the user has
+@c really dealt with each conflict.
+
+@c <en>@cindex emerge
+@cindex emerge
+@c <en>If you use release 1.04 or later of pcl-cvs (a @sc{gnu}
+@c <en>Emacs front-end for @sc{cvs}) you can use an Emacs
+@c <en>package called emerge to help you resolve conflicts.
+@c <en>See the documentation for pcl-cvs.
+Se você usa a release 1.04 ou posterior do pcl-cvs (uma
+interface amigável para o @sc{cvs} de dentro do
+@sc{gnu} Emacs) você pode usar um pacote do Emacs
+chamado emerge para te ajudar a resolver os
+conflitos. Veja na documentação do pcl-cvs.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Informing others
+@node Informando os outros
+@c <en>@section Informing others about commits
+@section Informando os outros sobre ???commits???
+@c <en>@cindex Informing others
+@cindex Informando os outros
+@c <en>@cindex Spreading information
+@cindex Divulgando informação
+@c <en>@cindex Mail, automatic mail on commit
+@cindex e-mail, mensagens automáticas no ???commit???
+
+@c <en>It is often useful to inform others when you commit a
+@c <en>new revision of a file. The @samp{-i} option of the
+@c <en>@file{modules} file, or the @file{loginfo} file, can be
+@c <en>used to automate this process. @xref{modules}.
+@c <en>@xref{loginfo}. You can use these features of @sc{cvs}
+@c <en>to, for instance, instruct @sc{cvs} to mail a
+@c <en>message to all developers, or post a message to a local
+@c <en>newsgroup.
+Às vezes é útil informar os outros quando você
+???commit??? uma nova revisão de um arquivo. A opção
+@samp{-i} do arquivo @file{modules}, ou do arquivo
+@file{loginfo}, pode ser usada para automatizar este
+processo. @xref{modules}. @xref{loginfo}. Você pode
+usar estas funcionalidades do @sc{cvs} para, por
+exemplo, instruir o @sc{cvs} a enviar uma mensagem a
+todos os desenvolvedores, ou enviar uma mensagem para
+um newsgroup local.
+@c -- More text would be nice here.
+
+@c <en>@node Concurrency
+@node Concorrência
+@c <en>@section Several developers simultaneously attempting to run CVS
+@section Vários desenvolvedores tentando rodar o CVS simultâneamente
+
+@c <en>@cindex Locks, cvs, introduction
+@cindex Locks, cvs, introdução
+@c For a discussion of *why* CVS creates locks, see
+@c the comment at the start of src/lock.c
+@c <en>If several developers try to run @sc{cvs} at the same
+@c <en>time, one may get the following message:
+Se vários desenvolvedores tentam rodar o @sc{cvs} no
+mesmo momento, alguém vai receber esta mensagem:
+
+@example
+[11:43:23] waiting for bach's lock in /usr/local/cvsroot/foo
+@end example
+
+@c <en>@cindex #cvs.rfl, removing
+@cindex #cvs.rfl, removendo
+@c <en>@cindex #cvs.wfl, removing
+@cindex #cvs.wfl, removendo
+@c <en>@cindex #cvs.lock, removing
+@cindex #cvs.lock, removendo
+@c <en>@sc{cvs} will try again every 30 seconds, and either
+@c <en>continue with the operation or print the message again,
+@c <en>if it still needs to wait. If a lock seems to stick
+@c <en>around for an undue amount of time, find the person
+@c <en>holding the lock and ask them about the cvs command
+@c <en>they are running. If they aren't running a cvs
+@c <en>command, look in the repository directory mentioned in
+@c <en>the message and remove files which they own whose names
+@c <en>start with @file{#cvs.rfl},
+@c <en>@file{#cvs.wfl}, or @file{#cvs.lock}.
+O @sc{cvs} vai tentar de novo a cada 30 segundos, e vai
+ou continuar com a operação ou mostrar a mensagem de
+novo, se ainda precisar esperar. Se uma trava (lock)
+permanece por muito tempo, procure a pessoa que é dona
+da trava e pergunte que comando do cvs ele está
+rodando. Se ele/ela não estiver rodando um comando do
+cvs, procure no diretório do repositório que está
+referenciado na mensagem e remova os arquivos cujos
+nomes começam com @file{#cvs.rfl},
+@file{#cvs.wfl}, or @file{#cvs.lock}.
+
+@c <en>Note that these locks are to protect @sc{cvs}'s
+@c <en>internal data structures and have no relationship to
+@c <en>the word @dfn{lock} in the sense used by
+@c <en>@sc{rcs}---which refers to reserved checkouts
+@c <en>(@pxref{Multiple developers}).
+Observe que estas travas são feitas para proteger a
+estrutura de dados interna do @sc{cvs} e não tem
+relação com a palavra @dfn{lock (trava)} no sentido
+usado pelo @sc{rcs}---que se refere a ???checkouts???
+reservados (@pxref{Múltiplos desenvolvedores}).
+
+@c <en>Any number of people can be reading from a given
+@c <en>repository at a time; only when someone is writing do
+@c <en>the locks prevent other people from reading or writing.
+Qualquer quantidade de pessoas pode ler de um
+repositório num determinado momento; apenas quando
+alguém está gravando é que as travas evitam que outras
+pessoas leiam ou gravem.
+
+@c <en>@cindex Atomic transactions, lack of
+@cindex Transações atômicas, falta de
+@c <en>@cindex Transactions, atomic, lack of
+@cindex Atômicas, transações, falta de
+@c the following talks about what one might call commit/update
+@c atomicity.
+@c Probably also should say something about
+@c commit/commit atomicity, that is, "An update will
+@c not get partial versions of more than one commit".
+@c CVS currently has this property and I guess we can
+@c make it a documented feature.
+@c For example one person commits
+@c a/one.c and b/four.c and another commits a/two.c and
+@c b/three.c. Then an update cannot get the new a/one.c
+@c and a/two.c and the old b/four.c and b/three.c.
+@c <en>One might hope for the following property:
+Espera-se que a seguinte propriedade valha:
+
+@quotation
+@c <en>If someone commits some changes in one cvs command,
+@c <en>then an update by someone else will either get all the
+@c <en>changes, or none of them.
+Se alguém ???commits??? algumas mudanças com um comando
+cvs, então um ???update??? por outra pessoa vai obter
+ou todas as mudanças, ou nenhuma.
+@end quotation
+
+@noindent
+@c <en>but @sc{cvs} does @emph{not} have this property. For
+@c <en>example, given the files
+mas o @sc{cvs} @emph{não} tem esta propriedade. Por
+exemplo, dados os arquivos
+
+@example
+a/one.c
+a/two.c
+b/three.c
+b/four.c
+@end example
+
+@noindent
+@c <en>if someone runs
+se alguém rodar
+
+@example
+cvs ci a/two.c b/three.c
+@end example
+
+@noindent
+@c <en>and someone else runs @code{cvs update} at the same
+@c <en>time, the person running @code{update} might get only
+@c <en>the change to @file{b/three.c} and not the change to
+@c <en>@file{a/two.c}.
+e outra pessoa rodar @code{cvs update} no mesmo
+momento, a pessoa rodando @code{update} pode receber
+apenas as alterações feitas em @file{b/three.c} e não
+receber as feitas em @file{a/two.c}.
+
+@c <en>@node Watches
+@node ???Watches???
+@c <en>@section Mechanisms to track who is editing files
+@section Mechanisms to track who is editing files
+@c <en>@cindex Watches
+@cindex ???Watches???
+
+@c <en>For many groups, use of @sc{cvs} in its default mode is
+@c <en>perfectly satisfactory. Users may sometimes go to
+@c <en>check in a modification only to find that another
+@c <en>modification has intervened, but they deal with it and
+@c <en>proceed with their check in. Other groups prefer to be
+@c <en>able to know who is editing what files, so that if two
+@c <en>people try to edit the same file they can choose to
+@c <en>talk about who is doing what when rather than be
+@c <en>surprised at check in time. The features in this
+@c <en>section allow such coordination, while retaining the
+@c <en>ability of two developers to edit the same file at the
+@c <en>same time.
+Para muitos grupos, o uso do @sc{cvs} em sua forma
+padrão é perfeitamente satisfatório. Os usuários vão
+algumas vezes ???check in??? uma modificação e
+descobrir que outras intervenções foram feitas, mas
+eles tratam isto e seguem em frente com o ???check
+in???. Outros grupos preferem ser capazes de saber
+quem está editando quais arquivos, de forma que se duas
+pessoas tentam editar o mesmo arquivo elas podem
+conversar sobre quem vai editar o que ao invés de serem
+surpreendidos na hora do ???check in???. As
+funcionalidades nesta seção permitem tal nível de
+coordenação, sem abrir mão da possibilidade de que dois
+desenvolvedores editem o mesmo arquivo ao mesmo tempo.
+
+@c Some people might ask why CVS does not enforce the
+@c rule on chmod, by requiring a cvs edit before a cvs
+@c commit. The main reason is that it could always be
+@c circumvented--one could edit the file, and
+@c then when ready to check it in, do the cvs edit and put
+@c in the new contents and do the cvs commit. One
+@c implementation note: if we _do_ want to have cvs commit
+@c require a cvs edit, we should store the state on
+@c whether the cvs edit has occurred in the working
+@c directory, rather than having the server try to keep
+@c track of what working directories exist.
+@c FIXME: should the above discussion be part of the
+@c manual proper, somewhere, not just in a comment?
+@c <en>For maximum benefit developers should use @code{cvs
+@c <en>edit} (not @code{chmod}) to make files read-write to
+@c <en>edit them, and @code{cvs release} (not @code{rm}) to
+@c <en>discard a working directory which is no longer in use,
+@c <en>but @sc{cvs} is not able to enforce this behavior.
+Para um máximo apreveitamento, os desenvolvedores devem
+usar @code{cvs edit} (e não @code{chmod}) para tornar
+os arquivos com permissão de leitura e escrita para
+editá-los, e @code{cvs release} (não @code{rm}) para
+descartar um diretório de trabalho que não está mais em
+uso, mas o @sc{cvs} não é capaz de obrigar tal
+comportamento.
+
+@c I'm a little dissatisfied with this presentation,
+@c because "watch on"/"edit"/"editors" are one set of
+@c functionality, and "watch add"/"watchers" is another
+@c which is somewhat orthogonal even though they interact in
+@c various ways. But I think it might be
+@c confusing to describe them separately (e.g. "watch
+@c add" with loginfo). I don't know.
+
+@menu
+@c <en>* Setting a watch:: Telling CVS to watch certain files
+* Ajustando um ???watch???:: Dizendo ao CVS para ???watch??? certos arquivos
+@c <en>* Getting Notified:: Telling CVS to notify you
+* Recebendo Notificações:: Dizendo ao CVS para te notificar
+@c <en>* Editing files:: How to edit a file which is being watched
+* Editando arquivos:: Como editar um arquivo que está sendo ???watched???
+@c <en>* Watch information:: Information about who is watching and editing
+* Informações de ???Watch???:: Informações a respeito de quem
+ está ???watching??? e quem está editando
+@c <en>* Watches Compatibility:: Watches interact poorly with CVS 1.6 or earlier
+* Compatibilidade de ???Watches???:: ???Watches??? interagem fracamente
+ com CVS 1.6 ou anteriores
+@end menu
+
+@c <en>@node Setting a watch
+@node Ajustando um ???watch???
+@c <en>@subsection Telling CVS to watch certain files
+@subsection Dizendo ao CVS para ???watch??? certos arquivos
+
+@c <en>To enable the watch features, you first specify that
+@c <en>certain files are to be watched.
+Para habilitar a funcionalidade de ???watch???, você
+deve primeiro especificar que certos arquivos devem ser
+???watched???.
+
+@c <en>@cindex watch on (subcommand)
+@cindex watch on (subcomando)
+@c <en>@deffn Command {cvs watch on} [@code{-lR}] [@var{files}]@dots{}
+@deffn Comando {cvs watch on} [@code{-lR}] [@var{arquivos}]@dots{}
+
+@c <en>@cindex Read-only files, and watches
+@cindex Arquivos somente leitura, e ???watches???
+@c <en>Specify that developers should run @code{cvs edit}
+@c <en>before editing @var{files}. @sc{cvs} will create working
+@c <en>copies of @var{files} read-only, to remind developers
+@c <en>to run the @code{cvs edit} command before working on
+@c <en>them.
+Especifique que os desenvolvedores devem rodar o
+@code{cvs edit} antes de editar arquivos
+@var{arquivos}. O @sc{cvs} vai criar cópias de
+trabalho dos @var{arquivos} como somente-leitura, para
+lembrar os desenvolvedores de rodarem o comando
+@code{cvs edit} antes de trabalhar neles.
+
+@c <en>If @var{files} includes the name of a directory, @sc{cvs}
+@c <en>arranges to watch all files added to the corresponding
+@c <en>repository directory, and sets a default for files
+@c <en>added in the future; this allows the user to set
+@c <en>notification policies on a per-directory basis. The
+@c <en>contents of the directory are processed recursively,
+@c <en>unless the @code{-l} option is given.
+@c <en>The @code{-R} option can be used to force recursion if the @code{-l}
+@c <en>option is set in @file{~/.cvsrc} (@pxref{~/.cvsrc}).
+Se @var{arquivos} inclui o nome de uma diretório, o
+@sc{cvs} faz ???watch??? em todos os arquivos
+adicionados ao diretório correspondente do repositório,
+e ajusta um padrão para arquivos adicionados no futuro;
+isto permite que o usuário ajuste as políticas de
+notificação baseada em diretórios. O conteúdo do
+diretório é processado recursivamente, a menos que a
+opção @code{-l} seja dada. A opção @code{-R} pode ser
+usada para forçar recursão se a opção @code{-l} está
+ativada em @file{~/.cvsrc} (@pxref{~/.cvsrc}).
+
+@c <en>If @var{files} is omitted, it defaults to the current directory.
+Se @var{arquivos} é omitido, o padrão é o diretório atual.
+
+@c <en>@cindex watch off (subcommand)
+@cindex watch off (subcomando)
+@end deffn
+
+@c <en>@deffn Command {cvs watch off} [@code{-lR}] [@var{files}]@dots{}
+@deffn Comando {cvs watch off} [@code{-lR}] [@var{arquivos}]@dots{}
+
+@c <en>Do not create @var{files} read-only on checkout; thus,
+@c <en>developers will not be reminded to use @code{cvs edit}
+@c <en>and @code{cvs unedit}.
+Não cria @var{arquivos} somente-leitura no
+???checkout???; portanto, os desenvolvedores não serão
+lembrados de usar @code{cvs edit} e @code{cvs unedit}.
+@ignore
+@sc{cvs} will check out @var{files}
+read-write as usual, unless other permissions override
+due to the @code{PreservePermissions} option being
+enabled in the @file{config} administrative file
+(@pxref{Special Files}, @pxref{config})
+@end ignore
+
+@c <en>The @var{files} and options are processed as for @code{cvs
+@c <en>watch on}.
+Os @var{arquivos} e opções são processados como no
+@code{cvs watch on}.
+
+@end deffn
+
+@c <en>@node Getting Notified
+@node Recebendo Notificações
+@c <en>@subsection Telling CVS to notify you
+@subsection Dizendo ao CVS para te notificar
+
+@c <en>You can tell @sc{cvs} that you want to receive
+@c <en>notifications about various actions taken on a file.
+@c <en>You can do this without using @code{cvs watch on} for
+@c <en>the file, but generally you will want to use @code{cvs
+@c <en>watch on}, to remind developers to use the @code{cvs edit}
+@c <en>command.
+Você pode dizer ao @sc{cvs} que você quer receber
+notificações sobre várias ações tomadas em um
+arquivo. Você pode fazer isto sem usar o @code{cvs
+watch on} para o arquivo, mas geralmente você vai
+querer usar @code{cvs watch on}, para lembrar os
+desenvolvedores de usar o comando @code{cvs edit}.
+
+@c <en>@cindex watch add (subcommand)
+@cindex watch add (subcomando)
+@c <en>@deffn Command {cvs watch add} [@code{-lR}] [@code{-a} @var{action}]@dots{} [@var{files}]@dots{}
+@deffn Comando {cvs watch add} [@code{-lR}] [@code{-a} @var{ação}]@dots{} [@var{arquivos}]@dots{}
+
+@c <en>Add the current user to the list of people to receive notification of
+@c <en>work done on @var{files}.
+Adiciona o usuário atual à lista de pessoas que recebem
+notificações sobre o trabalho feito em @var{arquivos}.
+
+@c <en>The @code{-a} option specifies what kinds of events @sc{cvs} should notify
+@c <en>the user about. @var{action} is one of the following:
+A opção @code{-a} especifica quais tipos de eventos o
+@sc{cvs} deve notificar o usuário. @var{ação} é uma
+das seguintes:
+
+@table @code
+
+@c <en>@item edit
+@item edit
+@c <en>Another user has applied the @code{cvs edit} command (described
+@c <en>below) to a watched file.
+Outro usuário executou o comando @code{cvs edit}
+(descrito abaixo) para um arquivo ???watched???.
+
+@c <en>@item commit
+@item commit
+@c <en>Another user has committed changes to one of the named @var{files}.
+Outro usuário fez ???commit??? em mudanças em um dos @var{arquivos}.
+
+@c <en>@item unedit
+@item unedit
+@c <en>Another user has abandoned editing a file (other than by committing changes).
+@c <en>They can do this in several ways, by:
+Outro usuário abandonou a edição de um arquivo (sem ser
+por ???committing??? mudanças). Eles podem fazer isto
+de várias maneiras:
+
+@itemize @bullet
+
+@item
+@c <en>applying the @code{cvs unedit} command (described below) to the file
+rodando o comando @code{cvs unedit} (descrito abaixo)
+no arquivo
+
+@item
+@c <en>applying the @code{cvs release} command (@pxref{release}) to the file's parent directory
+@c <en>(or recursively to a directory more than one level up)
+rodando o comando @code{cvs release} (@pxref{release})
+no diretório pai do arquivo
+(ou num diretório mais acima recursivamente)
+
+@item
+@c <en>deleting the file and allowing @code{cvs update} to recreate it
+apagando o arquivo e permitindo que o @code{cvs update} o recrie
+
+@end itemize
+
+@c <en>@item all
+@item all
+@c <en>All of the above.
+Todos acima.
+
+@c <en>@item none
+@item none
+@c <en>None of the above. (This is useful with @code{cvs edit},
+@c <en>described below.)
+Nenhum dos acima. (Isto é útil com o @code{cvs edit},
+descrito abaixo.)
+
+@end table
+
+@c <en>The @code{-a} option may appear more than once, or not at all. If
+@c <en>omitted, the action defaults to @code{all}.
+A opção @code{-a} pode aparecer mais de uma vez, ou
+nenhuma vez. Se não aparecer, a ação padrão é @code{all}.
+
+@c <en>The @var{files} and options are processed as for
+@c <en>@code{cvs watch on}.
+Os @var{arquivos} e opções são processados como no
+@code{cvs watch on}.
+
+@end deffn
+
+
+@c <en>@cindex watch remove (subcommand)
+@cindex watch remove (subcomando)
+@c <en>@deffn Command {cvs watch remove} [@code{-lR}] [@code{-a} @var{action}]@dots{} [@var{files}]@dots{}
+@deffn Comando {cvs watch remove} [@code{-lR}] [@code{-a} @var{ação}]@dots{} [@var{arquivos}]@dots{}
+
+@c <en>Remove a notification request established using @code{cvs watch add};
+@c <en>the arguments are the same. If the @code{-a} option is present, only
+@c <en>watches for the specified actions are removed.
+Remove um pedido de notificação posto por um @code{cvs
+watch add}; Os argumentos são os mesmos. Se a opção
+@code{-a} está presente, apenas os ???watches??? para as
+ações especificadas são removidos.
+
+@end deffn
+
+@c <en>@cindex notify (admin file)
+@cindex notify (arquivo administrativo)
+@c <en>When the conditions exist for notification, @sc{cvs}
+@c <en>calls the @file{notify} administrative file. Edit
+@c <en>@file{notify} as one edits the other administrative
+@c <en>files (@pxref{Intro administrative files}). This
+@c <en>file follows the usual conventions for administrative
+@c <en>files (@pxref{syntax}), where each line is a regular
+@c <en>expression followed by a command to execute. The
+@c <en>command should contain a single occurrence of @samp{%s}
+@c <en>which will be replaced by the user to notify; the rest
+@c <en>of the information regarding the notification will be
+@c <en>supplied to the command on standard input. The
+@c <en>standard thing to put in the @code{notify} file is the
+@c <en>single line:
+Quando as condições existem para a notificação, o
+@sc{cvs} chama o arquivo administrativo @file{notify}.
+Edite o @file{notify} da mesma forma que se edita os
+outros arquivos administrativos (@pxref{Intro aos
+arquivos administrativos}). Este arquivo segue as
+convenções usuais para arquivos administrativos
+(@pxref{syntax}), onde cada linha é uma expressão
+regular seguida de um comando para executar. O comando
+pode conter uma única ocorrência de @samp{%s} que é
+substituída pelo usuário a ser notificado; o resto da
+informação a respeito da notificação vai ser fornecida
+ao comando na entrada padrão. O padrão para botar no
+arquivo @code{notify} é esta única linha:
+
+@example
+ALL mail %s -s "CVS notification"
+@end example
+
+@noindent
+@c <en>This causes users to be notified by electronic mail.
+Isto faz com que os usuários sejam avisados por correio
+eletrônico.
+@c FIXME: should it be this hard to set up this
+@c behavior (and the result when one fails to do so,
+@c silent failure to notify, so non-obvious)? Should
+@c CVS give a warning if no line in notify matches (and
+@c document the use of "DEFAULT :" for the case where
+@c skipping the notification is indeed desired)?
+
+@c <en>@cindex users (admin file)
+@cindex users (arquivo administrativo)
+@c <en>Note that if you set this up in the straightforward
+@c <en>way, users receive notifications on the server machine.
+@c <en>One could of course write a @file{notify} script which
+@c <en>directed notifications elsewhere, but to make this
+@c <en>easy, @sc{cvs} allows you to associate a notification
+@c <en>address for each user. To do so create a file
+@c <en>@file{users} in @file{CVSROOT} with a line for each
+@c <en>user in the format @var{user}:@var{value}. Then
+@c <en>instead of passing the name of the user to be notified
+@c <en>to @file{notify}, @sc{cvs} will pass the @var{value}
+@c <en>(normally an email address on some other machine).
+Observe que se você ajusta isto na forma que está, os
+usuários vão receber as notificações na máquina
+servidora. Alguém pode escrever um script
+@file{notify} que direcione notificações para outro
+lugar, mas para tornar isto fácil, o @sc{cvs} permite
+associar um endereço de notificação para cada usuário.
+Para isto crie um arquivo @file{users} em
+@file{CVSROOT} com uma linha para cada usuário no
+formato @var{usuário}:@var{valor}. Então, ao invés de
+passar o nome do usuário a ser notificado para
+@file{notify}, o @sc{cvs} vai passar @var{valor}
+(normalmente um endereço de email em alguma outra máquina).
+
+@c <en>@sc{cvs} does not notify you for your own changes.
+@c <en>Currently this check is done based on whether the user
+@c <en>name of the person taking the action which triggers
+@c <en>notification matches the user name of the person
+@c <en>getting notification. In fact, in general, the watches
+@c <en>features only track one edit by each user. It probably
+@c <en>would be more useful if watches tracked each working
+@c <en>directory separately, so this behavior might be worth
+@c <en>changing.
+O @sc{cvs} não notifica você de suas próprias
+mudanças. Atualmente esta checagem é feita baseada
+comparando o nome de usuário da pessoa que executou a
+ação que disparou a notificação com o nome de usuário
+da pessoa sendo notificada. De fato, em geral, as
+funcionalidades de ???watches??? ???only track one
+edit??? para cada usuário. Seria provavelmente mais
+útil se ???watches??? ???tracked??? cada diretório de
+trabalho separadamente, logo este comportamento ???might be worth
+changing???.
+@c "behavior might be worth changing" is an effort to
+@c point to future directions while also not promising
+@c that "they" (as in "why don't they fix CVS to....")
+@c will do this.
+@c one implementation issue is identifying whether a
+@c working directory is same or different. Comparing
+@c pathnames/hostnames is hopeless, but having the server
+@c supply a serial number which the client stores in the
+@c CVS directory as a magic cookie should work.
+
+@c <en>@node Editing files
+@node Editando arquivos
+@c <en>@subsection How to edit a file which is being watched
+@subsection Como editar um arquivo que está sendo ???watched???
+
+@c <en>@cindex Checkout, as term for getting ready to edit
+@cindex Checkout, as term for getting ready to edit
+@c <en>Since a file which is being watched is checked out
+@c <en>read-only, you cannot simply edit it. To make it
+@c <en>read-write, and inform others that you are planning to
+@c <en>edit it, use the @code{cvs edit} command. Some systems
+@c <en>call this a @dfn{checkout}, but @sc{cvs} uses that term
+@c <en>for obtaining a copy of the sources (@pxref{Getting the
+@c <en>source}), an operation which those systems call a
+@c <en>@dfn{get} or a @dfn{fetch}.
+Já que um arquivo que está sendo ???watched??? é
+???checked out??? somente-leitura, você não pode
+simplesmente editá-lo. Para torná-lo leitura-escrita,
+e informaar outros que você está planejando editá-lo,
+use o comando @code{cvs edit}. Alguns sistemas chamam
+isto de @dfn{checkout}, mas o @sc{cvs} usa este termo
+para obter uma cópia dos fontes (@pxref{Obtendo os
+fontes}), uma operação que estes sistemas chamam de
+@dfn{get} ou @dfn{fetch}.
+@c Issue to think about: should we transition CVS
+@c towards the "get" terminology? "cvs get" is already a
+@c synonym for "cvs checkout" and that section of the
+@c manual refers to "Getting the source". If this is
+@c done, needs to be done gingerly (for example, we should
+@c still accept "checkout" in .cvsrc files indefinitely
+@c even if the CVS's messages are changed from "cvs checkout: "
+@c to "cvs get: ").
+@c There is a concern about whether "get" is not as
+@c good for novices because it is a more general term
+@c than "checkout" (and thus arguably harder to assign
+@c a technical meaning for).
+
+@c <en>@cindex edit (subcommand)
+@cindex edit (subcomando)
+@c <en>@deffn Command {cvs edit} [@code{-lR}] [@code{-a} @var{action}]@dots{} [@var{files}]@dots{}
+@deffn Comando {cvs edit} [@code{-lR}] [@code{-a} @var{ação}]@dots{} [@var{arquivos}]@dots{}
+
+@c <en>Prepare to edit the working files @var{files}. @sc{cvs} makes the
+@c <en>@var{files} read-write, and notifies users who have requested
+@c <en>@code{edit} notification for any of @var{files}.
+Prepara para serem editados os @var{files} do diretório
+de trabalho. O @sc{cvs} faz os @var{arquivos}
+leitura-escrita, e notifica os usuários que pediram
+notificação de @code{edit} para quaisquer dos @var{arquivos}.
+
+@c <en>The @code{cvs edit} command accepts the same options as the
+@c <en>@code{cvs watch add} command, and establishes a temporary watch for the
+@c <en>user on @var{files}; @sc{cvs} will remove the watch when @var{files} are
+@c <en>@code{unedit}ed or @code{commit}ted. If the user does not wish to
+@c <en>receive notifications, she should specify @code{-a none}.
+O comando @code{cvs edit} acita as mesmas opções que o
+comando @code{cvs watch add}, e estabelece um
+???watch??? temporário para o usuário nos
+@var{arquivos}; @sc{cvs} vai remover o ???watch??? quando @var{arquivos} forem
+@code{unedit}ados ou @code{commit}ados (argh!!!,
+''commitados'' é horrível). Se o usuário não deseja
+receber notificações, deve especificar @code{-a none}.
+
+@c <en>The @var{files} and the options are processed as for the @code{cvs
+@c <en>watch} commands.
+Os @var{arquivos} e as opções são processadas como nos comandos @code{cvs
+watch}.
+
+@ignore
+@strong{Caution: If the @code{PreservePermissions}
+option is enabled in the repository (@pxref{config}),
+@sc{cvs} will not change the permissions on any of the
+@var{files}. The reason for this change is to ensure
+that using @samp{cvs edit} does not interfere with the
+ability to store file permissions in the @sc{cvs}
+repository.}
+@end ignore
+
+@end deffn
+
+@c <en>Normally when you are done with a set of changes, you
+@c <en>use the @code{cvs commit} command, which checks in your
+@c <en>changes and returns the watched files to their usual
+@c <en>read-only state. But if you instead decide to abandon
+@c <en>your changes, or not to make any changes, you can use
+@c <en>the @code{cvs unedit} command.
+Normalmente quando você termina com um conjunto de
+mudanças, você usa o comando @code{cvs commit}, que
+???checks in??? suas mudanças e retorna os arquivos
+???watched??? a seus estados usuais de somente-leitura.
+Mas se você ao invés disto decide abandonar suas
+mudanças, ou não fazer nenhuma mudança, você pode usar
+o comando @code{cvs unedit}.
+
+@c <en>@cindex unedit (subcommand)
+@cindex unedit (subcomando)
+@c <en>@cindex Abandoning work
+@cindex Abandonando o trabalho
+@c <en>@cindex Reverting to repository version
+@cindex Revertendo para a versão do repositório
+@c <en>@deffn Command {cvs unedit} [@code{-lR}] [@var{files}]@dots{}
+@deffn Comando {cvs unedit} [@code{-lR}] [@var{arquivos}]@dots{}
+
+@c <en>Abandon work on the working files @var{files}, and revert them to the
+@c <en>repository versions on which they are based. @sc{cvs} makes those
+@c <en>@var{files} read-only for which users have requested notification using
+@c <en>@code{cvs watch on}. @sc{cvs} notifies users who have requested @code{unedit}
+@c <en>notification for any of @var{files}.
+Abandona o trabalho nos @var{arquivos} no diretório de
+tabalho, e reverte eles às versões do repositório nas
+quais eles foram baseados. O @sc{cvs} faz estes
+@var{arquivos} somente-leitura ???for which users have
+requested notification??? usando @code{cvs watch on}.
+@sc{cvs} notifica os usuários que pediram notificações
+do tipo @code{unedit} para quaisquer dos @var{arquivos}.
+
+@c <en>The @var{files} and options are processed as for the
+@c <en>@code{cvs watch} commands.
+Os @var{arquivos} e opções são processados como nos comandos
+@code{cvs watch}.
+
+@c <en>If watches are not in use, the @code{unedit} command
+@c <en>probably does not work, and the way to revert to the
+@c <en>repository version is with the command @code{cvs update -C file}
+@c <en>(@pxref{update}).
+@c <en>The meaning is
+@c <en>not precisely the same; the latter may also
+@c <en>bring in some changes which have been made in the
+@c <en>repository since the last time you updated.
+Se ???watches??? não estão em uso, o comando
+@code{unedit} provavelmente não vai fazer nada, e a
+forma de reverter à versão do repositório é com o
+comando @code{cvs update -C arquivo} (@pxref{update}).
+O significado não é exatamente o mesmo; a última forma
+pode também trazer algumas mudanças que foram feitas no
+repositório desde a última vez que você atualizou (fez
+update).
+@c It would be a useful enhancement to CVS to make
+@c unedit work in the non-watch case as well.
+@end deffn
+
+@c <en>When using client/server @sc{cvs}, you can use the
+@c <en>@code{cvs edit} and @code{cvs unedit} commands even if
+@c <en>@sc{cvs} is unable to successfully communicate with the
+@c <en>server; the notifications will be sent upon the next
+@c <en>successful @sc{cvs} command.
+Quando usando o @sc{cvs} como cliente/servidor, você
+pode usar os comandos @code{cvs edit} e @code{cvs
+unedit} mesmo se o @sc{cvs} é incapaz de estabelecer
+comunicação com o servidor; as notificações vão ser
+mandadas junto com o próximo comando bem sucedido do
+@sc{cvs}.
+
+@c <en>@node Watch information
+@node Informações de ???Watch???
+@c <en>@subsection Information about who is watching and editing
+@subsection Informações sobre quem está ???watching??? e editando
+
+@c <en>@cindex watchers (subcommand)
+@cindex watchers (subcomando)
+@c <en>@deffn Command {cvs watchers} [@code{-lR}] [@var{files}]@dots{}
+@deffn Comando {cvs watchers} [@code{-lR}] [@var{arquivos}]@dots{}
+
+@c <en>List the users currently watching changes to @var{files}. The report
+@c <en>includes the files being watched, and the mail address of each watcher.
+Lista os usuários que estão atualmente ???watching???
+mudanças em @var{arquivos}. O relatório inclui os
+arquivos sendo ???watched???, e o endereço de e-mail de
+cada ???watcher???.
+
+@c <en>The @var{files} and options are processed as for the
+@c <en>@code{cvs watch} commands.
+Os @var{arquivos} e opções são processados como nos comandos
+@code{cvs watch}.
+
+@end deffn
+
+
+@c <en>@cindex editors (subcommand)
+@cindex editors (subcommand)
+@c <en>@deffn Command {cvs editors} [@code{-lR}] [@var{files}]@dots{}
+@deffn Command {cvs editors} [@code{-lR}] [@var{files}]@dots{}
+
+@c <en>List the users currently working on @var{files}. The report
+@c <en>includes the mail address of each user, the time when the user began
+@c <en>working with the file, and the host and path of the working directory
+@c <en>containing the file.
+Lista os usuários atualmente trabalhando em
+@var{arquivos}. O relatório inclui o endereço de
+e-mail de cada usuário, o momento no qual o usuário
+começou a trabalhar com o arquivo, e a máquina e
+caminho do diretório de trabalho contendo o arquivo.
+
+@c <en>The @var{files} and options are processed as for the
+@c <en>@code{cvs watch} commands.
+Os @var{arquivos} e opções são processados como nos comandos
+@code{cvs watch}.
+
+@end deffn
+
+@c <en>@node Watches Compatibility
+@node Compatibilidade de ???Watches???
+@c <en>@subsection Using watches with old versions of CVS
+@subsection Using watches with old versions of CVS
+
+@c <en>@cindex CVS 1.6, and watches
+@cindex CVS 1.6, and watches
+@c <en>If you use the watch features on a repository, it
+@c <en>creates @file{CVS} directories in the repository and
+@c <en>stores the information about watches in that directory.
+@c <en>If you attempt to use @sc{cvs} 1.6 or earlier with the
+@c <en>repository, you get an error message such as the
+@c <en>following (all on one line):
+If you use the watch features on a repository, it
+creates @file{CVS} directories in the repository and
+stores the information about watches in that directory.
+If you attempt to use @sc{cvs} 1.6 or earlier with the
+repository, you get an error message such as the
+following (all on one line):
+
+@example
+cvs update: cannot open CVS/Entries for reading:
+No such file or directory
+@end example
+
+@noindent
+@c <en>and your operation will likely be aborted. To use the
+@c <en>watch features, you must upgrade all copies of @sc{cvs}
+@c <en>which use that repository in local or server mode. If
+@c <en>you cannot upgrade, use the @code{watch off} and
+@c <en>@code{watch remove} commands to remove all watches, and
+@c <en>that will restore the repository to a state which
+@c <en>@sc{cvs} 1.6 can cope with.
+and your operation will likely be aborted. To use the
+watch features, you must upgrade all copies of @sc{cvs}
+which use that repository in local or server mode. If
+you cannot upgrade, use the @code{watch off} and
+@code{watch remove} commands to remove all watches, and
+that will restore the repository to a state which
+@sc{cvs} 1.6 can cope with.
+
+@c <en>@node Choosing a model
+@node Escolhendo um modelo
+@c <en>@section Choosing between reserved or unreserved checkouts
+@section Escolhendo entre ???checkouts??? reservados ou não-reservados
+@c <en>@cindex Choosing, reserved or unreserved checkouts
+@cindex Escolhendo, ???checkouts??? reservados ou não-reservados
+
+@c <en>Reserved and unreserved checkouts each have pros and
+@c <en>cons. Let it be said that a lot of this is a matter of
+@c <en>opinion or what works given different groups' working
+@c <en>styles, but here is a brief description of some of the
+@c <en>issues. There are many ways to organize a team of
+@c <en>developers. @sc{cvs} does not try to enforce a certain
+@c <en>organization. It is a tool that can be used in several
+@c <en>ways.
+???Checkouts??? reservados e não-reservados têem cada
+um prós e contras. Digamos que muito disto é
+uma questão de opinião ou que funciona dependendo dos
+diferentes estilos de trabalho em grupo, mas aqui está
+uma breve descrição de alguns dos aspectos. Existem
+muitas formas de organizar um time de desenvolvedores.
+O @sc{cvs} não tenta induzir uma determinada forma de se
+organizar. Ele é uma ferramenta que pode ser usada de
+várias maneiras.
+
+@c <en>Reserved checkouts can be very counter-productive. If
+@c <en>two persons want to edit different parts of a file,
+@c <en>there may be no reason to prevent either of them from
+@c <en>doing so. Also, it is common for someone to take out a
+@c <en>lock on a file, because they are planning to edit it,
+@c <en>but then forget to release the lock.
+Checkout reservado pode ser bastante improdutivo. Se
+duas pessoas quiserem editar diferentes partes de um
+mesmo arquivo, não há motivos para proibir nenhuma
+delas. Além disto, é normal alguém travar um arquivo
+por que planeja editá-lo, mas então esquecer de destravar.
+
+@c "many groups"? specifics? cites to papers on this?
+@c some way to weasel-word it a bit more so we don't
+@c need facts :-)?
+@c <en>People, especially people who are familiar with
+@c <en>reserved checkouts, often wonder how often conflicts
+@c <en>occur if unreserved checkouts are used, and how
+@c <en>difficult they are to resolve. The experience with
+@c <en>many groups is that they occur rarely and usually are
+@c <en>relatively straightforward to resolve.
+As pessoas, especialmente aquelas acostumadas com
+???checkouts??? reservados, freqüentemente pensam sobre
+a freqüencia com que conlitos acontecem quando
+???checkouts??? não-reservados estão em uso, e o quão
+difíceis eles são de resolver. A experiência de muitos
+grupos é que os conflitos ocorrem raramente e em geral
+são relativamente fáceis de resolver.
+
+@c <en>The rarity of serious conflicts may be surprising, until one realizes
+@c <en>that they occur only when two developers disagree on the proper design
+@c <en>for a given section of code; such a disagreement suggests that the
+@c <en>team has not been communicating properly in the first place. In order
+@c <en>to collaborate under @emph{any} source management regimen, developers
+@c <en>must agree on the general design of the system; given this agreement,
+@c <en>overlapping changes are usually straightforward to merge.
+A dificuldade para encontrar conflitos sérios pode ser
+surpreendente, até se perceber que eles ocorrem apenas
+quando dois desenvolvedores discordam mesmo é no
+projeto de uma dada seção do código; tal desacordo
+indica a princípio que a equipe não está se comunicando
+direito. Para colaborar em @emph{qualquer} regime de
+gerenciamento de código, os desenvolvedores devem
+concordar com o projeto geral do sistema; com este
+acordo, mudanças sobrepostas são em geral simples de
+mesclar.
+
+@c <en>In some cases unreserved checkouts are clearly
+@c <en>inappropriate. If no merge tool exists for the kind of
+@c <en>file you are managing (for example word processor files
+@c <en>or files edited by Computer Aided Design programs), and
+@c <en>it is not desirable to change to a program which uses a
+@c <en>mergeable data format, then resolving conflicts is
+@c <en>going to be unpleasant enough that you generally will
+@c <en>be better off to simply avoid the conflicts instead, by
+@c <en>using reserved checkouts.
+Em alguns casos, ???checkouts??? não-reservados são
+claramente inapropriados. Se não existe uma ferramenta
+de mescla para o tipo de arquivo que você está lidando
+(por exemplo, arquivos de processadores de texto ou
+arquivos editados por programas de ???Computer Aided
+Design???), e não é desejável mudar para um programa
+que usa um formato de dados que se possa mesclar, então
+resolver conflitos se torna tão desagradável que você
+vai estar melhor simplesmente evitando-os, com o uso de
+???checkouts??? não-reservados.
+
+@c <en>The watches features described above in @ref{Watches}
+@c <en>can be considered to be an intermediate model between
+@c <en>reserved checkouts and unreserved checkouts. When you
+@c <en>go to edit a file, it is possible to find out who else
+@c <en>is editing it. And rather than having the system
+@c <en>simply forbid both people editing the file, it can tell
+@c <en>you what the situation is and let you figure out
+@c <en>whether it is a problem in that particular case or not.
+@c <en>Therefore, for some groups it can be considered the
+@c <en>best of both the reserved checkout and unreserved
+@c <en>checkout worlds.
+As funcionalidade de ???watches??? descritas acima em
+@ref{???Watches???} podem ser consideradas um modelo
+intermediário entre ???checkouts??? reservados e
+???checkouts??? não-reservados. Quando você vai editar
+um arquivo, é possível descobrir quem o está editando.
+E ao invés de simplesmente o sistema proibir os dois de
+trabalhar, ele pode dizer como está a situação e deixar
+você decidir se isto é ou não é um problema neste caso
+específico. Portanto, para alguns grupos esta é o
+melhor dos dois mundos de ???checkouts??? reservados e
+???checkouts??? não-reservados.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Revision management
+@node Gerenciamento de revisões
+@c <en>@chapter Revision management
+@chapter Gerenciamento de revisões
+@c <en>@cindex Revision management
+@cindex Gerenciamento de revisões
+
+@c -- This chapter could be expanded a lot.
+@c -- Experiences are very welcome!
+
+@c <en>If you have read this far, you probably have a pretty
+@c <en>good grasp on what @sc{cvs} can do for you. This
+@c <en>chapter talks a little about things that you still have
+@c <en>to decide.
+Se você leu até este ponto, você provavelmente tem uma
+boa noção do que o @sc{cvs} pode fazer por você. Este
+capítulo fala um pouco sobre coisas que ainda cabe a
+você decidir.
+
+@c <en>If you are doing development on your own using @sc{cvs}
+@c <en>you could probably skip this chapter. The questions
+@c <en>this chapter takes up become more important when more
+@c <en>than one person is working in a repository.
+Se você está desenvolvendo sozinho com o @sc{cvs}, você
+provavelmente pode pular este capítulo. As questões
+que este capítulo levanta são mais importante quando
+mais de uma pessoa está trabalhando num mesmo repositório.
+
+@menu
+@c <en>* When to commit:: Some discussion on the subject
+* Quando ???commit???:: Alguma discussão sobre o assunto
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node When to commit
+@node Quando ???commit???
+@c <en>@section When to commit?
+@section Quando ???commit??? ?
+@c <en>@cindex When to commit
+@cindex Quando ???commit???
+@c <en>@cindex Committing, when to
+@cindex ???Committing???, quando
+@c <en>@cindex Policy
+@cindex Política
+
+@c <en>Your group should decide which policy to use regarding
+@c <en>commits. Several policies are possible, and as your
+@c <en>experience with @sc{cvs} grows you will probably find
+@c <en>out what works for you.
+Seu grupo deve decidir qual vai ser a política a
+respeito de ???commits???. Várias políticas são
+possíveis, e à medida que sua experiência com o
+@sc{cvs} crescer, você provavelmente vai encontrar a
+que funciona com você.
+
+@c <en>If you commit files too quickly you might commit files
+@c <en>that do not even compile. If your partner updates his
+@c <en>working sources to include your buggy file, he will be
+@c <en>unable to compile the code. On the other hand, other
+@c <en>persons will not be able to benefit from the
+@c <en>improvements you make to the code if you commit very
+@c <en>seldom, and conflicts will probably be more common.
+Se você ???commit??? arquivos muito rapidamente
+provavelmente você vai ???commit??? arquivos que nem
+mesmo compilam. Se seu parceiro atualiza as cópias de
+trabalho dele e inclui seu arquivo bichado, ele não vai
+conseguir compilar o código. Por outro lado, as outras
+pessoas não vão poder se beneficiar das melhorias que
+você fizer no código se você ???commit??? muito
+raramente, e os conflitos provavelmente vão aumentar.
+
+@c <en>It is common to only commit files after making sure
+@c <en>that they can be compiled. Some sites require that the
+@c <en>files pass a test suite. Policies like this can be
+@c <en>enforced using the commitinfo file
+@c <en>(@pxref{commitinfo}), but you should think twice before
+@c <en>you enforce such a convention. By making the
+@c <en>development environment too controlled it might become
+@c <en>too regimented and thus counter-productive to the real
+@c <en>goal, which is to get software written.
+É comum apenas ???commit??? arquivos depois de se
+certificar que eles podem ser compilados. Alguns
+lugares exigem que os arquivos passem num conjunto de
+testes. Políticas deste tipo podem ser impostas usando
+o arquivo commitinfo (@pxref{commitinfo}), mas você
+deve pensar duas vezes antes de impor tal convenção.
+Tornando o ambiente de desenvolvimento muito controlado
+ele se torna muito rígido e contraprodutivo para o
+objetivo real, que é ter o software escrito.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Keyword substitution
+@node Substituição de palavra-chave
+@c <en>@chapter Keyword substitution
+@chapter Substituição de palavra-chave
+@c <en>@cindex Keyword substitution
+@cindex Substituição de palavra-chave
+@c <en>@cindex Keyword expansion
+@cindex Expansão de palavra-chave
+@c <en>@cindex Identifying files
+@cindex Identificando arquivos
+
+@comment Be careful when editing this chapter.
+@comment Remember that this file is kept under
+@comment version control, so we must not accidentally
+@comment include a valid keyword in the running text.
+
+@c <en>As long as you edit source files inside a working
+@c <en>directory you can always find out the state of
+@c <en>your files via @samp{cvs status} and @samp{cvs log}.
+@c <en>But as soon as you export the files from your
+@c <en>development environment it becomes harder to identify
+@c <en>which revisions they are.
+À medida em que você edita arquivos fonte dentro de um
+diretório de trabalho você pode sempre obter o estado
+de seus arquivos via @samp{cvs status} e @samp{cvs
+log}. Mas assim que você exporta os arquivos de seu
+ambiente de desenvolvimento se torna mais difícil dizer
+de quais revisões eles são.
+
+@c <en>@sc{cvs} can use a mechanism known as @dfn{keyword
+@c <en>substitution} (or @dfn{keyword expansion}) to help
+@c <en>identifying the files. Embedded strings of the form
+@c <en>@code{$@var{keyword}$} and
+@c <en>@code{$@var{keyword}:@dots{}$} in a file are replaced
+@c <en>with strings of the form
+@c <en>@code{$@var{keyword}:@var{value}$} whenever you obtain
+@c <en>a new revision of the file.
+O @sc{cvs} pode usar um mecanismo chamado de
+@dfn{substituição de palavra-chave} (ou @dfn{expansão
+de palavra-chave}) para ajudar na identificação de
+arquivos. Strings embutidas na forma @code{$@var{keyword}$} e
+@code{$@var{keyword}:@dots{}$} em um arquivo são
+substituídas por strings da forma
+@code{$@var{keyword}:@var{value}$} sempre que você obtém
+uma nova revisão do arquivo.
+
+@menu
+@c <en>* Keyword list:: Keywords
+* Lista de palavras-chave:: Palavras-chave
+@c <en>* Using keywords:: Using keywords
+* Usando palavras-chave:: Usando Palavras-chave
+@c <en>* Avoiding substitution:: Avoiding substitution
+* Evitando substituições:: Evitando substituições
+@c <en>* Substitution modes:: Substitution modes
+* Modos de substituição:: Modos de substituição
+@c <en>* Configuring keyword expansion:: Configuring keyword expansion
+* Configurando a expansão do teclado:: Configurando a expansão do teclado
+@c <en>* Log keyword:: Problems with the $@splitrcskeyword{}Log$ keyword.
+* Log keyword:: Problemas com a palavra-chave $@splitrcskeyword{}Log$.
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Keyword list
+@node Lista de palavras-chave
+@c <en>@section Keyword List
+@section Lista de Palavras-chave
+@c <en>@cindex Keyword List
+@cindex Lista de Palavras-chave
+
+@c FIXME: need some kind of example here I think,
+@c perhaps in a
+@c "Keyword intro" node. The intro in the "Keyword
+@c substitution" node itself seems OK, but to launch
+@c into a list of the keywords somehow seems too abrupt.
+
+@c <en>This is a list of the keywords:
+Esta é uma lista de palavras-chave:
+
+@table @code
+@c <en>@cindex Author keyword
+@cindex Palavra-chave Author (autor)
+@c <en>@item $@splitrcskeyword{Author}$
+@item $@splitrcskeyword{Author}$
+@c <en>The login name of the user who checked in the revision.
+O login do usuário que ???checked in??? a revisão.
+
+@c <en>@cindex CVSHeader keyword
+@cindex Palavra-chave CVSHeader (cabeçalho CVS)
+@c <en>@item $@splitrcskeyword{CVSHeader}
+@item $@splitrcskeyword{CVSHeader}
+@c <en>A standard header (similar to $@splitrcskeyword{Header}$, but with
+@c <en>the CVS root stripped off). It contains the relative
+@c <en>pathname of the @sc{rcs} file to the CVS root, the
+@c <en>revision number, the date (UTC), the author, the state,
+@c <en>and the locker (if locked). Files will normally never
+@c <en>be locked when you use @sc{cvs}.
+Um cabeçalho padrão (similar ao
+$@splitrcskeyword{Header}$, mas com a raíz do CVS
+retirada). Ele contém o caminho do arquivo
+@sc{rcs} relativo à raíz do CVS, o número da revisão, a
+data (UTC), o autor, o estado, e o ???locker??? (se
+estiver travado). Arquivos normalmente nunca são
+travados quando você usa @sc{cvs}.
+
+@c <en>Note that this keyword has only been recently
+@c <en>introduced to @sc{cvs} and may cause problems with
+@c <en>existing installations if $@splitrcskeyword{CVSHeader}$ is already
+@c <en>in the files for a different purpose. This keyword may
+@c <en>be excluded using the @code{KeywordExpansion=eCVSHeader}
+@c <en>in the @file{CVSROOT/config} file.
+@c <en>See @ref{Configuring keyword expansion} for more details.
+Observe que esta palavra-chave foi adicionada apenas
+recentemente no @sc{cvs} e pode causar problemas com
+instalações existentes se $@splitrcskeyword{CVSHeader}$
+já está nos arquivos por um motivo diferente. Esta
+palavra-chave deve ser excluída usando o
+@code{KeywordExpansion=eCVSHeader} no arquivo
+@file{CVSROOT/config}. Veja em @ref{Configurando a
+expansão do teclado} para maiores detalhes.
+
+@c <en>@cindex Date keyword
+@cindex Palavra-chave Date (data)
+@c <en>@item $@splitrcskeyword{Date}$
+@item $@splitrcskeyword{Date}$
+@c <en>The date and time (UTC) the revision was checked in.
+A data e hora (UTC) na qual a revisão foi ???checked in???.
+
+@c <en>@cindex Header keyword
+@cindex Palavra-chave Header (cabeçalho)
+@c <en>@item $@splitrcskeyword{Header}$
+@item $@splitrcskeyword{Header}$
+@c <en>A standard header containing the full pathname of the
+@c <en>@sc{rcs} file, the revision number, the date (UTC), the
+@c <en>author, the state, and the locker (if locked). Files
+@c <en>will normally never be locked when you use @sc{cvs}.
+Um cabeçalho padrão contendo o caminho completo do arquivo
+@sc{rcs}, o número da revisão, a data (UTC), o autor, o
+estado, e o ???locker??? (se estiver travado).
+Arquivos normalmente nunca são travados quando você usa
+@sc{cvs}.
+
+@c <en>@cindex Id keyword
+@cindex Palavra-chave Id
+@c <en>@item $@splitrcskeyword{Id}$
+@item $@splitrcskeyword{Id}$
+@c <en>Same as @code{$@splitrcskeyword{Header}$}, except that the @sc{rcs}
+@c <en>filename is without a path.
+Similar ao @code{$@splitrcskeyword{Header}$}, exceto
+que o nome do arquivo @sc{rcs} não tem o caminho.
+
+@c <en>@cindex Name keyword
+@cindex Palavra-chave Name (nome)
+@c <en>@item $@splitrcskeyword{Name}$
+@item $@splitrcskeyword{Name}$
+@c <en>Tag name used to check out this file. The keyword is
+@c <en>expanded only if one checks out with an explicit tag
+@c <en>name. For example, when running the command @code{cvs
+@c <en>co -r first}, the keyword expands to @samp{Name: first}.
+Nome da etiqueta (tag) usada para ???check out??? este
+arquivo. A palavra-chave é expandida apenas se foi
+???check out??? com um nome de etiqueta explícito. Por
+exemplo, quando rodou o comando @code{cvs co -r
+inicio}, a palavra-chave expande para @samp{Name: inicio}.
+
+@c <en>@cindex Locker keyword
+@cindex Palavra-chave Locker (???locker???)
+@c <en>@item $@splitrcskeyword{Locker}$
+@item $@splitrcskeyword{Locker}$
+@c <en>The login name of the user who locked the revision
+@c <en>(empty if not locked, which is the normal case unless
+@c <en>@code{cvs admin -l} is in use).
+O login do usuário que travou a revisão (vazio se não
+estiver travado, que é o normal a menos que @code{cvs
+admin -l} esteja em uso).
+
+@c <en>@cindex Log keyword
+@cindex Palvra-chave Log (registro)
+@c <en>@cindex MaxCommentLeaderLength
+@cindex MaxCommentLeaderLength
+@c <en>@cindex UseArchiveCommentLeader
+@cindex UseArchiveCommentLeader
+@c <en>@cindex Log keyword, configuring substitution behavior
+@cindex Palavra-chave Log, configurando o comportamento na substituição
+@c <en>@item $@splitrcskeyword{Log}$
+@item $@splitrcskeyword{Log}$
+@c <en>The log message supplied during commit, preceded by a
+@c <en>header containing the @sc{rcs} filename, the revision
+@c <en>number, the author, and the date (UTC). Existing log
+@c <en>messages are @emph{not} replaced. Instead, the new log
+@c <en>message is inserted after @code{$@splitrcskeyword{Log:@dots{}}$}.
+@c <en>Each new line is prefixed with the same string which
+@c <en>precedes the @code{$Log} keyword. For example, if the
+@c <en>file contains:
+A mensagem de log (registro) fornecida durante o
+???commit???, precedida por um cabeçalho contendo o
+nome do arquivo @sc{rcs}, o número de revisão, o autor,
+e a data (UTC). Mensagens de log (registro) @emph{não}
+são substituídas. Ao invés disto, A nova mensagem de
+log (registro) é inserida depois do
+@code{$@splitrcskeyword{Log:@dots{}}$}. Cada nova linha
+é prefixada com a mesma string que precede a
+palavra-chave @code{$Log}. Por exemplo, se o arquivo contém:
+
+@example
+ /* Here is what people have been up to:
+ *
+ * $@splitrcskeyword{}Log: frob.c,v $
+ * Revision 1.1 1997/01/03 14:23:51 joe
+ * Add the superfrobnicate option
+ *
+ */
+@end example
+
+@noindent
+@c <en>then additional lines which are added when expanding
+@c <en>the @code{$Log} keyword will be preceded by @samp{ * }.
+@c <en>Unlike previous versions of @sc{cvs} and @sc{rcs}, the
+@c <en>@dfn{comment leader} from the @sc{rcs} file is not used.
+@c <en>The @code{$Log} keyword is useful for
+@c <en>accumulating a complete change log in a source file,
+@c <en>but for several reasons it can be problematic.
+@c <en>@xref{Log keyword}.
+Então, linhas adicionais que são adicionadas quando a
+palavra-chave @code{$Log} é expandida vão ser
+precedidas por @samp{ * }. Ao contrário de versões
+prévias do @sc{cvs} e do @sc{rcs}, o @dfn{comment
+leader} do arquivo @sc{rcs} não é usado. A
+palavra-chave @code{$Log} é útil para acumular um
+???change log??? completo num fonte, mas pode ser
+problemática por várias razões. Veja em @ref{Log keyword}.
+
+@c <en>@cindex RCSfile keyword
+@cindex Palavra-chave RCSfile (arquivo RCS)
+@c <en>@item $@splitrcskeyword{RCSfile}$
+@item $@splitrcskeyword{RCSfile}$
+@c <en>The name of the RCS file without a path.
+O nome do arquivo RCS sem o caminho.
+
+@c <en>@cindex Revision keyword
+@cindex Palavra-chave Revision (revisão)
+@c <en>@item $@splitrcskeyword{Revision}$
+@item $@splitrcskeyword{Revision}$
+@c <en>The revision number assigned to the revision.
+O número de revisão atribuído à revisão.
+
+@c <en>@cindex Source keyword
+@cindex Palavra-chave Source (fonte)
+@c <en>@item $@splitrcskeyword{Source}$
+@item $@splitrcskeyword{Source}$
+@c <en>The full pathname of the RCS file.
+O caminho completo do arquivo RCS.
+
+@c <en>@cindex State keyword
+@cindex Palavra-chave State (estado)
+@c <en>@item $@splitrcskeyword{State}$
+@item $@splitrcskeyword{State}$
+@c <en>The state assigned to the revision. States can be
+@c <en>assigned with @code{cvs admin -s}---see @ref{admin options}.
+O estado atribuído à revisão. Estados podem ser
+atribuídos com @code{cvs admin -s}---veja em @ref{admin options}.
+
+@c <en>@cindex Local keyword
+@cindex Palavra-chave Local
+@c <en>@item Local keyword
+@item Palavra-chave Local
+@c <en>The @code{LocalKeyword} option in the @file{CVSROOT/config} file
+@c <en>may be used to specify a local keyword which is to be
+@c <en>used as an alias for one of the keywords: $@splitrcskeyword{}Id$,
+@c <en>$@splitrcskeyword{}Header$, or $@splitrcskeyword{}CVSHeader$. For
+@c <en>example, if the @file{CVSROOT/config} file contains
+@c <en>a line with @code{LocalKeyword=MYBSD=CVSHeader}, then a
+@c <en>file with the local keyword $@splitrcskeyword{}MYBSD$ will be
+@c <en>expanded as if it were a $@splitrcskeyword{}CVSHeader$ keyword. If
+@c <en>the src/frob.c file contained this keyword, it might
+@c <en>look something like this:
+A opção @code{LocalKeyword} no arquivo
+@file{CVSROOT/config} pode ser usada para especificar
+uma palavra-chave que não é usada como um alias para
+uma das seguintes palavras-chave: $@splitrcskeyword{}Id$,
+$@splitrcskeyword{}Header$, ou $@splitrcskeyword{}CVSHeader$. Por
+exemplo, se o arquivo @file{CVSROOT/config} contém uma
+linha com @code{LocalKeyword=MYBSD=CVSHeader}, então um
+arquivo com a palavra-chave local
+$@splitrcskeyword{}MYBSD$ vai ser expandido como se ele
+fosse uma palavra-chave
+$@splitrcskeyword{}CVSHeader$. Se o arquivo src/frob.c
+contiver esta palavra-chave, ele pode parecer com algo assim:
+
+@example
+ /*
+ * $@splitrcskeyword{}MYBSD: src/frob.c,v 1.1 2003/05/04 09:27:45 john Exp $
+ */
+@end example
+
+@c <en>Many repositories make use of a such a ``local
+@c <en>keyword'' feature. An old patch to @sc{cvs} provided
+@c <en>the @code{LocalKeyword} feature using a @code{tag=}
+@c <en>option and called this the ``custom tag'' or ``local
+@c <en>tag'' feature. It was used in conjunction with the
+@c <en>what they called the @code{tagexpand=} option. In
+@c <en>@sc{cvs} this other option is known as the
+@c <en>@code{KeywordExpand} option.
+@c <en>See @ref{Configuring keyword expansion} for more
+@c <en>details.
+Muitos repositórios fazem uso de tal ``palavra-chave
+local''. Uma ???patch??? antiga ao @sc{cvs} fornecia a
+funcionalidade @code{LocalKeyword} usando uma opção
+@code{tag=} e chamava esta funcionalidade de ``custom tag'' ou ``local
+tag''. ela foi usada em conjunto com o que chamavam de
+opção @code{tagexpand=}. No @sc{cvs} esta outra opção é
+conhecida como a opção @code{KeywordExpand}. Veja em
+@ref{Configurando a expansão do teclado} para maiores
+detalhes.
+
+@c <en>Examples from popular projects include:
+@c <en>$@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
+@c <en>$@splitrcskeyword{OpenBSD}$, $@splitrcskeyword{XFree86}$,
+@c <en>$@splitrcskeyword{Xorg}$.
+Exemplos de projetos populares incluem:
+$@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
+$@splitrcskeyword{OpenBSD}$, $@splitrcskeyword{XFree86}$,
+$@splitrcskeyword{Xorg}$.
+
+@c <en>The advantage of this is that you can include your
+@c <en>local version information in a file using this local
+@c <en>keyword without disrupting the upstream version
+@c <en>information (which may be a different local keyword or
+@c <en>a standard keyword). Allowing bug reports and the like
+@c <en>to more properly identify the source of the original
+@c <en>bug to the third-party and reducing the number of
+@c <en>conflicts that arise during an import of a new version.
+A vantagem disto é que você pode incluir sua informação
+de versão local num arquivo usando esta palavra-chave
+local sem romper com a informação da versão principal
+(que pode ser uma palavra-chave local diferente ou uma
+palavra-chave padrão). Permitir relatório de bug (bug
+report) e coisas do gênero para identificar mais
+adequadamente a origem do bug original para o terceiro
+e reduzir o número de conflitos que surgem durante uma
+importação de uma nova versão.
+
+@c <en>All keyword expansion except the local keyword may be
+@c <en>disabled using the @code{KeywordExpand} option in
+@c <en>the @file{CVSROOT/config} file---see
+@c <en>@ref{Configuring keyword expansion} for more details.
+Toda expansão de palavra-chave com exceção da
+palavra-chave local deve ser disabilitada usando a
+opção @code{KeywordExpand} no arquivo
+@file{CVSROOT/config}---veja em @ref{Configurando a
+expansão do teclado} para mais detalhes.
+
+@end table
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Using keywords
+@node Usando palavras-chave
+@c <en>@section Using keywords
+@section Usando palavras-chave
+
+@c <en>To include a keyword string you simply include the
+@c <en>relevant text string, such as @code{$@splitrcskeyword{Id}$}, inside the
+@c <en>file, and commit the file. @sc{cvs} will automatically (Or,
+@c <en>more accurately, as part of the update run that
+@c <en>automatically happens after a commit.)
+@c <en>expand the string as part of the commit operation.
+Para incluir uma string de palavra-chave você deve
+simplesmente incluir o a string de texto relevante,
+como @code{$@splitrcskeyword{Id}$}, dentro do arquivo,
+e ???commit??? o arquivo. O @sc{cvs} vai automaticamente (Ou,
+mais precisamente, como parte da execução do
+???update??? que acontece automaticamente depois do
+???commit???.) expandir a string como parte da operação
+de commit.
+
+@c <en>It is common to embed the @code{$@splitrcskeyword{}Id$} string in
+@c <en>the source files so that it gets passed through to
+@c <en>generated files. For example, if you are managing
+@c <en>computer program source code, you might include a
+@c <en>variable which is initialized to contain that string.
+@c <en>Or some C compilers may provide a @code{#pragma ident}
+@c <en>directive. Or a document management system might
+@c <en>provide a way to pass a string through to generated
+@c <en>files.
+É normal imergir a string @code{$@splitrcskeyword{}Id$}
+nos arquivos fonte de forma que ela seja ignorada nos
+arquivos gerados. Por exemplo, se você está
+gerenciando código fonte de programas de computador,
+você deve incluir uma variável que é inicializada para
+conter aquela string. Ou alguns compiladores C podem
+fornecer uma diretiva @code{#pragma ident}. Ou um
+sistema de gerência de documentos pode fornecer um
+jeito de entregar a string diretamente ao arquivos
+gerados.
+
+@c Would be nice to give an example, but doing this in
+@c portable C is not possible and the problem with
+@c picking any one language (VMS HELP files, Ada,
+@c troff, whatever) is that people use CVS for all
+@c kinds of files.
+
+@c <en>@cindex Ident (shell command)
+@cindex Ident (shell command)
+@c <en>The @code{ident} command (which is part of the @sc{rcs}
+@c <en>package) can be used to extract keywords and their
+@c <en>values from a file. This can be handy for text files,
+@c <en>but it is even more useful for extracting keywords from
+@c <en>binary files.
+O comando @code{ident} (que é parte do pacote @sc{rcs})
+pode ser usado para extrair palavras-chave e seus
+valores de um arquivo. Isto pode ser útil para
+arquivos texto, mas é mais útil para extração de
+palavras-chave de arquivos binários.
+
+@example
+$ ident samp.c
+samp.c:
+ $@splitrcskeyword{}Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
+$ gcc samp.c
+$ ident a.out
+a.out:
+ $@splitrcskeyword{}Id: samp.c,v 1.5 1993/10/19 14:57:32 ceder Exp $
+@end example
+
+@c <en>@cindex What (shell command)
+@cindex What (shell command)
+@c <en>S@sc{ccs} is another popular revision control system.
+@c <en>It has a command, @code{what}, which is very similar to
+@c <en>@code{ident} and used for the same purpose. Many sites
+@c <en>without @sc{rcs} have @sc{sccs}. Since @code{what}
+@c <en>looks for the character sequence @code{@@(#)} it is
+@c <en>easy to include keywords that are detected by either
+@c <en>command. Simply prefix the keyword with the
+@c <en>magic @sc{sccs} phrase, like this:
+S@sc{ccs} é outro sistema de controle de revisões
+popular. Ele tem um comando, @code{what} (o que, em
+português), que é bastante similar ao @code{ident} e
+usado para o mesmo propósito. Muitos ???sites??? sem
+@sc{rcs} tem @sc{sccs}. Uma vez que o @code{what}
+procura pela seqüência de caracteres @code{@@(#)} é
+fácil incluir palavras-chave que são detectadas por
+qualquer comando. Simplesmente bote um prefixo na
+palavra-chave com a frase mágica @sc{sccs}, como esta:
+
+@example
+static char *id="@@(#) $@splitrcskeyword{}Id: ab.c,v 1.5 1993/10/19 14:57:32 ceder Exp $";
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Avoiding substitution
+@node Evitando substituições
+@c <en>@section Avoiding substitution
+@section Evitando substituições
+
+@c <en>Keyword substitution has its disadvantages. Sometimes
+@c <en>you might want the literal text string
+@c <en>@samp{$@splitrcskeyword{}Author$} to appear inside a file without
+@c <en>@sc{cvs} interpreting it as a keyword and expanding it
+@c <en>into something like @samp{$@splitrcskeyword{}Author: ceder $}.
+Substituição de palavra-chave tem suas desvantagens.
+Algumas vezes você pode querer que a string de texto
+literal @samp{$@splitrcskeyword{}Author$} apareça
+dentro de um arquivo sem que o @sc{cvs} a interprete
+como uma palavra-chave e a expanda em algo como
+@samp{$@splitrcskeyword{}Author: ceder $}.
+
+@c <en>There is unfortunately no way to selectively turn off
+@c <en>keyword substitution. You can use @samp{-ko}
+@c <en>(@pxref{Substitution modes}) to turn off keyword
+@c <en>substitution entirely.
+Infelizmente não há como desligar a substituição de
+palavra-chave de forma seletiva. Você pode usar @samp{-ko}
+(@pxref{Modos de substituição}) para desligar a
+substituição de palavra-chave completamente.
+
+@c <en>In many cases you can avoid using keywords in
+@c <en>the source, even though they appear in the final
+@c <en>product. For example, the source for this manual
+@c <en>contains @samp{$@@asis@{@}Author$} whenever the text
+@c <en>@samp{$@splitrcskeyword{}Author$} should appear. In @code{nroff}
+@c <en>and @code{troff} you can embed the null-character
+@c <en>@code{\&} inside the keyword for a similar effect.
+Em muitos casos você pode evitar o uso de palavra-chave
+nos fontes, mesmo que elas apareçam no produto final.
+Por exemplo, o código-fonte deste manual contém
+@samp{$@@asis@{@}Author$} sempre que o texto
+@samp{$@splitrcskeyword{}Author$} deva aparecer. Em
+@code{nroff} e @code{troff} você pode imergir o
+caractere nulo @code{\&} dentro de uma palavra-chave
+para obter um efeito similar.
+
+@c <en>It is also possible to specify an explicit list of
+@c <en>keywords to include or exclude using the
+@c <en>@code{KeywordExpand} option in the
+@c <en>@file{CVSROOT/config} file--see @ref{Configuring keyword expansion}
+@c <en>for more details. This feature is intended primarily
+@c <en>for use with the @code{LocalKeyword} option--see
+@c <en>@ref{Keyword list}.
+Também é possível especificar explicitamente uma lista
+de palavras-chave para incluir ou excluir usando a
+opção @code{KeywordExpand} no arquivo
+@file{CVSROOT/config}--veja em @ref{Configurando a
+expansão do teclado} para maiores detalhes. Esta
+funcionalidade foi pensada para ser usada a princípio
+com a opção @code{LocalKeyword}--veja @ref{Lista de
+palavras-chave}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Substitution modes
+@node Modos de substituição
+@c <en>@section Substitution modes
+@section Modos de substituição
+@c <en>@cindex Keyword substitution, changing modes
+@cindex Substituição de palavra-chave, mudando os modos
+@c <en>@cindex -k (keyword substitution)
+@cindex -k (substituição de palavra-chave)
+@c <en>@cindex Kflag
+@cindex Kflag
+
+@c FIXME: This could be made more coherent, by expanding it
+@c with more examples or something.
+@c <en>Each file has a stored default substitution mode, and
+@c <en>each working directory copy of a file also has a
+@c <en>substitution mode. The former is set by the @samp{-k}
+@c <en>option to @code{cvs add} and @code{cvs admin}; the
+@c <en>latter is set by the @samp{-k} or @samp{-A} options to @code{cvs
+@c <en>checkout} or @code{cvs update}. @code{cvs diff} also
+@c <en>has a @samp{-k} option. For some examples,
+@c <en>see @ref{Binary files}, and @ref{Merging and keywords}.
+Cada arquivo tem um modo de substituição padrão
+armazenado, e cada cópia de um arquivo num diretório de
+trabalho também tem um modo de substituição. O
+primeiro é ajustado pela opção @samp{-k} no @code{cvs
+add} e no @code{cvs admin}; o último é ajustado pelas
+opções @samp{-k} ou @samp{-A} do @code{cvs checkout} ou
+do @code{cvs update}. O @code{cvs diff} também tem uma
+opção @samp{-k}. Para alguns exemplos, veja em
+@ref{Arquivos binários}, e @ref{Mesclagem e
+palavras-chave}.
+@c The fact that -A is overloaded to mean both reset
+@c sticky options and reset sticky tags/dates is
+@c somewhat questionable. Perhaps there should be
+@c separate options to reset sticky options (e.g. -k
+@c A") and tags/dates (someone suggested -r HEAD could
+@c do this instead of setting a sticky tag of "HEAD"
+@c as in the status quo but I haven't thought much
+@c about that idea. Of course -r .reset or something
+@c could be coined if this needs to be a new option).
+@c On the other hand, having -A mean "get things back
+@c into the state after a fresh checkout" has a certain
+@c appeal, and maybe there is no sufficient reason for
+@c creeping featurism in this area.
+
+@c <en>The modes available are:
+Os modos disponíveis são:
+
+@table @samp
+@c <en>@item -kkv
+@item -kkv
+@c <en>Generate keyword strings using the default form, e.g.
+@c <en>@code{$@splitrcskeyword{}Revision: 5.7 $} for the @code{Revision}
+@c <en>keyword.
+Gera strings de palavras-chave usando a forma padrão, e.g.
+@code{$@splitrcskeyword{}Revision: 5.7 $} para a
+palavra-chave @code{Revision}.
+
+@c <en>@item -kkvl
+@item -kkvl
+@c <en>Like @samp{-kkv}, except that a locker's name is always
+@c <en>inserted if the given revision is currently locked.
+@c <en>The locker's name is only relevant if @code{cvs admin
+@c <en>-l} is in use.
+Parecido com o @samp{-kkv}, exceto que um nome de
+???locker??? é sempre inserido se a revisão dada
+estiver atualmente ???locked???. O nome do ???locker???
+é relevante apenas se @code{cvs admin -l} estiver em uso.
+
+@c <en>@item -kk
+@item -kk
+@c <en>Generate only keyword names in keyword strings; omit
+@c <en>their values. For example, for the @code{Revision}
+@c <en>keyword, generate the string @code{$@splitrcskeyword{}Revision$}
+@c <en>instead of @code{$@splitrcskeyword{}Revision: 5.7 $}. This option
+@c <en>is useful to ignore differences due to keyword
+@c <en>substitution when comparing different revisions of a
+@c <en>file (@pxref{Merging and keywords}).
+Gera nomes de palavras-chave apenas nas strings da palavras-chave; omite
+seus valores. Por exemplo, para a palavra-chave @code{Revision}
+, gera a string @code{$@splitrcskeyword{}Revision$}
+ao invés de @code{$@splitrcskeyword{}Revision: 5.7 $}.
+Esta opção é útil para ignorar diferenças devido a
+substituição de palavras-chave quando comparando
+revisões diferentes de um mesmo arquivo
+(@pxref{Mesclagem e palavras-chave}).
+
+@c <en>@item -ko
+@item -ko
+@c <en>Generate the old keyword string, present in the working
+@c <en>file just before it was checked in. For example, for
+@c <en>the @code{Revision} keyword, generate the string
+@c <en>@code{$@splitrcskeyword{}Revision: 1.1 $} instead of
+@c <en>@code{$@splitrcskeyword{}Revision: 5.7 $} if that is how the
+@c <en>string appeared when the file was checked in.
+Gera a antiga string da palavra-chave, presente no
+arquivo de trabalho antes dele ter sido ???checked
+in???. Por exemplo, para a palavra-chave
+@code{Revision}, gera a string
+@code{$@splitrcskeyword{}Revision: 1.1 $} ao invés de
+@code{$@splitrcskeyword{}Revision: 5.7 $} se era assim
+que a string aparecia quando o arquivo foi ???checked
+in???.
+
+@c <en>@item -kb
+@item -kb
+@c <en>Like @samp{-ko}, but also inhibit conversion of line
+@c <en>endings between the canonical form in which they are
+@c <en>stored in the repository (linefeed only), and the form
+@c <en>appropriate to the operating system in use on the
+@c <en>client. For systems, like unix, which use linefeed
+@c <en>only to terminate lines, this is very similar to
+@c <en>@samp{-ko}. For more information on binary files, see
+@c <en>@ref{Binary files}. In @sc{cvs} version 1.12.2 and later
+@c <en>@samp{-kb}, as set by @code{cvs add}, @code{cvs admin}, or
+@c <en>@code{cvs import} may not be overridden by a @samp{-k} option
+@c <en>specified on the command line.
+Como o @samp{-ko}, mas também inibindo conversão de
+fim-de-linhas entre a forma canônica nas qual os
+arquivo são arquivados no repositório (apenas
+linefeed), e a forma apropriada para o sistema
+operacional em uso no cliente. Para sistemas, como o
+unix, que usam apenas o linefeed para terminar linhas,
+isto é bastante similar ao @samp{-ko}. Para mais
+informações sobre arquivos binários, veja em
+@ref{Arquivos binários}. No @sc{cvs} versão 1.12.2 ou
+mais novas @samp{-kb}, ajustado por @code{cvs add}, @code{cvs admin}, ou
+@code{cvs import} não vai ser sobreescrito pela opção
+@samp{-k} especificada na linha de comando.
+
+@c <en>@item -kv
+@item -kv
+@c <en>Generate only keyword values for keyword strings. For
+@c <en>example, for the @code{Revision} keyword, generate the string
+@c <en>@code{5.7} instead of @code{$@splitrcskeyword{}Revision: 5.7 $}.
+@c <en>This can help generate files in programming languages
+@c <en>where it is hard to strip keyword delimiters like
+@c <en>@code{$@splitrcskeyword{}Revision: $} from a string. However,
+@c <en>further keyword substitution cannot be performed once
+@c <en>the keyword names are removed, so this option should be
+@c <en>used with care.
+Gera apenas os valores das palavras-chaves para strings
+de palavras-chave. Por exemplo, para a palavra-chave
+@code{Revision}, gera a string @code{5.7} ao invés de
+@code{$@splitrcskeyword{}Revision: 5.7 $}. Isto pode
+ajudar a gerar arquivos em linguagens de programação
+onde é difícil ???strip??? delimitadores de
+palavras-chave, como o
+@code{$@splitrcskeyword{}Revision: $} para uma string.
+Entretanto, outras substituições de palavras-chave não
+poderam ser feitas, uma vez que os nomes de
+palavras-chave foram removidos. Logo, esta opção deve
+ser usada com cuidado.
+
+@c <en>One often would like to use @samp{-kv} with @code{cvs
+@c <en>export}---@pxref{export}. But be aware that doesn't
+@c <en>handle an export containing binary files correctly.
+É comum querer usar o @samp{-kv} com @code{cvs
+export}---@pxref{export}. Mas lembre-se que isto não
+trata um export contendo binários direito.
+
+@end table
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Configuring keyword expansion
+@node Configurando a expansão do teclado
+@c <en>@section Configuring Keyword Expansion
+@section Configurando a Expansão do Teclado
+@c <en>@cindex Configuring keyword expansion
+@cindex Configurando a Expansão do Teclado
+
+@c <en>In a repository that includes third-party software on
+@c <en>vendor branches, it is sometimes helpful to configure
+@c <en>CVS to use a local keyword instead of the standard
+@c <en>$@splitrcskeyword{Id}$ or $@splitrcskeyword{Header}$ keywords. Examples from
+@c <en>real projects includ, $@splitrcskeyword{Xorg}$, $@splitrcskeyword{XFree86}$,
+@c <en>$@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
+@c <en>$@splitrcskeyword{OpenBSD}$, and even $@splitrcskeyword{dotat}$.
+@c <en>The advantage of this is that
+@c <en>you can include your local version information in a
+@c <en>file using this local keyword (sometimes called a
+@c <en>``custom tag'' or a ``local tag'') without disrupting
+@c <en>the upstream version information (which may be a
+@c <en>different local keyword or a standard keyword). In
+@c <en>these cases, it is typically desirable to disable the
+@c <en>expansion of all keywords except the configured local
+@c <en>keyword.
+Num repositório que inclua software de terceiros em
+ramos de fornecedor, às vezes é útil configurar o CVS
+para usar uma palavra-chave local ao invés das
+palavras-chave padrão $@splitrcskeyword{Id}$ ou
+$@splitrcskeyword{Header}$. Exemplos de projetos reais incluem, $@splitrcskeyword{Xorg}$, $@splitrcskeyword{XFree86}$,
+$@splitrcskeyword{FreeBSD}$, $@splitrcskeyword{NetBSD}$,
+$@splitrcskeyword{OpenBSD}$, e ainda
+$@splitrcskeyword{dotat}$. A vantagem disto é que você
+pode incluir sua ???local version information??? num
+arquivo usando esta palavra-chave local (algumas vezes
+chamada de ``custom tag'' ou ``local tag'') sem romper
+com a ???upstream version information??? (que pode ser
+uma palavra-chave local diferente ou uma palavra-chave
+padrão). Nestes casos, é normalmente desejável
+desabilitar a expansão de todas as palavras-chave
+exceto a palavra-chave local configurada.
+
+@c <en>The @code{KeywordExpansion} option in the
+@c <en>@file{CVSROOT/config} file is intended to allow for the
+@c <en>either the explicit exclusion of a keyword or list of
+@c <en>keywords, or for the explicit inclusion of a keyword or
+@c <en>a list of keywords. This list may include the
+@c <en>@code{LocalKeyword} that has been configured.
+The @code{KeywordExpansion} option in the
+@file{CVSROOT/config} file is intended to allow for the
+either the explicit exclusion of a keyword or list of
+keywords, or for the explicit inclusion of a keyword or
+a list of keywords. This list may include the
+@code{LocalKeyword} that has been configured.
+
+@c <en>The @code{KeywordExpansion} option is followed by
+@c <en>@code{=} and the next character may either be @code{i}
+@c <en>to start an inclusion list or @code{e} to start an
+@c <en>exclusion list. If the following lines were added to
+@c <en>the @file{CVSROOT/config} file:
+The @code{KeywordExpansion} option is followed by
+@code{=} and the next character may either be @code{i}
+to start an inclusion list or @code{e} to start an
+exclusion list. If the following lines were added to
+the @file{CVSROOT/config} file:
+
+@example
+ # Add a "MyBSD" keyword and restrict keyword
+ # expansion
+ LocalKeyword=MyBSD=CVSHeader
+ KeywordExpand=iMyBSD
+@end example
+
+@c <en>then only the $@splitrcskeyword{MyBSD}$ keyword would be expanded.
+@c <en>A list may be used. The this example:
+then only the $@splitrcskeyword{MyBSD}$ keyword would be expanded.
+A list may be used. The this example:
+
+@example
+ # Add a "MyBSD" keyword and restrict keyword
+ # expansion to the MyBSD, Name and Date keywords.
+ LocalKeyword=MyBSD=CVSHeader
+ KeywordExpand=iMyBSD,Name,Date
+@end example
+
+@c <en>would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
+@c <en>$@splitrcskeyword{Date}$ to be expanded.
+@c <en>would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
+@c <en>$@splitrcskeyword{Date}$ to be expanded.
+would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
+$@splitrcskeyword{Date}$ to be expanded.
+would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
+$@splitrcskeyword{Date}$ to be expanded.
+
+@c <en>It is also possible to configure an exclusion list
+@c <en>using the following:
+@c <en>It is also possible to configure an exclusion list
+@c <en>using the following:
+It is also possible to configure an exclusion list
+using the following:
+It is also possible to configure an exclusion list
+using the following:
+
+@example
+ # Do not expand the non-RCS keyword CVSHeader
+ KeywordExpand=eCVSHeader
+@end example
+
+@c <en>This allows @sc{cvs} to ignore the recently introduced
+@c <en>$@splitrcskeyword{CVSHeader}$ keyword and retain all of the
+@c <en>others. The exclusion entry could also contain the
+@c <en>standard RCS keyword list, but this could be confusing
+@c <en>to users that expect RCS keywords to be expanded, so
+@c <en>ycare should be taken to properly set user expectations
+@c <en>for a repository that is configured in that manner.
+This allows @sc{cvs} to ignore the recently introduced
+$@splitrcskeyword{CVSHeader}$ keyword and retain all of the
+others. The exclusion entry could also contain the
+standard RCS keyword list, but this could be confusing
+to users that expect RCS keywords to be expanded, so
+ycare should be taken to properly set user expectations
+for a repository that is configured in that manner.
+
+@c <en>If there is a desire to not have any RCS keywords
+@c <en>expanded and not use the @code{-ko} flags everywhere,
+@c <en>an administrator may disable all keyword expansion
+@c <en>using the @file{CVSROOT/config} line:
+If there is a desire to not have any RCS keywords
+expanded and not use the @code{-ko} flags everywhere,
+an administrator may disable all keyword expansion
+using the @file{CVSROOT/config} line:
+
+@example
+ # Do not expand any RCS keywords
+ KeywordExpand=i
+@end example
+
+@c <en>this could be confusing to users that expect RCS
+@c <en>keywords like $@splitrcskeyword{Id}$ to be expanded properly,
+@c <en>so care should be taken to properly set user
+@c <en>expectations for a repository so configured.
+this could be confusing to users that expect RCS
+keywords like $@splitrcskeyword{Id}$ to be expanded properly,
+so care should be taken to properly set user
+expectations for a repository so configured.
+
+@c <en>It should be noted that a patch to provide both the
+@c <en>@code{KeywordExpand} and @code{LocalKeyword} features
+@c <en>has been around a long time. However, that patch
+@c <en>implemented these features using @code{tag=} and
+@c <en>@code{tagexpand=} keywords and those keywords are NOT
+@c <en>recognized.
+It should be noted that a patch to provide both the
+@code{KeywordExpand} and @code{LocalKeyword} features
+has been around a long time. However, that patch
+implemented these features using @code{tag=} and
+@code{tagexpand=} keywords and those keywords are NOT
+recognized.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Log keyword
+@node Log keyword
+@c <en>@section Problems with the $@splitrcskeyword{}Log$ keyword.
+@section Problems with the $@splitrcskeyword{}Log$ keyword.
+
+@c <en>The @code{$@splitrcskeyword{}Log$} keyword is somewhat
+@c <en>controversial. As long as you are working on your
+@c <en>development system the information is easily accessible
+@c <en>even if you do not use the @code{$@splitrcskeyword{}Log$}
+@c <en>keyword---just do a @code{cvs log}. Once you export
+@c <en>the file the history information might be useless
+@c <en>anyhow.
+The @code{$@splitrcskeyword{}Log$} keyword is somewhat
+controversial. As long as you are working on your
+development system the information is easily accessible
+even if you do not use the @code{$@splitrcskeyword{}Log$}
+keyword---just do a @code{cvs log}. Once you export
+the file the history information might be useless
+anyhow.
+
+@c <en>A more serious concern is that @sc{cvs} is not good at
+@c <en>handling @code{$@splitrcskeyword{}Log$} entries when a branch is
+@c <en>merged onto the main trunk. Conflicts often result
+@c <en>from the merging operation.
+A more serious concern is that @sc{cvs} is not good at
+handling @code{$@splitrcskeyword{}Log$} entries when a branch is
+merged onto the main trunk. Conflicts often result
+from the merging operation.
+@c Might want to check whether the CVS implementation
+@c of RCS_merge has this problem the same way rcsmerge
+@c does. I would assume so....
+
+@c <en>People also tend to "fix" the log entries in the file
+@c <en>(correcting spelling mistakes and maybe even factual
+@c <en>errors). If that is done the information from
+@c <en>@code{cvs log} will not be consistent with the
+@c <en>information inside the file. This may or may not be a
+@c <en>problem in real life.
+People also tend to "fix" the log entries in the file
+(correcting spelling mistakes and maybe even factual
+errors). If that is done the information from
+@code{cvs log} will not be consistent with the
+information inside the file. This may or may not be a
+problem in real life.
+
+@c <en>It has been suggested that the @code{$@splitrcskeyword{}Log$}
+@c <en>keyword should be inserted @emph{last} in the file, and
+@c <en>not in the files header, if it is to be used at all.
+@c <en>That way the long list of change messages will not
+@c <en>interfere with everyday source file browsing.
+It has been suggested that the @code{$@splitrcskeyword{}Log$}
+keyword should be inserted @emph{last} in the file, and
+not in the files header, if it is to be used at all.
+That way the long list of change messages will not
+interfere with everyday source file browsing.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Tracking sources
+@node Acompanhando fontes
+@c <en>@chapter Tracking third-party sources
+@chapter Tracking third-party sources
+@c <en>@cindex Third-party sources
+@cindex Fontes de terceiros
+@c <en>@cindex Tracking sources
+@cindex Tracking sources
+
+@c FIXME: Need discussion of added and removed files.
+@c FIXME: This doesn't really adequately introduce the
+@c concepts of "vendor" and "you". They don't *have*
+@c to be separate organizations or separate people.
+@c We want a description which is somewhat more based on
+@c the technical issues of which sources go where, but
+@c also with enough examples of how this relates to
+@c relationships like customer-supplier, developer-QA,
+@c maintainer-contributor, or whatever, to make it
+@c seem concrete.
+@c <en>If you modify a program to better fit your site, you
+@c <en>probably want to include your modifications when the next
+@c <en>release of the program arrives. @sc{cvs} can help you with
+@c <en>this task.
+Se você modificar um programa para se adequar melhor ao
+seu ambiente, você provavelmente vai querer incluir
+suas modificações quando a nova release do do programa
+chegar. O @sc{cvs} pode te ajudar nesta tarefa.
+
+@c <en>@cindex Vendor
+@cindex Vendor
+@cindex Vendor (fornecedor)
+@c <en>@cindex Vendor branch
+@cindex Vendor branch (ramo do forncedor)
+@cindex Ramo do fornecedor
+@c <en>@cindex Branch, vendor-
+@cindex Branch, vendor-
+@c <en>In the terminology used in @sc{cvs}, the supplier of the
+@c <en>program is called a @dfn{vendor}. The unmodified
+@c <en>distribution from the vendor is checked in on its own
+@c <en>branch, the @dfn{vendor branch}. @sc{cvs} reserves branch
+@c <en>1.1.1 for this use.
+Na terminologia usada no @sc{cvs}, quem fornece um
+programa é chamado de @dfn{vendor} (fornecedor, em
+português). A distribuição não modificada do
+fornecedor é ???checked in??? no seu próprio ramo, o
+@dfn{vendor branch} (ramo do fornecedor). O @sc{cvs}
+reserva o ramo 1.1.1 para isto.
+
+@c <en>When you modify the source and commit it, your revision
+@c <en>will end up on the main trunk. When a new release is
+@c <en>made by the vendor, you commit it on the vendor branch
+@c <en>and copy the modifications onto the main trunk.
+Quando você modifica a fonte e a ???commit???, sua
+revisão vai terminar na ???main trunk???. Quando uma
+nova release é feita pelo fornecedor, você ???commit???
+ela no ramo do fornecedor e copia as modificações no
+???main trunk???.
+
+@c <en>Use the @code{import} command to create and update
+@c <en>the vendor branch. When you import a new file,
+@c <en>the vendor branch is made the `head' revision, so
+@c <en>anyone that checks out a copy of the file gets that
+@c <en>revision. When a local modification is committed it is
+@c <en>placed on the main trunk, and made the `head'
+@c <en>revision.
+Use o comando @code{import} para criar e atualizar o
+ramo do fornecedor. Quando você importa um novo
+arquivo, o ramo do fornecedor se torna a revisão
+`head', logo qualquer um que ???checks out??? uma cópia
+do arquivo pega esta revisão. Quando uma modificação
+local é ???committed???, ela é posta no ???main
+trunk???, e se torna a revisão `head'.
+
+@menu
+@c <en>* First import:: Importing for the first time
+* Primeira importação:: Importando pela primeira vez
+@c <en>* Update imports:: Updating with the import command
+* Importações de atualização:: Atualizando com o comando import
+@c <en>* Reverting local changes:: Reverting to the latest vendor release
+* Reverting local changes:: Reverting to the latest vendor release
+@c <en>* Binary files in imports:: Binary files require special handling
+* Arquivos binários em importações:: Arquivos binários requerem tratamento especial
+@c <en>* Keywords in imports:: Keyword substitution might be undesirable
+* Palavras-chave em importações:: Substituição de palavras-chave pode ser indesejável
+@c <en>* Multiple vendor branches:: What if you get sources from several places?
+* Ramos de fornecedor múltiplos:: E se você obtém fontes de vários lugares?
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node First import
+@node Primeira importação
+@c <en>@section Importing for the first time
+@section Importing for the first time
+@c <en>@cindex Importing modules
+@cindex Importing modules
+
+@c Should mention naming conventions for vendor tags,
+@c release tags, and perhaps directory names.
+@c <en>Use the @code{import} command to check in the sources
+@c <en>for the first time. When you use the @code{import}
+@c <en>command to track third-party sources, the @dfn{vendor
+@c <en>tag} and @dfn{release tags} are useful. The
+@c <en>@dfn{vendor tag} is a symbolic name for the branch
+@c <en>(which is always 1.1.1, unless you use the @samp{-b
+@c <en>@var{branch}} flag---see @ref{Multiple vendor branches}.). The
+@c <en>@dfn{release tags} are symbolic names for a particular
+@c <en>release, such as @samp{FSF_0_04}.
+Use the @code{import} command to check in the sources
+for the first time. When you use the @code{import}
+command to track third-party sources, the @dfn{vendor
+tag} and @dfn{release tags} are useful. The
+@dfn{vendor tag} is a symbolic name for the branch
+(which is always 1.1.1, unless you use the @samp{-b
+@var{branch}} flag---see @ref{Ramos de fornecedor múltiplos}.). The
+@dfn{release tags} are symbolic names for a particular
+release, such as @samp{FSF_0_04}.
+
+@c I'm not completely sure this belongs here. But
+@c we need to say it _somewhere_ reasonably obvious; it
+@c is a common misconception among people first learning CVS
+@c <en>Note that @code{import} does @emph{not} change the
+@c <en>directory in which you invoke it. In particular, it
+@c <en>does not set up that directory as a @sc{cvs} working
+@c <en>directory; if you want to work with the sources import
+@c <en>them first and then check them out into a different
+@c <en>directory (@pxref{Getting the source}).
+Note that @code{import} does @emph{not} change the
+directory in which you invoke it. In particular, it
+does not set up that directory as a @sc{cvs} working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (@pxref{Obtendo os fontes}).
+
+@c <en>@cindex wdiff (import example)
+@cindex wdiff (import example)
+@c <en>Suppose you have the sources to a program called
+@c <en>@code{wdiff} in a directory @file{wdiff-0.04},
+@c <en>and are going to make private modifications that you
+@c <en>want to be able to use even when new releases are made
+@c <en>in the future. You start by importing the source to
+@c <en>your repository:
+Suppose you have the sources to a program called
+@code{wdiff} in a directory @file{wdiff-0.04},
+and are going to make private modifications that you
+want to be able to use even when new releases are made
+in the future. You start by importing the source to
+your repository:
+
+@example
+$ cd wdiff-0.04
+$ cvs import -m "Import of FSF v. 0.04" fsf/wdiff FSF_DIST WDIFF_0_04
+@end example
+
+@c <en>The vendor tag is named @samp{FSF_DIST} in the above
+@c <en>example, and the only release tag assigned is
+@c <en>@samp{WDIFF_0_04}.
+The vendor tag is named @samp{FSF_DIST} in the above
+example, and the only release tag assigned is
+@samp{WDIFF_0_04}.
+@c FIXME: Need to say where fsf/wdiff comes from.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Update imports
+@node Importações de atualização
+@c <en>@section Updating with the import command
+@section Updating with the import command
+
+@c <en>When a new release of the source arrives, you import it into the
+@c <en>repository with the same @code{import} command that you used to set up
+@c <en>the repository in the first place. The only difference is that you
+@c <en>specify a different release tag this time:
+When a new release of the source arrives, you import it into the
+repository with the same @code{import} command that you used to set up
+the repository in the first place. The only difference is that you
+specify a different release tag this time:
+
+@example
+$ tar xfz wdiff-0.05.tar.gz
+$ cd wdiff-0.05
+$ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
+@end example
+
+@c <en>For files that have not been modified locally, the newly created
+@c <en>revision becomes the head revision. If you have made local
+@c <en>changes, @code{import} will warn you that you must merge the changes
+@c <en>into the main trunk, and tell you to use @samp{checkout -j} to do so:
+For files that have not been modified locally, the newly created
+revision becomes the head revision. If you have made local
+changes, @code{import} will warn you that you must merge the changes
+into the main trunk, and tell you to use @samp{checkout -j} to do so:
+
+@c FIXME: why "wdiff" here and "fsf/wdiff" in the
+@c "import"? I think the assumption is that one has
+@c "wdiff fsf/wdiff" or some such in modules, but it
+@c would be better to not use modules in this example.
+@example
+$ cvs checkout -jFSF_DIST:yesterday -jFSF_DIST wdiff
+@end example
+
+@noindent
+@c <en>The above command will check out the latest revision of
+@c <en>@samp{wdiff}, merging the changes made on the vendor branch @samp{FSF_DIST}
+@c <en>since yesterday into the working copy. If any conflicts arise during
+@c <en>the merge they should be resolved in the normal way (@pxref{Conflicts
+@c <en>example}). Then, the modified files may be committed.
+The above command will check out the latest revision of
+@samp{wdiff}, merging the changes made on the vendor branch @samp{FSF_DIST}
+since yesterday into the working copy. If any conflicts arise during
+the merge they should be resolved in the normal way
+(@pxref{Exemplo de conflitos}). Then, the modified files may be committed.
+
+@c <en>However, it is much better to use the two release tags rather than using
+@c <en>a date on the branch as suggested above:
+However, it is much better to use the two release tags rather than using
+a date on the branch as suggested above:
+
+@example
+$ cvs checkout -jWDIFF_0_04 -jWDIFF_0_05 wdiff
+@end example
+
+@noindent
+@c <en>The reason this is better is that
+@c <en>using a date, as suggested above, assumes that you do
+@c <en>not import more than one release of a product per day.
+@c <en>More importantly, using the release tags allows @sc{cvs} to detect files
+@c <en>that were removed between the two vendor releases and mark them for
+@c <en>removal. Since @code{import} has no way to detect removed files, you
+@c <en>should do a merge like this even if @code{import} doesn't tell you to.
+The reason this is better is that
+using a date, as suggested above, assumes that you do
+not import more than one release of a product per day.
+More importantly, using the release tags allows @sc{cvs} to detect files
+that were removed between the two vendor releases and mark them for
+removal. Since @code{import} has no way to detect removed files, you
+should do a merge like this even if @code{import} doesn't tell you to.
+
+@c <en>@node Reverting local changes
+@node Reverting local changes
+@c <en>@section Reverting to the latest vendor release
+@section Reverting to the latest vendor release
+
+@c <en>You can also revert local changes completely and return
+@c <en>to the latest vendor release by changing the `head'
+@c <en>revision back to the vendor branch on all files. For
+@c <en>example, if you have a checked-out copy of the sources
+@c <en>in @file{~/work.d/wdiff}, and you want to revert to the
+@c <en>vendor's version for all the files in that directory,
+@c <en>you would type:
+You can also revert local changes completely and return
+to the latest vendor release by changing the `head'
+revision back to the vendor branch on all files. For
+example, if you have a checked-out copy of the sources
+in @file{~/work.d/wdiff}, and you want to revert to the
+vendor's version for all the files in that directory,
+you would type:
+
+@example
+$ cd ~/work.d/wdiff
+$ cvs admin -bFSF_DIST .
+@end example
+
+@noindent
+@c <en>You must specify the @samp{-bFSF_DIST} without any space
+@c <en>after the @samp{-b}. @xref{admin options}.
+You must specify the @samp{-bFSF_DIST} without any space
+after the @samp{-b}. @xref{admin options}.
+
+@c <en>@node Binary files in imports
+@node Arquivos binários em importações
+@c <en>@section How to handle binary files with cvs import
+@section How to handle binary files with cvs import
+
+@c <en>Use the @samp{-k} wrapper option to tell import which
+@c <en>files are binary. @xref{Wrappers}.
+Use the @samp{-k} wrapper option to tell import which
+files are binary. @xref{Wrappers}.
+
+@c <en>@node Keywords in imports
+@node Palavras-chave em importações
+@c <en>@section How to handle keyword substitution with cvs import
+@section Como lidar com substituição de palavras-chave com o cvs import
+
+@c <en>The sources which you are importing may contain
+@c <en>keywords (@pxref{Keyword substitution}). For example,
+@c <en>the vendor may use @sc{cvs} or some other system
+@c <en>which uses similar keyword expansion syntax. If you
+@c <en>just import the files in the default fashion, then
+@c <en>the keyword expansions supplied by the vendor will
+@c <en>be replaced by keyword expansions supplied by your
+@c <en>own copy of @sc{cvs}. It may be more convenient to
+@c <en>maintain the expansions supplied by the vendor, so
+@c <en>that this information can supply information about
+@c <en>the sources that you imported from the vendor.
+The sources which you are importing may contain
+keywords (@pxref{Substituição de palavra-chave}). For example,
+the vendor may use @sc{cvs} or some other system
+which uses similar keyword expansion syntax. If you
+just import the files in the default fashion, then
+the keyword expansions supplied by the vendor will
+be replaced by keyword expansions supplied by your
+own copy of @sc{cvs}. It may be more convenient to
+maintain the expansions supplied by the vendor, so
+that this information can supply information about
+the sources that you imported from the vendor.
+
+@c <en>To maintain the keyword expansions supplied by the
+@c <en>vendor, supply the @samp{-ko} option to @code{cvs
+@c <en>import} the first time you import the file.
+@c <en>This will turn off keyword expansion
+@c <en>for that file entirely, so if you want to be more
+@c <en>selective you'll have to think about what you want
+@c <en>and use the @samp{-k} option to @code{cvs update} or
+@c <en>@code{cvs admin} as appropriate.
+To maintain the keyword expansions supplied by the
+vendor, supply the @samp{-ko} option to @code{cvs
+import} the first time you import the file.
+This will turn off keyword expansion
+for that file entirely, so if you want to be more
+selective you'll have to think about what you want
+and use the @samp{-k} option to @code{cvs update} or
+@code{cvs admin} as appropriate.
+@c Supplying -ko to import if the file already existed
+@c has no effect. Not clear to me whether it should
+@c or not.
+
+@c <en>@node Multiple vendor branches
+@node Ramos de fornecedor múltiplos
+@c <en>@section Multiple vendor branches
+@section Ramos de fornecedor múltiplos
+
+@c <en>All the examples so far assume that there is only one
+@c <en>vendor from which you are getting sources. In some
+@c <en>situations you might get sources from a variety of
+@c <en>places. For example, suppose that you are dealing with
+@c <en>a project where many different people and teams are
+@c <en>modifying the software. There are a variety of ways to
+@c <en>handle this, but in some cases you have a bunch of
+@c <en>source trees lying around and what you want to do more
+@c <en>than anything else is just to all put them in @sc{cvs} so
+@c <en>that you at least have them in one place.
+All the examples so far assume that there is only one
+vendor from which you are getting sources. In some
+situations you might get sources from a variety of
+places. For example, suppose that you are dealing with
+a project where many different people and teams are
+modifying the software. There are a variety of ways to
+handle this, but in some cases you have a bunch of
+source trees lying around and what you want to do more
+than anything else is just to all put them in @sc{cvs} so
+that you at least have them in one place.
+
+@c <en>For handling situations in which there may be more than
+@c <en>one vendor, you may specify the @samp{-b} option to
+@c <en>@code{cvs import}. It takes as an argument the vendor
+@c <en>branch to import to. The default is @samp{-b 1.1.1}.
+For handling situations in which there may be more than
+one vendor, you may specify the @samp{-b} option to
+@code{cvs import}. It takes as an argument the vendor
+branch to import to. The default is @samp{-b 1.1.1}.
+
+@c <en>For example, suppose that there are two teams, the red
+@c <en>team and the blue team, that are sending you sources.
+@c <en>You want to import the red team's efforts to branch
+@c <en>1.1.1 and use the vendor tag RED. You want to import
+@c <en>the blue team's efforts to branch 1.1.3 and use the
+@c <en>vendor tag BLUE. So the commands you might use are:
+For example, suppose that there are two teams, the red
+team and the blue team, that are sending you sources.
+You want to import the red team's efforts to branch
+1.1.1 and use the vendor tag RED. You want to import
+the blue team's efforts to branch 1.1.3 and use the
+vendor tag BLUE. So the commands you might use are:
+
+@example
+$ cvs import dir RED RED_1-0
+$ cvs import -b 1.1.3 dir BLUE BLUE_1-5
+@end example
+
+Note that if your vendor tag does not match your
+@samp{-b} option, @sc{cvs} will not detect this case! For
+example,
+
+@example
+$ cvs import -b 1.1.3 dir RED RED_1-0
+@end example
+
+@noindent
+@c <en>Be careful; this kind of mismatch is sure to sow
+@c <en>confusion or worse. I can't think of a useful purpose
+@c <en>for the ability to specify a mismatch here, but if you
+@c <en>discover such a use, don't. @sc{cvs} is likely to make this
+@c <en>an error in some future release.
+Be careful; this kind of mismatch is sure to sow
+confusion or worse. I can't think of a useful purpose
+for the ability to specify a mismatch here, but if you
+discover such a use, don't. @sc{cvs} is likely to make this
+an error in some future release.
+
+@c Probably should say more about the semantics of
+@c multiple branches. What about the default branch?
+@c What about joining (perhaps not as useful with
+@c multiple branches, or perhaps it is. Either way
+@c should be mentioned).
+
+@c I'm not sure about the best location for this. In
+@c one sense, it might belong right after we've introduced
+@c CVS's basic version control model, because people need
+@c to figure out builds right away. The current location
+@c is based on the theory that it kind of akin to the
+@c "Revision management" section.
+@c <en>@node Builds
+@node Builds
+@c <en>@chapter How your build system interacts with CVS
+@chapter How your build system interacts with CVS
+@c <en>@cindex Builds
+@cindex Builds
+@c <en>@cindex make
+@cindex make
+
+@c <en>As mentioned in the introduction, @sc{cvs} does not
+@c <en>contain software for building your software from source
+@c <en>code. This section describes how various aspects of
+@c <en>your build system might interact with @sc{cvs}.
+As mentioned in the introduction, @sc{cvs} does not
+contain software for building your software from source
+code. This section describes how various aspects of
+your build system might interact with @sc{cvs}.
+
+@c Is there a way to discuss this without reference to
+@c tools other than CVS? I'm not sure there is; I
+@c wouldn't think that people who learn CVS first would
+@c even have this concern.
+@c <en>One common question, especially from people who are
+@c <en>accustomed to @sc{rcs}, is how to make their build get
+@c <en>an up to date copy of the sources. The answer to this
+@c <en>with @sc{cvs} is two-fold. First of all, since
+@c <en>@sc{cvs} itself can recurse through directories, there
+@c <en>is no need to modify your @file{Makefile} (or whatever
+@c <en>configuration file your build tool uses) to make sure
+@c <en>each file is up to date. Instead, just use two
+@c <en>commands, first @code{cvs -q update} and then
+@c <en>@code{make} or whatever the command is to invoke your
+@c <en>build tool. Secondly, you do not necessarily
+@c <en>@emph{want} to get a copy of a change someone else made
+@c <en>until you have finished your own work. One suggested
+@c <en>approach is to first update your sources, then
+@c <en>implement, build and
+@c <en>test the change you were thinking of, and then commit
+@c <en>your sources (updating first if necessary). By
+@c <en>periodically (in between changes, using the approach
+@c <en>xjust described) updating your entire tree, you ensure
+@c <en>that your sources are sufficiently up to date.
+One common question, especially from people who are
+accustomed to @sc{rcs}, is how to make their build get
+an up to date copy of the sources. The answer to this
+with @sc{cvs} is two-fold. First of all, since
+@sc{cvs} itself can recurse through directories, there
+is no need to modify your @file{Makefile} (or whatever
+configuration file your build tool uses) to make sure
+each file is up to date. Instead, just use two
+commands, first @code{cvs -q update} and then
+@code{make} or whatever the command is to invoke your
+build tool. Secondly, you do not necessarily
+@emph{want} to get a copy of a change someone else made
+until you have finished your own work. One suggested
+approach is to first update your sources, then
+implement, build and
+test the change you were thinking of, and then commit
+your sources (updating first if necessary). By
+periodically (in between changes, using the approach
+just described) updating your entire tree, you ensure
+that your sources are sufficiently up to date.
+
+@c <en>@cindex Bill of materials
+@cindex Bill of materials
+@c <en>One common need is to record which versions of which
+@c <en>source files went into a particular build. This kind
+@c <en>of functionality is sometimes called @dfn{bill of
+@c <en>materials} or something similar. The best way to do
+@c <en>this with @sc{cvs} is to use the @code{tag} command to
+@c <en>record which versions went into a given build
+@c <en>(@pxref{Tags}).
+One common need is to record which versions of which
+source files went into a particular build. This kind
+of functionality is sometimes called @dfn{bill of
+materials} or something similar. The best way to do
+this with @sc{cvs} is to use the @code{tag} command to
+record which versions went into a given build
+(@pxref{Etiquetas}).
+
+@c <en>Using @sc{cvs} in the most straightforward manner
+@c <en>possible, each developer will have a copy of the entire
+@c <en>source tree which is used in a particular build. If
+@c <en>the source tree is small, or if developers are
+@c <en>geographically dispersed, this is the preferred
+@c <en>solution. In fact one approach for larger projects is
+@c <en>to break a project down into smaller
+Using @sc{cvs} in the most straightforward manner
+possible, each developer will have a copy of the entire
+source tree which is used in a particular build. If
+the source tree is small, or if developers are
+geographically dispersed, this is the preferred
+solution. In fact one approach for larger projects is
+to break a project down into smaller
+@c I say subsystem instead of module because they may or
+@c may not use the modules file.
+@c <en>separately-compiled subsystems, and arrange a way of
+@c <en>releasing them internally so that each developer need
+@c <en>check out only those subsystems which they are
+@c <en>actively working on.
+separately-compiled subsystems, and arrange a way of
+releasing them internally so that each developer need
+check out only those subsystems which they are
+actively working on.
+
+@c <en>Another approach is to set up a structure which allows
+@c <en>developers to have their own copies of some files, and
+@c <en>for other files to access source files from a central
+@c <en>location. Many people have come up with some such a
+Another approach is to set up a structure which allows
+developers to have their own copies of some files, and
+for other files to access source files from a central
+location. Many people have come up with some such a
+@c two such people are paul@sander.cupertino.ca.us (for
+@c a previous employer)
+@c and gtornblo@senet.abb.se (spicm and related tools),
+@c but as far as I know
+@c no one has nicely packaged or released such a system (or
+@c instructions for constructing one).
+@c <en>system using features such as the symbolic link feature
+@c <en>found in many operating systems, or the @code{VPATH}
+@c <en>feature found in many versions of @code{make}. One build
+@c <en>tool which is designed to help with this kind of thing
+@c <en>is Odin (see
+@c <en>@code{ftp://ftp.cs.colorado.edu/pub/distribs/odin}).
+system using features such as the symbolic link feature
+found in many operating systems, or the @code{VPATH}
+feature found in many versions of @code{make}. One build
+tool which is designed to help with this kind of thing
+is Odin (see
+@code{ftp://ftp.cs.colorado.edu/pub/distribs/odin}).
+@c Should we be saying more about Odin? Or how you use
+@c it with CVS? Also, the Prime Time Freeware for Unix
+@c disk (see http://www.ptf.com/) has Odin (with a nice
+@c paragraph summarizing it on the web), so that might be a
+@c semi-"official" place to point people.
+@c
+@c Of course, many non-CVS systems have this kind of
+@c functionality, for example OSF's ODE
+@c (http://www.osf.org/ode/) or mk
+@c (http://www.grin.net/~pzi/mk-3.18.4.docs/mk_toc.html
+@c He has changed providers in the past; a search engine search
+@c for "Peter Ziobrzynski" probably won't get too many
+@c spurious hits :-). A more stable URL might be
+@c ftp://ftp.uu.net/pub/cmvc/mk). But I'm not sure
+@c there is any point in mentioning them here unless they
+@c can work with CVS.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Special Files
+@node Arquivos especiais
+@c <en>@chapter Special Files
+@chapter Arquivos especiais
+
+@c <en>@cindex Special files
+@cindex Arquivos especiais
+@c <en>@cindex Device nodes
+@cindex Device nodes
+@c <en>@cindex Ownership, saving in CVS
+@cindex Ownership, saving in CVS
+@c <en>@cindex Permissions, saving in CVS
+@cindex Permissions, saving in CVS
+@c <en>@cindex Hard links
+@cindex Hard links
+@c <en>@cindex Symbolic links
+@cindex Symbolic links
+
+@c <en>In normal circumstances, @sc{cvs} works only with regular
+@c <en>files. Every file in a project is assumed to be
+@c <en>persistent; it must be possible to open, read and close
+@c <en>them; and so on. @sc{cvs} also ignores file permissions and
+@c <en>ownerships, leaving such issues to be resolved by the
+@c <en>developer at installation time. In other words, it is
+@c <en>not possible to "check in" a device into a repository;
+@c <en>if the device file cannot be opened, @sc{cvs} will refuse to
+@c <en>handle it. Files also lose their ownerships and
+@c <en>permissions during repository transactions.
+In normal circumstances, @sc{cvs} works only with regular
+files. Every file in a project is assumed to be
+persistent; it must be possible to open, read and close
+them; and so on. @sc{cvs} also ignores file permissions and
+ownerships, leaving such issues to be resolved by the
+developer at installation time. In other words, it is
+not possible to "check in" a device into a repository;
+if the device file cannot be opened, @sc{cvs} will refuse to
+handle it. Files also lose their ownerships and
+permissions during repository transactions.
+
+@ignore
+If the configuration variable @code{PreservePermissions}
+(@pxref{config}) is set in the repository, @sc{cvs} will
+save the following file characteristics in the
+repository:
+
+@itemize @bullet
+@item user and group ownership
+@item permissions
+@item major and minor device numbers
+@item symbolic links
+@item hard link structure
+@end itemize
+
+Using the @code{PreservePermissions} option affects the
+behavior of @sc{cvs} in several ways. First, some of the
+new operations supported by @sc{cvs} are not accessible to
+all users. In particular, file ownership and special
+file characteristics may only be changed by the
+superuser. When the @code{PreservePermissions}
+configuration variable is set, therefore, users will
+have to be `root' in order to perform @sc{cvs} operations.
+
+When @code{PreservePermissions} is in use, some @sc{cvs}
+operations (such as @samp{cvs status}) will not
+recognize a file's hard link structure, and so will
+emit spurious warnings about mismatching hard links.
+The reason is that @sc{cvs}'s internal structure does not
+make it easy for these operations to collect all the
+necessary data about hard links, so they check for file
+conflicts with inaccurate data.
+
+A more subtle difference is that @sc{cvs} considers a file
+to have changed only if its contents have changed
+(specifically, if the modification time of the working
+file does not match that of the repository's file).
+Therefore, if only the permissions, ownership or hard
+linkage have changed, or if a device's major or minor
+numbers have changed, @sc{cvs} will not notice. In order to
+commit such a change to the repository, you must force
+the commit with @samp{cvs commit -f}. This also means
+that if a file's permissions have changed and the
+repository file is newer than the working copy,
+performing @samp{cvs update} will silently change the
+permissions on the working copy.
+
+Changing hard links in a @sc{cvs} repository is particularly
+delicate. Suppose that file @file{foo} is linked to
+file @file{old}, but is later relinked to file
+@file{new}. You can wind up in the unusual situation
+where, although @file{foo}, @file{old} and @file{new}
+have all had their underlying link patterns changed,
+only @file{foo} and @file{new} have been modified, so
+@file{old} is not considered a candidate for checking
+in. It can be very easy to produce inconsistent
+results this way. Therefore, we recommend that when it
+is important to save hard links in a repository, the
+prudent course of action is to @code{touch} any file
+whose linkage or status has changed since the last
+checkin. Indeed, it may be wise to @code{touch *}
+before each commit in a directory with complex hard
+link structures.
+
+It is worth noting that only regular files may
+be merged, for reasons that hopefully are obvious. If
+@samp{cvs update} or @samp{cvs checkout -j} attempts to
+merge a symbolic link with a regular file, or two
+device files for different kinds of devices, @sc{cvs} will
+report a conflict and refuse to perform the merge. At
+the same time, @samp{cvs diff} will not report any
+differences between these files, since no meaningful
+textual comparisons can be made on files which contain
+no text.
+
+The @code{PreservePermissions} features do not work
+with client/server @sc{cvs}. Another limitation is
+that hard links must be to other files within the same
+directory; hard links across directories are not
+supported.
+@end ignore
+
+@c ---------------------------------------------------------------------
+@c <en>@node Comandos do CVS
+@node Comandos do CVS
+@c <en>@appendix Guia dos comandos do CVS
+@appendix Guia dos comandos do CVS
+
+@c <en>This appendix describes the overall structure of
+@c <en>@sc{cvs} commands, and describes some commands in
+@c <en>detail (others are described elsewhere; for a quick
+@c <en>reference to @sc{cvs} commands, @pxref{Invoking CVS}).
+Este apêndice descreve a estrutura geral dos comandos
+do @sc{cvs}, e descreve alguns comandos em detalhe
+(outros são descritos em outra parte; para
+uma referência rápida dos comandos do @sc{cvs},
+@pxref{Chamando o CVS}).
+@c The idea is that we want to move the commands which
+@c are described here into the main body of the manual,
+@c in the process reorganizing the manual to be
+@c organized around what the user wants to do, not
+@c organized around CVS commands.
+@c
+@c Note that many users do expect a manual which is
+@c organized by command. At least some users do.
+@c One good addition to the "organized by command"
+@c section (if any) would be "see also" links.
+@c The awk manual might be a good example; it has a
+@c reference manual which is more verbose than Invoking
+@c CVS but probably somewhat less verbose than CVS
+@c Commands.
+
+@menu
+@c <en>* Structure:: Overall structure of CVS commands
+* Estrutura:: Estrutura geral dos comandos do CVS
+@c <en>* Exit status:: Indicating CVS's success or failure
+* Estados de saída:: Indicando o sucesso ou falha do CVS
+@c <en>* ~/.cvsrc:: Default options with the ~/.cvsrc file
+* ~/.cvsrc:: Opções padrão com o arquivo ~/.cvsrc
+@c <en>* Global options:: Options you give to the left of cvs_command
+* Opções globais:: Opções que você bota a esquerda do comando_do_cvs
+@c <en>* Common options:: Options you give to the right of cvs_command
+* Opções comuns:: Opções que você bota a direita do comando_do_cvs
+@c <en>* admin:: Administration
+* admin:: Administração
+@c <en>* checkout:: Checkout sources for editing
+* checkout:: ???Checkout??? fontes para edição
+@c <en>* commit:: Check files into the repository
+* commit:: Colocar arquivos no repositório
+@c <en>* diff:: Show differences between revisions
+* diff:: Mostrar diferenças entre revisões
+@c <en>* export:: Export sources from CVS, similar to checkout
+* export:: Exportar fontes para fora do CVS, similar ao ???checkout???
+@c <en>* history:: Show status of files and users
+* history:: Mostrar estado de arquivos e usuários
+@c <en>* import:: Import sources into CVS, using vendor branches
+* import:: Importar fontes para dentro do CVS, usando ramos de fornecedor
+@c <en>* log:: Show log messages for files
+* log:: Mostrar mensagens de log para arquivos
+@c <en>* rdiff:: 'patch' format diffs between releases
+* rdiff:: 'patch' format diffs between releases
+@c <en>* release:: Indicate that a directory is no longer in use
+* release:: Avisar que um diretorio não está mais em uso
+@c <en>* update:: Bring work tree in sync with repository
+* update:: Deixar árvore de trabalho em sincronia com o repositório
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Structure
+@node Estrutura
+@c <en>@appendixsec Overall structure of CVS commands
+@appendixsec Estrutura geral dos comandos do CVS
+@c <en>@cindex Structure
+@cindex Estrutura
+@c <en>@cindex CVS command structure
+@cindex Estrutura do comando CVS
+@c <en>@cindex Command structure
+@cindex Estrutura do comando
+@c <en>@cindex Format of CVS commands
+@cindex Formato dos comandos do CVS
+
+@c <en>The overall format of all @sc{cvs} commands is:
+O formato geral de todos os comandos do @sc{cvs} é:
+
+@example
+cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
+@end example
+
+@table @code
+@c <en>@item cvs
+@item cvs
+@c <en>The name of the @sc{cvs} program.
+O nome do programa @sc{cvs}.
+
+@c <en>@item cvs_options
+@item cvs_options
+@c <en>Some options that affect all sub-commands of @sc{cvs}. These are
+@c <en>described below.
+Algumas opções que afetam todos os sub-comandos do
+@sc{cvs}. Estes estão descritos abaixo.
+
+@c <en>@item cvs_command
+@item cvs_command
+@c <en>One of several different sub-commands. Some of the commands have
+@c <en>aliases that can be used instead; those aliases are noted in the
+@c <en>reference manual for that command. There are only two situations
+@c <en>where you may omit @samp{cvs_command}: @samp{cvs -H} elicits a
+@c <en>list of available commands, and @samp{cvs -v} displays version
+@c <en>information on @sc{cvs} itself.
+Um dos vários sub-comandos. Alguns dos comandos têm
+???aliases??? substituí-los; estes ???aliases??? são
+listados no manual de referência do comando. Existem
+apenas duas situações onde você pode omitir o
+@samp{cvs_command}: @samp{cvs -H} retorna uma lista de
+comandos disponíveis, e @samp{cvs -v} mostra
+informações sobre a versão do próprio @sc{cvs}.
+
+@c <en>@item command_options
+@item command_options
+@c <en>Options that are specific for the command.
+Opções que são específicas para o comando.
+
+@c <en>@item command_args
+@item command_args
+@c <en>Arguments to the commands.
+Argumentos para os comandos.
+@end table
+
+@c <en>There is unfortunately some confusion between
+@c <en>@code{cvs_options} and @code{command_options}.
+@c <en>@samp{-l}, when given as a @code{cvs_option}, only
+@c <en>affects some of the commands. When it is given as a
+@c <en>@code{command_option} is has a different meaning, and
+@c <en>is accepted by more commands. In other words, do not
+@c <en>take the above categorization too seriously. Look at
+@c <en>the documentation instead.
+Infelizmente, existe alguma confusão entre
+@code{cvs_options} e @code{command_options}. @samp{-l},
+quando passado como @code{cvs_option}, afeta apenas
+alguns dos comandos. Quando é passado como um
+@code{command_option} tem um significado diferente, e é
+aceito por mais comandos. Em outras palavras, não leve
+a categorização acima tão a sério. Olhe a
+documentação, ao invés disto.
+
+@c <en>@node Exit status
+@node Estados de saída
+@c <en>@appendixsec CVS's exit status
+@appendixsec estado de saída do CVS
+@c <en>@cindex Exit status, of CVS
+@cindex Estados de saída do CVS
+
+@c <en>@sc{cvs} can indicate to the calling environment whether it
+@c <en>succeeded or failed by setting its @dfn{exit status}.
+@c <en>The exact way of testing the exit status will vary from
+@c <en>one operating system to another. For example in a unix
+@c <en>shell script the @samp{$?} variable will be 0 if the
+@c <en>last command returned a successful exit status, or
+@c <en>greater than 0 if the exit status indicated failure.
+O @sc{cvs} pode indicar para o ambiente que o chamou se
+ele foi bem-sucedido ou falhou ao ajustar seu
+@dfn{estado de saída}. A forma exata de testar o
+estado de saída varia de um sistema operacional para
+outro. Por exemplo, num shell script do unix a
+variável @samp{$?} será 0 se o último comando retornar
+um estado de saída bem-sucedido, ou maior que 0 se o
+estado de saída indicar uma falha.
+
+@c <en>If @sc{cvs} is successful, it returns a successful status;
+@c <en>if there is an error, it prints an error message and
+@c <en>returns a failure status. The one exception to this is
+@c <en>the @code{cvs diff} command. It will return a
+@c <en>successful status if it found no differences, or a
+@c <en>failure status if there were differences or if there
+@c <en>was an error. Because this behavior provides no good
+@c <en>way to detect errors, in the future it is possible that
+@c <en>@code{cvs diff} will be changed to behave like the
+@c <en>other @sc{cvs} commands.
+Se o @sc{cvs} é bem-sucedido, retorna um estado de sucesso;
+se existe um erro, mostra uma mensagem de erro e
+retorna um estado de falha. A única exceção para isto
+é o comando @code{cvs diff}. Ele retornará um estado
+de sucesso se não encontrar diferenças, ou um estado de
+sucesso se existirem diferenças ou acontecer um erro.
+Já que este comportamento não fornece uma boa maneira
+de detectar erros, é possível que no futuro o @code{cvs
+diff} seja mudado para se comportar como os outros
+comandos do @sc{cvs}.
+@c It might seem like checking whether cvs -q diff
+@c produces empty or non-empty output can tell whether
+@c there were differences or not. But it seems like
+@c there are cases with output but no differences
+@c (testsuite basica-8b). It is not clear to me how
+@c useful it is for a script to be able to check
+@c whether there were differences.
+@c FIXCVS? In previous versions of CVS, cvs diff
+@c returned 0 for no differences, 1 for differences, or
+@c 2 for errors. Is this behavior worth trying to
+@c bring back (but what does it mean for VMS?)?
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node ~/.cvsrc
+@node ~/.cvsrc
+@c <en>@appendixsec Default options and the ~/.cvsrc file
+@appendixsec Opções padrão e o arquivo ~/.cvsrc
+@c <en>@cindex .cvsrc file
+@cindex Arquivo .cvsrc
+@c <en>@cindex Option defaults
+@cindex Padrão, opções
+
+@c <en>There are some @code{command_options} that are used so
+@c <en>often that you might have set up an alias or some other
+@c <en>means to make sure you always specify that option. One
+@c <en>example (the one that drove the implementation of the
+@c <en>@file{.cvsrc} support, actually) is that many people find the
+@c <en>default output of the @samp{diff} command to be very
+@c <en>hard to read, and that either context diffs or unidiffs
+@c <en>are much easier to understand.
+Existem algumas @code{opções_de_comando} que são tão
+usadas que você vai querer preparar um atalho ou
+alguma outra forma de ter certeza que tais opções
+sempre vão ser especificadas. Um exemplo (o que
+motivou a implementação do suporte ao arquivo
+@file{.cvsrc}, na verdade) é que muitas pessoas acham a
+saída do comando @samp{diff} muito difícil de ler, e
+que tanto diffs de contexto quanto unidiffs são muito
+mais fáceis de entender.
+
+@c <en>The @file{~/.cvsrc} file is a way that you can add
+@c <en>default options to @code{cvs_commands} within cvs,
+@c <en>instead of relying on aliases or other shell scripts.
+O arquivo @file{~/.cvsrc} é uma forma de você adicionar
+opções padrão aos @code{comandos_cvs} dentro do cvs, ao
+invés de usar alias (apelidos) ou outros scripts de shell.
+
+@c <en>The format of the @file{~/.cvsrc} file is simple. The
+@c <en>file is searched for a line that begins with the same
+@c <en>name as the @code{cvs_command} being executed. If a
+@c <en>match is found, then the remainder of the line is split
+@c <en>up (at whitespace characters) into separate options and
+@c <en>added to the command arguments @emph{before} any
+@c <en>options from the command line.
+O formato do arquivo @file{~/.cvsrc} é simples. O
+arquivo é varrido por uma linha que comece com o mesmo
+nome do @code{comando_cvs} sendo executado. Se
+encontra, então o restante da linha é dividido (pelos
+espaços) em opções distintas e adicionadas aos
+argumentos do comando @emph{antes} de quaisquer opções
+da linha de comando.
+
+@c <en>If a command has two names (e.g., @code{checkout} and
+@c <en>@code{co}), the official name, not necessarily the one
+@c <en>used on the command line, will be used to match against
+@c <en>the file. So if this is the contents of the user's
+@c <en>@file{~/.cvsrc} file:
+Se um comando tem dois nomes (e.g., @code{checkout} e
+@code{co}), o nome oficial, que não é necessariamente o
+usado na linha de comando, vai ser usado para fazer a
+busca no arquivo. Logo, se este é o conteúdo do
+arquivo @file{~/.cvsrc} do usuário:
+
+@example
+log -N
+diff -uN
+rdiff -u
+update -Pd
+checkout -P
+release -d
+@end example
+
+@noindent
+@c <en>the command @samp{cvs checkout foo} would have the
+@c <en>@samp{-P} option added to the arguments, as well as
+@c <en>@samp{cvs co foo}.
+o comando @samp{cvs checkout foo} vai ter a opção
+@samp{-P} adicionada a seus argumentos, assim como
+@samp{cvs co foo}.
+
+@c <en>With the example file above, the output from @samp{cvs
+@c <en>diff foobar} will be in unidiff format. @samp{cvs diff
+@c <en>-c foobar} will provide context diffs, as usual.
+@c <en>Getting "old" format diffs would be slightly more
+@c <en>complicated, because @code{diff} doesn't have an option
+@c <en>to specify use of the "old" format, so you would need
+@c <en>@samp{cvs -f diff foobar}.
+Com o arquivo de exemplo acima, a saída de @samp{cvs
+diff foobar} vai ser no formato unidiff. @samp{cvs
+diff -c foobar} vai dar diffs de contexto, que é o normal.
+Obter o diff no formato "velho" vai ser um pouco mais
+complicado, já que o @code{diff} não tem uma opção para
+especificar o uso do formato "velho", logo você vai ter
+que usar @samp{cvs -f diff foobar}.
+
+@c <en>In place of the command name you can use @code{cvs} to
+@c <en>specify global options (@pxref{Global options}). For
+@c <en>example the following line in @file{.cvsrc}
+Ao invés de no nome do comando você pode usar o
+@code{cvs} especificando opções globais (@pxref{Opções globais}). Por
+exemplo a seguinte linha em @file{.cvsrc}
+
+@example
+cvs -z6
+@end example
+
+@noindent
+@c <en>causes @sc{cvs} to use compression level 6.
+faz com que o @sc{cvs} use compressão de nível 6.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Global options
+@node Opções globais
+@c <en>@appendixsec Global options
+@appendixsec Opções globais
+@c <en>@cindex Options, global
+@cindex Options, global
+@c <en>@cindex Global options
+@cindex Opções globais
+@c <en>@cindex Left-hand options
+@cindex Left-hand options
+
+The available @samp{cvs_options} (that are given to the
+left of @samp{cvs_command}) are:
+
+@table @code
+@c <en>@item --allow-root=@var{rootdir}
+@item --allow-root=@var{rootdir}
+@c <en>Specify legal @sc{cvsroot} directory. See
+@c <en>@ref{Password authentication server}.
+Specify legal @sc{cvsroot} directory. See
+@ref{Servidor de autenticação por senha}.
+
+@c <en>@cindex Authentication, stream
+@cindex Authentication, stream
+@c <en>@cindex Stream authentication
+@cindex Stream authentication
+@c <en>@item -a
+@item -a
+@c <en>Authenticate all communication between the client and
+@c <en>the server. Only has an effect on the @sc{cvs} client.
+@c <en>As of this writing, this is only implemented when using
+@c <en>a GSSAPI connection (@pxref{GSSAPI authenticated}).
+@c <en>Authentication prevents certain sorts of attacks
+@c <en>involving hijacking the active @sc{tcp} connection.
+@c <en>Enabling authentication does not enable encryption.
+Authenticate all communication between the client and
+the server. Only has an effect on the @sc{cvs} client.
+As of this writing, this is only implemented when using
+a GSSAPI connection (@pxref{Autenticação GSSAPI}).
+Authentication prevents certain sorts of attacks
+involving hijacking the active @sc{tcp} connection.
+Enabling authentication does not enable encryption.
+
+@cindex RCSBIN, overriding
+@cindex Overriding RCSBIN
+@item -b @var{bindir}
+In @sc{cvs} 1.9.18 and older, this specified that
+@sc{rcs} programs are in the @var{bindir} directory.
+Current versions of @sc{cvs} do not run @sc{rcs}
+programs; for compatibility this option is accepted,
+but it does nothing.
+
+@cindex TMPDIR, overriding
+@cindex Overriding TMPDIR
+@item -T @var{tempdir}
+Use @var{tempdir} as the directory where temporary files are
+located. Overrides the setting of the @code{$TMPDIR} environment
+variable and any precompiled directory. This parameter should be
+specified as an absolute pathname.
+(When running client/server, @samp{-T} affects only the local process;
+specifying @samp{-T} for the client has no effect on the server and
+vice versa.)
+
+@cindex CVSROOT, overriding
+@cindex Overriding CVSROOT
+@item -d @var{cvs_root_directory}
+Use @var{cvs_root_directory} as the root directory
+pathname of the repository. Overrides the setting of
+the @code{$CVSROOT} environment variable. @xref{Repositório}.
+
+@c <en>@cindex EDITOR, overriding
+@cindex EDITOR, overriding
+@c <en>@cindex Overriding EDITOR
+@cindex Overriding EDITOR
+@c <en>@item -e @var{editor}
+@item -e @var{editor}
+@c <en>Use @var{editor} to enter revision log information. Overrides the
+@c <en>setting of the @code{$CVSEDITOR} and @code{$EDITOR}
+@c <en>environment variables. For more information, see
+@c <en>@ref{Committing your changes}.
+Use @var{editor} to enter revision log information. Overrides the
+setting of the @code{$CVSEDITOR} and @code{$EDITOR}
+environment variables. For more information, see
+@ref{Efetivando suas alterações}.
+
+@item -f
+Do not read the @file{~/.cvsrc} file. This
+option is most often used because of the
+non-orthogonality of the @sc{cvs} option set. For
+example, the @samp{cvs log} option @samp{-N} (turn off
+display of tag names) does not have a corresponding
+option to turn the display on. So if you have
+@samp{-N} in the @file{~/.cvsrc} entry for @samp{log},
+you may need to use @samp{-f} to show the tag names.
+
+@item -H
+@itemx --help
+Display usage information about the specified @samp{cvs_command}
+(but do not actually execute the command). If you don't specify
+a command name, @samp{cvs -H} displays overall help for
+@sc{cvs}, including a list of other help options.
+@c It seems to me it is better to document it this way
+@c rather than trying to update this documentation
+@c every time that we add a --help-foo option. But
+@c perhaps that is confusing...
+
+@item -l
+Do not log the @samp{cvs_command} in the command history (but execute it
+anyway). @xref{history}, for information on command history.
+
+@cindex Read-only repository mode
+@item -R
+Turns on read-only repository mode. This allows one to check out from a
+read-only repository, such as within an anoncvs server, or from a CDROM
+repository.
+
+Same effect as if the @code{CVSREADONLYFS} environment
+variable is set. Using @samp{-R} can also considerably
+speed up checkout's over NFS.
+
+@cindex Read-only mode
+@item -n
+Do not change any files. Attempt to execute the
+@samp{cvs_command}, but only to issue reports; do not remove,
+update, or merge any existing files, or create any new files.
+
+Note that @sc{cvs} will not necessarily produce exactly
+the same output as without @samp{-n}. In some cases
+the output will be the same, but in other cases
+@sc{cvs} will skip some of the processing that would
+have been required to produce the exact same output.
+
+@item -Q
+Cause the command to be really quiet; the command will only
+generate output for serious problems.
+
+@item -q
+Cause the command to be somewhat quiet; informational messages,
+such as reports of recursion through subdirectories, are
+suppressed.
+
+@c <en>@cindex Read-only files, and -r
+@cindex Read-only files, and -r
+@c <en>@item -r
+@item -r
+@c <en>Make new working files read-only. Same effect
+@c <en>as if the @code{$CVSREAD} environment variable is set
+@c <en>(@pxref{Environment variables}). The default is to
+@c <en>make working files writable, unless watches are on
+@c <en>(@pxref{Watches}).
+Make new working files read-only. Same effect
+as if the @code{$CVSREAD} environment variable is set
+(@pxref{Variáveis de ambiente}). The default is to
+make working files writable, unless watches are on
+(@pxref{???Watches???}).
+
+@item -s @var{variable}=@var{value}
+Set a user variable (@pxref{Variables}).
+
+@cindex Trace
+@item -t
+Trace program execution; display messages showing the steps of
+@sc{cvs} activity. Particularly useful with @samp{-n} to explore the
+potential impact of an unfamiliar command.
+
+@item -v
+@item --version
+Display version and copyright information for @sc{cvs}.
+
+@cindex CVSREAD, overriding
+@cindex Overriding CVSREAD
+@item -w
+Make new working files read-write. Overrides the
+setting of the @code{$CVSREAD} environment variable.
+Files are created read-write by default, unless @code{$CVSREAD} is
+set or @samp{-r} is given.
+@c Note that -w only overrides -r and CVSREAD; it has
+@c no effect on files which are readonly because of
+@c "cvs watch on". My guess is that is the way it
+@c should be (or should "cvs -w get" on a watched file
+@c be the same as a get and a cvs edit?), but I'm not
+@c completely sure whether to document it this way.
+
+@item -x
+@c <en>@cindex Encryption
+@cindex Encryption
+@c <en>Encrypt all communication between the client and the
+@c <en>server. Only has an effect on the @sc{cvs} client. As
+@c <en>of this writing, this is only implemented when using a
+@c <en>GSSAPI connection (@pxref{GSSAPI authenticated}) or a
+@c <en>Kerberos connection (@pxref{Kerberos authenticated}).
+@c <en>Enabling encryption implies that message traffic is
+@c <en>also authenticated. Encryption support is not
+@c <en>available by default; it must be enabled using a
+@c <en>special configure option, @file{--enable-encryption},
+@c <en>when you build @sc{cvs}.
+Encrypt all communication between the client and the
+server. Only has an effect on the @sc{cvs} client. As
+of this writing, this is only implemented when using a
+GSSAPI connection (@pxref{Autenticação GSSAPI}) or a
+Kerberos connection (@pxref{Autenticação kerberos}).
+Enabling encryption implies that message traffic is
+also authenticated. Encryption support is not
+available by default; it must be enabled using a
+special configure option, @file{--enable-encryption},
+when you build @sc{cvs}.
+
+@item -z @var{gzip-level}
+@cindex Compression
+@cindex Gzip
+Set the compression level.
+Valid levels are 1 (high speed, low compression) to
+9 (low speed, high compression), or 0 to disable
+compression (the default).
+Only has an effect on the @sc{cvs} client.
+
+@end table
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node Common options
+@node Opções comuns
+@c <en>@appendixsec Common command options
+@appendixsec Common command options
+@c <en>@cindex Common options
+@cindex Opções comuns
+@c <en>@cindex Right-hand options
+@cindex Right-hand options
+
+This section describes the @samp{command_options} that
+are available across several @sc{cvs} commands. These
+options are always given to the right of
+@samp{cvs_command}. Not all
+commands support all of these options; each option is
+only supported for commands where it makes sense.
+However, when a command has one of these options you
+can almost always count on the same behavior of the
+option as in other commands. (Other command options,
+which are listed with the individual commands, may have
+different behavior from one @sc{cvs} command to the other).
+
+@strong{Note: the @samp{history} command is an exception; it supports
+many options that conflict even with these standard options.}
+
+@table @code
+@cindex Dates
+@cindex Time
+@cindex Specifying dates
+@item -D @var{date_spec}
+Use the most recent revision no later than @var{date_spec}.
+@var{date_spec} is a single argument, a date description
+specifying a date in the past.
+
+@c <en>The specification is @dfn{sticky} when you use it to make a
+@c <en>private copy of a source file; that is, when you get a working
+@c <en>file using @samp{-D}, @sc{cvs} records the date you specified, so that
+@c <en>further updates in the same directory will use the same date
+@c <en>(for more information on sticky tags/dates, @pxref{Sticky tags}).
+The specification is @dfn{sticky} when you use it to make a
+private copy of a source file; that is, when you get a working
+file using @samp{-D}, @sc{cvs} records the date you specified, so that
+further updates in the same directory will use the same date
+(for more information on sticky tags/dates, @pxref{Etiquetas adesivas}).
+
+@samp{-D} is available with the @code{annotate}, @code{checkout},
+@code{diff}, @code{export}, @code{history},
+@code{rdiff}, @code{rtag}, @code{tag}, and @code{update} commands.
+(The @code{history} command uses this option in a
+slightly different way; @pxref{history options}).
+
+@c What other formats should we accept? I don't want
+@c to start accepting a whole mess of non-standard
+@c new formats (there are a lot which are in wide use in
+@c one context or another), but practicality does
+@c dictate some level of flexibility.
+@c * POSIX.2 (e.g. touch, ls output, date) and other
+@c POSIX and/or de facto unix standards (e.g. at). The
+@c practice here is too inconsistent to be of any use.
+@c * VMS dates. This is not a formal standard, but
+@c there is a published specification (see SYS$ASCTIM
+@c and SYS$BINTIM in the _VMS System Services Reference
+@c Manual_), it is implemented consistently in VMS
+@c utilities, and VMS users will expect CVS running on
+@c VMS to support this format (and if we're going to do
+@c that, better to make CVS support it on all
+@c platforms. Maybe).
+@c
+@c NOTE: The tar manual has some documentation for
+@c getdate.y (just for our info; we don't want to
+@c attempt to document all the formats accepted by
+@c getdate.y).
+@c
+@c One more note: In output, CVS should consistently
+@c use one date format, and that format should be one that
+@c it accepts in input as well. The former isn't
+@c really true (see survey below), and I'm not
+@c sure that either of those formats is accepted in
+@c input.
+@c
+@c cvs log
+@c current 1996/01/02 13:45:31
+@c Internet 02 Jan 1996 13:45:31 UT
+@c ISO 1996-01-02 13:45:31
+@c cvs ann
+@c current 02-Jan-96
+@c Internet-like 02 Jan 96
+@c ISO 96-01-02
+@c cvs status
+@c current Tue Jun 11 02:54:53 1996
+@c Internet [Tue,] 11 Jun 1996 02:54:53
+@c ISO 1996-06-11 02:54:53
+@c note: date possibly should be omitted entirely for
+@c other reasons.
+@c cvs editors
+@c current Tue Jun 11 02:54:53 1996 GMT
+@c cvs history
+@c current 06/11 02:54 +0000
+@c any others?
+@c There is a good chance the proper solution has to
+@c involve at least some level of letting the user
+@c decide which format (with the default being the
+@c formats CVS has always used; changing these might be
+@c _very_ disruptive since scripts may very well be
+@c parsing them).
+@c
+@c Another random bit of prior art concerning dates is
+@c the strptime function which takes templates such as
+@c "%m/%d/%y", and apparent a variant of getdate()
+@c which also honors them. See
+@c X/Open CAE Specification, System Interfaces and
+@c Headers Issue 4, Version 2 (September 1994), in the
+@c entry for getdate() on page 231
+
+@cindex Timezone, in input
+@cindex Zone, time, in input
+A wide variety of date formats are supported by
+@sc{cvs}. The most standard ones are ISO8601 (from the
+International Standards Organization) and the Internet
+e-mail standard (specified in RFC822 as amended by
+RFC1123).
+
+@c Probably should be doing more to spell out just what
+@c the rules are, rather than just giving examples.
+@c But I want to keep this simple too.
+@c So I don't know....
+@c A few specific issues: (1) Maybe should reassure
+@c people that years after 2000
+@c work (they are in the testsuite, so they do indeed
+@c work). (2) What do two digit years
+@c mean? Where do we accept them? (3) Local times can
+@c be ambiguous or nonexistent if they fall during the
+@c hour when daylight savings time goes into or out of
+@c effect. Pretty obscure, so I'm not at all sure we
+@c should be documenting the behavior in that case.
+ISO8601 dates have many variants but a few examples
+are:
+
+@example
+1972-09-24
+1972-09-24 20:05
+@end example
+@c I doubt we really accept all ISO8601 format dates
+@c (for example, decimal hours like 1972-09-24 20,2)
+@c I'm not sure we should, many of them are pretty
+@c bizarre and it has lots of gratuitous multiple ways
+@c to specify the same thing.
+
+There are a lot more ISO8601 date formats, and @sc{cvs}
+accepts many of them, but you probably don't want to
+hear the @emph{whole} long story :-).
+
+@c Citing a URL here is kind of problematic given how
+@c much they change and people who have old versions of
+@c this manual, but in case we want to reinstate an
+@c ISO8601 URL, a few are:
+@c http://www.saqqara.demon.co.uk/datefmt.htm
+@c http://www.cl.cam.ac.uk/~mgk25/iso-time.html
+@c Citing some other ISO8601 source is probably even
+@c worse :-).
+
+In addition to the dates allowed in Internet e-mail
+itself, @sc{cvs} also allows some of the fields to be
+omitted. For example:
+@c FIXME: Need to figure out better, and document,
+@c what we want to allow the user to omit.
+@c NOTE: "omit" does not imply "reorder".
+@c FIXME: Need to cite a web page describing how to get
+@c RFC's.
+
+@example
+24 Sep 1972 20:05
+24 Sep
+@end example
+
+The date is interpreted as being in the
+local timezone, unless a specific timezone is
+specified.
+
+These two date formats are preferred. However,
+@sc{cvs} currently accepts a wide variety of other date
+formats. They are intentionally not documented here in
+any detail, and future versions of @sc{cvs} might not
+accept all of them.
+@c We should document and testsuite "now" and
+@c "yesterday". "now" is mentioned in the FAQ and
+@c "yesterday" is mentioned in this document (and the
+@c message from "cvs import" suggesting a merge
+@c command). What else? Probably some/all of the "3
+@c weeks ago" family.
+@c
+@c Maybe at
+@c some point have CVS start give warnings on "unofficial"
+@c formats (many of which might be typos or user
+@c misunderstandings, and/or formats people never/rarely
+@c use to specify dates)?
+
+One such format is
+@code{@var{month}/@var{day}/@var{year}}. This may
+confuse people who are accustomed to having the month
+and day in the other order; @samp{1/4/96} is January 4,
+not April 1.
+
+Remember to quote the argument to the @samp{-D}
+flag so that your shell doesn't interpret spaces as
+argument separators. A command using the @samp{-D}
+flag can look like this:
+
+@example
+$ cvs diff -D "1 hour ago" cvs.texinfo
+@end example
+
+@cindex Forcing a tag match
+@item -f
+When you specify a particular date or tag to @sc{cvs} commands, they
+normally ignore files that do not contain the tag (or did not
+exist prior to the date) that you specified. Use the @samp{-f} option
+if you want files retrieved even when there is no match for the
+tag or date. (The most recent revision of the file
+will be used).
+
+Note that even with @samp{-f}, a tag that you specify
+must exist (that is, in some file, not necessary in
+every file). This is so that @sc{cvs} will continue to
+give an error if you mistype a tag name.
+
+@need 800
+@samp{-f} is available with these commands:
+@code{annotate}, @code{checkout}, @code{export},
+@code{rdiff}, @code{rtag}, and @code{update}.
+
+@c <en>@strong{WARNING: The @code{commit} and @code{remove}
+@c <en>commands also have a
+@c <en>@samp{-f} option, but it has a different behavior for
+@c <en>those commands. See @ref{commit options}, and
+@c <en>@ref{Removing files}.}
+@strong{WARNING: The @code{commit} and @code{remove}
+commands also have a
+@samp{-f} option, but it has a different behavior for
+those commands. See @ref{commit options}, and
+@ref{Removendo arquivos}.}
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Override the default processing of RCS keywords other than
+@c <en>@samp{-kb}. @xref{Keyword substitution}, for the meaning of
+@c <en>@var{kflag}. Used with the @code{checkout} and @code{update}
+@c <en>commands, your @var{kflag} specification is
+@c <en>@dfn{sticky}; that is, when you use this option
+@c <en>with a @code{checkout} or @code{update} command,
+@c <en>@sc{cvs} associates your selected @var{kflag} with any files
+@c <en>it operates on, and continues to use that @var{kflag} with future
+@c <en>commands on the same files until you specify otherwise.
+Override the default processing of RCS keywords other than
+@samp{-kb}. @xref{Substituição de palavra-chave}, for the meaning of
+@var{kflag}. Used with the @code{checkout} and @code{update}
+commands, your @var{kflag} specification is
+@dfn{sticky}; that is, when you use this option
+with a @code{checkout} or @code{update} command,
+@sc{cvs} associates your selected @var{kflag} with any files
+it operates on, and continues to use that @var{kflag} with future
+commands on the same files until you specify otherwise.
+
+@c <en>The @samp{-k} option is available with the @code{add},
+@c <en>@code{checkout}, @code{diff}, @code{export}, @code{import} and
+@c <en>@code{update} commands.
+The @samp{-k} option is available with the @code{add},
+@code{checkout}, @code{diff}, @code{export}, @code{import} and
+@code{update} commands.
+
+@c <en>@strong{WARNING: Prior to CVS version 1.12.2, the @samp{-k} flag
+@c <en>overrode the @samp{-kb} indication for a binary file. This could
+@c <en>sometimes corrupt binary files. @xref{Merging and keywords}, for
+@c <en>more.}
+@strong{WARNING: Prior to CVS version 1.12.2, the @samp{-k} flag
+overrode the @samp{-kb} indication for a binary file. This could
+sometimes corrupt binary files. @xref{Mesclagem e palavras-chave}, for
+more.}
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory, rather than
+@c <en>recursing through subdirectories.
+Local; run only in current working directory, rather than
+recursing through subdirectories.
+
+@c <en>Available with the following commands: @code{annotate}, @code{checkout},
+@c <en>@code{commit}, @code{diff}, @code{edit}, @code{editors}, @code{export},
+@c <en>@code{log}, @code{rdiff}, @code{remove}, @code{rtag},
+@c <en>@code{status}, @code{tag}, @code{unedit}, @code{update}, @code{watch},
+@c <en>and @code{watchers}.
+Available with the following commands: @code{annotate}, @code{checkout},
+@code{commit}, @code{diff}, @code{edit}, @code{editors}, @code{export},
+@code{log}, @code{rdiff}, @code{remove}, @code{rtag},
+@code{status}, @code{tag}, @code{unedit}, @code{update}, @code{watch},
+and @code{watchers}.
+
+@c <en>@cindex Editor, avoiding invocation of
+@cindex Editor, avoiding invocation of
+@c <en>@cindex Avoiding editor invocation
+@cindex Avoiding editor invocation
+@c <en>@item -m @var{message}
+@item -m @var{message}
+@c <en>Use @var{message} as log information, instead of
+@c <en>invoking an editor.
+Use @var{message} as log information, instead of
+invoking an editor.
+
+@c <en>Available with the following commands: @code{add},
+@c <en>@code{commit} and @code{import}.
+Available with the following commands: @code{add},
+@code{commit} and @code{import}.
+
+@c <en>@item -n
+@item -n
+@c <en>Do not run any tag program. (A program can be
+@c <en>specified to run in the modules
+@c <en>database (@pxref{modules}); this option bypasses it).
+Do not run any tag program. (A program can be
+specified to run in the modules
+database (@pxref{modules}); this option bypasses it).
+
+@c <en>@strong{Note: this is not the same as the @samp{cvs -n}
+@c <en>program option, which you can specify to the left of a cvs command!}
+@strong{Note: this is not the same as the @samp{cvs -n}
+program option, which you can specify to the left of a cvs command!}
+
+Available with the @code{checkout}, @code{commit}, @code{export},
+and @code{rtag} commands.
+
+@item -P
+@c <en>Prune empty directories. See @ref{Removing directories}.
+Prune empty directories. See @ref{Removendo diretórios}.
+
+@item -p
+Pipe the files retrieved from the repository to standard output,
+rather than writing them in the current directory. Available
+with the @code{checkout} and @code{update} commands.
+
+@item -R
+Process directories recursively. This is on by default.
+
+Available with the following commands: @code{annotate}, @code{checkout},
+@code{commit}, @code{diff}, @code{edit}, @code{editors}, @code{export},
+@code{rdiff}, @code{remove}, @code{rtag},
+@code{status}, @code{tag}, @code{unedit}, @code{update}, @code{watch},
+and @code{watchers}.
+
+@item -r @var{tag}
+@cindex HEAD, special tag
+@cindex BASE, special tag
+Use the revision specified by the @var{tag} argument instead of the
+default @dfn{head} revision. As well as arbitrary tags defined
+with the @code{tag} or @code{rtag} command, two special tags are
+always available: @samp{HEAD} refers to the most recent version
+available in the repository, and @samp{BASE} refers to the
+revision you last checked out into the current working directory.
+
+@c FIXME: What does HEAD really mean? I believe that
+@c the current answer is the head of the default branch
+@c for all cvs commands except diff. For diff, it
+@c seems to be (a) the head of the trunk (or the default
+@c branch?) if there is no sticky tag, (b) the head of the
+@c branch for the sticky tag, if there is a sticky tag.
+@c (b) is ugly as it differs
+@c from what HEAD means for other commands, but people
+@c and/or scripts are quite possibly used to it.
+@c See "head" tests in sanity.sh.
+@c Probably the best fix is to introduce two new
+@c special tags, ".thead" for the head of the trunk,
+@c and ".bhead" for the head of the current branch.
+@c Then deprecate HEAD. This has the advantage of
+@c not surprising people with a change to HEAD, and a
+@c side benefit of also phasing out the poorly-named
+@c HEAD (see discussion of reserved tag names in node
+@c "Tags"). Of course, .thead and .bhead should be
+@c carefully implemented (with the implementation the
+@c same for "diff" as for everyone else), test cases
+@c written (similar to the ones in "head"), new tests
+@c cases written for things like default branches, &c.
+
+@c <en>The tag specification is sticky when you use this
+@c <en>@c option
+@c <en>with @code{checkout} or @code{update} to make your own
+@c <en>copy of a file: @sc{cvs} remembers the tag and continues to use it on
+@c <en>future update commands, until you specify otherwise (for more information
+@c <en>on sticky tags/dates, @pxref{Sticky tags}).
+The tag specification is sticky when you use this
+@c option
+with @code{checkout} or @code{update} to make your own
+copy of a file: @sc{cvs} remembers the tag and continues to use it on
+future update commands, until you specify otherwise (for more information
+on sticky tags/dates, @pxref{Etiquetas adesivas}).
+
+@c <en>The tag can be either a symbolic or numeric tag, as
+@c <en>described in @ref{Tags}, or the name of a branch, as
+@c <en>described in @ref{Branching and merging}.
+The tag can be either a symbolic or numeric tag, as
+described in @ref{Etiquetas}, or the name of a branch, as
+described in @ref{Ramificando e mesclando}.
+
+Specifying the @samp{-q} global option along with the
+@samp{-r} command option is often useful, to suppress
+the warning messages when the @sc{rcs} file
+does not contain the specified tag.
+
+@strong{Note: this is not the same as the overall @samp{cvs -r} option,
+which you can specify to the left of a @sc{cvs} command!}
+
+@samp{-r} is available with the @code{annotate}, @code{checkout},
+@code{commit}, @code{diff}, @code{history}, @code{export}, @code{rdiff},
+@code{rtag}, and @code{update} commands.
+
+@item -W
+Specify file names that should be filtered. You can
+use this option repeatedly. The spec can be a file
+name pattern of the same type that you can specify in
+the @file{.cvswrappers} file.
+Available with the following commands: @code{import},
+and @code{update}.
+
+@end table
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node admin
+@appendixsec admin---Administration
+@cindex Admin (subcommand)
+
+@itemize @bullet
+@item
+Requires: repository, working directory.
+@item
+Changes: repository.
+@item
+Synonym: rcs
+@end itemize
+
+This is the @sc{cvs} interface to assorted
+administrative facilities. Some of them have
+questionable usefulness for @sc{cvs} but exist for
+historical purposes. Some of the questionable options
+are likely to disappear in the future. This command
+@emph{does} work recursively, so extreme care should be
+used.
+
+@cindex cvsadmin
+@cindex UserAdminOptions, in CVSROOT/config
+On unix, if there is a group named @code{cvsadmin},
+only members of that group can run @code{cvs admin}
+commands, except for those specified using the
+@code{UserAdminOptions} configuration option in the
+@file{CVSROOT/config} file. Options specified using
+@code{UserAdminOptions} can be run by any user. See
+@ref{config} for more on @code{UserAdminOptions}.
+
+The @code{cvsadmin} group should exist on the server,
+or any system running the non-client/server @sc{cvs}.
+To disallow @code{cvs admin} for all users, create a
+group with no users in it. On NT, the @code{cvsadmin}
+feature does not exist and all users
+can run @code{cvs admin}.
+
+@menu
+* admin options:: admin options
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node admin options
+@appendixsubsec admin options
+
+Some of these options have questionable usefulness for
+@sc{cvs} but exist for historical purposes. Some even
+make it impossible to use @sc{cvs} until you undo the
+effect!
+
+@table @code
+@item -A@var{oldfile}
+Might not work together with @sc{cvs}. Append the
+access list of @var{oldfile} to the access list of the
+@sc{rcs} file.
+
+@item -a@var{logins}
+Might not work together with @sc{cvs}. Append the
+login names appearing in the comma-separated list
+@var{logins} to the access list of the @sc{rcs} file.
+
+@c <en>@item -b[@var{rev}]
+@item -b[@var{rev}]
+@c <en>Set the default branch to @var{rev}. In @sc{cvs}, you
+@c <en>normally do not manipulate default branches; sticky
+@c <en>tags (@pxref{Sticky tags}) are a better way to decide
+@c <en>which branch you want to work on. There is one reason
+@c <en>to run @code{cvs admin -b}: to revert to the vendor's
+@c <en>version when using vendor branches (@pxref{Reverting
+@c <en>local changes}).
+@c <en>There can be no space between @samp{-b} and its argument.
+Set the default branch to @var{rev}. In @sc{cvs}, you
+normally do not manipulate default branches; sticky
+tags (@pxref{Etiquetas adesivas}) are a better way to decide
+which branch you want to work on. There is one reason
+to run @code{cvs admin -b}: to revert to the vendor's
+version when using vendor branches (@pxref{Reverting
+local changes}).
+There can be no space between @samp{-b} and its argument.
+@c Hmm, we don't document the usage where rev is
+@c omitted. Maybe that usage can/should be deprecated
+@c (and replaced with -bHEAD or something?) (so we can toss
+@c the optional argument). Note that -bHEAD does not
+@c work, as of 17 Sep 1997, but probably will once "cvs
+@c admin" is internal to CVS.
+
+@c <en>@cindex Comment leader
+@cindex Comment leader
+@c <en>@item -c@var{string}
+@item -c@var{string}
+@c <en>Sets the comment leader to @var{string}. The comment
+@c <en>leader is not used by current versions of @sc{cvs} or
+@c <en>@sc{rcs} 5.7. Therefore, you can almost surely not
+@c <en>worry about it. @xref{Keyword substitution}.
+Sets the comment leader to @var{string}. The comment
+leader is not used by current versions of @sc{cvs} or
+@sc{rcs} 5.7. Therefore, you can almost surely not
+worry about it. @xref{Substituição de palavra-chave}.
+
+@item -e[@var{logins}]
+Might not work together with @sc{cvs}. Erase the login
+names appearing in the comma-separated list
+@var{logins} from the access list of the RCS file. If
+@var{logins} is omitted, erase the entire access list.
+There can be no space between @samp{-e} and its argument.
+
+@item -I
+Run interactively, even if the standard input is not a
+terminal. This option does not work with the
+client/server @sc{cvs} and is likely to disappear in
+a future release of @sc{cvs}.
+
+@item -i
+@c <en>Useless with @sc{cvs}. This creates and initializes a
+@c <en>new @sc{rcs} file, without depositing a revision. With
+@c <en>@sc{cvs}, add files with the @code{cvs add} command
+@c <en>(@pxref{Adding files}).
+Useless with @sc{cvs}. This creates and initializes a
+new @sc{rcs} file, without depositing a revision. With
+@sc{cvs}, add files with the @code{cvs add} command
+(@pxref{Adicionando arquivos}).
+
+@c <en>@item -k@var{subst}
+@item -k@var{subst}
+@c <en>Set the default keyword
+@c <en>substitution to @var{subst}. @xref{Keyword
+@c <en>substitution}. Giving an explicit @samp{-k} option to
+@c <en>@code{cvs update}, @code{cvs export}, or @code{cvs
+@c <en>checkout} overrides this default.
+Set the default keyword
+substitution to @var{subst}.
+@xref{Substituição de palavra-chave}. Giving an explicit @samp{-k} option to
+@code{cvs update}, @code{cvs export}, or @code{cvs
+checkout} overrides this default.
+
+@item -l[@var{rev}]
+Lock the revision with number @var{rev}. If a branch
+is given, lock the latest revision on that branch. If
+@var{rev} is omitted, lock the latest revision on the
+default branch. There can be no space between
+@samp{-l} and its argument.
+
+This can be used in conjunction with the
+@file{rcslock.pl} script in the @file{contrib}
+directory of the @sc{cvs} source distribution to
+provide reserved checkouts (where only one user can be
+editing a given file at a time). See the comments in
+that file for details (and see the @file{README} file
+in that directory for disclaimers about the unsupported
+nature of contrib). According to comments in that
+file, locking must set to strict (which is the default).
+
+@item -L
+Set locking to strict. Strict locking means that the
+owner of an RCS file is not exempt from locking for
+checkin. For use with @sc{cvs}, strict locking must be
+set; see the discussion under the @samp{-l} option above.
+
+@cindex Changing a log message
+@cindex Replacing a log message
+@cindex Correcting a log message
+@cindex Fixing a log message
+@cindex Log message, correcting
+@item -m@var{rev}:@var{msg}
+Replace the log message of revision @var{rev} with
+@var{msg}.
+
+@c The rcs -M option, to suppress sending mail, has never been
+@c documented as a cvs admin option.
+
+@c <en>@item -N@var{name}[:[@var{rev}]]
+@item -N@var{name}[:[@var{rev}]]
+@c <en>Act like @samp{-n}, except override any previous
+@c <en>assignment of @var{name}. For use with magic branches,
+@c <en>see @ref{Magic branch numbers}.
+Act like @samp{-n}, except override any previous
+assignment of @var{name}. For use with magic branches,
+see @ref{Números de ramos mágicos}.
+
+@item -n@var{name}[:[@var{rev}]]
+Associate the symbolic name @var{name} with the branch
+or revision @var{rev}. It is normally better to use
+@samp{cvs tag} or @samp{cvs rtag} instead. Delete the
+symbolic name if both @samp{:} and @var{rev} are
+omitted; otherwise, print an error message if
+@var{name} is already associated with another number.
+If @var{rev} is symbolic, it is expanded before
+association. A @var{rev} consisting of a branch number
+followed by a @samp{.} stands for the current latest
+revision in the branch. A @samp{:} with an empty
+@var{rev} stands for the current latest revision on the
+default branch, normally the trunk. For example,
+@samp{cvs admin -n@var{name}:} associates @var{name} with the
+current latest revision of all the RCS files;
+this contrasts with @samp{cvs admin -n@var{name}:$} which
+associates @var{name} with the revision numbers
+extracted from keyword strings in the corresponding
+working files.
+
+@cindex Deleting revisions
+@cindex Outdating revisions
+@cindex Saving space
+@item -o@var{range}
+Deletes (@dfn{outdates}) the revisions given by
+@var{range}.
+
+Note that this command can be quite dangerous unless
+you know @emph{exactly} what you are doing (for example
+see the warnings below about how the
+@var{rev1}:@var{rev2} syntax is confusing).
+
+If you are short on disc this option might help you.
+But think twice before using it---there is no way short
+of restoring the latest backup to undo this command!
+If you delete different revisions than you planned,
+either due to carelessness or (heaven forbid) a @sc{cvs}
+bug, there is no opportunity to correct the error
+before the revisions are deleted. It probably would be
+a good idea to experiment on a copy of the repository
+first.
+
+Specify @var{range} in one of the following ways:
+
+@table @code
+@item @var{rev1}::@var{rev2}
+Collapse all revisions between rev1 and rev2, so that
+@sc{cvs} only stores the differences associated with going
+from rev1 to rev2, not intermediate steps. For
+example, after @samp{-o 1.3::1.5} one can retrieve
+revision 1.3, revision 1.5, or the differences to get
+from 1.3 to 1.5, but not the revision 1.4, or the
+differences between 1.3 and 1.4. Other examples:
+@samp{-o 1.3::1.4} and @samp{-o 1.3::1.3} have no
+effect, because there are no intermediate revisions to
+remove.
+
+@item ::@var{rev}
+Collapse revisions between the beginning of the branch
+containing @var{rev} and @var{rev} itself. The
+branchpoint and @var{rev} are left intact. For
+example, @samp{-o ::1.3.2.6} deletes revision 1.3.2.1,
+revision 1.3.2.5, and everything in between, but leaves
+1.3 and 1.3.2.6 intact.
+
+@item @var{rev}::
+Collapse revisions between @var{rev} and the end of the
+branch containing @var{rev}. Revision @var{rev} is
+left intact but the head revision is deleted.
+
+@item @var{rev}
+Delete the revision @var{rev}. For example, @samp{-o
+1.3} is equivalent to @samp{-o 1.2::1.4}.
+
+@c <en>@item @var{rev1}:@var{rev2}
+@item @var{rev1}:@var{rev2}
+@c <en>Delete the revisions from @var{rev1} to @var{rev2},
+@c <en>inclusive, on the same branch. One will not be able to
+@c <en>retrieve @var{rev1} or @var{rev2} or any of the
+@c <en>revisions in between. For example, the command
+@c <en>@samp{cvs admin -oR_1_01:R_1_02 .} is rarely useful.
+@c <en>It means to delete revisions up to, and including, the
+@c <en>tag R_1_02. But beware! If there are files that have not
+@c <en>changed between R_1_02 and R_1_03 the file will have
+@c <en>@emph{the same} numerical revision number assigned to
+@c <en>the tags R_1_02 and R_1_03. So not only will it be
+@c <en>impossible to retrieve R_1_02; R_1_03 will also have to
+@c <en>be restored from the tapes! In most cases you want to
+@c <en>specify @var{rev1}::@var{rev2} instead.
+Delete the revisions from @var{rev1} to @var{rev2},
+inclusive, on the same branch. One will not be able to
+retrieve @var{rev1} or @var{rev2} or any of the
+revisions in between. For example, the command
+@samp{cvs admin -oR_1_01:R_1_02 .} is rarely useful.
+It means to delete revisions up to, and including, the
+tag R_1_02. But beware! If there are files that have not
+changed between R_1_02 and R_1_03 the file will have
+@emph{the same} numerical revision number assigned to
+the tags R_1_02 and R_1_03. So not only will it be
+impossible to retrieve R_1_02; R_1_03 will also have to
+be restored from the tapes! In most cases you want to
+specify @var{rev1}::@var{rev2} instead.
+
+@c <en>@item :@var{rev}
+@item :@var{rev}
+@c <en>Delete revisions from the beginning of the
+@c <en>branch containing @var{rev} up to and including
+@c <en>@var{rev}.
+Delete revisions from the beginning of the
+branch containing @var{rev} up to and including
+@var{rev}.
+
+@c <en>@item @var{rev}:
+@item @var{rev}:
+@c <en>Delete revisions from revision @var{rev}, including
+@c <en>@var{rev} itself, to the end of the branch containing
+@c <en>@var{rev}.
+Delete revisions from revision @var{rev}, including
+@var{rev} itself, to the end of the branch containing
+@var{rev}.
+@end table
+
+@c <en>None of the revisions to be deleted may have
+@c <en>branches or locks.
+None of the revisions to be deleted may have
+branches or locks.
+
+@c <en>If any of the revisions to be deleted have symbolic
+@c <en>names, and one specifies one of the @samp{::} syntaxes,
+@c <en>then @sc{cvs} will give an error and not delete any
+@c <en>revisions. If you really want to delete both the
+@c <en>symbolic names and the revisions, first delete the
+@c <en>symbolic names with @code{cvs tag -d}, then run
+@c <en>@code{cvs admin -o}. If one specifies the
+@c <en>non-@samp{::} syntaxes, then @sc{cvs} will delete the
+@c <en>revisions but leave the symbolic names pointing to
+@c <en>nonexistent revisions. This behavior is preserved for
+@c <en>compatibility with previous versions of @sc{cvs}, but
+@c <en>because it isn't very useful, in the future it may
+@c <en>change to be like the @samp{::} case.
+If any of the revisions to be deleted have symbolic
+names, and one specifies one of the @samp{::} syntaxes,
+then @sc{cvs} will give an error and not delete any
+revisions. If you really want to delete both the
+symbolic names and the revisions, first delete the
+symbolic names with @code{cvs tag -d}, then run
+@code{cvs admin -o}. If one specifies the
+non-@samp{::} syntaxes, then @sc{cvs} will delete the
+revisions but leave the symbolic names pointing to
+nonexistent revisions. This behavior is preserved for
+compatibility with previous versions of @sc{cvs}, but
+because it isn't very useful, in the future it may
+change to be like the @samp{::} case.
+
+@c <en>Due to the way @sc{cvs} handles branches @var{rev}
+@c <en>cannot be specified symbolically if it is a branch.
+@c <en>@xref{Magic branch numbers}, for an explanation.
+Due to the way @sc{cvs} handles branches @var{rev}
+cannot be specified symbolically if it is a branch.
+@xref{Números de ramos mágicos}, for an explanation.
+@c FIXME: is this still true? I suspect not.
+
+@c <en>Make sure that no-one has checked out a copy of the
+@c <en>revision you outdate. Strange things will happen if he
+@c <en>starts to edit it and tries to check it back in. For
+@c <en>this reason, this option is not a good way to take back
+@c <en>a bogus commit; commit a new revision undoing the bogus
+@c <en>change instead (@pxref{Merging two revisions}).
+Make sure that no-one has checked out a copy of the
+revision you outdate. Strange things will happen if he
+starts to edit it and tries to check it back in. For
+this reason, this option is not a good way to take back
+a bogus commit; commit a new revision undoing the bogus
+change instead (@pxref{Mesclando duas revisões}).
+
+@item -q
+@c <en>Run quietly; do not print diagnostics.
+Run quietly; do not print diagnostics.
+
+@c <en>@item -s@var{state}[:@var{rev}]
+@item -s@var{state}[:@var{rev}]
+@c <en>Useful with @sc{cvs}. Set the state attribute of the
+@c <en>revision @var{rev} to @var{state}. If @var{rev} is a
+@c <en>branch number, assume the latest revision on that
+@c <en>branch. If @var{rev} is omitted, assume the latest
+@c <en>revision on the default branch. Any identifier is
+@c <en>acceptable for @var{state}. A useful set of states is
+@c <en>@samp{Exp} (for experimental), @samp{Stab} (for
+@c <en>stable), and @samp{Rel} (for released). By default,
+@c <en>the state of a new revision is set to @samp{Exp} when
+@c <en>it is created. The state is visible in the output from
+@c <en>@var{cvs log} (@pxref{log}), and in the
+@c <en>@samp{$@splitrcskeyword{}Log$} and @samp{$@splitrcskeyword{}State$} keywords
+@c <en>(@pxref{Keyword substitution}). Note that @sc{cvs}
+@c <en>uses the @code{dead} state for its own purposes; to
+@c <en>take a file to or from the @code{dead} state use
+@c <en>commands like @code{cvs remove} and @code{cvs add}, not
+@c <en>@code{cvs admin -s}.
+Useful with @sc{cvs}. Set the state attribute of the
+revision @var{rev} to @var{state}. If @var{rev} is a
+branch number, assume the latest revision on that
+branch. If @var{rev} is omitted, assume the latest
+revision on the default branch. Any identifier is
+acceptable for @var{state}. A useful set of states is
+@samp{Exp} (for experimental), @samp{Stab} (for
+stable), and @samp{Rel} (for released). By default,
+the state of a new revision is set to @samp{Exp} when
+it is created. The state is visible in the output from
+@var{cvs log} (@pxref{log}), and in the
+@samp{$@splitrcskeyword{}Log$} and @samp{$@splitrcskeyword{}State$} keywords
+(@pxref{Substituição de palavra-chave}). Note that @sc{cvs}
+uses the @code{dead} state for its own purposes; to
+take a file to or from the @code{dead} state use
+commands like @code{cvs remove} and @code{cvs add}, not
+@code{cvs admin -s}.
+
+@item -t[@var{file}]
+Useful with @sc{cvs}. Write descriptive text from the
+contents of the named @var{file} into the RCS file,
+deleting the existing text. The @var{file} pathname
+may not begin with @samp{-}. The descriptive text can be seen in the
+output from @samp{cvs log} (@pxref{log}).
+There can be no space between @samp{-t} and its argument.
+
+If @var{file} is omitted,
+obtain the text from standard input, terminated by
+end-of-file or by a line containing @samp{.} by itself.
+Prompt for the text if interaction is possible; see
+@samp{-I}.
+
+@item -t-@var{string}
+Similar to @samp{-t@var{file}}. Write descriptive text
+from the @var{string} into the @sc{rcs} file, deleting
+the existing text.
+There can be no space between @samp{-t} and its argument.
+
+@c The rcs -T option, do not update last-mod time for
+@c minor changes, has never been documented as a
+@c cvs admin option.
+
+@item -U
+Set locking to non-strict. Non-strict locking means
+that the owner of a file need not lock a revision for
+checkin. For use with @sc{cvs}, strict locking must be
+set; see the discussion under the @samp{-l} option
+above.
+
+@c <en>@item -u[@var{rev}]
+@item -u[@var{rev}]
+@c <en>See the option @samp{-l} above, for a discussion of
+@c <en>using this option with @sc{cvs}. Unlock the revision
+@c <en>with number @var{rev}. If a branch is given, unlock
+@c <en>the latest revision on that branch. If @var{rev} is
+@c <en>omitted, remove the latest lock held by the caller.
+@c <en>Normally, only the locker of a revision may unlock it;
+@c <en>somebody else unlocking a revision breaks the lock.
+@c <en>This causes the original locker to be sent a @code{commit}
+@c <en>notification (@pxref{Getting Notified}).
+@c <en>There can be no space between @samp{-u} and its argument.
+See the option @samp{-l} above, for a discussion of
+using this option with @sc{cvs}. Unlock the revision
+with number @var{rev}. If a branch is given, unlock
+the latest revision on that branch. If @var{rev} is
+omitted, remove the latest lock held by the caller.
+Normally, only the locker of a revision may unlock it;
+somebody else unlocking a revision breaks the lock.
+This causes the original locker to be sent a @code{commit}
+notification (@pxref{Recebendo Notificações}).
+There can be no space between @samp{-u} and its argument.
+
+@item -V@var{n}
+In previous versions of @sc{cvs}, this option meant to
+write an @sc{rcs} file which would be acceptable to
+@sc{rcs} version @var{n}, but it is now obsolete and
+specifying it will produce an error.
+@c Note that -V without an argument has never been
+@c documented as a cvs admin option.
+
+@item -x@var{suffixes}
+In previous versions of @sc{cvs}, this was documented
+as a way of specifying the names of the @sc{rcs}
+files. However, @sc{cvs} has always required that the
+@sc{rcs} files used by @sc{cvs} end in @samp{,v}, so
+this option has never done anything useful.
+
+@c The rcs -z option, to specify the timezone, has
+@c never been documented as a cvs admin option.
+@end table
+
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node checkout
+@appendixsec checkout---Check out sources for editing
+@cindex checkout (subcommand)
+@cindex co (subcommand)
+
+@itemize @bullet
+@item
+Synopsis: checkout [options] modules@dots{}
+@item
+Requires: repository.
+@item
+Changes: working directory.
+@item
+Synonyms: co, get
+@end itemize
+
+Create or update a working directory containing copies of the
+source files specified by @var{modules}. You must execute
+@code{checkout} before using most of the other @sc{cvs}
+commands, since most of them operate on your working
+directory.
+
+The @var{modules} are either
+symbolic names for some
+collection of source directories and files, or paths to
+directories or files in the repository. The symbolic
+names are defined in the @samp{modules} file.
+@xref{modules}.
+@c Needs an example, particularly of the non-"modules"
+@c case but probably of both.
+
+@c FIXME: this seems like a very odd place to introduce
+@c people to how CVS works. The bit about unreserved
+@c checkouts is also misleading as it depends on how
+@c things are set up.
+Depending on the modules you specify, @code{checkout} may
+recursively create directories and populate them with
+the appropriate source files. You can then edit these
+source files at any time (regardless of whether other
+software developers are editing their own copies of the
+sources); update them to include new changes applied by
+others to the source repository; or commit your work as
+a permanent change to the source repository.
+
+Note that @code{checkout} is used to create
+directories. The top-level directory created is always
+added to the directory where @code{checkout} is
+invoked, and usually has the same name as the specified
+module. In the case of a module alias, the created
+sub-directory may have a different name, but you can be
+sure that it will be a sub-directory, and that
+@code{checkout} will show the relative path leading to
+each file as it is extracted into your private work
+area (unless you specify the @samp{-Q} global option).
+
+@c <en>The files created by @code{checkout} are created
+@c <en>read-write, unless the @samp{-r} option to @sc{cvs}
+@c <en>(@pxref{Global options}) is specified, the
+@c <en>@code{CVSREAD} environment variable is specified
+@c <en>(@pxref{Environment variables}), or a watch is in
+@c <en>effect for that file (@pxref{Watches}).
+The files created by @code{checkout} are created
+read-write, unless the @samp{-r} option to @sc{cvs}
+(@pxref{Opções globais}) is specified, the
+@code{CVSREAD} environment variable is specified
+(@pxref{Variáveis de ambiente}), or a watch is in
+effect for that file (@pxref{???Watches???}).
+
+Note that running @code{checkout} on a directory that was already
+built by a prior @code{checkout} is also permitted.
+This is similar to specifying the @samp{-d} option
+to the @code{update} command in the sense that new
+directories that have been created in the repository
+will appear in your work area.
+However, @code{checkout} takes a module name whereas
+@code{update} takes a directory name. Also
+to use @code{checkout} this way it must be run from the
+top level directory (where you originally ran
+@code{checkout} from), so before you run
+@code{checkout} to update an existing directory, don't
+forget to change your directory to the top level
+directory.
+
+For the output produced by the @code{checkout} command
+see @ref{update output}.
+
+@menu
+* checkout options:: checkout options
+* checkout examples:: checkout examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node checkout options
+@appendixsubsec checkout options
+
+@c <en>These standard options are supported by @code{checkout}
+@c <en>(@pxref{Common options}, for a complete description of
+@c <en>them):
+These standard options are supported by @code{checkout}
+(@pxref{Opções comuns}, for a complete description of
+them):
+
+@table @code
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Use the most recent revision no later than @var{date}.
+@c <en>This option is sticky, and implies @samp{-P}. See
+@c <en>@ref{Sticky tags}, for more information on sticky tags/dates.
+@c <en>Use the most recent revision no later than @var{date}.
+@c <en>This option is sticky, and implies @samp{-P}. See
+@c <en>@ref{Sticky tags}, for more information on sticky tags/dates.
+Use the most recent revision no later than @var{date}.
+This option is sticky, and implies @samp{-P}. See
+@ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+Use the most recent revision no later than @var{date}.
+This option is sticky, and implies @samp{-P}. See
+@ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+
+@item -f
+Only useful with the @samp{-D @var{date}} or @samp{-r
+@var{tag}} flags. If no matching revision is found,
+retrieve the most recent revision (instead of ignoring
+the file).
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Process keywords according to @var{kflag}. See
+@c <en>@ref{Keyword substitution}.
+@c <en>This option is sticky; future updates of
+@c <en>this file in this working directory will use the same
+@c <en>@var{kflag}. The @code{status} command can be viewed
+@c <en>to see the sticky options. See @ref{Invoking CVS}, for
+@c <en>more information on the @code{status} command.
+Process keywords according to @var{kflag}. See
+@ref{Substituição de palavra-chave}.
+This option is sticky; future updates of
+this file in this working directory will use the same
+@var{kflag}. The @code{status} command can be viewed
+to see the sticky options. See @ref{Chamando o CVS}, for
+more information on the @code{status} command.
+
+@item -l
+Local; run only in current working directory.
+
+@item -n
+Do not run any checkout program (as specified
+with the @samp{-o} option in the modules file;
+@pxref{modules}).
+
+@item -P
+@c <en>Prune empty directories. See @ref{Moving directories}.
+Prune empty directories. See @ref{Movendo diretórios}.
+
+@item -p
+Pipe files to the standard output.
+
+@item -R
+Checkout directories recursively. This option is on by default.
+
+@c <en>@item -r @var{tag}
+@item -r @var{tag}
+@c <en>Use revision @var{tag}. This option is sticky, and implies @samp{-P}.
+@c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
+Use revision @var{tag}. This option is sticky, and implies @samp{-P}.
+See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+@end table
+
+In addition to those, you can use these special command
+options with @code{checkout}:
+
+@table @code
+@c <en>@item -A
+@item -A
+@c <en>Reset any sticky tags, dates, or @samp{-k} options.
+@c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
+Reset any sticky tags, dates, or @samp{-k} options.
+See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+
+@item -c
+Copy the module file, sorted, to the standard output,
+instead of creating or modifying any files or
+directories in your working directory.
+
+@item -d @var{dir}
+Create a directory called @var{dir} for the working
+files, instead of using the module name. In general,
+using this flag is equivalent to using @samp{mkdir
+@var{dir}; cd @var{dir}} followed by the checkout
+command without the @samp{-d} flag.
+
+There is an important exception, however. It is very
+convenient when checking out a single item to have the
+output appear in a directory that doesn't contain empty
+intermediate directories. In this case @emph{only},
+@sc{cvs} tries to ``shorten'' pathnames to avoid those empty
+directories.
+
+For example, given a module @samp{foo} that contains
+the file @samp{bar.c}, the command @samp{cvs co -d dir
+foo} will create directory @samp{dir} and place
+@samp{bar.c} inside. Similarly, given a module
+@samp{bar} which has subdirectory @samp{baz} wherein
+there is a file @samp{quux.c}, the command @samp{cvs co
+-d dir bar/baz} will create directory @samp{dir} and
+place @samp{quux.c} inside.
+
+Using the @samp{-N} flag will defeat this behavior.
+Given the same module definitions above, @samp{cvs co
+-N -d dir foo} will create directories @samp{dir/foo}
+and place @samp{bar.c} inside, while @samp{cvs co -N -d
+dir bar/baz} will create directories @samp{dir/bar/baz}
+and place @samp{quux.c} inside.
+
+@item -j @var{tag}
+With two @samp{-j} options, merge changes from the
+revision specified with the first @samp{-j} option to
+the revision specified with the second @samp{j} option,
+into the working directory.
+
+With one @samp{-j} option, merge changes from the
+ancestor revision to the revision specified with the
+@samp{-j} option, into the working directory. The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the @samp{-j} option.
+
+In addition, each -j option can contain an optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date. An optional date is specified by adding a colon
+(:) to the tag:
+@samp{-j@var{Symbolic_Tag}:@var{Date_Specifier}}.
+
+@c <en>@xref{Branching and merging}.
+@xref{Ramificando e mesclando}.
+
+@item -N
+Only useful together with @samp{-d @var{dir}}. With
+this option, @sc{cvs} will not ``shorten'' module paths
+in your working directory when you check out a single
+module. See the @samp{-d} flag for examples and a
+discussion.
+
+@item -s
+Like @samp{-c}, but include the status of all modules,
+and sort it by the status string. @xref{modules}, for
+info about the @samp{-s} option that is used inside the
+modules file to set the module status.
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node checkout examples
+@appendixsubsec checkout examples
+
+Get a copy of the module @samp{tc}:
+
+@example
+$ cvs checkout tc
+@end example
+
+Get a copy of the module @samp{tc} as it looked one day
+ago:
+
+@example
+$ cvs checkout -D yesterday tc
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node commit
+@appendixsec commit---Check files into the repository
+@cindex commit (subcommand)
+
+@itemize @bullet
+@item
+Synopsis: commit [-lnRf] [-m 'log_message' |
+-F file] [-r revision] [files@dots{}]
+@item
+Requires: working directory, repository.
+@item
+Changes: repository.
+@item
+Synonym: ci
+@end itemize
+
+Use @code{commit} when you want to incorporate changes
+from your working source files into the source
+repository.
+
+If you don't specify particular files to commit, all of
+the files in your working current directory are
+examined. @code{commit} is careful to change in the
+repository only those files that you have really
+changed. By default (or if you explicitly specify the
+@samp{-R} option), files in subdirectories are also
+examined and committed if they have changed; you can
+use the @samp{-l} option to limit @code{commit} to the
+current directory only.
+
+@code{commit} verifies that the selected files are up
+to date with the current revisions in the source
+repository; it will notify you, and exit without
+committing, if any of the specified files must be made
+current first with @code{update} (@pxref{update}).
+@code{commit} does not call the @code{update} command
+for you, but rather leaves that for you to do when the
+time is right.
+
+When all is well, an editor is invoked to allow you to
+enter a log message that will be written to one or more
+logging programs (@pxref{modules}, and @pxref{loginfo})
+and placed in the @sc{rcs} file inside the
+repository. This log message can be retrieved with the
+@code{log} command; see @ref{log}. You can specify the
+log message on the command line with the @samp{-m
+@var{message}} option, and thus avoid the editor invocation,
+or use the @samp{-F @var{file}} option to specify
+that the argument file contains the log message.
+
+@menu
+* commit options:: commit options
+* commit examples:: commit examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node commit options
+@appendixsubsec commit options
+
+@c <en>These standard options are supported by @code{commit}
+@c <en>(@pxref{Common options}, for a complete description of
+@c <en>them):
+These standard options are supported by @code{commit}
+(@pxref{Opções comuns}, for a complete description of
+them):
+
+@table @code
+@item -l
+Local; run only in current working directory.
+
+@item -R
+Commit directories recursively. This is on by default.
+
+@c <en>@item -r @var{revision}
+@item -r @var{revision}
+@c <en>Commit to @var{revision}. @var{revision} must be
+@c <en>either a branch, or a revision on the main trunk that
+@c <en>is higher than any existing revision number
+@c <en>(@pxref{Assigning revisions}). You
+@c <en>cannot commit to a specific revision on a branch.
+Commit to @var{revision}. @var{revision} must be
+either a branch, or a revision on the main trunk that
+is higher than any existing revision number
+(@pxref{Atribuindo revisões}). You
+cannot commit to a specific revision on a branch.
+@c FIXME: Need xref for branch case.
+@end table
+
+@code{commit} also supports these options:
+
+@table @code
+@item -F @var{file}
+Read the log message from @var{file}, instead
+of invoking an editor.
+
+@c <en>@item -f
+@item -f
+@c <en>Note that this is not the standard behavior of
+@c <en>the @samp{-f} option as defined in @ref{Common options}.
+Note that this is not the standard behavior of
+the @samp{-f} option as defined in @ref{Opções comuns}.
+
+Force @sc{cvs} to commit a new revision even if you haven't
+made any changes to the file. If the current revision
+of @var{file} is 1.7, then the following two commands
+are equivalent:
+
+@example
+$ cvs commit -f @var{file}
+$ cvs commit -r 1.8 @var{file}
+@end example
+
+@c This is odd, but it's how CVS has worked for some
+@c time.
+The @samp{-f} option disables recursion (i.e., it
+implies @samp{-l}). To force @sc{cvs} to commit a new
+revision for all files in all subdirectories, you must
+use @samp{-f -R}.
+
+@item -m @var{message}
+Use @var{message} as the log message, instead of
+invoking an editor.
+@end table
+
+@need 2000
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node commit examples
+@appendixsubsec commit examples
+
+@c FIXME: this material wants to be somewhere
+@c in "Branching and merging".
+
+@appendixsubsubsec Committing to a branch
+
+@c <en>You can commit to a branch revision (one that has an
+@c <en>even number of dots) with the @samp{-r} option. To
+@c <en>create a branch revision, use the @samp{-b} option
+@c <en>of the @code{rtag} or @code{tag} commands
+@c <en>(@pxref{Branching and merging}). Then, either @code{checkout} or
+@c <en>@code{update} can be used to base your sources on the
+@c <en>newly created branch. From that point on, all
+@c <en>@code{commit} changes made within these working sources
+@c <en>will be automatically added to a branch revision,
+@c <en>thereby not disturbing main-line development in any
+@c <en>way. For example, if you had to create a patch to the
+@c <en>1.2 version of the product, even though the 2.0 version
+@c <en>is already under development, you might do:
+You can commit to a branch revision (one that has an
+even number of dots) with the @samp{-r} option. To
+create a branch revision, use the @samp{-b} option
+of the @code{rtag} or @code{tag} commands
+(@pxref{Ramificando e mesclando}). Then, either @code{checkout} or
+@code{update} can be used to base your sources on the
+newly created branch. From that point on, all
+@code{commit} changes made within these working sources
+will be automatically added to a branch revision,
+thereby not disturbing main-line development in any
+way. For example, if you had to create a patch to the
+1.2 version of the product, even though the 2.0 version
+is already under development, you might do:
+
+@example
+$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
+$ cvs checkout -r FCS1_2_Patch product_module
+$ cd product_module
+[[ hack away ]]
+$ cvs commit
+@end example
+
+@noindent
+This works automatically since the @samp{-r} option is
+sticky.
+
+@appendixsubsubsec Creating the branch after editing
+
+Say you have been working on some extremely
+experimental software, based on whatever revision you
+happened to checkout last week. If others in your
+group would like to work on this software with you, but
+without disturbing main-line development, you could
+commit your change to a new branch. Others can then
+checkout your experimental stuff and utilize the full
+benefit of @sc{cvs} conflict resolution. The scenario might
+look like:
+
+@c FIXME: Should we be recommending tagging the branchpoint?
+@example
+[[ hacked sources are present ]]
+$ cvs tag -b EXPR1
+$ cvs update -r EXPR1
+$ cvs commit
+@end example
+
+The @code{update} command will make the @samp{-r
+EXPR1} option sticky on all files. Note that your
+changes to the files will never be removed by the
+@code{update} command. The @code{commit} will
+automatically commit to the correct branch, because the
+@samp{-r} is sticky. You could also do like this:
+
+@c FIXME: Should we be recommending tagging the branchpoint?
+@example
+[[ hacked sources are present ]]
+$ cvs tag -b EXPR1
+$ cvs commit -r EXPR1
+@end example
+
+@noindent
+but then, only those files that were changed by you
+will have the @samp{-r EXPR1} sticky flag. If you hack
+away, and commit without specifying the @samp{-r EXPR1}
+flag, some files may accidentally end up on the main
+trunk.
+
+To work with you on the experimental change, others
+would simply do
+
+@example
+$ cvs checkout -r EXPR1 whatever_module
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node diff
+@appendixsec diff---Show differences between revisions
+@cindex diff (subcommand)
+
+@itemize @bullet
+@item
+Synopsis: diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D date1] [-r rev2 | -D date2]] [files@dots{}]
+@item
+Requires: working directory, repository.
+@item
+Changes: nothing.
+@end itemize
+
+The @code{diff} command is used to compare different
+revisions of files. The default action is to compare
+your working files with the revisions they were based
+on, and report any differences that are found.
+
+If any file names are given, only those files are
+compared. If any directories are given, all files
+under them will be compared.
+
+@c <en>The exit status for diff is different than for other
+@c <en>@sc{cvs} commands; for details @ref{Exit status}.
+The exit status for diff is different than for other
+@sc{cvs} commands; for details @ref{Estados de saída}.
+
+@menu
+* diff options:: diff options
+* diff examples:: diff examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node diff options
+@appendixsubsec diff options
+
+@c <en>These standard options are supported by @code{diff}
+@c <en>(@pxref{Common options}, for a complete description of
+@c <en>them):
+These standard options are supported by @code{diff}
+(@pxref{Opções comuns}, for a complete description of
+them):
+
+@table @code
+@item -D @var{date}
+Use the most recent revision no later than @var{date}.
+See @samp{-r} for how this affects the comparison.
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Process keywords according to @var{kflag}. See
+@c <en>@ref{Keyword substitution}.
+Process keywords according to @var{kflag}. See
+@ref{Substituição de palavra-chave}.
+
+@item -l
+Local; run only in current working directory.
+
+@item -R
+Examine directories recursively. This option is on by
+default.
+
+@item -r @var{tag}
+Compare with revision @var{tag}. Zero, one or two
+@samp{-r} options can be present. With no @samp{-r}
+option, the working file will be compared with the
+revision it was based on. With one @samp{-r}, that
+revision will be compared to your current working file.
+With two @samp{-r} options those two revisions will be
+compared (and your working file will not affect the
+outcome in any way).
+@c We should be a lot more explicit, with examples,
+@c about the difference between "cvs diff" and "cvs
+@c diff -r HEAD". This often confuses new users.
+
+One or both @samp{-r} options can be replaced by a
+@samp{-D @var{date}} option, described above.
+@end table
+
+@c Conceptually, this is a disaster. There are 3
+@c zillion diff formats that we support via the diff
+@c library. It is not obvious to me that we should
+@c document them all. Maybe just the most common ones
+@c like -c and -u, and think about phasing out the
+@c obscure ones.
+@c FIXCVS: also should be a way to specify an external
+@c diff program (which can be different for different
+@c file types) and pass through
+@c arbitrary options, so that the user can do
+@c "--pass=-Z --pass=foo" or something even if CVS
+@c doesn't know about the "-Z foo" option to diff.
+@c This would fit nicely with deprecating/eliminating
+@c the obscure options of the diff library, because it
+@c would let people specify an external GNU diff if
+@c they are into that sort of thing.
+The following options specify the format of the
+output. They have the same meaning as in GNU diff.
+Most options have two equivalent names, one of which is a single letter
+preceded by @samp{-}, and the other of which is a long name preceded by
+@samp{--}.
+
+@table @samp
+@item -@var{lines}
+Show @var{lines} (an integer) lines of context. This option does not
+specify an output format by itself; it has no effect unless it is
+combined with @samp{-c} or @samp{-u}. This option is obsolete. For proper
+operation, @code{patch} typically needs at least two lines of context.
+
+@item -a
+Treat all files as text and compare them line-by-line, even if they
+do not seem to be text.
+
+@item -b
+Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+
+@item -B
+Ignore changes that just insert or delete blank lines.
+
+@item --binary
+Read and write data in binary mode.
+
+@item --brief
+Report only whether the files differ, not the details of the
+differences.
+
+@item -c
+Use the context output format.
+
+@item -C @var{lines}
+@itemx --context@r{[}=@var{lines}@r{]}
+Use the context output format, showing @var{lines} (an integer) lines of
+context, or three if @var{lines} is not given.
+For proper operation, @code{patch} typically needs at least two lines of
+context.
+
+@item --changed-group-format=@var{format}
+Use @var{format} to output a line group containing differing lines from
+both files in if-then-else format. @xref{Line group formats}.
+
+@item -d
+Change the algorithm to perhaps find a smaller set of changes. This makes
+@code{diff} slower (sometimes much slower).
+
+@item -e
+@itemx --ed
+Make output that is a valid @code{ed} script.
+
+@item --expand-tabs
+Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+
+@item -f
+Make output that looks vaguely like an @code{ed} script but has changes
+in the order they appear in the file.
+
+@item -F @var{regexp}
+In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches @var{regexp}.
+
+@item --forward-ed
+Make output that looks vaguely like an @code{ed} script but has changes
+in the order they appear in the file.
+
+@item -H
+Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+
+@item --horizon-lines=@var{lines}
+Do not discard the last @var{lines} lines of the common prefix
+and the first @var{lines} lines of the common suffix.
+
+@item -i
+Ignore changes in case; consider upper- and lower-case letters
+equivalent.
+
+@item -I @var{regexp}
+Ignore changes that just insert or delete lines that match @var{regexp}.
+
+@item --ifdef=@var{name}
+Make merged if-then-else output using @var{name}.
+
+@item --ignore-all-space
+Ignore white space when comparing lines.
+
+@item --ignore-blank-lines
+Ignore changes that just insert or delete blank lines.
+
+@item --ignore-case
+Ignore changes in case; consider upper- and lower-case to be the same.
+
+@item --ignore-matching-lines=@var{regexp}
+Ignore changes that just insert or delete lines that match @var{regexp}.
+
+@item --ignore-space-change
+Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+
+@item --initial-tab
+Output a tab rather than a space before the text of a line in normal or
+context format. This causes the alignment of tabs in the line to look
+normal.
+
+@item -L @var{label}
+Use @var{label} instead of the file name in the context format
+and unified format headers.
+
+@item --label=@var{label}
+Use @var{label} instead of the file name in the context format
+and unified format headers.
+
+@item --left-column
+Print only the left column of two common lines in side by side format.
+
+@item --line-format=@var{format}
+Use @var{format} to output all input lines in if-then-else format.
+@xref{Line formats}.
+
+@item --minimal
+Change the algorithm to perhaps find a smaller set of changes. This
+makes @code{diff} slower (sometimes much slower).
+
+@item -n
+Output RCS-format diffs; like @samp{-f} except that each command
+specifies the number of lines affected.
+
+@item -N
+@itemx --new-file
+In directory comparison, if a file is found in only one directory,
+treat it as present but empty in the other directory.
+
+@item --new-group-format=@var{format}
+Use @var{format} to output a group of lines taken from just the second
+file in if-then-else format. @xref{Line group formats}.
+
+@item --new-line-format=@var{format}
+Use @var{format} to output a line taken from just the second file in
+if-then-else format. @xref{Line formats}.
+
+@item --old-group-format=@var{format}
+Use @var{format} to output a group of lines taken from just the first
+file in if-then-else format. @xref{Line group formats}.
+
+@item --old-line-format=@var{format}
+Use @var{format} to output a line taken from just the first file in
+if-then-else format. @xref{Line formats}.
+
+@item -p
+Show which C function each change is in.
+
+@item --rcs
+Output RCS-format diffs; like @samp{-f} except that each command
+specifies the number of lines affected.
+
+@item --report-identical-files
+@itemx -s
+Report when two files are the same.
+
+@item --show-c-function
+Show which C function each change is in.
+
+@item --show-function-line=@var{regexp}
+In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches @var{regexp}.
+
+@item --side-by-side
+Use the side by side output format.
+
+@item --speed-large-files
+Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+
+@item --suppress-common-lines
+Do not print common lines in side by side format.
+
+@item -t
+Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+
+@item -T
+Output a tab rather than a space before the text of a line in normal or
+context format. This causes the alignment of tabs in the line to look
+normal.
+
+@item --text
+Treat all files as text and compare them line-by-line, even if they
+do not appear to be text.
+
+@item -u
+Use the unified output format.
+
+@item --unchanged-group-format=@var{format}
+Use @var{format} to output a group of common lines taken from both files
+in if-then-else format. @xref{Line group formats}.
+
+@item --unchanged-line-format=@var{format}
+Use @var{format} to output a line common to both files in if-then-else
+format. @xref{Line formats}.
+
+@item -U @var{lines}
+@itemx --unified@r{[}=@var{lines}@r{]}
+Use the unified output format, showing @var{lines} (an integer) lines of
+context, or three if @var{lines} is not given.
+For proper operation, @code{patch} typically needs at least two lines of
+context.
+
+@item -w
+Ignore white space when comparing lines.
+
+@item -W @var{columns}
+@itemx --width=@var{columns}
+Use an output width of @var{columns} in side by side format.
+
+@item -y
+Use the side by side output format.
+@end table
+
+@menu
+* Line group formats:: Line group formats
+* Line formats:: Line formats
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node Line group formats
+@appendixsubsubsec Line group formats
+
+Line group formats let you specify formats suitable for many
+applications that allow if-then-else input, including programming
+languages and text formatting languages. A line group format specifies
+the output format for a contiguous group of similar lines.
+
+For example, the following command compares the TeX file @file{myfile}
+with the original version from the repository,
+and outputs a merged file in which old regions are
+surrounded by @samp{\begin@{em@}}-@samp{\end@{em@}} lines, and new
+regions are surrounded by @samp{\begin@{bf@}}-@samp{\end@{bf@}} lines.
+
+@example
+cvs diff \
+ --old-group-format='\begin@{em@}
+%<\end@{em@}
+' \
+ --new-group-format='\begin@{bf@}
+%>\end@{bf@}
+' \
+ myfile
+@end example
+
+The following command is equivalent to the above example, but it is a
+little more verbose, because it spells out the default line group formats.
+
+@example
+cvs diff \
+ --old-group-format='\begin@{em@}
+%<\end@{em@}
+' \
+ --new-group-format='\begin@{bf@}
+%>\end@{bf@}
+' \
+ --unchanged-group-format='%=' \
+ --changed-group-format='\begin@{em@}
+%<\end@{em@}
+\begin@{bf@}
+%>\end@{bf@}
+' \
+ myfile
+@end example
+
+Here is a more advanced example, which outputs a diff listing with
+headers containing line numbers in a ``plain English'' style.
+
+@example
+cvs diff \
+ --unchanged-group-format='' \
+ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
+%<' \
+ --new-group-format='-------- %dN line%(N=1?:s) added after %de:
+%>' \
+ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
+%<-------- to:
+%>' \
+ myfile
+@end example
+
+To specify a line group format, use one of the options
+listed below. You can specify up to four line group formats, one for
+each kind of line group. You should quote @var{format}, because it
+typically contains shell metacharacters.
+
+@table @samp
+@item --old-group-format=@var{format}
+These line groups are hunks containing only lines from the first file.
+The default old group format is the same as the changed group format if
+it is specified; otherwise it is a format that outputs the line group as-is.
+
+@item --new-group-format=@var{format}
+These line groups are hunks containing only lines from the second
+file. The default new group format is same as the changed group
+format if it is specified; otherwise it is a format that outputs the
+line group as-is.
+
+@item --changed-group-format=@var{format}
+These line groups are hunks containing lines from both files. The
+default changed group format is the concatenation of the old and new
+group formats.
+
+@item --unchanged-group-format=@var{format}
+These line groups contain lines common to both files. The default
+unchanged group format is a format that outputs the line group as-is.
+@end table
+
+In a line group format, ordinary characters represent themselves;
+conversion specifications start with @samp{%} and have one of the
+following forms.
+
+@table @samp
+@item %<
+stands for the lines from the first file, including the trailing newline.
+Each line is formatted according to the old line format (@pxref{Line formats}).
+
+@item %>
+stands for the lines from the second file, including the trailing newline.
+Each line is formatted according to the new line format.
+
+@item %=
+stands for the lines common to both files, including the trailing newline.
+Each line is formatted according to the unchanged line format.
+
+@item %%
+stands for @samp{%}.
+
+@item %c'@var{C}'
+where @var{C} is a single character, stands for @var{C}.
+@var{C} may not be a backslash or an apostrophe.
+For example, @samp{%c':'} stands for a colon, even inside
+the then-part of an if-then-else format, which a colon would
+normally terminate.
+
+@item %c'\@var{O}'
+where @var{O} is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code @var{O}.
+For example, @samp{%c'\0'} stands for a null character.
+
+@item @var{F}@var{n}
+where @var{F} is a @code{printf} conversion specification and @var{n} is one
+of the following letters, stands for @var{n}'s value formatted with @var{F}.
+
+@table @samp
+@item e
+The line number of the line just before the group in the old file.
+
+@item f
+The line number of the first line in the group in the old file;
+equals @var{e} + 1.
+
+@item l
+The line number of the last line in the group in the old file.
+
+@item m
+The line number of the line just after the group in the old file;
+equals @var{l} + 1.
+
+@item n
+The number of lines in the group in the old file; equals @var{l} - @var{f} + 1.
+
+@item E, F, L, M, N
+Likewise, for lines in the new file.
+
+@end table
+
+The @code{printf} conversion specification can be @samp{%d},
+@samp{%o}, @samp{%x}, or @samp{%X}, specifying decimal, octal,
+lower case hexadecimal, or upper case hexadecimal output
+respectively. After the @samp{%} the following options can appear in
+sequence: a @samp{-} specifying left-justification; an integer
+specifying the minimum field width; and a period followed by an
+optional integer specifying the minimum number of digits.
+For example, @samp{%5dN} prints the number of new lines in the group
+in a field of width 5 characters, using the @code{printf} format @code{"%5d"}.
+
+@item (@var{A}=@var{B}?@var{T}:@var{E})
+If @var{A} equals @var{B} then @var{T} else @var{E}.
+@var{A} and @var{B} are each either a decimal constant
+or a single letter interpreted as above.
+This format spec is equivalent to @var{T} if
+@var{A}'s value equals @var{B}'s; otherwise it is equivalent to @var{E}.
+
+For example, @samp{%(N=0?no:%dN) line%(N=1?:s)} is equivalent to
+@samp{no lines} if @var{N} (the number of lines in the group in the
+new file) is 0, to @samp{1 line} if @var{N} is 1, and to @samp{%dN lines}
+otherwise.
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node Line formats
+@appendixsubsubsec Line formats
+
+Line formats control how each line taken from an input file is
+output as part of a line group in if-then-else format.
+
+For example, the following command outputs text with a one-column
+change indicator to the left of the text. The first column of output
+is @samp{-} for deleted lines, @samp{|} for added lines, and a space
+for unchanged lines. The formats contain newline characters where
+newlines are desired on output.
+
+@example
+cvs diff \
+ --old-line-format='-%l
+' \
+ --new-line-format='|%l
+' \
+ --unchanged-line-format=' %l
+' \
+ myfile
+@end example
+
+To specify a line format, use one of the following options. You should
+quote @var{format}, since it often contains shell metacharacters.
+
+@table @samp
+@item --old-line-format=@var{format}
+formats lines just from the first file.
+
+@item --new-line-format=@var{format}
+formats lines just from the second file.
+
+@item --unchanged-line-format=@var{format}
+formats lines common to both files.
+
+@item --line-format=@var{format}
+formats all lines; in effect, it sets all three above options simultaneously.
+@end table
+
+In a line format, ordinary characters represent themselves;
+conversion specifications start with @samp{%} and have one of the
+following forms.
+
+@table @samp
+@item %l
+stands for the contents of the line, not counting its trailing
+newline (if any). This format ignores whether the line is incomplete.
+
+@item %L
+stands for the contents of the line, including its trailing newline
+(if any). If a line is incomplete, this format preserves its
+incompleteness.
+
+@item %%
+stands for @samp{%}.
+
+@item %c'@var{C}'
+where @var{C} is a single character, stands for @var{C}.
+@var{C} may not be a backslash or an apostrophe.
+For example, @samp{%c':'} stands for a colon.
+
+@item %c'\@var{O}'
+where @var{O} is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code @var{O}.
+For example, @samp{%c'\0'} stands for a null character.
+
+@item @var{F}n
+where @var{F} is a @code{printf} conversion specification,
+stands for the line number formatted with @var{F}.
+For example, @samp{%.5dn} prints the line number using the
+@code{printf} format @code{"%.5d"}. @xref{Line group formats}, for
+more about printf conversion specifications.
+
+@end table
+
+The default line format is @samp{%l} followed by a newline character.
+
+If the input contains tab characters and it is important that they line
+up on output, you should ensure that @samp{%l} or @samp{%L} in a line
+format is just after a tab stop (e.g.@: by preceding @samp{%l} or
+@samp{%L} with a tab character), or you should use the @samp{-t} or
+@samp{--expand-tabs} option.
+
+Taken together, the line and line group formats let you specify many
+different formats. For example, the following command uses a format
+similar to @code{diff}'s normal format. You can tailor this command
+to get fine control over @code{diff}'s output.
+
+@example
+cvs diff \
+ --old-line-format='< %l
+' \
+ --new-line-format='> %l
+' \
+ --old-group-format='%df%(f=l?:,%dl)d%dE
+%<' \
+ --new-group-format='%dea%dF%(F=L?:,%dL)
+%>' \
+ --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
+%<---
+%>' \
+ --unchanged-group-format='' \
+ myfile
+@end example
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node diff examples
+@appendixsubsec diff examples
+
+The following line produces a Unidiff (@samp{-u} flag)
+between revision 1.14 and 1.19 of
+@file{backend.c}. Due to the @samp{-kk} flag no
+keywords are substituted, so differences that only depend
+on keyword substitution are ignored.
+
+@example
+$ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
+@end example
+
+Suppose the experimental branch EXPR1 was based on a
+set of files tagged RELEASE_1_0. To see what has
+happened on that branch, the following can be used:
+
+@example
+$ cvs diff -r RELEASE_1_0 -r EXPR1
+@end example
+
+A command like this can be used to produce a context
+diff between two releases:
+
+@example
+$ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
+@end example
+
+If you are maintaining ChangeLogs, a command like the following
+just before you commit your changes may help you write
+the ChangeLog entry. All local modifications that have
+not yet been committed will be printed.
+
+@example
+$ cvs diff -u | less
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node export
+@appendixsec export---Export sources from CVS, similar to checkout
+@cindex export (subcommand)
+
+@itemize @bullet
+@item
+Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir] module@dots{}
+@item
+Requires: repository.
+@item
+Changes: current directory.
+@end itemize
+
+This command is a variant of @code{checkout}; use it
+when you want a copy of the source for module without
+the @sc{cvs} administrative directories. For example, you
+might use @code{export} to prepare source for shipment
+off-site. This command requires that you specify a
+date or tag (with @samp{-D} or @samp{-r}), so that you
+can count on reproducing the source you ship to others
+(and thus it always prunes empty directories).
+
+One often would like to use @samp{-kv} with @code{cvs
+export}. This causes any keywords to be
+expanded such that an import done at some other site
+will not lose the keyword revision information. But be
+aware that doesn't handle an export containing binary
+files correctly. Also be aware that after having used
+@samp{-kv}, one can no longer use the @code{ident}
+command (which is part of the @sc{rcs} suite---see
+ident(1)) which looks for keyword strings. If
+you want to be able to use @code{ident} you must not
+use @samp{-kv}.
+
+@menu
+* export options:: export options
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node export options
+@appendixsubsec export options
+
+@c <en>These standard options are supported by @code{export}
+@c <en>(@pxref{Common options}, for a complete description of
+@c <en>them):
+These standard options are supported by @code{export}
+(@pxref{Opções comuns}, for a complete description of
+them):
+
+@table @code
+@item -D @var{date}
+Use the most recent revision no later than @var{date}.
+
+@item -f
+If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+
+@item -l
+Local; run only in current working directory.
+
+@item -n
+Do not run any checkout program.
+
+@item -R
+Export directories recursively. This is on by default.
+
+@item -r @var{tag}
+Use revision @var{tag}.
+@end table
+
+In addition, these options (that are common to
+@code{checkout} and @code{export}) are also supported:
+
+@table @code
+@item -d @var{dir}
+Create a directory called @var{dir} for the working
+files, instead of using the module name.
+@xref{checkout options}, for complete details on how
+@sc{cvs} handles this flag.
+
+@c <en>@item -k @var{subst}
+@item -k @var{subst}
+@c <en>Set keyword expansion mode (@pxref{Substitution modes}).
+Set keyword expansion mode (@pxref{Modos de substituição}).
+
+@item -N
+Only useful together with @samp{-d @var{dir}}.
+@xref{checkout options}, for complete details on how
+@sc{cvs} handles this flag.
+@end table
+
+@ignore
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@c @node export examples
+@appendixsubsec export examples
+
+Contributed examples are gratefully accepted.
+@c -- Examples here!!
+@end ignore
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node history
+@appendixsec history---Show status of files and users
+@cindex history (subcommand)
+
+@itemize @bullet
+@item
+Synopsis: history [-report] [-flags] [-options args] [files@dots{}]
+@item
+Requires: the file @file{$CVSROOT/CVSROOT/history}
+@item
+Changes: nothing.
+@end itemize
+
+@sc{cvs} can keep a history file that tracks each use of the
+@code{checkout}, @code{commit}, @code{rtag},
+@code{update}, and @code{release} commands. You can
+use @code{history} to display this information in
+various formats.
+
+Logging must be enabled by creating the file
+@file{$CVSROOT/CVSROOT/history}.
+
+@c <en>@strong{Note: @code{history} uses @samp{-f}, @samp{-l},
+@c <en>@samp{-n}, and @samp{-p} in ways that conflict with the
+@c <en>normal use inside @sc{cvs} (@pxref{Common options}).}
+@strong{Note: @code{history} uses @samp{-f}, @samp{-l},
+@samp{-n}, and @samp{-p} in ways that conflict with the
+normal use inside @sc{cvs} (@pxref{Opções comuns}).}
+
+@menu
+* history options:: history options
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node history options
+@appendixsubsec history options
+
+Several options (shown above as @samp{-report}) control what
+kind of report is generated:
+
+@table @code
+@item -c
+Report on each time commit was used (i.e., each time
+the repository was modified).
+
+@item -e
+Everything (all record types). Equivalent to
+specifying @samp{-x} with all record types. Of course,
+@samp{-e} will also include record types which are
+added in a future version of @sc{cvs}; if you are
+writing a script which can only handle certain record
+types, you'll want to specify @samp{-x}.
+
+@item -m @var{module}
+Report on a particular module. (You can meaningfully
+use @samp{-m} more than once on the command line.)
+
+@item -o
+Report on checked-out modules. This is the default report type.
+
+@item -T
+Report on all tags.
+
+@item -x @var{type}
+Extract a particular set of record types @var{type} from the @sc{cvs}
+history. The types are indicated by single letters,
+which you may specify in combination.
+
+Certain commands have a single record type:
+
+@table @code
+@item F
+release
+@item O
+checkout
+@item E
+export
+@item T
+rtag
+@end table
+
+@noindent
+One of five record types may result from an update:
+
+@table @code
+@item C
+A merge was necessary but collisions were
+detected (requiring manual merging).
+@item G
+A merge was necessary and it succeeded.
+@item U
+A working file was copied from the repository.
+@item P
+A working file was patched to match the repository.
+@item W
+The working copy of a file was deleted during
+update (because it was gone from the repository).
+@end table
+
+@noindent
+One of three record types results from commit:
+
+@table @code
+@item A
+A file was added for the first time.
+@item M
+A file was modified.
+@item R
+A file was removed.
+@end table
+@end table
+
+The options shown as @samp{-flags} constrain or expand
+the report without requiring option arguments:
+
+@table @code
+@item -a
+Show data for all users (the default is to show data
+only for the user executing @code{history}).
+
+@item -l
+Show last modification only.
+
+@item -w
+Show only the records for modifications done from the
+same working directory where @code{history} is
+executing.
+@end table
+
+The options shown as @samp{-options @var{args}} constrain the report
+based on an argument:
+
+@table @code
+@item -b @var{str}
+Show data back to a record containing the string
+@var{str} in either the module name, the file name, or
+the repository path.
+
+@item -D @var{date}
+Show data since @var{date}. This is slightly different
+from the normal use of @samp{-D @var{date}}, which
+selects the newest revision older than @var{date}.
+
+@item -f @var{file}
+Show data for a particular file
+(you can specify several @samp{-f} options on the same command line).
+This is equivalent to specifying the file on the command line.
+
+@item -n @var{module}
+Show data for a particular module
+(you can specify several @samp{-n} options on the same command line).
+
+@item -p @var{repository}
+Show data for a particular source repository (you
+can specify several @samp{-p} options on the same command
+line).
+
+@item -r @var{rev}
+Show records referring to revisions since the revision
+or tag named @var{rev} appears in individual @sc{rcs}
+files. Each @sc{rcs} file is searched for the revision or
+tag.
+
+@item -t @var{tag}
+Show records since tag @var{tag} was last added to the
+history file. This differs from the @samp{-r} flag
+above in that it reads only the history file, not the
+@sc{rcs} files, and is much faster.
+
+@item -u @var{name}
+Show records for user @var{name}.
+
+@item -z @var{timezone}
+Show times in the selected records using the specified
+time zone instead of UTC.
+@end table
+
+@ignore
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@c @node history examples
+@appendixsubsec history examples
+
+Contributed examples will gratefully be accepted.
+@c -- Examples here!
+@end ignore
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node import
+@appendixsec import---Import sources into CVS, using vendor branches
+@cindex import (subcommand)
+
+@c FIXME: This node is way too long for one which has subnodes.
+
+@itemize @bullet
+@item
+Synopsis: import [-options] repository vendortag releasetag@dots{}
+@item
+Requires: Repository, source distribution directory.
+@item
+Changes: repository.
+@end itemize
+
+Use @code{import} to incorporate an entire source
+distribution from an outside source (e.g., a source
+vendor) into your source repository directory. You can
+use this command both for initial creation of a
+repository, and for wholesale updates to the module
+from the outside source. @xref{Acompanhando fontes}, for
+a discussion on this subject.
+
+The @var{repository} argument gives a directory name
+(or a path to a directory) under the @sc{cvs} root directory
+for repositories; if the directory did not exist,
+import creates it.
+
+When you use import for updates to source that has been
+modified in your source repository (since a prior
+import), it will notify you of any files that conflict
+in the two branches of development; use @samp{checkout
+-j} to reconcile the differences, as import instructs
+you to do.
+
+If @sc{cvs} decides a file should be ignored
+(@pxref{cvsignore}), it does not import it and prints
+@samp{I } followed by the filename (@pxref{import output}, for a
+complete description of the output).
+
+If the file @file{$CVSROOT/CVSROOT/cvswrappers} exists,
+any file whose names match the specifications in that
+file will be treated as packages and the appropriate
+filtering will be performed on the file/directory
+before being imported. @xref{Wrappers}.
+
+The outside source is saved in a first-level
+branch, by default 1.1.1. Updates are leaves of this
+branch; for example, files from the first imported
+collection of source will be revision 1.1.1.1, then
+files from the first imported update will be revision
+1.1.1.2, and so on.
+
+At least three arguments are required.
+@var{repository} is needed to identify the collection
+of source. @var{vendortag} is a tag for the entire
+branch (e.g., for 1.1.1). You must also specify at
+least one @var{releasetag} to identify the files at
+the leaves created each time you execute @code{import}.
+
+@c I'm not completely sure this belongs here. But
+@c we need to say it _somewhere_ reasonably obvious; it
+@c is a common misconception among people first learning CVS
+@c <en>Note that @code{import} does @emph{not} change the
+@c <en>directory in which you invoke it. In particular, it
+@c <en>does not set up that directory as a @sc{cvs} working
+@c <en>directory; if you want to work with the sources import
+@c <en>them first and then check them out into a different
+@c <en>directory (@pxref{Getting the source}).
+Note that @code{import} does @emph{not} change the
+directory in which you invoke it. In particular, it
+does not set up that directory as a @sc{cvs} working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (@pxref{Obtendo os fontes}).
+
+@menu
+* import options:: import options
+* import output:: import output
+* import examples:: import examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node import options
+@appendixsubsec import options
+
+@c <en>This standard option is supported by @code{import}
+@c <en>(@pxref{Common options}, for a complete description):
+This standard option is supported by @code{import}
+(@pxref{Opções comuns}, for a complete description):
+
+@table @code
+@item -m @var{message}
+Use @var{message} as log information, instead of
+invoking an editor.
+@end table
+
+There are the following additional special options.
+
+@table @code
+@c <en>@item -b @var{branch}
+@item -b @var{branch}
+@c <en>See @ref{Multiple vendor branches}.
+See @ref{Ramos de fornecedor múltiplos}.
+
+@c <en>@item -k @var{subst}
+@item -k @var{subst}
+@c <en>Indicate the keyword expansion mode desired. This
+@c <en>setting will apply to all files created during the
+@c <en>import, but not to any files that previously existed in
+@c <en>the repository. See @ref{Substitution modes}, for a
+@c <en>list of valid @samp{-k} settings.
+Indicate the keyword expansion mode desired. This
+setting will apply to all files created during the
+import, but not to any files that previously existed in
+the repository. See @ref{Modos de substituição}, for a
+list of valid @samp{-k} settings.
+
+@item -I @var{name}
+Specify file names that should be ignored during
+import. You can use this option repeatedly. To avoid
+ignoring any files at all (even those ignored by
+default), specify `-I !'.
+
+@var{name} can be a file name pattern of the same type
+that you can specify in the @file{.cvsignore} file.
+@xref{cvsignore}.
+@c -- Is this really true?
+
+@item -W @var{spec}
+Specify file names that should be filtered during
+import. You can use this option repeatedly.
+
+@var{spec} can be a file name pattern of the same type
+that you can specify in the @file{.cvswrappers}
+file. @xref{Wrappers}.
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node import output
+@appendixsubsec import output
+
+@c <en>@code{import} keeps you informed of its progress by printing a line
+@c <en>for each file, preceded by one character indicating the status of the file:
+O @code{import} mantém você informado de seu progresso
+escrevendo uma linha para cada arquivo, iniciando com
+um caractere que indica o status do arquivo:
+
+@table @code
+@c <en>@item U @var{file}
+@item U @var{arquivo}
+@c <en>The file already exists in the repository and has not been locally
+@c <en>modified; a new revision has been created (if necessary).
+O arquivo já existe no repositório não foi modificado
+localmente; uma nova revisão foi criada (se necessário).
+
+@c <en>@item N @var{file}
+@item N @var{arquivo}
+@c <en>The file is a new file which has been added to the repository.
+O arquivo é um arquivo novo que foi adicionado ao repositório.
+
+@c <en>@item C @var{file}
+@item C @var{arquivo}
+@c <en>The file already exists in the repository but has been locally modified;
+@c <en>you will have to merge the changes.
+O arquivo já existe no repositório mas foi modificado
+localmente; Você vai ter que mesclar as mudanças.
+
+@c <en>@item I @var{file}
+@item I @var{arquivo}
+@c <en>The file is being ignored (@pxref{cvsignore}).
+O arquivo foi ignorado (@pxref{cvsignore}).
+
+@c <en>@cindex Symbolic link, importing
+@cindex Ligações simbólicas, importando
+@c <en>@cindex Link, symbolic, importing
+@cindex Simbólica, ligação, importando
+@c FIXME: also (somewhere else) probably
+@c should be documenting what happens if you "cvs add"
+@c a symbolic link. Also maybe what happens if
+@c you manually create symbolic links within the
+@c repository (? - not sure why we'd want to suggest
+@c doing that).
+@c <en>@item L @var{file}
+@item L @var{arquivo}
+@c <en>The file is a symbolic link; @code{cvs import} ignores symbolic links.
+@c <en>People periodically suggest that this behavior should
+@c <en>be changed, but if there is a consensus on what it
+@c <en>should be changed to, it is not apparent.
+@c <en>(Various options in the @file{modules} file can be used
+@c <en>to recreate symbolic links on checkout, update, etc.;
+@c <en>@pxref{modules}.)
+O arquivo é uma ligação simbólica; O @code{cvs import}
+ignora ligações simbólicas. De vez em quando alguem
+sugere que este comportamento seja mudado, mas se há um
+consenso quanto a que mudança fazer, não é
+claro. (Várias opções no arquivo @file{modules} podem
+ser usadas para recriar ligações simbólicas no checkout, update, etc.;
+@pxref{modules}.)
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node import examples
+@appendixsubsec import examples
+
+@c <en>See @ref{Tracking sources}, and @ref{From files}.
+See @ref{Acompanhando fontes}, and @ref{De arquivos}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node log
+@appendixsec log---Print out log information for files
+@cindex log (subcommand)
+
+@itemize @bullet
+@item
+Synopsis: log [options] [files@dots{}]
+@item
+Requires: repository, working directory.
+@item
+Changes: nothing.
+@end itemize
+
+Display log information for files. @code{log} used to
+call the @sc{rcs} utility @code{rlog}. Although this
+is no longer true in the current sources, this history
+determines the format of the output and the options,
+which are not quite in the style of the other @sc{cvs}
+commands.
+
+@cindex Timezone, in output
+@cindex Zone, time, in output
+@c Kind of a funny place to document the timezone used
+@c in output from commands other than @code{log}.
+@c There is also more we need to say about this,
+@c including what happens in a client/server environment.
+The output includes the location of the @sc{rcs} file,
+the @dfn{head} revision (the latest revision on the
+trunk), all symbolic names (tags) and some other
+things. For each revision, the revision number, the
+author, the number of lines added/deleted and the log
+message are printed. All times are displayed in
+Coordinated Universal Time (UTC). (Other parts of
+@sc{cvs} print times in the local timezone).
+@c FIXCVS: need a better way to control the timezone
+@c used in output. Previous/current versions of CVS did/do
+@c sometimes support -z in RCSINIT, and/or an
+@c undocumented (except by reference to 'rlog') -z option
+@c to cvs log, but this has not been a consistent,
+@c documented feature. Perhaps a new global option,
+@c where LT means the client's timezone, which the
+@c client then communicates to the server, is the
+@c right solution.
+
+@c <en>@strong{Note: @code{log} uses @samp{-R} in a way that conflicts
+@c <en>with the normal use inside @sc{cvs} (@pxref{Common options}).}
+@strong{Note: @code{log} uses @samp{-R} in a way that conflicts
+with the normal use inside @sc{cvs} (@pxref{Opções comuns}).}
+
+@menu
+* log options:: log options
+* log examples:: log examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node log options
+@appendixsubsec log options
+
+By default, @code{log} prints all information that is
+available. All other options restrict the output.
+
+@table @code
+@item -b
+Print information about the revisions on the default
+branch, normally the highest branch on the trunk.
+
+@c <en>@item -d @var{dates}
+@item -d @var{dates}
+@c <en>Print information about revisions with a checkin
+@c <en>date/time in the range given by the
+@c <en>semicolon-separated list of dates. The date formats
+@c <en>accepted are those accepted by the @samp{-D} option to
+@c <en>many other @sc{cvs} commands (@pxref{Common options}).
+@c <en>Dates can be combined into ranges as follows:
+Print information about revisions with a checkin
+date/time in the range given by the
+semicolon-separated list of dates. The date formats
+accepted are those accepted by the @samp{-D} option to
+many other @sc{cvs} commands (@pxref{Opções comuns}).
+Dates can be combined into ranges as follows:
+
+@c Should we be thinking about accepting ISO8601
+@c ranges? For example "1972-09-10/1972-09-12".
+@table @code
+@item @var{d1}<@var{d2}
+@itemx @var{d2}>@var{d1}
+Select the revisions that were deposited between
+@var{d1} and @var{d2}.
+
+@item <@var{d}
+@itemx @var{d}>
+Select all revisions dated @var{d} or earlier.
+
+@item @var{d}<
+@itemx >@var{d}
+Select all revisions dated @var{d} or later.
+
+@item @var{d}
+Select the single, latest revision dated @var{d} or
+earlier.
+@end table
+
+The @samp{>} or @samp{<} characters may be followed by
+@samp{=} to indicate an inclusive range rather than an
+exclusive one.
+
+Note that the separator is a semicolon (;).
+
+@item -h
+Print only the name of the @sc{rcs} file, name
+of the file in the working directory, head,
+default branch, access list, locks, symbolic names, and
+suffix.
+
+@item -l
+Local; run only in current working directory. (Default
+is to run recursively).
+
+@item -N
+Do not print the list of tags for this file. This
+option can be very useful when your site uses a lot of
+tags, so rather than "more"'ing over 3 pages of tag
+information, the log information is presented without
+tags at all.
+
+@item -R
+Print only the name of the @sc{rcs} file.
+
+@c Note that using a bare revision (in addition to not
+@c being explicitly documented here) is potentially
+@c confusing; it shows the log message to get from the
+@c previous revision to that revision. "-r1.3 -r1.6"
+@c (equivalent to "-r1.3,1.6") is even worse; it
+@c prints the messages to get from 1.2 to 1.3 and 1.5
+@c to 1.6. By analogy with "cvs diff", users might
+@c expect that it is more like specifying a range.
+@c It is not 100% clear to me how much of this should
+@c be documented (for example, multiple -r options
+@c perhaps could/should be deprecated given the false
+@c analogy with "cvs diff").
+@c In general, this section should be rewritten to talk
+@c about messages to get from revision rev1 to rev2,
+@c rather than messages for revision rev2 (that is, the
+@c messages are associated with a change not a static
+@c revision and failing to make this distinction causes
+@c much confusion).
+@item -r@var{revisions}
+Print information about revisions given in the
+comma-separated list @var{revisions} of revisions and
+ranges. The following table explains the available
+range formats:
+
+@table @code
+@item @var{rev1}:@var{rev2}
+Revisions @var{rev1} to @var{rev2} (which must be on
+the same branch).
+
+@item @var{rev1}::@var{rev2}
+The same, but excluding @var{rev1}.
+
+@item :@var{rev}
+@itemx ::@var{rev}
+Revisions from the beginning of the branch up to
+and including @var{rev}.
+
+@item @var{rev}:
+Revisions starting with @var{rev} to the end of the
+branch containing @var{rev}.
+
+@item @var{rev}::
+Revisions starting just after @var{rev} to the end of the
+branch containing @var{rev}.
+
+@item @var{branch}
+An argument that is a branch means all revisions on
+that branch.
+
+@item @var{branch1}:@var{branch2}
+@itemx @var{branch1}::@var{branch2}
+A range of branches means all revisions
+on the branches in that range.
+
+@item @var{branch}.
+The latest revision in @var{branch}.
+@end table
+
+A bare @samp{-r} with no revisions means the latest
+revision on the default branch, normally the trunk.
+There can be no space between the @samp{-r} option and
+its argument.
+
+@item -S
+Suppress the header if no revisions are selected.
+
+@item -s @var{states}
+Print information about revisions whose state
+attributes match one of the states given in the
+comma-separated list @var{states}.
+
+@item -t
+Print the same as @samp{-h}, plus the descriptive text.
+
+@item -w@var{logins}
+Print information about revisions checked in by users
+with login names appearing in the comma-separated list
+@var{logins}. If @var{logins} is omitted, the user's
+login is assumed. There can be no space between the
+@samp{-w} option and its argument.
+@end table
+
+@code{log} prints the intersection of the revisions
+selected with the options @samp{-d}, @samp{-s}, and
+@samp{-w}, intersected with the union of the revisions
+selected by @samp{-b} and @samp{-r}.
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node log examples
+@appendixsubsec log examples
+
+Contributed examples are gratefully accepted.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node rdiff
+@appendixsec rdiff---'patch' format diffs between releases
+@cindex rdiff (subcommand)
+
+@itemize @bullet
+@item
+rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules@dots{}
+@item
+Requires: repository.
+@item
+Changes: nothing.
+@item
+Synonym: patch
+@end itemize
+
+Builds a Larry Wall format patch(1) file between two
+releases, that can be fed directly into the @code{patch}
+program to bring an old release up-to-date with the new
+release. (This is one of the few @sc{cvs} commands that
+operates directly from the repository, and doesn't
+require a prior checkout.) The diff output is sent to
+the standard output device.
+
+You can specify (using the standard @samp{-r} and
+@samp{-D} options) any combination of one or two
+revisions or dates. If only one revision or date is
+specified, the patch file reflects differences between
+that revision or date and the current head revisions in
+the @sc{rcs} file.
+
+Note that if the software release affected is contained
+in more than one directory, then it may be necessary to
+specify the @samp{-p} option to the @code{patch} command when
+patching the old sources, so that @code{patch} is able to find
+the files that are located in other directories.
+
+@menu
+* rdiff options:: rdiff options
+* rdiff examples:: rdiff examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node rdiff options
+@appendixsubsec rdiff options
+
+@c <en>These standard options are supported by @code{rdiff}
+@c <en>(@pxref{Common options}, for a complete description of
+@c <en>them):
+These standard options are supported by @code{rdiff}
+(@pxref{Opções comuns}, for a complete description of
+them):
+
+@table @code
+@item -D @var{date}
+Use the most recent revision no later than @var{date}.
+
+@item -f
+If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+
+@item -l
+Local; don't descend subdirectories.
+
+@item -R
+Examine directories recursively. This option is on by default.
+
+@item -r @var{tag}
+Use revision @var{tag}.
+@end table
+
+In addition to the above, these options are available:
+
+@table @code
+@item -c
+Use the context diff format. This is the default format.
+
+@item -s
+Create a summary change report instead of a patch. The
+summary includes information about files that were
+changed or added between the releases. It is sent to
+the standard output device. This is useful for finding
+out, for example, which files have changed between two
+dates or revisions.
+
+@item -t
+A diff of the top two revisions is sent to the standard
+output device. This is most useful for seeing what the
+last change to a file was.
+
+@item -u
+Use the unidiff format for the context diffs.
+Remember that old versions
+of the @code{patch} program can't handle the unidiff
+format, so if you plan to post this patch to the net
+you should probably not use @samp{-u}.
+
+@item -V @var{vn}
+Expand keywords according to the rules current in
+@sc{rcs} version @var{vn} (the expansion format changed with
+@sc{rcs} version 5). Note that this option is no
+longer accepted. @sc{cvs} will always expand keywords the
+way that @sc{rcs} version 5 does.
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node rdiff examples
+@appendixsubsec rdiff examples
+
+Suppose you receive mail from @t{foo@@example.net} asking for an
+update from release 1.2 to 1.4 of the tc compiler. You
+have no such patches on hand, but with @sc{cvs} that can
+easily be fixed with a command such as this:
+
+@example
+$ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
+$$ Mail -s 'The patches you asked for' foo@@example.net
+@end example
+
+Suppose you have made release 1.3, and forked a branch
+called @samp{R_1_3fix} for bugfixes. @samp{R_1_3_1}
+corresponds to release 1.3.1, which was made some time
+ago. Now, you want to see how much development has been
+done on the branch. This command can be used:
+
+@example
+$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
+cvs rdiff: Diffing module-name
+File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
+File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
+File bar.h,v changed from revision 1.29.2.1 to 1.2
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node release
+@appendixsec release---Indicate that a Module is no longer in use
+@cindex release (subcommand)
+
+@itemize @bullet
+@item
+release [-d] directories@dots{}
+@item
+Requires: Working directory.
+@item
+Changes: Working directory, history log.
+@end itemize
+
+@c <en>This command is meant to safely cancel the effect of
+@c <en>@samp{cvs checkout}. Since @sc{cvs} doesn't lock files, it
+@c <en>isn't strictly necessary to use this command. You can
+@c <en>always simply delete your working directory, if you
+@c <en>like; but you risk losing changes you may have
+@c <en>forgotten, and you leave no trace in the @sc{cvs} history
+@c <en>file (@pxref{history file}) that you've abandoned your
+@c <en>checkout.
+This command is meant to safely cancel the effect of
+@samp{cvs checkout}. Since @sc{cvs} doesn't lock files, it
+isn't strictly necessary to use this command. You can
+always simply delete your working directory, if you
+like; but you risk losing changes you may have
+forgotten, and you leave no trace in the @sc{cvs} history
+file (@pxref{arquivo history (histórico)}) that you've abandoned your
+checkout.
+
+Use @samp{cvs release} to avoid these problems. This
+command checks that no uncommitted changes are
+present; that you are executing it from immediately
+above a @sc{cvs} working directory; and that the repository
+recorded for your files is the same as the repository
+defined in the module database.
+
+If all these conditions are true, @samp{cvs release}
+leaves a record of its execution (attesting to your
+intentionally abandoning your checkout) in the @sc{cvs}
+history log.
+
+@menu
+* release options:: release options
+* release output:: release output
+* release examples:: release examples
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node release options
+@appendixsubsec release options
+
+The @code{release} command supports one command option:
+
+@table @code
+@item -d
+Delete your working copy of the file if the release
+succeeds. If this flag is not given your files will
+remain in your working directory.
+
+@c <en>@strong{WARNING: The @code{release} command deletes
+@c <en>all directories and files recursively. This
+@c <en>has the very serious side-effect that any directory
+@c <en>that you have created inside your checked-out sources,
+@c <en>and not added to the repository (using the @code{add}
+@c <en>command; @pxref{Adding files}) will be silently deleted---even
+@c <en>if it is non-empty!}
+@strong{WARNING: The @code{release} command deletes
+all directories and files recursively. This
+has the very serious side-effect that any directory
+that you have created inside your checked-out sources,
+and not added to the repository (using the @code{add}
+command; @pxref{Adicionando arquivos}) will be silently deleted---even
+if it is non-empty!}
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node release output
+@appendixsubsec release output
+
+Before @code{release} releases your sources it will
+print a one-line message for any file that is not
+up-to-date.
+
+@table @code
+@item U @var{file}
+@itemx P @var{file}
+There exists a newer revision of this file in the
+repository, and you have not modified your local copy
+of the file (@samp{U} and @samp{P} mean the same thing).
+
+@item A @var{file}
+The file has been added to your private copy of the
+sources, but has not yet been committed to the
+repository. If you delete your copy of the sources
+this file will be lost.
+
+@item R @var{file}
+The file has been removed from your private copy of the
+sources, but has not yet been removed from the
+repository, since you have not yet committed the
+removal. @xref{commit}.
+
+@item M @var{file}
+The file is modified in your working directory. There
+might also be a newer revision inside the repository.
+
+@item ? @var{file}
+@var{file} is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for @sc{cvs} to ignore (see the
+description of the @samp{-I} option, and
+@pxref{cvsignore}). If you remove your working
+sources, this file will be lost.
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node release examples
+@appendixsubsec release examples
+
+Release the @file{tc} directory, and delete your local working copy
+of the files.
+
+@example
+$ cd .. # @r{You must stand immediately above the}
+ # @r{sources when you issue @samp{cvs release}.}
+$ cvs release -d tc
+You have [0] altered files in this repository.
+Are you sure you want to release (and delete) directory `tc': y
+$
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node update
+@appendixsec update---Bring work tree in sync with repository
+@cindex update (subcommand)
+
+@itemize @bullet
+@item
+update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D date] [-W spec] files@dots{}
+@item
+Requires: repository, working directory.
+@item
+Changes: working directory.
+@end itemize
+
+After you've run checkout to create your private copy
+of source from the common repository, other developers
+will continue changing the central source. From time
+to time, when it is convenient in your development
+process, you can use the @code{update} command from
+within your working directory to reconcile your work
+with any revisions applied to the source repository
+since your last checkout or update. Without the @code{-C}
+option, @code{update} will also merge any differences
+between the local copy of files and their base revisions
+into any destination revisions specified with @code{-r},
+@code{-D}, or @code{-A}.
+
+@menu
+* update options:: update options
+* update output:: update output
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node update options
+@appendixsubsec update options
+
+@c <en>These standard options are available with @code{update}
+@c <en>(@pxref{Common options}, for a complete description of
+@c <en>them):
+These standard options are available with @code{update}
+(@pxref{Opções comuns}, for a complete description of
+them):
+
+@table @code
+@c <en>@item -D date
+@item -D date
+@c <en>Use the most recent revision no later than @var{date}.
+@c <en>This option is sticky, and implies @samp{-P}.
+@c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
+Use the most recent revision no later than @var{date}.
+This option is sticky, and implies @samp{-P}.
+See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+
+@item -f
+Only useful with the @samp{-D @var{date}} or @samp{-r
+@var{tag}} flags. If no matching revision is found,
+retrieve the most recent revision (instead of ignoring
+the file).
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Process keywords according to @var{kflag}. See
+@c <en>@ref{Keyword substitution}.
+@c <en>This option is sticky; future updates of
+@c <en>this file in this working directory will use the same
+@c <en>@var{kflag}. The @code{status} command can be viewed
+@c <en>to see the sticky options. See @ref{Invoking CVS}, for
+@c <en>more information on the @code{status} command.
+Process keywords according to @var{kflag}. See
+@ref{Substituição de palavra-chave}.
+This option is sticky; future updates of
+this file in this working directory will use the same
+@var{kflag}. The @code{status} command can be viewed
+to see the sticky options. See @ref{Chamando o CVS}, for
+more information on the @code{status} command.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. @xref{Recursive behavior}.
+Local; run only in current working directory. @xref{Comportamento recursivo}.
+
+@c <en>@item -P
+@item -P
+@c <en>Prune empty directories. See @ref{Moving directories}.
+Prune empty directories. See @ref{Movendo diretórios}.
+
+@c <en>@item -p
+@item -p
+@c <en>Pipe files to the standard output.
+Pipe files to the standard output.
+
+@c <en>@item -R
+@item -R
+@c <en>Update directories recursively (default). @xref{Recursive
+@c <en>behavior}.
+Update directories recursively (default).
+@xref{Comportamento recursivo}.
+
+@c <en>@item -r rev
+@item -r rev
+@c <en>Retrieve revision/tag @var{rev}. This option is sticky,
+@c <en>and implies @samp{-P}.
+@c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
+Retrieve revision/tag @var{rev}. This option is sticky,
+and implies @samp{-P}.
+See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+@end table
+
+@need 800
+These special options are also available with
+@code{update}.
+
+@table @code
+@c <en>@item -A
+@item -A
+@c <en>Reset any sticky tags, dates, or @samp{-k} options.
+@c <en>See @ref{Sticky tags}, for more information on sticky tags/dates.
+Reset any sticky tags, dates, or @samp{-k} options.
+See @ref{Etiquetas adesivas}, for more information on sticky tags/dates.
+
+@item -C
+Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+@file{.#@var{file}.@var{revision}}, however).
+
+@item -d
+Create any directories that exist in the repository if
+they're missing from the working directory. Normally,
+@code{update} acts only on directories and files that
+were already enrolled in your working directory.
+
+This is useful for updating directories that were
+created in the repository since the initial checkout;
+but it has an unfortunate side effect. If you
+deliberately avoided certain directories in the
+repository when you created your working directory
+(either through use of a module name or by listing
+explicitly the files and directories you wanted on the
+command line), then updating with @samp{-d} will create
+those directories, which may not be what you want.
+
+@item -I @var{name}
+Ignore files whose names match @var{name} (in your
+working directory) during the update. You can specify
+@samp{-I} more than once on the command line to specify
+several files to ignore. Use @samp{-I !} to avoid
+ignoring any files at all. @xref{cvsignore}, for other
+ways to make @sc{cvs} ignore some files.
+
+@item -W@var{spec}
+Specify file names that should be filtered during
+update. You can use this option repeatedly.
+
+@var{spec} can be a file name pattern of the same type
+that you can specify in the @file{.cvswrappers}
+file. @xref{Wrappers}.
+
+@item -j@var{revision}
+With two @samp{-j} options, merge changes from the
+revision specified with the first @samp{-j} option to
+the revision specified with the second @samp{j} option,
+into the working directory.
+
+With one @samp{-j} option, merge changes from the
+ancestor revision to the revision specified with the
+@samp{-j} option, into the working directory. The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the @samp{-j} option.
+
+@c <en>Note that using a single @samp{-j @var{tagname}} option rather than
+@c <en>@samp{-j @var{branchname}} to merge changes from a branch will
+@c <en>often not remove files which were removed on the branch.
+@c <en>@xref{Merging adds and removals}, for more.
+Note that using a single @samp{-j @var{tagname}} option rather than
+@samp{-j @var{branchname}} to merge changes from a branch will
+often not remove files which were removed on the branch.
+@xref{Mesclando adicionados e removidos}, for more.
+
+In addition, each @samp{-j} option can contain an optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date. An optional date is specified by adding a colon
+(:) to the tag:
+@samp{-j@var{Symbolic_Tag}:@var{Date_Specifier}}.
+
+@c <en>@xref{Branching and merging}.
+@xref{Ramificando e mesclando}.
+
+@end table
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@c <en>@node update output
+@node update output
+@c <en>@appendixsubsec update output
+@appendixsubsec update output
+
+@c <en>@code{update} and @code{checkout} keep you informed of
+@c <en>their progress by printing a line for each file, preceded
+@c <en>by one character indicating the status of the file:
+O @code{update} e o @code{checkout} mantém você
+informado de seu progresso escrevendo uma linha para
+cada arquivo, iniciando com um caractere que indica o
+status do arquivo:
+
+@table @code
+@c <en>@item U @var{file}
+@item U @var{arquivo}
+@c <en>The file was brought up to date with respect to the
+@c <en>repository. This is done for any file that exists in
+@c <en>the repository but not in your source, and for files
+@c <en>that you haven't changed but are not the most recent
+@c <en>versions available in the repository.
+O arquivo foi atualizado com base no repositório. Isto
+é feito para qualquer arquivo que exista no
+repositório mas não esteja nos seus fontes (no seu
+diretório da trabalho) e para arquivos que você não
+mudou mas não estão na versão mais recente que está
+disponível no repositório.
+
+@c <en>@item P @var{file}
+@item P @var{arquivo}
+@c <en>Like @samp{U}, but the @sc{cvs} server sends a patch instead of an entire
+@c <en>file. This accomplishes the same thing as @samp{U} using less bandwidth.
+
+Como o @samp{U}, mas o servidor @sc{cvs} manda um patch
+(remendo) ao invés de mandar um arquivo inteiro. Tem o
+mesmo resultado que @samp{U} usando menos largura de banda.
+
+@c <en>@item A @var{file}
+@item A @var{arquivo}
+@c <en>The file has been added to your private copy of the
+@c <en>sources, and will be added to the source repository
+@c <en>when you run @code{commit} on the file. This is a
+@c <en>reminder to you that the file needs to be committed.
+O arquivo foi adicionado a sua cópia local dos fontes,
+e vai ser adicionado ao repositório quando você rodar o
+@code{commit} no arquivo. Funciona como um lembrete de
+que o arquivo precisa ser ???commitado???.
+
+@c <en>@item R @var{file}
+@item R @var{arquivo}
+@c <en>The file has been removed from your private copy of the
+@c <en>sources, and will be removed from the source repository
+@c <en>when you run @code{commit} on the file. This is a
+@c <en>reminder to you that the file needs to be committed.
+O arquivo foi removido de sua cópia local dos fontes, e
+será removido do repositório quando você executar um
+@code{commit} no arquivo. Funciona como um lembrete de
+que o arquivo precisa ser ???commitado???.
+
+@c <en>@item M @var{file}
+@item M @var{arquivo}
+@c <en>The file is modified in your working directory.
+O arquivo está modificado no seu diretório de trabalho.
+
+@c <en>@samp{M} can indicate one of two states for a file
+@c <en>you're working on: either there were no modifications
+@c <en>to the same file in the repository, so that your file
+@c <en>remains as you last saw it; or there were modifications
+@c <en>in the repository as well as in your copy, but they
+@c <en>were merged successfully, without conflict, in your
+@c <en>working directory.
+O @samp{M} pode indicar um dos dois estados para um
+arquivo no qual você esteja trabalhando: ou não existem
+modificações do arquivo equivalente no repositório, de forma
+que seu arquivo continua da forma como você o deixou;
+ou existem modificações no repositório assim como na
+sua cópia, mas elas foram mescladas com sucesso, sem
+conflito, no seu diretório de trabalho.
+
+@c <en>@sc{cvs} will print some messages if it merges your work,
+@c <en>and a backup copy of your working file (as it looked
+@c <en>before you ran @code{update}) will be made. The exact
+@c <en>name of that file is printed while @code{update} runs.
+O @sc{cvs} vai escrever algumas mensagens se ele
+mesclar seu trabalho, e colocará uma cópia de segurança no seu
+diretório de trabalho (na forma que estava antes de
+executar o @code{update}). O nome exato do arquivo
+será escrito quando o @code{update} rodar.
+
+@c <en>@item C @var{file}
+@item C @var{arquivo}
+@c <en>@cindex .# files
+@cindex arquivos .#
+@c <en>@cindex __ files (VMS)
+@cindex __ arquivos (VMS)
+@c <en>A conflict was detected while trying to merge your
+@c <en>changes to @var{file} with changes from the source
+@c <en>repository. @var{file} (the copy in your working
+@c <en>directory) is now the result of attempting to merge
+@c <en>the two revisions; an unmodified copy of your file
+@c <en>is also in your working directory, with the name
+@c <en>@file{.#@var{file}.@var{revision}} where @var{revision}
+@c <en>is the revision that your modified file started
+@c <en>from. Resolve the conflict as described in
+@c <en>@ref{Conflicts example}.
+Um conflito foi detectado quando se tentava mesclar
+suas mudanças no @var{arquivo} com as mudanças no
+repositório. O @var{arquivo} (a cópia no seu diretório
+de trabalho) é agora o resultado da tentativa de
+mesclar as duas revisões; uma cópia inalterada do
+arquivo também está no diretório de trabalho, com o
+nome de @file{.#@var{arquivo}.@var{revisão}} onde
+@var{revisão} é a revisão de onde o seu arquivo
+modificado saiu. Resolva o conflito como é mostrado em
+@ref{Exemplo de conflitos}.
+@c "some systems" as in out-of-the-box OSes? Not as
+@c far as I know. We need to advise sysadmins as well
+@c as users how to set up this kind of purge, if that is
+@c what they want.
+@c We also might want to think about cleaner solutions,
+@c like having CVS remove the .# file once the conflict
+@c has been resolved or something like that.
+@c <en>(Note that some systems automatically purge
+@c <en>files that begin with @file{.#} if they have not been
+@c <en>accessed for a few days. If you intend to keep a copy
+@c <en>of your original file, it is a very good idea to rename
+@c <en>it.) Under @sc{vms}, the file name starts with
+@c <en>@file{__} rather than @file{.#}.
+(Note que alguns sistemas eliminam automaticamente
+arquivos que começam com @file{.#} se eles não são
+acessados por alguns dias. Se você pretende manter uma
+cópia do arquivo original, é um ótima idéia
+renomeá-lo.) No @sc{vms}, o nome do arquivo começa com
+@file{__} ao invés de @file{.#}.
+
+@c <en>@item ? @var{file}
+@item ? @var{arquivo}
+@c <en>@var{file} is in your working directory, but does not
+@c <en>correspond to anything in the source repository, and is
+@c <en>not in the list of files for @sc{cvs} to ignore (see the
+@c <en>description of the @samp{-I} option, and
+@c <en>@pxref{cvsignore}).
+O @var{arquivo} is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for @sc{cvs} to ignore (see the
+description of the @samp{-I} option, and
+@pxref{cvsignore}).
+@end table
+
+@c <en>@node Invoking CVS
+@node Chamando o CVS
+@c <en>@appendix Quick reference to CVS commands
+@appendix Quick reference to CVS commands
+@c <en>@cindex Command reference
+@cindex Command reference
+@c <en>@cindex Reference, commands
+@cindex Reference, commands
+@c <en>@cindex Invoking CVS
+@cindex Chamando o CVS
+
+@c <en>This appendix describes how to invoke @sc{cvs}, with
+@c <en>references to where each command or feature is
+@c <en>described in detail. For other references run the
+@c <en>@code{cvs --help} command, or see @ref{Index}.
+This appendix describes how to invoke @sc{cvs}, with
+references to where each command or feature is
+described in detail. For other references run the
+@code{cvs --help} command, or see @ref{Indice}.
+
+@c <en>A @sc{cvs} command looks like:
+A @sc{cvs} command looks like:
+
+@example
+cvs [ @var{global_options} ] @var{command} [ @var{command_options} ] [ @var{command_args} ]
+@end example
+
+Global options:
+
+@table @code
+@c <en>@item --allow-root=@var{rootdir}
+@item --allow-root=@var{rootdir}
+@c <en>Specify legal @sc{cvsroot} directory (server only) (not
+@c <en>in @sc{cvs} 1.9 and older). See @ref{Password
+@c <en>authentication server}.
+Specify legal @sc{cvsroot} directory (server only) (not
+in @sc{cvs} 1.9 and older). See
+@ref{Servidor de autenticação por senha}.
+
+@c <en>@item -a
+@item -a
+@c <en>Authenticate all communication (client only) (not in @sc{cvs}
+@c <en>1.9 and older). See @ref{Global options}.
+Authenticate all communication (client only) (not in @sc{cvs}
+1.9 and older). See @ref{Opções globais}.
+
+@c <en>@item -b
+@item -b
+@c <en>Specify RCS location (@sc{cvs} 1.9 and older). See
+@c <en>@ref{Global options}.
+Specify RCS location (@sc{cvs} 1.9 and older). See
+@ref{Opções globais}.
+
+@c <en>@item -d @var{root}
+@item -d @var{root}
+@c <en>Specify the @sc{cvsroot}. See @ref{Repository}.
+Specify the @sc{cvsroot}. See @ref{Repositório}.
+
+@c <en>@item -e @var{editor}
+@item -e @var{editor}
+@c <en>Edit messages with @var{editor}. See @ref{Committing
+@c <en>your changes}.
+Edit messages with @var{editor}. See
+@ref{Efetivando suas alterações}.
+
+@c <en>@item -f
+@item -f
+@c <en>Do not read the @file{~/.cvsrc} file. See @ref{Global
+@c <en>options}.
+Do not read the @file{~/.cvsrc} file. See @ref{Opções globais}.
+
+@c <en>@item -H
+@item -H
+@c <en>@itemx --help
+@itemx --help
+@c <en>Print a help message. See @ref{Global options}.
+Print a help message. See @ref{Opções globais}.
+
+@c <en>@item -l
+@item -l
+@c <en>Do not log in @file{$CVSROOT/CVSROOT/history} file. See @ref{Global
+@c <en>options}.
+Do not log in @file{$CVSROOT/CVSROOT/history} file. See
+@ref{Opções globais}.
+
+@c <en>@item -n
+@item -n
+@c <en>Do not change any files. See @ref{Global options}.
+Do not change any files. See @ref{Opções globais}.
+
+@c <en>@item -Q
+@item -Q
+@c <en>Be really quiet. See @ref{Global options}.
+Be really quiet. See @ref{Opções globais}.
+
+@c <en>@item -q
+@item -q
+@c <en>Be somewhat quiet. See @ref{Global options}.
+Be somewhat quiet. See @ref{Opções globais}.
+
+@c <en>@item -r
+@item -r
+@c <en>Make new working files read-only. See @ref{Global options}.
+Make new working files read-only. See @ref{Opções globais}.
+
+@c <en>@item -s @var{variable}=@var{value}
+@item -s @var{variable}=@var{value}
+@c <en>Set a user variable. See @ref{Variables}.
+Set a user variable. See @ref{Variables}.
+
+@c <en>@item -T @var{tempdir}
+@item -T @var{tempdir}
+@c <en>Put temporary files in @var{tempdir}. See @ref{Global
+@c <en>options}.
+Put temporary files in @var{tempdir}. See
+@ref{Opções globais}.
+
+@c <en>@item -t
+@item -t
+@c <en>Trace @sc{cvs} execution. See @ref{Global options}.
+Trace @sc{cvs} execution. See @ref{Opções globais}.
+
+@c <en>@item -v
+@item -v
+@c <en>@item --version
+@item --version
+@c <en>Display version and copyright information for @sc{cvs}.
+Display version and copyright information for @sc{cvs}.
+
+@c <en>@item -w
+@item -w
+@c <en>Make new working files read-write. See @ref{Global
+@c <en>options}.
+Make new working files read-write. See @ref{Opções globais}.
+
+@c <en>@item -x
+@item -x
+@c <en>Encrypt all communication (client only).
+@c <en>See @ref{Global options}.
+Encrypt all communication (client only).
+See @ref{Opções globais}.
+
+@c <en>@item -z @var{gzip-level}
+@item -z @var{gzip-level}
+@c <en>@cindex Compression
+@cindex Compression
+@c <en>@cindex Gzip
+@cindex Gzip
+@c <en>Set the compression level (client only).
+@c <en>See @ref{Global options}.
+Set the compression level (client only).
+See @ref{Opções globais}.
+@end table
+
+@c <en>Keyword expansion modes (@pxref{Substitution modes}):
+Keyword expansion modes (@pxref{Modos de substituição}):
+
+@example
+-kkv $@splitrcskeyword{}Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp $
+-kkvl $@splitrcskeyword{}Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+-kk $@splitrcskeyword{}Id$
+-kv file1,v 1.1 1993/12/09 03:21:13 joe Exp
+-ko @i{no expansion}
+-kb @i{no expansion, file is binary}
+@end example
+
+@c <en>Keywords (@pxref{Keyword list}):
+Keywords (@pxref{Lista de palavras-chave}):
+
+@example
+$@splitrcskeyword{}Author: joe $
+$@splitrcskeyword{}Date: 1993/12/09 03:21:13 $
+$@splitrcskeyword{}CVSHeader: files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$@splitrcskeyword{}Header: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$@splitrcskeyword{}Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+$@splitrcskeyword{}Locker: harry $
+$@splitrcskeyword{}Name: snapshot_1_14 $
+$@splitrcskeyword{}RCSfile: file1,v $
+$@splitrcskeyword{}Revision: 1.1 $
+$@splitrcskeyword{}Source: /home/files/file1,v $
+$@splitrcskeyword{}State: Exp $
+$@splitrcskeyword{}Log: file1,v $
+Revision 1.1 1993/12/09 03:30:17 joe
+Initial revision
+
+@end example
+
+@c The idea behind this table is that we want each item
+@c to be a sentence or two at most. Preferably a
+@c single line.
+@c
+@c In some cases refs to "foo options" are just to get
+@c this thing written quickly, not because the "foo
+@c options" node is really the best place to point.
+Commands, command options, and command arguments:
+
+@table @code
+@c ------------------------------------------------------------
+@c <en>@item add [@var{options}] [@var{files}@dots{}]
+@item add [@var{options}] [@var{files}@dots{}]
+@c <en>Add a new file/directory. See @ref{Adding files}.
+Add a new file/directory. See @ref{Adicionando arquivos}.
+
+@table @code
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Set keyword expansion.
+Set keyword expansion.
+
+@c <en>@item -m @var{msg}
+@item -m @var{msg}
+@c <en>Set file description.
+Set file description.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item admin [@var{options}] [@var{files}@dots{}]
+@item admin [@var{options}] [@var{files}@dots{}]
+@c <en>Administration of history files in the repository. See
+@c <en>@ref{admin}.
+Administration of history files in the repository. See
+@ref{admin}.
+@c This list omits those options which are not
+@c documented as being useful with CVS. That might be
+@c a mistake...
+
+@table @code
+@c <en>@item -b[@var{rev}]
+@item -b[@var{rev}]
+@c <en>Set default branch. See @ref{Reverting local changes}.
+Set default branch. See @ref{Reverting local changes}.
+
+@c <en>@item -c@var{string}
+@item -c@var{string}
+@c <en>Set comment leader.
+Set comment leader.
+
+@c <en>@item -k@var{subst}
+@item -k@var{subst}
+@c <en>Set keyword substitution. See @ref{Keyword
+@c <en>substitution}.
+Set keyword substitution. See @ref{Substituição de palavra-chave}.
+
+@c <en>@item -l[@var{rev}]
+@item -l[@var{rev}]
+@c <en>Lock revision @var{rev}, or latest revision.
+Lock revision @var{rev}, or latest revision.
+
+@c <en>@item -m@var{rev}:@var{msg}
+@item -m@var{rev}:@var{msg}
+@c <en>Replace the log message of revision @var{rev} with
+@c <en>@var{msg}.
+Replace the log message of revision @var{rev} with
+@var{msg}.
+
+@c <en>@item -o@var{range}
+@item -o@var{range}
+@c <en>Delete revisions from the repository. See
+@c <en>@ref{admin options}.
+Delete revisions from the repository. See
+@ref{admin options}.
+
+@c <en>@item -q
+@item -q
+@c <en>Run quietly; do not print diagnostics.
+Run quietly; do not print diagnostics.
+
+@c <en>@item -s@var{state}[:@var{rev}]
+@item -s@var{state}[:@var{rev}]
+@c <en>Set the state.
+Set the state.
+
+@c Does not work for client/server CVS
+@c <en>@item -t
+@item -t
+@c <en>Set file description from standard input.
+Set file description from standard input.
+
+@c <en>@item -t@var{file}
+@item -t@var{file}
+@c <en>Set file description from @var{file}.
+Set file description from @var{file}.
+
+@c <en>@item -t-@var{string}
+@item -t-@var{string}
+@c <en>Set file description to @var{string}.
+Set file description to @var{string}.
+
+@c <en>@item -u[@var{rev}]
+@item -u[@var{rev}]
+@c <en>Unlock revision @var{rev}, or latest revision.
+Unlock revision @var{rev}, or latest revision.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item annotate [@var{options}] [@var{files}@dots{}]
+@item annotate [@var{options}] [@var{files}@dots{}]
+@c <en>Show last revision where each line was modified. See
+@c <en>@ref{annotate}.
+Show last revision where each line was modified. See
+@ref{annotate}.
+
+@table @code
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Annotate the most recent revision no later than
+@c <en>@var{date}. See @ref{Common options}.
+Annotate the most recent revision no later than
+@var{date}. See @ref{Opções comuns}.
+
+@c <en>@item -F
+@item -F
+@c <en>Force annotation of binary files. (Without this option,
+@c <en>binary files are skipped with a message.)
+Force annotation of binary files. (Without this option,
+binary files are skipped with a message.)
+
+@c <en>@item -f
+@item -f
+@c <en>Use head revision if tag/date not found. See
+@c <en>@ref{Common options}.
+Use head revision if tag/date not found. See
+@ref{Opções comuns}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. @xref{Recursive behavior}.
+Local; run only in current working directory. @xref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default).
+@xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{tag}
+@item -r @var{tag}
+@c <en>Annotate revision @var{tag}. See @ref{Common options}.
+Annotate revision @var{tag}. See @ref{Opções comuns}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item checkout [@var{options}] @var{modules}@dots{}
+@item checkout [@var{options}] @var{modules}@dots{}
+@c <en>Get a copy of the sources. See @ref{checkout}.
+Get a copy of the sources. See @ref{checkout}.
+
+@table @code
+@c <en>@item -A
+@item -A
+@c <en>Reset any sticky tags/date/options. See @ref{Sticky
+@c <en>tags} and @ref{Keyword substitution}.
+Reset any sticky tags/date/options. See @ref{Etiquetas adesivas}
+and @ref{Substituição de palavra-chave}.
+
+@c <en>@item -c
+@item -c
+@c <en>Output the module database. See @ref{checkout options}.
+Output the module database. See @ref{checkout options}.
+
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Check out revisions as of @var{date} (is sticky). See
+@c <en>@ref{Common options}.
+Check out revisions as of @var{date} (is sticky). See
+@ref{Opções comuns}.
+
+@c <en>@item -d @var{dir}
+@item -d @var{dir}
+@c <en>Check out into @var{dir}. See @ref{checkout options}.
+Check out into @var{dir}. See @ref{checkout options}.
+
+@c <en>@item -f
+@item -f
+@c <en>Use head revision if tag/date not found. See
+@c <en>@ref{Common options}.
+Use head revision if tag/date not found. See
+@ref{Opções comuns}.
+
+@c Probably want to use rev1/rev2 style like for diff
+@c -r. Here and in on-line help.
+@c <en>@item -j @var{rev}
+@item -j @var{rev}
+@c <en>Merge in changes. See @ref{checkout options}.
+Merge in changes. See @ref{checkout options}.
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Use @var{kflag} keyword expansion. See
+@c <en>@ref{Substitution modes}.
+Use @var{kflag} keyword expansion. See
+@ref{Modos de substituição}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. @xref{Recursive behavior}.
+Local; run only in current working directory. @xref{Comportamento recursivo}.
+
+@c <en>@item -N
+@item -N
+@c <en>Don't ``shorten'' module paths if -d specified. See
+@c <en>@ref{checkout options}.
+Don't ``shorten'' module paths if -d specified. See
+@ref{checkout options}.
+
+@c <en>@item -n
+@item -n
+@c <en>Do not run module program (if any). See @ref{checkout options}.
+Do not run module program (if any). See @ref{checkout options}.
+
+@c <en>@item -P
+@item -P
+@c <en>Prune empty directories. See @ref{Moving directories}.
+Prune empty directories. See @ref{Movendo diretórios}.
+
+@c <en>@item -p
+@item -p
+@c <en>Check out files to standard output (avoids
+@c <en>stickiness). See @ref{checkout options}.
+Check out files to standard output (avoids
+stickiness). See @ref{checkout options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{tag}
+@item -r @var{tag}
+@c <en>Checkout revision @var{tag} (is sticky). See @ref{Common options}.
+Checkout revision @var{tag} (is sticky). See @ref{Opções comuns}.
+
+@c <en>@item -s
+@item -s
+@c <en>Like -c, but include module status. See @ref{checkout options}.
+Like -c, but include module status. See @ref{checkout options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item commit [@var{options}] [@var{files}@dots{}]
+@item commit [@var{options}] [@var{files}@dots{}]
+@c <en>Check changes into the repository. See @ref{commit}.
+Check changes into the repository. See @ref{commit}.
+
+@table @code
+@c <en>@item -F @var{file}
+@item -F @var{file}
+@c <en>Read log message from @var{file}. See @ref{commit options}.
+Read log message from @var{file}. See @ref{commit options}.
+
+@c <en>@item -f
+@item -f
+@c What is this "disables recursion"? It is from the
+@c on-line help; is it documented in this manual?
+@c <en>Force the file to be committed; disables recursion.
+@c <en>See @ref{commit options}.
+Force the file to be committed; disables recursion.
+See @ref{commit options}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -m @var{msg}
+@item -m @var{msg}
+@c <en>Use @var{msg} as log message. See @ref{commit options}.
+Use @var{msg} as log message. See @ref{commit options}.
+
+@c <en>@item -n
+@item -n
+@c <en>Do not run module program (if any). See @ref{commit options}.
+Do not run module program (if any). See @ref{commit options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{rev}
+@item -r @var{rev}
+@c <en>Commit to @var{rev}. See @ref{commit options}.
+Commit to @var{rev}. See @ref{commit options}.
+@c FIXME: should be dragging over text from
+@c commit options, especially if it can be cleaned up
+@c and made concise enough.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item diff [@var{options}] [@var{files}@dots{}]
+@item diff [@var{options}] [@var{files}@dots{}]
+@c <en>Show differences between revisions. See @ref{diff}.
+@c <en>In addition to the options shown below, accepts a wide
+@c <en>variety of options to control output style, for example
+@c <en>@samp{-c} for context diffs.
+Show differences between revisions. See @ref{diff}.
+In addition to the options shown below, accepts a wide
+variety of options to control output style, for example
+@samp{-c} for context diffs.
+
+@table @code
+@c <en>@item -D @var{date1}
+@item -D @var{date1}
+@c <en>Diff revision for date against working file. See
+@c <en>@ref{diff options}.
+Diff revision for date against working file. See
+@ref{diff options}.
+
+@c <en>@item -D @var{date2}
+@item -D @var{date2}
+@c <en>Diff @var{rev1}/@var{date1} against @var{date2}. See
+@c <en>@ref{diff options}.
+Diff @var{rev1}/@var{date1} against @var{date2}. See
+@ref{diff options}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -N
+@item -N
+@c <en>Include diffs for added and removed files. See
+@c <en>@ref{diff options}.
+Include diffs for added and removed files. See
+@ref{diff options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{rev1}
+@item -r @var{rev1}
+@c <en>Diff revision for @var{rev1} against working file. See
+@c <en>@ref{diff options}.
+Diff revision for @var{rev1} against working file. See
+@ref{diff options}.
+
+@c <en>@item -r @var{rev2}
+@item -r @var{rev2}
+@c <en>Diff @var{rev1}/@var{date1} against @var{rev2}. See @ref{diff options}.
+Diff @var{rev1}/@var{date1} against @var{rev2}. See @ref{diff options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item edit [@var{options}] [@var{files}@dots{}]
+@item edit [@var{options}] [@var{files}@dots{}]
+@c <en>Get ready to edit a watched file. See @ref{Editing files}.
+Get ready to edit a watched file. See @ref{Editando arquivos}.
+
+@table @code
+@c <en>@item -a @var{actions}
+@item -a @var{actions}
+@c <en>Specify actions for temporary watch, where
+@c <en>@var{actions} is @code{edit}, @code{unedit},
+@c <en>@code{commit}, @code{all}, or @code{none}. See
+@c <en>@ref{Editing files}.
+Specify actions for temporary watch, where
+@var{actions} is @code{edit}, @code{unedit},
+@code{commit}, @code{all}, or @code{none}. See
+@ref{Editando arquivos}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item editors [@var{options}] [@var{files}@dots{}]
+@item editors [@var{options}] [@var{files}@dots{}]
+@c <en>See who is editing a watched file. See @ref{Watch information}.
+See who is editing a watched file. See @ref{Informações de ???Watch???}.
+
+@table @code
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item export [@var{options}] @var{modules}@dots{}
+@item export [@var{options}] @var{modules}@dots{}
+@c <en>Export files from @sc{cvs}. See @ref{export}.
+Export files from @sc{cvs}. See @ref{export}.
+
+@table @code
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Check out revisions as of @var{date}. See
+@c <en>@ref{Common options}.
+Check out revisions as of @var{date}. See
+@ref{Opções comuns}.
+
+@c <en>@item -d @var{dir}
+@item -d @var{dir}
+@c <en>Check out into @var{dir}. See @ref{export options}.
+Check out into @var{dir}. See @ref{export options}.
+
+@c <en>@item -f
+@item -f
+@c <en>Use head revision if tag/date not found. See
+@c <en>@ref{Common options}.
+Use head revision if tag/date not found. See
+@ref{Opções comuns}.
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Use @var{kflag} keyword expansion. See
+@c <en>@ref{Substitution modes}.
+Use @var{kflag} keyword expansion. See
+@ref{Modos de substituição}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. @xref{Recursive behavior}.
+Local; run only in current working directory. @xref{Comportamento recursivo}.
+
+@c <en>@item -N
+@item -N
+@c <en>Don't ``shorten'' module paths if -d specified. See
+@c <en>@ref{export options}.
+Don't ``shorten'' module paths if -d specified. See
+@ref{export options}.
+
+@c <en>@item -n
+@item -n
+@c <en>Do not run module program (if any). See @ref{export options}.
+Do not run module program (if any). See @ref{export options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{tag}
+@item -r @var{tag}
+@c <en>Checkout revision @var{tag}. See @ref{Common options}.
+Checkout revision @var{tag}. See @ref{Opções comuns}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item history [@var{options}] [@var{files}@dots{}]
+@item history [@var{options}] [@var{files}@dots{}]
+@c <en>Show repository access history. See @ref{history}.
+Show repository access history. See @ref{history}.
+
+@table @code
+@c <en>@item -a
+@item -a
+@c <en>All users (default is self). See @ref{history options}.
+All users (default is self). See @ref{history options}.
+
+@c <en>@item -b @var{str}
+@item -b @var{str}
+@c <en>Back to record with @var{str} in module/file/repos
+@c <en>field. See @ref{history options}.
+Back to record with @var{str} in module/file/repos
+field. See @ref{history options}.
+
+@c <en>@item -c
+@item -c
+@c <en>Report on committed (modified) files. See @ref{history options}.
+Report on committed (modified) files. See @ref{history options}.
+
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Since @var{date}. See @ref{history options}.
+Since @var{date}. See @ref{history options}.
+
+@c <en>@item -e
+@item -e
+@c <en>Report on all record types. See @ref{history options}.
+Report on all record types. See @ref{history options}.
+
+@c <en>@item -l
+@item -l
+@c <en>Last modified (committed or modified report). See @ref{history options}.
+Last modified (committed or modified report). See @ref{history options}.
+
+@c <en>@item -m @var{module}
+@item -m @var{module}
+@c <en>Report on @var{module} (repeatable). See @ref{history options}.
+Report on @var{module} (repeatable). See @ref{history options}.
+
+@c <en>@item -n @var{module}
+@item -n @var{module}
+@c <en>In @var{module}. See @ref{history options}.
+In @var{module}. See @ref{history options}.
+
+@c <en>@item -o
+@item -o
+@c <en>Report on checked out modules. See @ref{history options}.
+Report on checked out modules. See @ref{history options}.
+
+@c <en>@item -p @var{repository}
+@item -p @var{repository}
+@c <en>In @var{repository}. See @ref{history options}.
+In @var{repository}. See @ref{history options}.
+
+@c <en>@item -r @var{rev}
+@item -r @var{rev}
+@c <en>Since revision @var{rev}. See @ref{history options}.
+Since revision @var{rev}. See @ref{history options}.
+
+@c <en>@item -T
+@item -T
+@c What the @#$@# is a TAG? Same as a tag? This
+@c wording is also in the online-line help.
+@c <en>Produce report on all TAGs. See @ref{history options}.
+Produce report on all TAGs. See @ref{history options}.
+
+@c <en>@item -t @var{tag}
+@item -t @var{tag}
+@c <en>Since tag record placed in history file (by anyone).
+@c <en>See @ref{history options}.
+Since tag record placed in history file (by anyone).
+See @ref{history options}.
+
+@c <en>@item -u @var{user}
+@item -u @var{user}
+@c <en>For user @var{user} (repeatable). See @ref{history options}.
+For user @var{user} (repeatable). See @ref{history options}.
+
+@c <en>@item -w
+@item -w
+@c <en>Working directory must match. See @ref{history options}.
+Working directory must match. See @ref{history options}.
+
+@c <en>@item -x @var{types}
+@item -x @var{types}
+@c <en>Report on @var{types}, one or more of
+@c <en>@code{TOEFWUPCGMAR}. See @ref{history options}.
+Report on @var{types}, one or more of
+@code{TOEFWUPCGMAR}. See @ref{history options}.
+
+@c <en>@item -z @var{zone}
+@item -z @var{zone}
+@c <en>Output for time zone @var{zone}. See @ref{history options}.
+Output for time zone @var{zone}. See @ref{history options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item import [@var{options}] @var{repository} @var{vendor-tag} @var{release-tags}@dots{}
+@item import [@var{options}] @var{repository} @var{vendor-tag} @var{release-tags}@dots{}
+@c <en>Import files into @sc{cvs}, using vendor branches. See
+@c <en>@ref{import}.
+Import files into @sc{cvs}, using vendor branches. See
+@ref{import}.
+
+@table @code
+@c <en>@item -b @var{bra}
+@item -b @var{bra}
+@c <en>Import to vendor branch @var{bra}. See
+@c <en>@ref{Multiple vendor branches}.
+Import to vendor branch @var{bra}. See
+@ref{Ramos de fornecedor múltiplos}.
+
+@c <en>@item -d
+@item -d
+@c <en>Use the file's modification time as the time of
+@c <en>import. See @ref{import options}.
+Use the file's modification time as the time of
+import. See @ref{import options}.
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Set default keyword substitution mode. See
+@c <en>@ref{import options}.
+Set default keyword substitution mode. See
+@ref{import options}.
+
+@c <en>@item -m @var{msg}
+@item -m @var{msg}
+@c <en>Use @var{msg} for log message. See
+@c <en>@ref{import options}.
+Use @var{msg} for log message. See
+@ref{import options}.
+
+@c <en>@item -I @var{ign}
+@item -I @var{ign}
+@c <en>More files to ignore (! to reset). See
+@c <en>@ref{import options}.
+More files to ignore (! to reset). See
+@ref{import options}.
+
+@c <en>@item -W @var{spec}
+@item -W @var{spec}
+@c <en>More wrappers. See @ref{import options}.
+More wrappers. See @ref{import options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item init
+@item init
+@c <en>Create a @sc{cvs} repository if it doesn't exist. See
+@c <en>@ref{Creating a repository}.
+Create a @sc{cvs} repository if it doesn't exist. See
+@ref{Criando um repositório}.
+
+@c ------------------------------------------------------------
+@c <en>@item kserver
+@item kserver
+@c <en>Kerberos authenticated server.
+@c <en>See @ref{Kerberos authenticated}.
+Kerberos authenticated server.
+See @ref{Autenticação kerberos}.
+
+@c ------------------------------------------------------------
+@c <en>@item log [@var{options}] [@var{files}@dots{}]
+@item log [@var{options}] [@var{files}@dots{}]
+@c <en>Print out history information for files. See @ref{log}.
+Print out history information for files. See @ref{log}.
+
+@table @code
+@c <en>@item -b
+@item -b
+@c <en>Only list revisions on the default branch. See @ref{log options}.
+Only list revisions on the default branch. See @ref{log options}.
+
+@c <en>@item -d @var{dates}
+@item -d @var{dates}
+@c <en>Specify dates (@var{d1}<@var{d2} for range, @var{d} for
+@c <en>latest before). See @ref{log options}.
+Specify dates (@var{d1}<@var{d2} for range, @var{d} for
+latest before). See @ref{log options}.
+
+@c <en>@item -h
+@item -h
+@c <en>Only print header. See @ref{log options}.
+Only print header. See @ref{log options}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -N
+@item -N
+@c <en>Do not list tags. See @ref{log options}.
+Do not list tags. See @ref{log options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Only print name of RCS file. See @ref{log options}.
+Only print name of RCS file. See @ref{log options}.
+
+@c <en>@item -r@var{revs}
+@item -r@var{revs}
+@c <en>Only list revisions @var{revs}. See @ref{log options}.
+Only list revisions @var{revs}. See @ref{log options}.
+
+@c <en>@item -s @var{states}
+@item -s @var{states}
+@c <en>Only list revisions with specified states. See @ref{log options}.
+Only list revisions with specified states. See @ref{log options}.
+
+@c <en>@item -t
+@item -t
+@c <en>Only print header and descriptive text. See @ref{log
+@c <en>options}.
+Only print header and descriptive text. See @ref{log
+options}.
+
+@c <en>@item -w@var{logins}
+@item -w@var{logins}
+@c <en>Only list revisions checked in by specified logins. See @ref{log options}.
+Only list revisions checked in by specified logins. See @ref{log options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item login
+@item login
+@c <en>Prompt for password for authenticating server. See
+@c <en>@ref{Password authentication client}.
+Pede por uma senha para o servidor de autenticação. Veja em
+@ref{Cliente de autenticação por senha}.
+
+@c ------------------------------------------------------------
+@c <en>@item logout
+@item logout
+@c <en>Remove stored password for authenticating server. See
+@c <en>@ref{Password authentication client}.
+Remove senhas armazenadas para a autenticação no servidor. Veja em
+@ref{Cliente de autenticação por senha}.
+
+@c ------------------------------------------------------------
+@c <en>@item pserver
+@item pserver
+@c <en>Password authenticated server.
+@c <en>See @ref{Password authentication server}.
+Password authenticated server.
+See @ref{Servidor de autenticação por senha}.
+
+@c ------------------------------------------------------------
+@c <en>@item rannotate [@var{options}] [@var{modules}@dots{}]
+@item rannotate [@var{options}] [@var{modules}@dots{}]
+@c <en>Show last revision where each line was modified. See
+@c <en>@ref{annotate}.
+Show last revision where each line was modified. See
+@ref{annotate}.
+
+@table @code
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Annotate the most recent revision no later than
+@c <en>@var{date}. See @ref{Common options}.
+Annotate the most recent revision no later than
+@var{date}. See @ref{Opções comuns}.
+
+@c <en>@item -F
+@item -F
+@c <en>Force annotation of binary files. (Without this option,
+@c <en>binary files are skipped with a message.)
+Force annotation of binary files. (Without this option,
+binary files are skipped with a message.)
+
+@c <en>@item -f
+@item -f
+@c <en>Use head revision if tag/date not found. See
+@c <en>@ref{Common options}.
+Use head revision if tag/date not found. See
+@ref{Opções comuns}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. @xref{Recursive behavior}.
+Local; run only in current working directory. @xref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{tag}
+@item -r @var{tag}
+@c <en>Annotate revision @var{tag}. See @ref{Common options}.
+Annotate revision @var{tag}. See @ref{Opções comuns}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item rdiff [@var{options}] @var{modules}@dots{}
+@item rdiff [@var{options}] @var{modules}@dots{}
+@c <en>Show differences between releases. See @ref{rdiff}.
+Show differences between releases. See @ref{rdiff}.
+
+@table @code
+@c <en>@item -c
+@item -c
+@c <en>Context diff output format (default). See @ref{rdiff options}.
+Context diff output format (default). See @ref{rdiff options}.
+
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Select revisions based on @var{date}. See @ref{Common options}.
+Select revisions based on @var{date}. See @ref{Opções comuns}.
+
+@c <en>@item -f
+@item -f
+@c <en>Use head revision if tag/date not found. See
+@c <en>@ref{Common options}.
+Use head revision if tag/date not found. See
+@ref{Opções comuns}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{rev}
+@item -r @var{rev}
+@c <en>Select revisions based on @var{rev}. See @ref{Common options}.
+Select revisions based on @var{rev}. See @ref{Opções comuns}.
+
+@c <en>@item -s
+@item -s
+@c <en>Short patch - one liner per file. See @ref{rdiff options}.
+Short patch - one liner per file. See @ref{rdiff options}.
+
+@c <en>@item -t
+@item -t
+@c <en>Top two diffs - last change made to the file. See
+@c <en>@ref{diff options}.
+Top two diffs - last change made to the file. See
+@ref{diff options}.
+
+@c <en>@item -u
+@item -u
+@c <en>Unidiff output format. See @ref{rdiff options}.
+Unidiff output format. See @ref{rdiff options}.
+
+@c <en>@item -V @var{vers}
+@item -V @var{vers}
+@c <en>Use RCS Version @var{vers} for keyword expansion (obsolete). See
+@c <en>@ref{rdiff options}.
+Use RCS Version @var{vers} for keyword expansion (obsolete). See
+@ref{rdiff options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item release [@var{options}] @var{directory}
+@item release [@var{options}] @var{directory}
+@c <en>Indicate that a directory is no longer in use. See
+@c <en>@ref{release}.
+Indicate that a directory is no longer in use. See
+@ref{release}.
+
+@table @code
+@c <en>@item -d
+@item -d
+@c <en>Delete the given directory. See @ref{release options}.
+Delete the given directory. See @ref{release options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item remove [@var{options}] [@var{files}@dots{}]
+@item remove [@var{options}] [@var{files}@dots{}]
+@c <en>Remove an entry from the repository. See @ref{Removing files}.
+Remove an entry from the repository. See @ref{Removendo arquivos}.
+
+@table @code
+@c <en>@item -f
+@item -f
+@c <en>Delete the file before removing it. See @ref{Removing files}.
+Delete the file before removing it. See @ref{Removendo arquivos}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item rlog [@var{options}] [@var{files}@dots{}]
+@item rlog [@var{options}] [@var{files}@dots{}]
+@c <en>Print out history information for modules. See @ref{log}.
+Print out history information for modules. See @ref{log}.
+
+@table @code
+@c <en>@item -b
+@item -b
+@c <en>Only list revisions on the default branch. See @ref{log options}.
+Only list revisions on the default branch. See @ref{log options}.
+
+@c <en>@item -d @var{dates}
+@item -d @var{dates}
+@c <en>Specify dates (@var{d1}<@var{d2} for range, @var{d} for
+@c <en>latest before). See @ref{log options}.
+Specify dates (@var{d1}<@var{d2} for range, @var{d} for
+latest before). See @ref{log options}.
+
+@c <en>@item -h
+@item -h
+@c <en>Only print header. See @ref{log options}.
+Only print header. See @ref{log options}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -N
+@item -N
+@c <en>Do not list tags. See @ref{log options}.
+Do not list tags. See @ref{log options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Only print name of RCS file. See @ref{log options}.
+Only print name of RCS file. See @ref{log options}.
+
+@c <en>@item -r@var{revs}
+@item -r@var{revs}
+@c <en>Only list revisions @var{revs}. See @ref{log options}.
+Only list revisions @var{revs}. See @ref{log options}.
+
+@c <en>@item -s @var{states}
+@item -s @var{states}
+@c <en>Only list revisions with specified states. See @ref{log options}.
+Only list revisions with specified states. See @ref{log options}.
+
+@c <en>@item -t
+@item -t
+@c <en>Only print header and descriptive text. See @ref{log options}.
+Only print header and descriptive text. See @ref{log options}.
+
+@c <en>@item -w@var{logins}
+@item -w@var{logins}
+@c <en>Only list revisions checked in by specified logins. See @ref{log options}.
+Only list revisions checked in by specified logins. See @ref{log options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item rtag [@var{options}] @var{tag} @var{modules}@dots{}
+@item rtag [@var{options}] @var{tag} @var{modules}@dots{}
+@c <en>Add a symbolic tag to a module.
+@c <en>See @ref{Revisions} and @ref{Branching and merging}.
+Add a symbolic tag to a module.
+See @ref{Revisões} and @ref{Ramificando e mesclando}.
+
+@table @code
+@c <en>@item -a
+@item -a
+@c <en>Clear tag from removed files that would not otherwise
+@c <en>be tagged. See @ref{Tagging add/remove}.
+Clear tag from removed files that would not otherwise
+be tagged. See @ref{Etiquetando adicionados/removidos}.
+
+@c <en>@item -b
+@item -b
+@c <en>Create a branch named @var{tag}. See @ref{Branching and merging}.
+Create a branch named @var{tag}. See @ref{Ramificando e mesclando}.
+
+@c <en>@item -B
+@item -B
+@c <en>Used in conjunction with -F or -d, enables movement and deletion of
+@c <en>branch tags. Use with extreme caution.
+Used in conjunction with -F or -d, enables movement and deletion of
+branch tags. Use with extreme caution.
+
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Tag revisions as of @var{date}. See @ref{Tagging by date/tag}.
+Tag revisions as of @var{date}. See @ref{Etiquetando por data/etiqueta}.
+
+@c <en>@item -d
+@item -d
+@c <en>Delete @var{tag}. See @ref{Modifying tags}.
+Delete @var{tag}. See @ref{Modificando etiquetas}.
+
+@c <en>@item -F
+@item -F
+@c <en>Move @var{tag} if it already exists. See @ref{Modifying tags}.
+Move @var{tag} if it already exists. See @ref{Modificando etiquetas}.
+
+@c <en>@item -f
+@item -f
+@c <en>Force a head revision match if tag/date not found.
+@c <en>See @ref{Tagging by date/tag}.
+Force a head revision match if tag/date not found.
+See @ref{Etiquetando por data/etiqueta}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -n
+@item -n
+@c <en>No execution of tag program. See @ref{Common options}.
+No execution of tag program. See @ref{Opções comuns}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{rev}
+@item -r @var{rev}
+@c <en>Tag existing tag @var{rev}. See @ref{Tagging by date/tag}.
+Tag existing tag @var{rev}. See @ref{Etiquetando por data/etiqueta}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item server
+@item server
+@c <en>Rsh server. See @ref{Connecting via rsh}.
+Rsh server. See @ref{Se conectando via rsh}.
+
+@c ------------------------------------------------------------
+@c <en>@item status [@var{options}] @var{files}@dots{}
+@item status [@var{options}] @var{files}@dots{}
+@c <en>Display status information in a working directory. See
+@c <en>@ref{File status}.
+Display status information in a working directory. See
+@ref{Estado de arquivo}.
+
+@table @code
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -v
+@item -v
+@c <en>Include tag information for file. See @ref{Tags}.
+Include tag information for file. See @ref{Etiquetas}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item tag [@var{options}] @var{tag} [@var{files}@dots{}]
+@item tag [@var{options}] @var{tag} [@var{files}@dots{}]
+@c <en>Add a symbolic tag to checked out version of files.
+@c <en>See @ref{Revisions} and @ref{Branching and merging}.
+Add a symbolic tag to checked out version of files.
+See @ref{Revisões} and @ref{Ramificando e mesclando}.
+
+@table @code
+@c <en>@item -b
+@item -b
+@c <en>Create a branch named @var{tag}. See @ref{Branching and merging}.
+Create a branch named @var{tag}. See @ref{Ramificando e mesclando}.
+
+@c <en>@item -c
+@item -c
+@c <en>Check that working files are unmodified. See
+@c <en>@ref{Tagging the working directory}.
+Check that working files are unmodified. See
+@ref{Etiquetando o diretório de trabalho}.
+
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Tag revisions as of @var{date}. See @ref{Tagging by date/tag}.
+Tag revisions as of @var{date}. See @ref{Etiquetando por data/etiqueta}.
+
+@c <en>@item -d
+@item -d
+@c <en>Delete @var{tag}. See @ref{Modifying tags}.
+Delete @var{tag}. See @ref{Modificando etiquetas}.
+
+@c <en>@item -F
+@item -F
+@c <en>Move @var{tag} if it already exists. See @ref{Modifying tags}.
+Move @var{tag} if it already exists. See @ref{Modificando etiquetas}.
+
+@c <en>@item -f
+@item -f
+@c <en>Force a head revision match if tag/date not found.
+@c <en>See @ref{Tagging by date/tag}.
+Force a head revision match if tag/date not found.
+See @ref{Etiquetando por data/etiqueta}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{rev}
+@item -r @var{rev}
+@c <en>Tag existing tag @var{rev}. See @ref{Tagging by date/tag}.
+Tag existing tag @var{rev}. See @ref{Etiquetando por data/etiqueta}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item unedit [@var{options}] [@var{files}@dots{}]
+@item unedit [@var{options}] [@var{files}@dots{}]
+@c <en>Undo an edit command. See @ref{Editing files}.
+Undo an edit command. See @ref{Editando arquivos}.
+
+@table @code
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item update [@var{options}] [@var{files}@dots{}]
+@item update [@var{options}] [@var{files}@dots{}]
+@c <en>Bring work tree in sync with repository. See
+@c <en>@ref{update}.
+Bring work tree in sync with repository. See
+@ref{update}.
+
+@table @code
+@c <en>@item -A
+@item -A
+@c <en>Reset any sticky tags/date/options. See @ref{Sticky
+@c <en>tags} and @ref{Keyword substitution}.
+Reset any sticky tags/date/options. See
+@ref{Etiquetas adesivas} and @ref{Substituição de palavra-chave}.
+
+@c <en>@item -C
+@item -C
+@c <en>Overwrite locally modified files with clean copies from
+@c <en>the repository (the modified file is saved in
+@c <en>@file{.#@var{file}.@var{revision}}, however).
+Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+@file{.#@var{file}.@var{revision}}, however).
+
+@c <en>@item -D @var{date}
+@item -D @var{date}
+@c <en>Check out revisions as of @var{date} (is sticky). See
+@c <en>@ref{Common options}.
+Check out revisions as of @var{date} (is sticky). See
+@ref{Opções comuns}.
+
+@c <en>@item -d
+@item -d
+@c <en>Create directories. See @ref{update options}.
+Create directories. See @ref{update options}.
+
+@c <en>@item -f
+@item -f
+@c <en>Use head revision if tag/date not found. See
+@c <en>@ref{Common options}.
+Use head revision if tag/date not found. See
+@ref{Opções comuns}.
+
+@c <en>@item -I @var{ign}
+@item -I @var{ign}
+@c <en>More files to ignore (! to reset). See
+@c <en>@ref{import options}.
+More files to ignore (! to reset). See
+@ref{import options}.
+
+@c Probably want to use rev1/rev2 style like for diff
+@c -r. Here and in on-line help.
+@c <en>@item -j @var{rev}
+@item -j @var{rev}
+@c <en>Merge in changes. See @ref{update options}.
+Merge in changes. See @ref{update options}.
+
+@c <en>@item -k @var{kflag}
+@item -k @var{kflag}
+@c <en>Use @var{kflag} keyword expansion. See
+@c <en>@ref{Substitution modes}.
+Use @var{kflag} keyword expansion. See
+@ref{Modos de substituição}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. @xref{Recursive behavior}.
+Local; run only in current working directory. @xref{Comportamento recursivo}.
+
+@c <en>@item -P
+@item -P
+@c <en>Prune empty directories. See @ref{Moving directories}.
+Prune empty directories. See @ref{Movendo diretórios}.
+
+@c <en>@item -p
+@item -p
+@c <en>Check out files to standard output (avoids
+@c <en>stickiness). See @ref{update options}.
+Check out files to standard output (avoids
+stickiness). See @ref{update options}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+
+@c <en>@item -r @var{tag}
+@item -r @var{tag}
+@c <en>Checkout revision @var{tag} (is sticky). See @ref{Common options}.
+Checkout revision @var{tag} (is sticky). See @ref{Opções comuns}.
+
+@c <en>@item -W @var{spec}
+@item -W @var{spec}
+@c <en>More wrappers. See @ref{import options}.
+More wrappers. See @ref{import options}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item version
+@item version
+@c <en>@cindex version (subcommand)
+@cindex version (subcommand)
+
+@c <en>Display the version of @sc{cvs} being used. If the repository
+@c <en>is remote, display both the client and server versions.
+Display the version of @sc{cvs} being used. If the repository
+is remote, display both the client and server versions.
+
+@c ------------------------------------------------------------
+@c <en>@item watch [on|off|add|remove] [@var{options}] [@var{files}@dots{}]
+@item watch [on|off|add|remove] [@var{options}] [@var{files}@dots{}]
+
+@c <en>on/off: turn on/off read-only checkouts of files. See
+@c <en>@ref{Setting a watch}.
+on/off: turn on/off read-only checkouts of files. See
+@ref{Ajustando um ???watch???}.
+
+@c <en>add/remove: add or remove notification on actions. See
+@c <en>@ref{Getting Notified}.
+add/remove: add or remove notification on actions. See
+@ref{Recebendo Notificações}.
+
+@table @code
+@c <en>@item -a @var{actions}
+@item -a @var{actions}
+@c <en>Specify actions for temporary watch, where
+@c <en>@var{actions} is @code{edit}, @code{unedit},
+@c <en>@code{commit}, @code{all}, or @code{none}. See
+@c <en>@ref{Editing files}.
+Specify actions for temporary watch, where
+@var{actions} is @code{edit}, @code{unedit},
+@code{commit}, @code{all}, or @code{none}. See
+@ref{Editando arquivos}.
+
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+@end table
+
+@c ------------------------------------------------------------
+@c <en>@item watchers [@var{options}] [@var{files}@dots{}]
+@item watchers [@var{options}] [@var{files}@dots{}]
+@c <en>See who is watching a file. See @ref{Watch information}.
+See who is watching a file. See @ref{Informações de ???Watch???}.
+
+@table @code
+@c <en>@item -l
+@item -l
+@c <en>Local; run only in current working directory. See @ref{Recursive behavior}.
+Local; run only in current working directory. See @ref{Comportamento recursivo}.
+
+@c <en>@item -R
+@item -R
+@c <en>Operate recursively (default). @xref{Recursive
+@c <en>behavior}.
+Operate recursively (default). @xref{Comportamento recursivo}.
+@end table
+
+@end table
+
+@c ---------------------------------------------------------------------
+@c <en>@node Administrative files
+@node Arquivos administrativos
+@c <en>@appendix Reference manual for Administrative files
+@appendix Manual de referência para Arquivos administrativos
+@c <en>@cindex Administrative files (reference)
+@cindex Arquivos administrativos (referência)
+@c <en>@cindex Files, reference manual
+@cindex Files, reference manual
+@c <en>@cindex Reference manual (files)
+@cindex Reference manual (files)
+@c <en>@cindex CVSROOT (file)
+@cindex CVSROOT (file)
+
+@c FIXME? Somewhere there needs to be a more "how-to"
+@c guide to writing these. I think the triggers
+@c (commitinfo, loginfo, taginfo, &c) are perhaps a
+@c different case than files like modules. One
+@c particular issue that people sometimes are
+@c (unnecessarily?) worried about is performance, and
+@c the impact of writing in perl or sh or ____.
+@c <en>Inside the repository, in the directory
+@c <en>@file{$CVSROOT/CVSROOT}, there are a number of
+@c <en>supportive files for @sc{cvs}. You can use @sc{cvs} in a limited
+@c <en>fashion without any of them, but if they are set up
+@c <en>properly they can help make life easier. For a
+@c <en>discussion of how to edit them, see @ref{Intro
+@c <en>administrative files}.
+Dentro do repositório, no diretório
+@file{$CVSROOT/CVSROOT}, existem vários arquivos de
+suporte para o @sc{cvs}. Você pode usar o @sc{cvs} de
+uma forma limitada sem se aproveitar deles, mas se eles
+estiverem ajustados corretamente eles podem facilitar
+muito seu trabalho. Para uma discussão sobre como
+editá-los, veja em @ref{Intro aos arquivos administrativos}.
+
+@c <en>The most important of these files is the @file{modules}
+@c <en>file, which defines the modules inside the repository.
+O mais importante destes arquivos é o arquivo
+@file{modules}, que define os módulos dentro do repositório.
+
+@menu
+@c <en>* modules:: Defining modules
+* modules:: Definindo módulos
+@c <en>* Wrappers:: Specify binary-ness based on file name
+* Wrappers:: Specify binary-ness based on file name
+@c <en>* commit files:: The commit support files (commitinfo,
+@c <en> verifymsg, loginfo)
+* Arquivos de ???commit???:: Os arquivos de suporte a commit (commitinfo,
+ verifymsg, loginfo)
+@c <en>* taginfo:: Verifying/Logging tags
+* taginfo:: Verifcando/Registrando etiquetas
+@c <en>* rcsinfo:: Templates for the log messages
+* rcsinfo:: Templates for the log messages
+@c <en>* cvsignore:: Ignoring files via cvsignore
+* cvsignore:: Ignoring files via cvsignore
+@c <en>* checkoutlist:: Adding your own administrative files
+* checkoutlist:: Adding your own administrative files
+@c <en>* history file:: History information
+* arquivo history (histórico):: History information
+@c <en>* Variables:: Various variables are expanded
+* Variables:: Various variables are expanded
+@c <en>* config:: Miscellaneous CVS configuration
+* config:: Miscellaneous CVS configuration
+@end menu
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node modules
+@node modules
+@c <en>@appendixsec The modules file
+@appendixsec O arquivo modules
+@c <en>@cindex Modules (admin file)
+@cindex Modules (arquivo administrativo)
+@c <en>@cindex Defining modules (reference manual)
+@cindex Definindo módulos (manual de referência)
+
+@c <en>The @file{modules} file records your definitions of
+@c <en>names for collections of source code. @sc{cvs} will
+@c <en>use these definitions if you use @sc{cvs} to update the
+@c <en>modules file (use normal commands like @code{add},
+@c <en>@code{commit}, etc).
+O arquivo @file{modules} registra suas definições de
+nomes para coleções de código fonte. @sc{cvs} vai usar
+estas definições se você usar o @sc{cvs} para atualizar
+o arquivo modules (use comandos normais, como @code{add},
+@code{commit}, etc).
+
+@c <en>The @file{modules} file may contain blank lines and
+@c <en>comments (lines beginning with @samp{#}) as well as
+@c <en>module definitions. Long lines can be continued on the
+@c <en>next line by specifying a backslash (@samp{\}) as the
+@c <en>last character on the line.
+The @file{modules} file may contain blank lines and
+comments (lines beginning with @samp{#}) as well as
+module definitions. Long lines can be continued on the
+next line by specifying a backslash (@samp{\}) as the
+last character on the line.
+
+@c <en>There are three basic types of modules: alias modules,
+@c <en>regular modules, and ampersand modules. The difference
+@c <en>between them is the way that they map files in the
+@c <en>repository to files in the working directory. In all
+@c <en>of the following examples, the top-level repository
+@c <en>contains a directory called @file{first-dir}, which
+@c <en>contains two files, @file{file1} and @file{file2}, and a
+@c <en>directory @file{sdir}. @file{first-dir/sdir} contains
+@c <en>a file @file{sfile}.
+There are three basic types of modules: alias modules,
+regular modules, and ampersand modules. The difference
+between them is the way that they map files in the
+repository to files in the working directory. In all
+of the following examples, the top-level repository
+contains a directory called @file{first-dir}, which
+contains two files, @file{file1} and @file{file2}, and a
+directory @file{sdir}. @file{first-dir/sdir} contains
+a file @file{sfile}.
+
+@c FIXME: should test all the examples in this section.
+
+@menu
+@c <en>* Alias modules:: The simplest kind of module
+* Alias modules:: The simplest kind of module
+@c <en>* Regular modules::
+* Regular modules::
+@c <en>* Ampersand modules::
+* Ampersand modules::
+@c <en>* Excluding directories:: Excluding directories from a module
+* Excluding directories:: Excluding directories from a module
+@c <en>* Module options:: Regular and ampersand modules can take options
+* Module options:: Regular and ampersand modules can take options
+@c <en>* Module program options:: How the modules ``program options'' programs
+@c <en> are run.
+* Module program options:: How the modules ``program options'' programs
+ are run.
+@end menu
+
+@c <en>@node Alias modules
+@node Alias modules
+@c <en>@appendixsubsec Alias modules
+@appendixsubsec Alias modules
+@c <en>@cindex Alias modules
+@cindex Alias modules
+@c <en>@cindex -a, in modules file
+@cindex -a, in modules file
+
+@c <en>Alias modules are the simplest kind of module:
+Alias modules are the simplest kind of module:
+
+@table @code
+@c <en>@item @var{mname} -a @var{aliases}@dots{}
+@c <en>This represents the simplest way of defining a module
+@c <en>@var{mname}. The @samp{-a} flags the definition as a
+@c <en>simple alias: @sc{cvs} will treat any use of @var{mname} (as
+@c <en>a command argument) as if the list of names
+@c <en>@var{aliases} had been specified instead.
+@c <en>@var{aliases} may contain either other module names or
+@c <en>paths. When you use paths in aliases, @code{checkout}
+@c <en>creates all intermediate directories in the working
+@c <en>directory, just as if the path had been specified
+@c <en>explicitly in the @sc{cvs} arguments.
+@item @var{mname} -a @var{aliases}@dots{}
+This represents the simplest way of defining a module
+@var{mname}. The @samp{-a} flags the definition as a
+simple alias: @sc{cvs} will treat any use of @var{mname} (as
+a command argument) as if the list of names
+@var{aliases} had been specified instead.
+@var{aliases} may contain either other module names or
+paths. When you use paths in aliases, @code{checkout}
+creates all intermediate directories in the working
+directory, just as if the path had been specified
+explicitly in the @sc{cvs} arguments.
+@end table
+
+@c <en>For example, if the modules file contains:
+For example, if the modules file contains:
+
+@example
+amodule -a first-dir
+@end example
+
+@noindent
+@c <en>then the following two commands are equivalent:
+then the following two commands are equivalent:
+
+@example
+$ cvs co amodule
+$ cvs co first-dir
+@end example
+
+@noindent
+@c <en>and they each would provide output such as:
+and they each would provide output such as:
+
+@example
+cvs checkout: Updating first-dir
+U first-dir/file1
+U first-dir/file2
+cvs checkout: Updating first-dir/sdir
+U first-dir/sdir/sfile
+@end example
+
+@c <en>@node Regular modules
+@node Regular modules
+@c <en>@appendixsubsec Regular modules
+@appendixsubsec Regular modules
+@c <en>@cindex Regular modules
+@cindex Regular modules
+
+@table @code
+@c <en>@item @var{mname} [ options ] @var{dir} [ @var{files}@dots{} ]
+@c <en>In the simplest case, this form of module definition
+@c <en>reduces to @samp{@var{mname} @var{dir}}. This defines
+@c <en>all the files in directory @var{dir} as module mname.
+@c <en>@var{dir} is a relative path (from @code{$CVSROOT}) to a
+@c <en>directory of source in the source repository. In this
+@c <en>case, on checkout, a single directory called
+@c <en>@var{mname} is created as a working directory; no
+@c <en>intermediate directory levels are used by default, even
+@c <en>if @var{dir} was a path involving several directory
+@c <en>levels.
+@item @var{mname} [ options ] @var{dir} [ @var{files}@dots{} ]
+In the simplest case, this form of module definition
+reduces to @samp{@var{mname} @var{dir}}. This defines
+all the files in directory @var{dir} as module mname.
+@var{dir} is a relative path (from @code{$CVSROOT}) to a
+directory of source in the source repository. In this
+case, on checkout, a single directory called
+@var{mname} is created as a working directory; no
+intermediate directory levels are used by default, even
+if @var{dir} was a path involving several directory
+levels.
+@end table
+
+@c <en>For example, if a module is defined by:
+For example, if a module is defined by:
+
+@example
+regmodule first-dir
+@end example
+
+@noindent
+@c <en>then regmodule will contain the files from first-dir:
+then regmodule will contain the files from first-dir:
+
+@example
+$ cvs co regmodule
+cvs checkout: Updating regmodule
+U regmodule/file1
+U regmodule/file2
+cvs checkout: Updating regmodule/sdir
+U regmodule/sdir/sfile
+$
+@end example
+
+@c <en>By explicitly specifying files in the module definition
+@c <en>after @var{dir}, you can select particular files from
+@c <en>directory @var{dir}. Here is
+@c <en>an example:
+By explicitly specifying files in the module definition
+after @var{dir}, you can select particular files from
+directory @var{dir}. Here is
+an example:
+
+@example
+regfiles first-dir/sdir sfile
+@end example
+
+@noindent
+@c <en>With this definition, getting the regfiles module
+@c <en>will create a single working directory
+@c <en>@file{regfiles} containing the file listed, which
+@c <en>comes from a directory deeper
+@c <en>in the @sc{cvs} source repository:
+With this definition, getting the regfiles module
+will create a single working directory
+@file{regfiles} containing the file listed, which
+comes from a directory deeper
+in the @sc{cvs} source repository:
+
+@example
+$ cvs co regfiles
+U regfiles/sfile
+$
+@end example
+
+@c <en>@node Ampersand modules
+@node Ampersand modules
+@c <en>@appendixsubsec Ampersand modules
+@appendixsubsec Ampersand modules
+@c <en>@cindex Ampersand modules
+@cindex Ampersand modules
+@c <en>@cindex &, in modules file
+@cindex &, in modules file
+
+@c <en>A module definition can refer to other modules by
+@c <en>including @samp{&@var{module}} in its definition.
+A module definition can refer to other modules by
+including @samp{&@var{module}} in its definition.
+@example
+@var{mname} [ options ] @var{&module}@dots{}
+@end example
+
+@c <en>Then getting the module creates a subdirectory for each such
+@c <en>module, in the directory containing the module. For
+@c <en>example, if modules contains
+Then getting the module creates a subdirectory for each such
+module, in the directory containing the module. For
+example, if modules contains
+
+@example
+ampermod &first-dir
+@end example
+
+@noindent
+@c <en>then a checkout will create an @code{ampermod} directory
+@c <en>which contains a directory called @code{first-dir},
+@c <en>which in turns contains all the directories and files
+@c <en>which live there. For example, the command
+then a checkout will create an @code{ampermod} directory
+which contains a directory called @code{first-dir},
+which in turns contains all the directories and files
+which live there. For example, the command
+
+@example
+$ cvs co ampermod
+@end example
+
+@noindent
+@c <en>will create the following files:
+will create the following files:
+
+@example
+ampermod/first-dir/file1
+ampermod/first-dir/file2
+ampermod/first-dir/sdir/sfile
+@end example
+
+@c <en>There is one quirk/bug: the messages that @sc{cvs}
+@c <en>prints omit the @file{ampermod}, and thus do not
+@c <en>correctly display the location to which it is checking
+@c <en>out the files:
+There is one quirk/bug: the messages that @sc{cvs}
+prints omit the @file{ampermod}, and thus do not
+correctly display the location to which it is checking
+out the files:
+
+@example
+$ cvs co ampermod
+cvs checkout: Updating first-dir
+U first-dir/file1
+U first-dir/file2
+cvs checkout: Updating first-dir/sdir
+U first-dir/sdir/sfile
+$
+@end example
+
+@c <en>Do not rely on this buggy behavior; it may get fixed in
+@c <en>a future release of @sc{cvs}.
+Do not rely on this buggy behavior; it may get fixed in
+a future release of @sc{cvs}.
+
+@c FIXCVS: What happens if regular and & modules are
+@c combined, as in "ampermodule first-dir &second-dir"?
+@c When I tried it, it seemed to just ignore the
+@c "first-dir". I think perhaps it should be an error
+@c (but this needs further investigation).
+@c In addition to discussing what each one does, we
+@c should put in a few words about why you would use one or
+@c the other in various situations.
+
+@c <en>@node Excluding directories
+@node Excluding directories
+@c <en>@appendixsubsec Excluding directories
+@appendixsubsec Excluding directories
+@c <en>@cindex Excluding directories, in modules file
+@cindex Excluding directories, in modules file
+@c <en>@cindex !, in modules file
+@cindex !, in modules file
+
+@c <en>An alias module may exclude particular directories from
+@c <en>other modules by using an exclamation mark (@samp{!})
+@c <en>before the name of each directory to be excluded.
+An alias module may exclude particular directories from
+other modules by using an exclamation mark (@samp{!})
+before the name of each directory to be excluded.
+
+@c <en>For example, if the modules file contains:
+For example, if the modules file contains:
+
+@example
+exmodule -a !first-dir/sdir first-dir
+@end example
+
+@noindent
+@c <en>then checking out the module @samp{exmodule} will check
+@c <en>out everything in @samp{first-dir} except any files in
+@c <en>the subdirectory @samp{first-dir/sdir}.
+then checking out the module @samp{exmodule} will check
+out everything in @samp{first-dir} except any files in
+the subdirectory @samp{first-dir/sdir}.
+@c Note that the "!first-dir/sdir" sometimes must be listed
+@c before "first-dir". That seems like a probable bug, in which
+@c case perhaps it should be fixed (to allow either
+@c order) rather than documented. See modules4 in testsuite.
+
+@c <en>@node Module options
+@node Module options
+@c <en>@appendixsubsec Module options
+@appendixsubsec Module options
+@c <en>@cindex Options, in modules file
+@cindex Options, in modules file
+
+@c <en>Either regular modules or ampersand modules can contain
+@c <en>options, which supply additional information concerning
+@c <en>the module.
+Either regular modules or ampersand modules can contain
+options, which supply additional information concerning
+the module.
+
+@table @code
+@c <en>@cindex -d, in modules file
+@cindex -d, in modules file
+@c <en>@item -d @var{name}
+@item -d @var{name}
+@c <en>Name the working directory something other than the
+@c <en>module name.
+Name the working directory something other than the
+module name.
+@c FIXME: Needs a bunch of examples, analogous to the
+@c examples for alias, regular, and ampersand modules
+@c which show where the files go without -d.
+
+@c <en>@cindex Export program
+@cindex Export program
+@c <en>@cindex -e, in modules file
+@cindex -e, in modules file
+@c <en>@item -e @var{prog}
+@item -e @var{prog}
+@c <en>Specify a program @var{prog} to run whenever files in a
+@c <en>module are exported. @var{prog} runs with a single
+@c <en>argument, the module name.
+Specify a program @var{prog} to run whenever files in a
+module are exported. @var{prog} runs with a single
+argument, the module name.
+@c FIXME: Is it run on server? client?
+
+@c <en>@cindex Checkout program
+@cindex Checkout program
+@c <en>@cindex -o, in modules file
+@cindex -o, in modules file
+@c <en>@item -o @var{prog}
+@item -o @var{prog}
+@c <en>Specify a program @var{prog} to run whenever files in a
+@c <en>module are checked out. @var{prog} runs with a single
+@c <en>argument, the module name. See @ref{Module program options} for
+@c <en>information on how @var{prog} is called.
+Specify a program @var{prog} to run whenever files in a
+module are checked out. @var{prog} runs with a single
+argument, the module name. See @ref{Module program options} for
+information on how @var{prog} is called.
+@c FIXME: Is it run on server? client?
+
+@c <en>@cindex Status of a module
+@cindex Status of a module
+@c <en>@cindex Module status
+@cindex Module status
+@c <en>@cindex -s, in modules file
+@cindex -s, in modules file
+@c <en>@item -s @var{status}
+@item -s @var{status}
+@c <en>Assign a status to the module. When the module file is
+@c <en>printed with @samp{cvs checkout -s} the modules are
+@c <en>sorted according to primarily module status, and
+@c <en>secondarily according to the module name. This option
+@c <en>has no other meaning. You can use this option for
+@c <en>several things besides status: for instance, list the
+@c <en>person that is responsible for this module.
+Assign a status to the module. When the module file is
+printed with @samp{cvs checkout -s} the modules are
+sorted according to primarily module status, and
+secondarily according to the module name. This option
+has no other meaning. You can use this option for
+several things besides status: for instance, list the
+person that is responsible for this module.
+
+@c <en>@cindex Tag program
+@cindex Tag program
+@c <en>@cindex -t, in modules file
+@cindex -t, in modules file
+@c <en>@item -t @var{prog}
+@item -t @var{prog}
+@c <en>Specify a program @var{prog} to run whenever files in a
+@c <en>module are tagged with @code{rtag}. @var{prog} runs
+@c <en>with two arguments: the module name and the symbolic
+@c <en>tag specified to @code{rtag}. It is not run
+@c <en>when @code{tag} is executed. Generally you will find
+@c <en>that the @file{taginfo} file is a better solution(@pxref{taginfo}).
+Specify a program @var{prog} to run whenever files in a
+module are tagged with @code{rtag}. @var{prog} runs
+with two arguments: the module name and the symbolic
+tag specified to @code{rtag}. It is not run
+when @code{tag} is executed. Generally you will find
+that the @file{taginfo} file is a better solution(@pxref{taginfo}).
+@c FIXME: Is it run on server? client?
+@c Problems with -t include:
+@c * It is run after the tag not before
+@c * It doesn't get passed all the information that
+@c taginfo does ("mov", &c).
+@c * It only is run for rtag, not tag.
+@end table
+
+@c <en>You should also see @pxref{Module program options} about how the
+@c <en>``program options'' programs are run.
+You should also see @pxref{Module program options} about how the
+``program options'' programs are run.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+@c <en>@node Module program options
+@node Module program options
+@c <en>@appendixsubsec How the modules file ``program options'' programs are run
+@appendixsubsec How the modules file ``program options'' programs are run
+@c <en>@cindex Modules file program options
+@cindex Modules file program options
+@c <en>@cindex -t, in modules file
+@cindex -t, in modules file
+@c <en>@cindex -o, in modules file
+@cindex -o, in modules file
+@c <en>@cindex -e, in modules file
+@cindex -e, in modules file
+
+@noindent
+@c <en>For checkout, rtag, and export, the program is server-based, and as such the
+@c <en>following applies:-
+For checkout, rtag, and export, the program is server-based, and as such the
+following applies:-
+
+@c <en>If using remote access methods (pserver, ext, etc.),
+@c <en>@sc{cvs} will execute this program on the server from a temporary
+@c <en>directory. The path is searched for this program.
+If using remote access methods (pserver, ext, etc.),
+@sc{cvs} will execute this program on the server from a temporary
+directory. The path is searched for this program.
+
+@c <en>If using ``local access'' (on a local or remote NFS file system, i.e.
+@c <en>repository set just to a path),
+@c <en>the program will be executed from the newly checked-out tree, if
+@c <en>found there, or alternatively searched for in the path if not.
+If using ``local access'' (on a local or remote NFS file system, i.e.
+repository set just to a path),
+the program will be executed from the newly checked-out tree, if
+found there, or alternatively searched for in the path if not.
+
+@c <en>The programs are all run after the operation has effectively
+@c <en>completed.
+The programs are all run after the operation has effectively
+completed.
+
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node Wrappers
+@appendixsec The cvswrappers file
+@cindex cvswrappers (admin file)
+@cindex CVSWRAPPERS, environment variable
+@cindex Wrappers
+
+@c FIXME: need some better way of separating this out
+@c by functionality. -m is
+@c one feature, and -k is a another. And this discussion
+@c should be better motivated (e.g. start with the
+@c problems, then explain how the feature solves it).
+
+Wrappers refers to a @sc{cvs} feature which lets you
+control certain settings based on the name of the file
+which is being operated on. The settings are @samp{-k}
+for binary files, and @samp{-m} for nonmergeable text
+files.
+
+The @samp{-m} option
+specifies the merge methodology that should be used when
+a non-binary file is updated. @code{MERGE} means the usual
+@sc{cvs} behavior: try to merge the files. @code{COPY}
+means that @code{cvs update} will refuse to merge
+files, as it also does for files specified as binary
+with @samp{-kb} (but if the file is specified as
+binary, there is no need to specify @samp{-m 'COPY'}).
+@sc{cvs} will provide the user with the
+two versions of the files, and require the user using
+mechanisms outside @sc{cvs}, to insert any necessary
+changes.
+
+@c <en>@strong{WARNING: do not use @code{COPY} with
+@c <en>@sc{cvs} 1.9 or earlier - such versions of @sc{cvs} will
+@c <en>copy one version of your file over the other, wiping
+@c <en>out the previous contents.}
+@strong{WARNING: do not use @code{COPY} with
+@sc{cvs} 1.9 or earlier - such versions of @sc{cvs} will
+copy one version of your file over the other, wiping
+out the previous contents.}
+@c Ordinarily we don't document the behavior of old
+@c versions. But this one is so dangerous, I think we
+@c must. I almost renamed it to -m 'NOMERGE' so we
+@c could say "never use -m 'COPY'".
+@c <en>The @samp{-m} wrapper option only affects behavior when
+@c <en>merging is done on update; it does not affect how files
+@c <en>are stored. See @ref{Binary files}, for more on
+@c <en>binary files.
+The @samp{-m} wrapper option only affects behavior when
+merging is done on update; it does not affect how files
+are stored. See @ref{Arquivos binários}, for more on
+binary files.
+
+The basic format of the file @file{cvswrappers} is:
+
+@c FIXME: @example is all wrong for this. Use @deffn or
+@c something more sensible.
+@example
+wildcard [option value][option value]...
+
+where option is one of
+-m update methodology value: MERGE or COPY
+-k keyword expansion value: expansion mode
+
+and value is a single-quote delimited value.
+@end example
+
+@ignore
+@example
+*.nib -f 'unwrap %s' -t 'wrap %s %s' -m 'COPY'
+*.c -t 'indent %s %s'
+@end example
+@c When does the filter need to be an absolute pathname
+@c and when will something like the above work? I
+@c suspect it relates to the PATH of the server (which
+@c in turn depends on all kinds of stuff, e.g. inetd
+@c for pserver). I'm not sure whether/where to discuss
+@c this.
+@c FIXME: What do the %s's stand for?
+
+@noindent
+The above example of a @file{cvswrappers} file
+states that all files/directories that end with a @code{.nib}
+should be filtered with the @file{wrap} program before
+checking the file into the repository. The file should
+be filtered though the @file{unwrap} program when the
+file is checked out of the repository. The
+@file{cvswrappers} file also states that a @code{COPY}
+methodology should be used when updating the files in
+the repository (that is, no merging should be performed).
+
+@c What pitfalls arise when using indent this way? Is
+@c it a winning thing to do? Would be nice to at least
+@c hint at those issues; we want our examples to tell
+@c how to solve problems, not just to say that cvs can
+@c do certain things.
+The last example line says that all files that end with
+@code{.c} should be filtered with @file{indent}
+before being checked into the repository. Unlike the previous
+example, no filtering of the @code{.c} file is done when
+it is checked out of the repository.
+@noindent
+The @code{-t} filter is called with two arguments,
+the first is the name of the file/directory to filter
+and the second is the pathname to where the resulting
+filtered file should be placed.
+
+@noindent
+The @code{-f} filter is called with one argument,
+which is the name of the file to filter from. The end
+result of this filter will be a file in the users directory
+that they can work on as they normally would.
+
+Note that the @samp{-t}/@samp{-f} features do not
+conveniently handle one portion of @sc{cvs}'s operation:
+determining when files are modified. @sc{cvs} will still
+want a file (or directory) to exist, and it will use
+its modification time to determine whether a file is
+modified. If @sc{cvs} erroneously thinks a file is
+unmodified (for example, a directory is unchanged but
+one of the files within it is changed), you can force
+it to check in the file anyway by specifying the
+@samp{-f} option to @code{cvs commit} (@pxref{commit
+options}).
+@c This is, of course, a serious design flaw in -t/-f.
+@c Probably the whole functionality needs to be
+@c redesigned (starting from requirements) to fix this.
+@end ignore
+
+@c FIXME: We don't document -W or point to where it is
+@c documented. Or .cvswrappers.
+For example, the following command imports a
+directory, treating files whose name ends in
+@samp{.exe} as binary:
+
+@example
+cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag
+@end example
+
+@c Another good example, would be storing files
+@c (e.g. binary files) compressed in the repository.
+@c ::::::::::::::::::
+@c cvswrappers
+@c ::::::::::::::::::
+@c *.t12 -m 'COPY'
+@c *.t[0-9][0-9] -f 'gunzipcp %s' -t 'gzipcp %s %s' -m 'COPY'
+@c
+@c ::::::::::::::::::
+@c gunzipcp
+@c ::::::::::::::::::
+@c :
+@c [ -f $1 ] || exit 1
+@c zcat $1 > /tmp/.#$1.$$
+@c mv /tmp/.#$1.$$ $1
+@c
+@c ::::::::::::::::::
+@c gzipcp
+@c ::::::::::::::::::
+@c :
+@c DIRNAME=`echo $1 | sed -e "s|/.*/||g"`
+@c if [ ! -d $DIRNAME ] ; then
+@c DIRNAME=`echo $1 | sed -e "s|.*/||g"`
+@c fi
+@c gzip -c $DIRNAME > $2
+@c One catch--"cvs diff" will not invoke the wrappers
+@c (probably a CVS bug, although I haven't thought it out).
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node commit files
+@node Arquivos de ???commit???
+@c <en>@appendixsec The commit support files
+@appendixsec The commit support files
+@c <en>@cindex Committing, administrative support files
+@cindex Committing, administrative support files
+
+The @samp{-i} flag in the @file{modules} file can be
+used to run a certain program whenever files are
+committed (@pxref{modules}). The files described in
+this section provide other, more flexible, ways to run
+programs whenever something is committed.
+
+There are three kind of programs that can be run on
+commit. They are specified in files in the repository,
+as described below. The following table summarizes the
+file names and the purpose of the corresponding
+programs.
+
+@table @file
+@item commitinfo
+The program is responsible for checking that the commit
+is allowed. If it exits with a non-zero exit status
+the commit will be aborted.
+
+@item verifymsg
+The specified program is used to evaluate the log message,
+and possibly verify that it contains all required
+fields. This is most useful in combination with the
+@file{rcsinfo} file, which can hold a log message
+template (@pxref{rcsinfo}).
+
+@item loginfo
+The specified program is called when the commit is
+complete. It receives the log message and some
+additional information and can store the log message in
+a file, or mail it to appropriate persons, or maybe
+post it to a local newsgroup, or@dots{} Your
+imagination is the limit!
+@end table
+
+@menu
+* syntax:: The common syntax
+* commitinfo:: Pre-commit checking
+* verifymsg:: How are log messages evaluated?
+* loginfo:: Where should log messages be sent?
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node syntax
+@appendixsubsec The common syntax
+@cindex Info files (syntax)
+@cindex Syntax of info files
+@cindex Common syntax of info files
+
+@c FIXME: having this so totally separate from the
+@c Variables node is rather bogus.
+
+The administrative files such as @file{commitinfo},
+@file{loginfo}, @file{rcsinfo}, @file{verifymsg}, etc.,
+all have a common format. The purpose of the files are
+described later on. The common syntax is described
+here.
+
+@cindex Regular expression syntax
+Each line contains the following:
+@itemize @bullet
+@item
+@c Say anything about DEFAULT and ALL? Right now we
+@c leave that to the description of each file (and in fact
+@c the practice is inconsistent which is really annoying).
+A regular expression. This is a basic regular
+expression in the syntax used by GNU emacs.
+@c FIXME: What we probably should be saying is "POSIX Basic
+@c Regular Expression with the following extensions (`\('
+@c `\|' '+' etc)"
+@c rather than define it with reference to emacs.
+@c The reference to emacs is not strictly speaking
+@c true, as we don't support \=, \s, or \S. Also it isn't
+@c clear we should document and/or promise to continue to
+@c support all the obscure emacs extensions like \<.
+@c Also need to better cite (or include) full
+@c documentation for the syntax.
+@c Also see comment in configure.in about what happens to the
+@c syntax if we pick up a system-supplied regexp matcher.
+
+@item
+A whitespace separator---one or more spaces and/or tabs.
+
+@item
+A file name or command-line template.
+@end itemize
+
+@noindent
+Blank lines are ignored. Lines that start with the
+character @samp{#} are treated as comments. Long lines
+unfortunately can @emph{not} be broken in two parts in
+any way.
+
+The first regular expression that matches the current
+directory name in the repository is used. The rest of the line
+is used as a file name or command-line as appropriate.
+
+@c FIXME: need an example. In particular, show what
+@c the regular expression is matched against (one
+@c ordinarily clueful person got confused about whether it
+@c includes the filename--"directory name" above should be
+@c unambiguous but there is nothing like an example to
+@c confirm people's understanding of this sort of thing).
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node commitinfo
+@appendixsubsec Commitinfo
+@cindex @file{commitinfo}
+@cindex Commits, precommit verification of
+@cindex Precommit checking
+
+The @file{commitinfo} file defines programs to execute
+whenever @samp{cvs commit} is about to execute. These
+programs are used for pre-commit checking to verify
+that the modified, added and removed files are really
+ready to be committed. This could be used, for
+instance, to verify that the changed files conform to
+to your site's standards for coding practice.
+
+As mentioned earlier, each line in the
+@file{commitinfo} file consists of a regular expression
+and a command-line template. The template can include
+a program name and any number of arguments you wish to
+supply to it. The full path to the current source
+repository is appended to the template, followed by the
+file names of any files involved in the commit (added,
+removed, and modified files).
+
+@cindex Exit status, of commitinfo
+The first line with a regular expression matching the
+directory within the repository will be used. If the
+command returns a non-zero exit status the commit will
+be aborted.
+@c FIXME: need example(s) of what "directory within the
+@c repository" means.
+
+@cindex DEFAULT in commitinfo
+If the repository name does not match any of the
+regular expressions in this file, the @samp{DEFAULT}
+line is used, if it is specified.
+
+@cindex ALL in commitinfo
+All occurrences of the name @samp{ALL} appearing as a
+regular expression are used in addition to the first
+matching regular expression or the name @samp{DEFAULT}.
+
+@c <en>@cindex @file{commitinfo}, working directory
+@cindex @file{commitinfo}, working directory
+@c <en>@cindex @file{commitinfo}, command environment
+@cindex @file{commitinfo}, command environment
+@c <en>The command will be run in the root of the workspace
+@c <en>containing the new versions of any files the user would like
+@c <en>to modify (commit), @emph{or in a copy of the workspace on
+@c <en>the server (@pxref{Remote repositories})}. If a file is
+@c <en>being removed, there will be no copy of the file under the
+@c <en>current directory. If a file is being added, there will be
+@c <en>no corresponding archive file in the repository unless the
+@c <en>file is being resurrected.
+The command will be run in the root of the workspace
+containing the new versions of any files the user would like
+to modify (commit), @emph{or in a copy of the workspace on
+the server (@pxref{Repositórios remotos})}. If a file is
+being removed, there will be no copy of the file under the
+current directory. If a file is being added, there will be
+no corresponding archive file in the repository unless the
+file is being resurrected.
+
+Note that both the repository directory and the corresponding
+Attic (@pxref{Attic}) directory may need to be checked to
+locate the archive file corresponding to any given file being
+committed. Much of the information about the specific commit
+request being made, including the destination branch, commit
+message, and command line options specified, is not available
+to the command.
+
+@c FIXME: should discuss using commitinfo to control
+@c who has checkin access to what (e.g. Joe can check into
+@c directories a, b, and c, and Mary can check into
+@c directories b, c, and d--note this case cannot be
+@c conveniently handled with unix groups). Of course,
+@c adding a new set of features to CVS might be a more
+@c natural way to fix this problem than telling people to
+@c use commitinfo.
+@c FIXME: Should make some reference, especially in
+@c the context of controlling who has access, to the fact
+@c that commitinfo can be circumvented. Perhaps
+@c mention SETXID (but has it been carefully examined
+@c for holes?). This fits in with the discussion of
+@c general CVS security in "Password authentication
+@c security" (the bit which is not pserver-specific).
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node verifymsg
+@appendixsubsec Verifying log messages
+@cindex @file{verifymsg} (admin file)
+@cindex Log message, verifying
+
+Once you have entered a log message, you can evaluate
+that message to check for specific content, such as
+a bug ID. Use the @file{verifymsg} file to
+specify a program that is used to verify the log message.
+This program could be a simple script that checks
+that the entered message contains the required fields.
+
+The @file{verifymsg} file is often most useful together
+with the @file{rcsinfo} file, which can be used to
+specify a log message template.
+
+Each line in the @file{verifymsg} file consists of a
+regular expression and a command-line template. The
+template must include a program name, and can include
+any number of arguments. The full path to the current
+log message template file is appended to the template.
+
+One thing that should be noted is that the @samp{ALL}
+keyword is not supported. If more than one matching
+line is found, the first one is used. This can be
+useful for specifying a default verification script in a
+directory, and then overriding it in a subdirectory.
+
+@cindex DEFAULT in @file{verifymsg}
+If the repository name does not match any of the
+regular expressions in this file, the @samp{DEFAULT}
+line is used, if it is specified.
+
+@cindex Exit status, of @file{verifymsg}
+If the verification script exits with a non-zero exit status,
+the commit is aborted.
+
+@cindex @file{verifymsg}, changing the log message
+In the default configuration, CVS allows the
+verification script to change the log message. This is
+controlled via the RereadLogAfterVerify CVSROOT/config
+option.
+
+When @samp{RereadLogAfterVerify=always} or
+@samp{RereadLogAfterVerify=stat}, the log message will
+either always be reread after the verification script
+is run or reread only if the log message file status
+has changed.
+
+@xref{config}, for more on CVSROOT/config options.
+
+@c <en>It is NOT a good idea for a @file{verifymsg} script to
+@c <en>interact directly with the user in the various
+@c <en>client/server methods. For the @code{pserver} method,
+@c <en>there is no protocol support for communicating between
+@c <en>@file{verifymsg} and the client on the remote end. For the
+@c <en>@code{ext} and @code{server} methods, it is possible
+@c <en>for CVS to become confused by the characters going
+@c <en>along the same channel as the CVS protocol
+@c <en>messages. See @ref{Remote repositories}, for more
+@c <en>information on client/server setups. In addition, at the time
+@c <en>the @file{verifymsg} script runs, the CVS
+@c <en>server has locks in place in the repository. If control is
+@c <en>returned to the user here then other users may be stuck waiting
+@c <en>for access to the repository.
+It is NOT a good idea for a @file{verifymsg} script to
+interact directly with the user in the various
+client/server methods. For the @code{pserver} method,
+there is no protocol support for communicating between
+@file{verifymsg} and the client on the remote end. For the
+@code{ext} and @code{server} methods, it is possible
+for CVS to become confused by the characters going
+along the same channel as the CVS protocol
+messages. See @ref{Repositórios remotos}, for more
+information on client/server setups. In addition, at the time
+the @file{verifymsg} script runs, the CVS
+server has locks in place in the repository. If control is
+returned to the user here then other users may be stuck waiting
+for access to the repository.
+
+This option can be useful if you find yourself using an
+rcstemplate that needs to be modified to remove empty
+elements or to fill in default values. It can also be
+useful if the rcstemplate has changed in the repository
+and the CVS/Template was not updated, but is able to be
+adapted to the new format by the verification script
+that is run by @file{verifymsg}.
+
+An example of an update might be to change all
+occurrences of 'BugId:' to be 'DefectId:' (which can be
+useful if the rcstemplate has recently been changed and
+there are still checked-out user trees with cached
+copies in the CVS/Template file of the older version).
+
+Another example of an update might be to delete a line
+that contains 'BugID: none' from the log message after
+validation of that value as being allowed is made.
+
+The following is a little silly example of a
+@file{verifymsg} file, together with the corresponding
+@file{rcsinfo} file, the log message template and an
+verification script. We begin with the log message template.
+We want to always record a bug-id number on the first
+line of the log message. The rest of log message is
+free text. The following template is found in the file
+@file{/usr/cvssupport/tc.template}.
+
+@example
+BugId:
+@end example
+
+The script @file{/usr/cvssupport/bugid.verify} is used to
+evaluate the log message.
+
+@example
+#!/bin/sh
+#
+# bugid.verify filename
+#
+# Verify that the log message contains a valid bugid
+# on the first line.
+#
+if sed 1q < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
+ exit 0
+elif sed 1q < $1 | grep '^BugId:[ ]*none$' > /dev/null; then
+ # It is okay to allow commits with 'BugId: none',
+ # but do not put that text into the real log message.
+ grep -v '^BugId:[ ]*none$' > $1.rewrite
+ mv $1.rewrite $1
+ exit 0
+else
+ echo "No BugId found."
+ exit 1
+fi
+@end example
+
+The @file{verifymsg} file contains this line:
+
+@example
+^tc /usr/cvssupport/bugid.verify
+@end example
+
+The @file{rcsinfo} file contains this line:
+
+@example
+^tc /usr/cvssupport/tc.template
+@end example
+
+The @file{config} file contains this line:
+
+@example
+RereadLogAfterVerify=always
+@end example
+
+
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node loginfo
+@appendixsubsec Loginfo
+@cindex loginfo (admin file)
+@cindex Storing log messages
+@cindex Mailing log messages
+@cindex Distributing log messages
+@cindex Log messages
+
+@c "cvs commit" is not quite right. What we
+@c mean is "when the repository gets changed" which
+@c also includes "cvs import" and "cvs add" on a directory.
+The @file{loginfo} file is used to control where
+@samp{cvs commit} log information is sent. The first
+entry on a line is a regular expression which is tested
+against the directory that the change is being made to,
+relative to the @code{$CVSROOT}. If a match is found, then
+the remainder of the line is a filter program that
+should expect log information on its standard input.
+
+If the repository name does not match any of the
+regular expressions in this file, the @samp{DEFAULT}
+line is used, if it is specified.
+
+All occurrences of the name @samp{ALL} appearing as a
+regular expression are used in addition to the first
+matching regular expression or @samp{DEFAULT}.
+
+The first matching regular expression is used.
+
+@xref{Arquivos de ???commit???}, for a description of the syntax of
+the @file{loginfo} file.
+
+The user may specify a format string as
+part of the filter. The string is composed of a
+@samp{%} followed by a space, or followed by a single
+format character, or followed by a set of format
+characters surrounded by @samp{@{} and @samp{@}} as
+separators. The format characters are:
+
+@table @t
+@item s
+file name
+@item V
+old version number (pre-checkin)
+@item v
+new version number (post-checkin)
+@end table
+
+All other characters that appear in a format string
+expand to an empty field (commas separating fields are
+still provided).
+
+For example, some valid format strings are @samp{%},
+@samp{%s}, @samp{%@{s@}}, and @samp{%@{sVv@}}.
+
+The output will be a space separated string of tokens enclosed in
+quotation marks (@t{"}).
+Any embedded dollar signs (@t{$}), backticks (@t{`}),
+backslashes (@t{\}), or quotation marks will be preceded
+by a backslash (this allows the shell to correctly parse it
+as a single string, regardless of the characters it contains).
+For backwards compatibility, the first
+token will be the repository subdirectory. The rest of the
+tokens will be comma-delimited lists of the information
+requested in the format string. For example, if
+@samp{/u/src/master/yoyodyne/tc} is the repository, @samp{%@{sVv@}}
+is the format string, and three files (@t{ChangeLog},
+@t{Makefile}, @t{foo.c}) were modified, the output
+might be:
+
+@example
+"yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13"
+@end example
+
+As another example, @samp{%@{@}} means that only the
+name of the repository will be generated.
+
+Note: when @sc{cvs} is accessing a remote repository,
+@file{loginfo} will be run on the @emph{remote}
+(i.e., server) side, not the client side (@pxref{Repositórios remotos}).
+
+@menu
+* loginfo example:: Loginfo example
+* Keeping a checked out copy:: Updating a tree on every checkin
+@end menu
+
+@c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+@node loginfo example
+@appendixsubsubsec Loginfo example
+
+The following @file{loginfo} file, together with the
+tiny shell-script below, appends all log messages
+to the file @file{$CVSROOT/CVSROOT/commitlog},
+and any commits to the administrative files (inside
+the @file{CVSROOT} directory) are also logged in
+@file{/usr/adm/cvsroot-log}.
+Commits to the @file{prog1} directory are mailed to @t{ceder}.
+
+@c FIXME: is it a CVS feature or bug that only the
+@c first matching line is used? It is documented
+@c above, but is it useful? For example, if we wanted
+@c to run both "cvs-log" and "Mail" for the CVSROOT
+@c directory, it is kind of awkward if
+@c only the first matching line is used.
+@example
+ALL /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog $USER
+^CVSROOT /usr/local/bin/cvs-log /usr/adm/cvsroot-log
+^prog1 Mail -s %s ceder
+@end example
+
+The shell-script @file{/usr/local/bin/cvs-log} looks
+like this:
+
+@example
+#!/bin/sh
+(echo "------------------------------------------------------";
+ echo -n $2" ";
+ date;
+ echo;
+ cat) >> $1
+@end example
+
+@node Keeping a checked out copy
+@appendixsubsubsec Keeping a checked out copy
+
+@c What other index entries? It seems like
+@c people might want to use a lot of different
+@c words for this functionality.
+@cindex Keeping a checked out copy
+@cindex Checked out copy, keeping
+@cindex Web pages, maintaining with CVS
+
+It is often useful to maintain a directory tree which
+contains files which correspond to the latest version
+in the repository. For example, other developers might
+want to refer to the latest sources without having to
+check them out, or you might be maintaining a web site
+with @sc{cvs} and want every checkin to cause the files
+used by the web server to be updated.
+@c Can we offer more details on the web example? Or
+@c point the user at how to figure it out? This text
+@c strikes me as sufficient for someone who already has
+@c some idea of what we mean but not enough for the naive
+@c user/sysadmin to understand it and set it up.
+
+The way to do this is by having loginfo invoke
+@code{cvs update}. Doing so in the naive way will
+cause a problem with locks, so the @code{cvs update}
+must be run in the background.
+@c Should we try to describe the problem with locks?
+@c It seems like a digression for someone who just
+@c wants to know how to make it work.
+@c Another choice which might work for a single file
+@c is to use "cvs -n update -p" which doesn't take
+@c out locks (I think) but I don't see many advantages
+@c of that and we might as well document something which
+@c works for multiple files.
+Here is an example for unix (this should all be on one line):
+
+@example
+^cyclic-pages (date; cat; (sleep 2; cd /u/www/local-docs;
+ cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
+@end example
+
+This will cause checkins to repository directories
+starting with @code{cyclic-pages} to update the checked
+out tree in @file{/u/www/local-docs}.
+@c More info on some of the details? The "sleep 2" is
+@c so if we are lucky the lock will be gone by the time
+@c we start and we can wait 2 seconds instead of 30.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node rcsinfo
+@appendixsec Rcsinfo
+@cindex rcsinfo (admin file)
+@cindex Form for log message
+@cindex Log message template
+@cindex Template for log message
+
+The @file{rcsinfo} file can be used to specify a form to
+edit when filling out the commit log. The
+@file{rcsinfo} file has a syntax similar to the
+@file{verifymsg}, @file{commitinfo} and @file{loginfo}
+files. @xref{syntax}. Unlike the other files the second
+part is @emph{not} a command-line template. Instead,
+the part after the regular expression should be a full pathname to
+a file containing the log message template.
+
+If the repository name does not match any of the
+regular expressions in this file, the @samp{DEFAULT}
+line is used, if it is specified.
+
+All occurrences of the name @samp{ALL} appearing as a
+regular expression are used in addition to the first
+matching regular expression or @samp{DEFAULT}.
+
+@c FIXME: should be offering advice, somewhere around
+@c here, about where to put the template file. The
+@c verifymsg example uses /usr/cvssupport but doesn't
+@c say anything about what that directory is for or
+@c whether it is hardwired into CVS or who creates
+@c it or anything. In particular we should say
+@c how to version control the template file. A
+@c probably better answer than the /usr/cvssupport
+@c stuff is to use checkoutlist (with xref to the
+@c checkoutlist doc).
+@c Also I am starting to see a connection between
+@c this and the Keeping a checked out copy node.
+@c Probably want to say something about that.
+The log message template will be used as a default log
+message. If you specify a log message with @samp{cvs
+commit -m @var{message}} or @samp{cvs commit -f
+@var{file}} that log message will override the
+template.
+
+@xref{verifymsg}, for an example @file{rcsinfo}
+file.
+
+When @sc{cvs} is accessing a remote repository,
+the contents of @file{rcsinfo} at the time a directory
+is first checked out will specify a template. This
+template will be updated on all @samp{cvs update}
+commands. It will also be added to new directories
+added with a @samp{cvs add new-directry} command.
+In versions of @sc{cvs} prior to version 1.12, the
+@file{CVS/Template} file was not updated. If the
+@sc{cvs} server is at version 1.12 or higher an older
+client may be used and the @file{CVS/Template} will
+be updated from the server.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node taginfo
+@node taginfo
+@c <en>@appendixsec Taginfo
+@appendixsec Taginfo
+@c <en>@cindex taginfo (admin file)
+@cindex taginfo (admin file)
+@c <en>@cindex Tags, logging
+@cindex Tags, logging
+@c <en>@cindex Tags, verifying
+@cindex Tags, verifying
+@c <en>The @file{taginfo} file defines programs to execute
+@c <en>when someone executes a @code{tag} or @code{rtag}
+@c <en>command. The @file{taginfo} file has the standard form
+@c <en>for administrative files (@pxref{syntax}),
+@c <en>where each line is a regular expression
+@c <en>followed by a command to execute. The arguments passed
+@c <en>to the command are, in order, the @var{tagname},
+@c <en>@var{operation} (@code{add} for @code{tag},
+@c <en>@code{mov} for @code{tag -F}, and @code{del} for
+@c <en>@code{tag -d}), @var{repository}, and any remaining are
+@c <en>pairs of @var{filename} @var{revision}. A non-zero
+@c <en>exit of the filter program will cause the tag to be
+@c <en>aborted.
+The @file{taginfo} file defines programs to execute
+when someone executes a @code{tag} or @code{rtag}
+command. The @file{taginfo} file has the standard form
+for administrative files (@pxref{syntax}),
+where each line is a regular expression
+followed by a command to execute. The arguments passed
+to the command are, in order, the @var{tagname},
+@var{operation} (@code{add} for @code{tag},
+@code{mov} for @code{tag -F}, and @code{del} for
+@code{tag -d}), @var{repository}, and any remaining are
+pairs of @var{filename} @var{revision}. A non-zero
+exit of the filter program will cause the tag to be
+aborted.
+
+@c <en>Here is an example of using the @file{taginfo} file
+@c <en>to log @code{tag} and @code{rtag}
+@c <en>commands. In the @file{taginfo} file put:
+Here is an example of using the @file{taginfo} file
+to log @code{tag} and @code{rtag}
+commands. In the @file{taginfo} file put:
+
+@example
+ALL /usr/local/cvsroot/CVSROOT/loggit
+@end example
+
+@noindent
+@c <en>Where @file{/usr/local/cvsroot/CVSROOT/loggit} contains the
+@c <en>following script:
+Where @file{/usr/local/cvsroot/CVSROOT/loggit} contains the
+following script:
+
+@example
+#!/bin/sh
+echo "$@@" >>/home/kingdon/cvsroot/CVSROOT/taglog
+@end example
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@node cvsignore
+@appendixsec Ignoring files via cvsignore
+@cindex cvsignore (admin file), global
+@cindex Global cvsignore
+@cindex Ignoring files
+@c -- This chapter should maybe be moved to the
+@c tutorial part of the manual?
+
+There are certain file names that frequently occur
+inside your working copy, but that you don't want to
+put under @sc{cvs} control. Examples are all the object
+files that you get while you compile your sources.
+Normally, when you run @samp{cvs update}, it prints a
+line for each file it encounters that it doesn't know
+about (@pxref{update output}).
+
+@sc{cvs} has a list of files (or sh(1) file name patterns)
+that it should ignore while running @code{update},
+@code{import} and @code{release}.
+@c -- Are those the only three commands affected?
+This list is constructed in the following way.
+
+@itemize @bullet
+@item
+The list is initialized to include certain file name
+patterns: names associated with @sc{cvs}
+administration, or with other common source control
+systems; common names for patch files, object files,
+archive files, and editor backup files; and other names
+that are usually artifacts of assorted utilities.
+Currently, the default list of ignored file name
+patterns is:
+
+@cindex Ignored files
+@cindex Automatically ignored files
+@example
+ RCS SCCS CVS CVS.adm
+ RCSLOG cvslog.*
+ tags TAGS
+ .make.state .nse_depinfo
+ *~ #* .#* ,* _$* *$
+ *.old *.bak *.BAK *.orig *.rej .del-*
+ *.a *.olb *.o *.obj *.so *.exe
+ *.Z *.elc *.ln
+ core
+@end example
+
+@item
+The per-repository list in
+@file{$CVSROOT/CVSROOT/cvsignore} is appended to
+the list, if that file exists.
+
+@item
+The per-user list in @file{.cvsignore} in your home
+directory is appended to the list, if it exists.
+
+@item
+Any entries in the environment variable
+@code{$CVSIGNORE} is appended to the list.
+
+@item
+Any @samp{-I} options given to @sc{cvs} is appended.
+
+@item
+As @sc{cvs} traverses through your directories, the contents
+of any @file{.cvsignore} will be appended to the list.
+The patterns found in @file{.cvsignore} are only valid
+for the directory that contains them, not for
+any sub-directories.
+@end itemize
+
+In any of the 5 places listed above, a single
+exclamation mark (@samp{!}) clears the ignore list.
+This can be used if you want to store any file which
+normally is ignored by @sc{cvs}.
+
+Specifying @samp{-I !} to @code{cvs import} will import
+everything, which is generally what you want to do if
+you are importing files from a pristine distribution or
+any other source which is known to not contain any
+extraneous files. However, looking at the rules above
+you will see there is a fly in the ointment; if the
+distribution contains any @file{.cvsignore} files, then
+the patterns from those files will be processed even if
+@samp{-I !} is specified. The only workaround is to
+remove the @file{.cvsignore} files in order to do the
+import. Because this is awkward, in the future
+@samp{-I !} might be modified to override
+@file{.cvsignore} files in each directory.
+
+Note that the syntax of the ignore files consists of a
+series of lines, each of which contains a space
+separated list of filenames. This offers no clean way
+to specify filenames which contain spaces, but you can
+use a workaround like @file{foo?bar} to match a file
+named @file{foo bar} (it also matches @file{fooxbar}
+and the like). Also note that there is currently no
+way to specify comments.
+@c FIXCVS? I don't _like_ this syntax at all, but
+@c changing it raises all the usual compatibility
+@c issues and I'm also not sure what to change it to.
+
+@node checkoutlist
+@appendixsec The checkoutlist file
+@cindex checkoutlist
+
+It may be helpful to use @sc{cvs} to maintain your own
+files in the @file{CVSROOT} directory. For example,
+suppose that you have a script @file{logcommit.pl}
+which you run by including the following line in the
+@file{commitinfo} administrative file:
+
+@example
+ALL $CVSROOT/CVSROOT/logcommit.pl
+@end example
+
+To maintain @file{logcommit.pl} with @sc{cvs} you would
+add the following line to the @file{checkoutlist}
+administrative file:
+
+@example
+logcommit.pl
+@end example
+
+The format of @file{checkoutlist} is one line for each
+file that you want to maintain using @sc{cvs}, giving
+the name of the file, followed optionally by more whitespace
+and any error message that should print if the file cannot be
+checked out into CVSROOT after a commit:
+
+@example
+logcommit.pl Could not update CVSROOT/logcommit.pl.
+@end example
+
+After setting up @file{checkoutlist} in this fashion,
+the files listed there will function just like
+@sc{cvs}'s built-in administrative files. For example,
+when checking in one of the files you should get a
+message such as:
+
+@example
+cvs commit: Rebuilding administrative file database
+@end example
+
+@noindent
+and the checked out copy in the @file{CVSROOT}
+directory should be updated.
+
+@c <en>Note that listing @file{passwd} (@pxref{Password
+@c <en>authentication server}) in @file{checkoutlist} is not
+@c <en>recommended for security reasons.
+Note that listing @file{passwd}
+(@pxref{Servidor de autenticação por senha}) in @file{checkoutlist} is not
+recommended for security reasons.
+
+For information about keeping a checkout out copy in a
+more general context than the one provided by
+@file{checkoutlist}, see @ref{Keeping a checked out
+copy}.
+
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c <en>@node history file
+@node arquivo history (histórico)
+@c <en>@appendixsec The history file
+@appendixsec O arquivo history (histórico)
+@c <en>@cindex History file
+@cindex Arquivo history (histórico)
+@c <en>@cindex Log information, saving
+@cindex Log information, saving
+
+@c <en>The file @file{$CVSROOT/CVSROOT/history} is used
+@c <en>to log information for the @code{history} command
+@c <en>(@pxref{history}). This file must be created to turn
+@c <en>on logging. This is done automatically if the
+@c <en>@code{cvs init} command is used to set up the
+@c <en>repository (@pxref{Creating a repository}).
+The file @file{$CVSROOT/CVSROOT/history} is used
+to log information for the @code{history} command
+(@pxref{history}). This file must be created to turn
+on logging. This is done automatically if the
+@code{cvs init} command is used to set up the
+repository (@pxref{Criando um repositório}).
+
+The file format of the @file{history} file is
+documented only in comments in the @sc{cvs} source
+code, but generally programs should use the @code{cvs
+history} command to access it anyway, in case the
+format changes with future releases of @sc{cvs}.
+
+@node Variables
+@appendixsec Expansions in administrative files
+@cindex Internal variables
+@cindex Variables
+
+Sometimes in writing an administrative file, you might
+want the file to be able to know various things based
+on environment @sc{cvs} is running in. There are
+several mechanisms to do that.
+
+@c <en>To find the home directory of the user running @sc{cvs}
+@c <en>(from the @code{HOME} environment variable), use
+@c <en>@samp{~} followed by @samp{/} or the end of the line.
+@c <en>Likewise for the home directory of @var{user}, use
+@c <en>@samp{~@var{user}}. These variables are expanded on
+@c <en>the server machine, and don't get any reasonable
+@c <en>expansion if pserver (@pxref{Password authenticated})
+@c <en>is in use; therefore user variables (see below) may be
+@c <en>a better choice to customize behavior based on the user
+@c <en>running @sc{cvs}.
+To find the home directory of the user running @sc{cvs}
+(from the @code{HOME} environment variable), use
+@samp{~} followed by @samp{/} or the end of the line.
+Likewise for the home directory of @var{user}, use
+@samp{~@var{user}}. These variables are expanded on
+the server machine, and don't get any reasonable
+expansion if pserver (@pxref{Autenticação por senha})
+is in use; therefore user variables (see below) may be
+a better choice to customize behavior based on the user
+running @sc{cvs}.
+@c Based on these limitations, should we deprecate ~?
+@c What is it good for? Are people using it?
+
+One may want to know about various pieces of
+information internal to @sc{cvs}. A @sc{cvs} internal
+variable has the syntax @code{$@{@var{variable}@}},
+where @var{variable} starts with a letter and consists
+of alphanumeric characters and @samp{_}. If the
+character following @var{variable} is a
+non-alphanumeric character other than @samp{_}, the
+@samp{@{} and @samp{@}} can be omitted. The @sc{cvs}
+internal variables are:
+
+@table @code
+@c <en>@item CVSROOT
+@item CVSROOT
+@c <en>@cindex CVSROOT, internal variable
+@cindex CVSROOT, internal variable
+@c <en>This is the absolute path to the current @sc{cvs} root directory.
+@c <en>@xref{Repository}, for a description of the various
+@c <en>ways to specify this, but note that the internal
+@c <en>variable contains just the directory and not any
+@c <en>of the access method information.
+This is the absolute path to the current @sc{cvs} root directory.
+@xref{Repositório}, for a description of the various
+ways to specify this, but note that the internal
+variable contains just the directory and not any
+of the access method information.
+
+@item RCSBIN
+@cindex RCSBIN, internal variable
+In @sc{cvs} 1.9.18 and older, this specified the
+directory where @sc{cvs} was looking for @sc{rcs}
+programs. Because @sc{cvs} no longer runs @sc{rcs}
+programs, specifying this internal variable is now an
+error.
+
+@c <en>@item CVSEDITOR
+@item CVSEDITOR
+@c <en>@cindex CVSEDITOR, internal variable
+@cindex CVSEDITOR, internal variable
+@c <en>@itemx EDITOR
+@itemx EDITOR
+@c <en>@cindex EDITOR, internal variable
+@cindex EDITOR, internal variable
+@c <en>@itemx VISUAL
+@itemx VISUAL
+@c <en>@cindex VISUAL, internal variable
+@cindex VISUAL, internal variable
+@c <en>These all expand to the same value, which is the editor
+@c <en>that @sc{cvs} is using. @xref{Global options}, for how
+@c <en>to specify this.
+These all expand to the same value, which is the editor
+that @sc{cvs} is using. @xref{Opções globais}, for how
+to specify this.
+
+@c <en>@item USER
+@item USER
+@c <en>@cindex USER, internal variable
+@cindex USER, internal variable
+@c <en>Username of the user running @sc{cvs} (on the @sc{cvs}
+@c <en>server machine).
+@c <en>When using pserver, this is the user specified in the repository
+@c <en>specification which need not be the same as the username the
+@c <en>server is running as (@pxref{Password authentication server}).
+@c <en>Do not confuse this with the environment variable of the same name.
+Username of the user running @sc{cvs} (on the @sc{cvs}
+server machine).
+When using pserver, this is the user specified in the repository
+specification which need not be the same as the username the
+server is running as (@pxref{Servidor de autenticação por senha}).
+Do not confuse this with the environment variable of the same name.
+@end table
+
+If you want to pass a value to the administrative files
+which the user who is running @sc{cvs} can specify,
+use a user variable.
+@cindex User variables
+To expand a user variable, the
+administrative file contains
+@code{$@{=@var{variable}@}}. To set a user variable,
+specify the global option @samp{-s} to @sc{cvs}, with
+argument @code{@var{variable}=@var{value}}. It may be
+particularly useful to specify this option via
+@file{.cvsrc} (@pxref{~/.cvsrc}).
+
+For example, if you want the administrative file to
+refer to a test directory you might create a user
+variable @code{TESTDIR}. Then if @sc{cvs} is invoked
+as
+
+@example
+cvs -s TESTDIR=/work/local/tests
+@end example
+
+@noindent
+and the
+administrative file contains @code{sh
+$@{=TESTDIR@}/runtests}, then that string is expanded
+to @code{sh /work/local/tests/runtests}.
+
+All other strings containing @samp{$} are reserved;
+there is no way to quote a @samp{$} character so that
+@samp{$} represents itself.
+
+Environment variables passed to administrative files are:
+
+@table @code
+@cindex environment variables, passed to administrative files
+
+@item CVS_USER
+@cindex CVS_USER, environment variable
+The @sc{cvs}-specific username provided by the user, if it
+can be provided (currently just for the pserver access
+method), and to the empty string otherwise. (@code{CVS_USER}
+and @code{USER} may differ when @file{$CVSROOT/CVSROOT/passwd}
+is used to map @sc{cvs} usernames to system usernames.)
+
+@item LOGNAME
+@cindex LOGNAME, environment variable
+The username of the system user.
+
+@item USER
+@cindex USER, environment variable
+Same as @code{LOGNAME}.
+Do not confuse this with the internal variable of the same name.
+@end table
+
+@node config
+@appendixsec The CVSROOT/config configuration file
+
+@cindex config, in CVSROOT
+@cindex CVSROOT/config
+
+The administrative file @file{config} contains various
+miscellaneous settings which affect the behavior of
+@sc{cvs}. The syntax is slightly different from the
+other administrative files. Variables are not
+expanded. Lines which start with @samp{#} are
+considered comments.
+@c FIXME: where do we define comments for the other
+@c administrative files.
+Other lines consist of a keyword, @samp{=}, and a
+value. Note that this syntax is very strict.
+Extraneous spaces or tabs are not permitted.
+@c See comments in parseinfo.c:parse_config for more
+@c discussion of this strictness.
+
+Currently defined keywords are:
+
+@table @code
+@cindex RCSBIN, in CVSROOT/config
+@item RCSBIN=@var{bindir}
+For @sc{cvs} 1.9.12 through 1.9.18, this setting told
+@sc{cvs} to look for @sc{rcs} programs in the
+@var{bindir} directory. Current versions of @sc{cvs}
+do not run @sc{rcs} programs; for compatibility this
+setting is accepted, but it does nothing.
+
+@c <en>@cindex SystemAuth, in CVSROOT/config
+@cindex SystemAuth, in CVSROOT/config
+@c <en>@item SystemAuth=@var{value}
+@item SystemAuth=@var{value}
+@c <en>If @var{value} is @samp{yes}, then pserver should check
+@c <en>for users in the system's user database if not found in
+@c <en>@file{CVSROOT/passwd}. If it is @samp{no}, then all
+@c <en>pserver users must exist in @file{CVSROOT/passwd}.
+@c <en>The default is @samp{yes}. For more on pserver, see
+@c <en>@ref{Password authenticated}.
+If @var{value} is @samp{yes}, then pserver should check
+for users in the system's user database if not found in
+@file{CVSROOT/passwd}. If it is @samp{no}, then all
+pserver users must exist in @file{CVSROOT/passwd}.
+The default is @samp{yes}. For more on pserver, see
+@ref{Autenticação por senha}.
+
+@ignore
+@cindex PreservePermissions, in CVSROOT/config
+@item PreservePermissions=@var{value}
+Enable support for saving special device files,
+symbolic links, file permissions and ownerships in the
+repository. The default value is @samp{no}.
+@xref{Special Files}, for the full implications of using
+this keyword.
+@end ignore
+
+@cindex TopLevelAdmin, in CVSROOT/config
+@item TopLevelAdmin=@var{value}
+Modify the @samp{checkout} command to create a
+@samp{CVS} directory at the top level of the new
+working directory, in addition to @samp{CVS}
+directories created within checked-out directories.
+The default value is @samp{no}.
+
+@c <en>This option is useful if you find yourself performing
+@c <en>many commands at the top level of your working
+@c <en>directory, rather than in one of the checked out
+@c <en>subdirectories. The @file{CVS} directory created there
+@c <en>will mean you don't have to specify @code{CVSROOT} for
+@c <en>each command. It also provides a place for the
+@c <en>@file{CVS/Template} file (@pxref{Working directory
+@c <en>storage}).
+This option is useful if you find yourself performing
+many commands at the top level of your working
+directory, rather than in one of the checked out
+subdirectories. The @file{CVS} directory created there
+will mean you don't have to specify @code{CVSROOT} for
+each command. It also provides a place for the
+@file{CVS/Template} file
+(@pxref{Armazenamento do Diretório de trabalho}).
+
+@c <en>@cindex LockDir, in CVSROOT/config
+@cindex LockDir, in CVSROOT/config
+@c <en>@item LockDir=@var{directory}
+@item LockDir=@var{directory}
+@c <en>Put @sc{cvs} lock files in @var{directory} rather than
+@c <en>directly in the repository. This is useful if you want
+@c <en>to let users read from the repository while giving them
+@c <en>write access only to @var{directory}, not to the
+@c <en>repository.
+@c <en>It can also be used to put the locks on a very fast
+@c <en>in-memory file system to speed up locking and unlocking
+@c <en>the repository.
+@c <en>You need to create @var{directory}, but
+@c <en>@sc{cvs} will create subdirectories of @var{directory} as it
+@c <en>needs them. For information on @sc{cvs} locks, see
+@c <en>@ref{Concurrency}.
+Put @sc{cvs} lock files in @var{directory} rather than
+directly in the repository. This is useful if you want
+to let users read from the repository while giving them
+write access only to @var{directory}, not to the
+repository.
+It can also be used to put the locks on a very fast
+in-memory file system to speed up locking and unlocking
+the repository.
+You need to create @var{directory}, but
+@sc{cvs} will create subdirectories of @var{directory} as it
+needs them. For information on @sc{cvs} locks, see
+@ref{Concorrência}.
+
+@c Mention this in Compatibility section?
+Before enabling the LockDir option, make sure that you
+have tracked down and removed any copies of @sc{cvs} 1.9 or
+older. Such versions neither support LockDir, nor will
+give an error indicating that they don't support it.
+The result, if this is allowed to happen, is that some
+@sc{cvs} users will put the locks one place, and others will
+put them another place, and therefore the repository
+could become corrupted. @sc{cvs} 1.10 does not support
+LockDir but it will print a warning if run on a
+repository with LockDir enabled.
+
+@cindex LogHistory, in CVSROOT/config
+@item LogHistory=@var{value}
+Control what is logged to the @file{CVSROOT/history} file (@pxref{history}).
+Default of @samp{TOEFWUPCGMAR} (or simply @samp{all}) will log
+all transactions. Any subset of the default is
+legal. (For example, to only log transactions that modify the
+@file{*,v} files, use @samp{LogHistory=TMAR}.)
+
+@cindex RereadLogAfterVerify, in CVSROOT/config
+@cindex @file{verifymsg}, changing the log message
+@item RereadLogAfterVerify=@var{value}
+Modify the @samp{commit} command such that CVS will reread the
+log message after running the program specified by @file{verifymsg}.
+@var{value} may be one of @samp{yes} or @samp{always}, indicating that
+the log message should always be reread; @samp{no}
+or @samp{never}, indicating that it should never be
+reread; or @var{value} may be @samp{stat}, indicating
+that the file should be checked with the filesystem
+@samp{stat()} function to see if it has changed (see warning below)
+before rereading. The default value is @samp{always}.
+
+@strong{Note: the `stat' mode can cause CVS to pause for up to
+one extra second per directory committed. This can be less IO and
+CPU intensive but is not recommended for use with large repositories}
+
+@xref{verifymsg}, for more information on how verifymsg
+may be used.
+
+@cindex UserAdminOptions, in CVSROOT/config
+@item UserAdminOptions=@var{value}
+Control what options will be allowed with the @code{cvs admin}
+command (@pxref{admin}) for users not in the @code{cvsadmin} group.
+The @var{value} string is a list of single character options
+which should be allowed. If a user who is not a member of the
+@code{cvsadmin} group tries to execute any @code{cvs admin}
+option which is not listed they will will receive an error message
+reporting that the option is restricted.
+
+If no @code{cvsadmin} group exists on the server, @sc{cvs} will
+ignore the @code{UserAdminOptions} keyword (@pxref{admin}).
+
+When not specified, @code{UserAdminOptions} defaults to
+@samp{k}. In other words, it defaults to allowing
+users outside of the @code{cvsadmin} group to use the
+@code{cvs admin} command only to change the default keyword
+expansion mode for files.
+
+As an example, to restrict users not in the @code{cvsadmin}
+group to using @code{cvs admin} to change the default keyword
+substitution mode, lock revisions, unlock revisions, and
+replace the log message, use @samp{UserAdminOptions=klum}.
+@end table
+
+@c ---------------------------------------------------------------------
+@c <en>@node Environment variables
+@node Variáveis de ambiente
+@c <en>@appendix All environment variables which affect CVS
+@appendix Todas as variáveis de ambiente que afetam o CVS
+@c <en>@cindex Environment variables
+@cindex Environment variables
+@c <en>@cindex Reference manual for variables
+@cindex Reference manual for variables
+
+This is a complete list of all environment variables
+that affect @sc{cvs}.
+
+@table @code
+@cindex CVSIGNORE, environment variable
+@item $CVSIGNORE
+A whitespace-separated list of file name patterns that
+@sc{cvs} should ignore. @xref{cvsignore}.
+
+@cindex CVSWRAPPERS, environment variable
+@item $CVSWRAPPERS
+A whitespace-separated list of file name patterns that
+@sc{cvs} should treat as wrappers. @xref{Wrappers}.
+
+@cindex CVSREAD, environment variable
+@cindex Read-only files, and CVSREAD
+@item $CVSREAD
+If this is set, @code{checkout} and @code{update} will
+try hard to make the files in your working directory
+read-only. When this is not set, the default behavior
+is to permit modification of your working files.
+
+@cindex CVSREADONLYFS, environment variable
+@item $CVSREADONLYFS
+Turns on read-only repository mode. This allows one to
+check out from a read-only repository, such as within
+an anoncvs server, or from a CDROM repository.
+
+It has the same effect as if the @samp{-R} command-line
+option is used. This can also allow the use of
+read-only NFS repositories.
+
+@c <en>@item $CVSUMASK
+@item $CVSUMASK
+@c <en>Controls permissions of files in the repository. See
+@c <en>@ref{File permissions}.
+Controls permissions of files in the repository. See
+@ref{Permissões de arquivos}.
+
+@item $CVSROOT
+Should contain the full pathname to the root of the @sc{cvs}
+source repository (where the @sc{rcs} files are
+kept). This information must be available to @sc{cvs} for
+most commands to execute; if @code{$CVSROOT} is not set,
+or if you wish to override it for one invocation, you
+can supply it on the command line: @samp{cvs -d cvsroot
+cvs_command@dots{}} Once you have checked out a working
+directory, @sc{cvs} stores the appropriate root (in
+the file @file{CVS/Root}), so normally you only need to
+worry about this when initially checking out a working
+directory.
+
+@c <en>@item $CVSEDITOR
+@item $CVSEDITOR
+@c <en>@cindex CVSEDITOR, environment variable
+@cindex CVSEDITOR, environment variable
+@c <en>@itemx $EDITOR
+@itemx $EDITOR
+@c <en>@cindex EDITOR, environment variable
+@cindex EDITOR, environment variable
+@c <en>@itemx $VISUAL
+@itemx $VISUAL
+@c <en>@cindex VISUAL, environment variable
+@cindex VISUAL, environment variable
+@c <en>Specifies the program to use for recording log messages
+@c <en>during commit. @code{$CVSEDITOR} overrides
+@c <en>@code{$EDITOR}, which overrides @code{$VISUAL}.
+@c <en>See @ref{Committing your changes} for more or
+@c <en>@ref{Global options} for alternative ways of specifying a
+@c <en>log editor.
+Specifies the program to use for recording log messages
+during commit. @code{$CVSEDITOR} overrides
+@code{$EDITOR}, which overrides @code{$VISUAL}.
+See @ref{Efetivando suas alterações} for more or
+@ref{Opções globais} for alternative ways of specifying a
+log editor.
+
+@cindex PATH, environment variable
+@item $PATH
+If @code{$RCSBIN} is not set, and no path is compiled
+into @sc{cvs}, it will use @code{$PATH} to try to find all
+programs it uses.
+
+@cindex HOME, environment variable
+@item $HOME
+@cindex HOMEPATH, environment variable
+@item $HOMEPATH
+@cindex HOMEDRIVE, environment variable
+@item $HOMEDRIVE
+Used to locate the directory where the @file{.cvsrc}
+file, and other such files, are searched. On Unix, @sc{cvs}
+just checks for @code{HOME}. On Windows NT, the system will
+set @code{HOMEDRIVE}, for example to @samp{d:} and @code{HOMEPATH},
+for example to @file{\joe}. On Windows 95, you'll
+probably need to set @code{HOMEDRIVE} and @code{HOMEPATH} yourself.
+@c We are being vague about whether HOME works on
+@c Windows; see long comment in windows-NT/filesubr.c.
+
+@c <en>@cindex CVS_RSH, environment variable
+@cindex CVS_RSH, environment variable
+@c <en>@item $CVS_RSH
+@item $CVS_RSH
+@c <en>Specifies the external program which @sc{cvs} connects with,
+@c <en>when @code{:ext:} access method is specified.
+@c <en>@pxref{Connecting via rsh}.
+Specifies the external program which @sc{cvs} connects with,
+when @code{:ext:} access method is specified.
+@pxref{Se conectando via rsh}.
+
+@c <en>@item $CVS_SERVER
+@item $CVS_SERVER
+@c <en>Used in client-server mode when accessing a remote
+@c <en>repository using @sc{rsh}. It specifies the name of
+@c <en>the program to start on the server side (and any
+@c <en>necessary arguments) when accessing a remote repository
+@c <en>using the @code{:ext:}, @code{:fork:}, or @code{:server:} access methods.
+@c <en>The default value for @code{:ext:} and @code{:server:} is @code{cvs};
+@c <en>the default value for @code{:fork:} is the name used to run the client.
+@c <en>@pxref{Connecting via rsh}
+Used in client-server mode when accessing a remote
+repository using @sc{rsh}. It specifies the name of
+the program to start on the server side (and any
+necessary arguments) when accessing a remote repository
+using the @code{:ext:}, @code{:fork:}, or @code{:server:} access methods.
+The default value for @code{:ext:} and @code{:server:} is @code{cvs};
+the default value for @code{:fork:} is the name used to run the client.
+@pxref{Se conectando via rsh}
+
+@c <en>@item $CVS_PASSFILE
+@item $CVS_PASSFILE
+@c <en>Used in client-server mode when accessing the @code{cvs
+@c <en>login server}. Default value is @file{$HOME/.cvspass}.
+@c <en>@pxref{Password authentication client}
+Used in client-server mode when accessing the @code{cvs
+login server}. Default value is @file{$HOME/.cvspass}.
+@pxref{Cliente de autenticação por senha}
+
+@c <en>@item $CVS_CLIENT_PORT
+@item $CVS_CLIENT_PORT
+@c <en>Used in client-server mode to set the port to use when accessing the server
+@c <en>via Kerberos, GSSAPI, or @sc{cvs}'s password authentication protocol
+@c <en>if the port is not specified in the CVSROOT.
+@c <en>@pxref{Remote repositories}
+Used in client-server mode to set the port to use when accessing the server
+via Kerberos, GSSAPI, or @sc{cvs}'s password authentication protocol
+if the port is not specified in the CVSROOT.
+@pxref{Repositórios remotos}
+
+@cindex CVS_RCMD_PORT, environment variable
+@item $CVS_RCMD_PORT
+Used in client-server mode. If set, specifies the port
+number to be used when accessing the @sc{rcmd} demon on
+the server side. (Currently not used for Unix clients).
+
+@cindex CVS_CLIENT_LOG, environment variable
+@item $CVS_CLIENT_LOG
+Used for debugging only in client-server
+mode. If set, everything sent to the server is logged
+into @file{@code{$CVS_CLIENT_LOG}.in} and everything
+sent from the server is logged into
+@file{@code{$CVS_CLIENT_LOG}.out}.
+
+@cindex CVS_SERVER_SLEEP, environment variable
+@item $CVS_SERVER_SLEEP
+Used only for debugging the server side in
+client-server mode. If set, delays the start of the
+server child process the specified amount of
+seconds so that you can attach to it with a debugger.
+
+@cindex CVS_IGNORE_REMOTE_ROOT, environment variable
+@item $CVS_IGNORE_REMOTE_ROOT
+For @sc{cvs} 1.10 and older, setting this variable
+prevents @sc{cvs} from overwriting the @file{CVS/Root}
+file when the @samp{-d} global option is specified.
+Later versions of @sc{cvs} do not rewrite
+@file{CVS/Root}, so @code{CVS_IGNORE_REMOTE_ROOT} has no
+effect.
+
+@cindex CVS_LOCAL_BRANCH_NUM, environment variable
+@item $CVS_LOCAL_BRANCH_NUM
+Setting this variable allows some control over the
+branch number that is assigned. This is specifically to
+support the local commit feature of CVSup. If one sets
+@code{CVS_LOCAL_BRANCH_NUM} to (say) 1000 then branches
+the local repository, the revision numbers will look
+like 1.66.1000.xx. There is almost a dead-set certainty
+that there will be no conflicts with version numbers.
+
+@cindex COMSPEC, environment variable
+@item $COMSPEC
+Used under OS/2 only. It specifies the name of the
+command interpreter and defaults to @sc{cmd.exe}.
+
+@c <en>@cindex TMPDIR, environment variable
+@cindex TMPDIR, environment variable
+@c <en>@item $TMPDIR
+@item $TMPDIR
+@c <en>@cindex TMP, environment variable
+@cindex TMP, environment variable
+@c <en>@itemx $TMP
+@itemx $TMP
+@c <en>@cindex TEMP, environment variable
+@cindex TEMP, environment variable
+@c <en>@itemx $TEMP
+@itemx $TEMP
+@c <en>@cindex Temporary files, location of
+@cindex Temporary files, location of
+@c This is quite nuts. We don't talk about tempnam
+@c or mkstemp which we sometimes use. The discussion
+@c of "Global options" is semi-incoherent.
+@c I'm not even sure those are the only inaccuracies.
+@c Furthermore, the conventions are
+@c pretty crazy and they should be simplified.
+@c <en>Directory in which temporary files are located.
+@c <en>The @sc{cvs} server uses
+@c <en>@code{TMPDIR}. @xref{Global options}, for a
+@c <en>description of how to specify this.
+@c <en>Some parts of @sc{cvs} will always use @file{/tmp} (via
+@c <en>the @code{tmpnam} function provided by the system).
+Directory in which temporary files are located.
+The @sc{cvs} server uses
+@code{TMPDIR}. @xref{Opções globais}, for a
+description of how to specify this.
+Some parts of @sc{cvs} will always use @file{/tmp} (via
+the @code{tmpnam} function provided by the system).
+
+On Windows NT, @code{TMP} is used (via the @code{_tempnam}
+function provided by the system).
+
+The @code{patch} program which is used by the @sc{cvs}
+client uses @code{TMPDIR}, and if it is not set, uses
+@file{/tmp} (at least with GNU patch 2.1). Note that
+if your server and client are both running @sc{cvs}
+1.9.10 or later, @sc{cvs} will not invoke an external
+@code{patch} program.
+
+@cindex CVS_PID, environment variable
+@item $CVS_PID
+This is the process identification (aka pid) number of
+the @sc{cvs} process. It is often useful in the
+programs and/or scripts specified by the
+@file{commitinfo}, @file{verifymsg}, @file{loginfo}
+files.
+@end table
+
+@c <en>@node Compatibility
+@node Compatibilidade
+@c <en>@appendix Compatibility between CVS Versions
+@appendix Compatibility between CVS Versions
+
+@cindex CVS, versions of
+@cindex Versions, of CVS
+@cindex Compatibility, between CVS versions
+@c We don't mention versions older than CVS 1.3
+@c on the theory that it would clutter it up for the vast
+@c majority of people, who don't have anything that old.
+@c
+@c <en>The repository format is compatible going back to
+@c <en>@sc{cvs} 1.3. But see @ref{Watches Compatibility}, if
+@c <en>you have copies of @sc{cvs} 1.6 or older and you want
+@c <en>to use the optional developer communication features.
+The repository format is compatible going back to
+@sc{cvs} 1.3. But see @ref{Compatibilidade de ???Watches???}, if
+you have copies of @sc{cvs} 1.6 or older and you want
+to use the optional developer communication features.
+@c If you "cvs rm" and commit using 1.3, then you'll
+@c want to run "rcs -sdead <file,v>" on each of the
+@c files in the Attic if you then want 1.5 and
+@c later to recognize those files as dead (I think the
+@c symptom if this is not done is that files reappear
+@c in joins). (Wait: the above will work but really to
+@c be strictly correct we should suggest checking
+@c in a new revision rather than just changing the
+@c state of the head revision, shouldn't we?).
+@c The old convert.sh script was for this, but it never
+@c did get updated to reflect use of the RCS "dead"
+@c state.
+@c Note: this is tricky to document without confusing
+@c people--need to carefully say what CVS version we
+@c are talking about and keep in mind the distinction
+@c between a
+@c repository created with 1.3 and on which one now
+@c uses 1.5+, and a repository on which one wants to
+@c use both versions side by side (e.g. during a
+@c transition period).
+@c Wait, can't CVS just detect the case in which a file
+@c is in the Attic but the head revision is not dead?
+@c Not sure whether this should produce a warning or
+@c something, and probably needs further thought, but
+@c it would appear that the situation can be detected.
+@c
+@c We might want to separate out the 1.3 compatibility
+@c section (for repository & working directory) from the
+@c rest--that might help avoid confusing people who
+@c are upgrading (for example) from 1.6 to 1.8.
+@c
+@c A minor incompatibility is if a current version of CVS
+@c puts "Nfoo" into CVS/Tag, then CVS 1.9 or older will
+@c see this as if there is no tag. Seems to me this is
+@c too obscure to mention.
+
+The working directory format is compatible going back
+to @sc{cvs} 1.5. It did change between @sc{cvs} 1.3
+and @sc{cvs} 1.5. If you run @sc{cvs} 1.5 or newer on
+a working directory checked out with @sc{cvs} 1.3,
+@sc{cvs} will convert it, but to go back to @sc{cvs}
+1.3 you need to check out a new working directory with
+@sc{cvs} 1.3.
+
+The remote protocol is interoperable going back to @sc{cvs} 1.5, but no
+further (1.5 was the first official release with the remote protocol,
+but some older versions might still be floating around). In many
+cases you need to upgrade both the client and the server to take
+advantage of new features and bugfixes, however.
+
+@c Perhaps should be saying something here about the
+@c "D" lines in Entries (written by CVS 1.9; 1.8 and
+@c older don't use them). These are supposed to be
+@c compatible in both directions, but I'm not sure
+@c they quite are 100%. One common gripe is if you
+@c "rm -r" a directory and 1.9 gets confused, as it
+@c still sees it in Entries. That one is fixed in
+@c (say) 1.9.6. Someone else reported problems with
+@c starting with a directory which was checked out with
+@c an old version, and then using a new version, and
+@c some "D" lines appeared, but not for every
+@c directory, causing some directories to be skipped.
+@c They weren't sure how to reproduce this, though.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Troubleshooting
+@node Resolução de problemas
+@c <en>@appendix Troubleshooting
+@appendix Resolução de problemas
+
+If you are having trouble with @sc{cvs}, this appendix
+may help. If there is a particular error message which
+you are seeing, then you can look up the message
+alphabetically. If not, you can look through the
+section on other problems to see if your problem is
+mentioned there.
+
+@menu
+@c <en>* Error messages:: Partial list of CVS errors
+* Mensagens de erro:: Partial list of CVS errors
+@c <en>* Connection:: Trouble making a connection to a CVS server
+* Conexão:: Trouble making a connection to a CVS server
+@c <en>* Other problems:: Problems not readily listed by error message
+* Outros problemas:: Problems not readily listed by error message
+@end menu
+
+@ignore
+@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+@c @node Bad administrative files
+@appendixsec Bad administrative files
+
+@c -- Give hints on how to fix them
+@end ignore
+
+@c <en>@node Error messages
+@node Mensagens de erro
+@c <en>@appendixsec Partial list of error messages
+@appendixsec Partial list of error messages
+
+Here is a partial list of error messages that you may
+see from @sc{cvs}. It is not a complete list---@sc{cvs}
+is capable of printing many, many error messages, often
+with parts of them supplied by the operating system,
+but the intention is to list the common and/or
+potentially confusing error messages.
+
+The messages are alphabetical, but introductory text
+such as @samp{cvs update: } is not considered in
+ordering them.
+
+In some cases the list includes messages printed by old
+versions of @sc{cvs} (partly because users may not be
+sure which version of @sc{cvs} they are using at any
+particular moment).
+@c If we want to start retiring messages, perhaps we
+@c should pick a cutoff version (for example, no more
+@c messages which are specific to versions before 1.9)
+@c and then move the old messages to an "old messages"
+@c node rather than deleting them completely.
+
+@table @code
+@c FIXME: What is the correct way to format a multiline
+@c error message here? Maybe @table is the wrong
+@c choice? Texinfo gurus?
+@c <en>@item @var{file}:@var{line}: Assertion '@var{text}' failed
+@item @var{file}:@var{line}: Assertion '@var{text}' failed
+@c <en>The exact format of this message may vary depending on
+@c <en>your system. It indicates a bug in @sc{cvs}, which can
+@c <en>be handled as described in @ref{BUGS}.
+The exact format of this message may vary depending on
+your system. It indicates a bug in @sc{cvs}, which can
+be handled as described in @ref{Paus}.
+
+@c <en>@item cvs @var{command}: authorization failed: server @var{host} rejected access
+@item cvs @var{command}: authorization failed: server @var{host} rejected access
+@c <en>This is a generic response when trying to connect to a
+@c <en>pserver server which chooses not to provide a
+@c <en>specific reason for denying authorization. Check that
+@c <en>the username and password specified are correct and
+@c <en>that the @code{CVSROOT} specified is allowed by @samp{--allow-root}
+@c <en>in @file{inetd.conf}. See @ref{Password authenticated}.
+This is a generic response when trying to connect to a
+pserver server which chooses not to provide a
+specific reason for denying authorization. Check that
+the username and password specified are correct and
+that the @code{CVSROOT} specified is allowed by @samp{--allow-root}
+in @file{inetd.conf}. See @ref{Autenticação por senha}.
+
+@item cvs @var{command}: conflict: removed @var{file} was modified by second party
+This message indicates that you removed a file, and
+someone else modified it. To resolve the conflict,
+first run @samp{cvs add @var{file}}. If desired, look
+at the other party's modification to decide whether you
+still want to remove it. If you don't want to remove
+it, stop here. If you do want to remove it, proceed
+with @samp{cvs remove @var{file}} and commit your
+removal.
+@c Tests conflicts2-142b* in sanity.sh test for this.
+
+@item cannot change permissions on temporary directory
+@example
+Operation not permitted
+@end example
+This message has been happening in a non-reproducible,
+occasional way when we run the client/server testsuite,
+both on Red Hat Linux 3.0.3 and 4.1. We haven't been
+able to figure out what causes it, nor is it known
+whether it is specific to linux (or even to this
+particular machine!). If the problem does occur on
+other unices, @samp{Operation not permitted} would be
+likely to read @samp{Not owner} or whatever the system
+in question uses for the unix @code{EPERM} error. If
+you have any information to add, please let us know as
+described in @ref{Paus}. If you experience this error
+while using @sc{cvs}, retrying the operation which
+produced it should work fine.
+@c This has been seen in a variety of tests, including
+@c multibranch-2, multibranch-5, and basic1-24-rm-rm,
+@c so it doesn't seem particularly specific to any one
+@c test.
+
+@c <en>@item cvs [server aborted]: Cannot check out files into the repository itself
+@item cvs [server aborted]: Cannot check out files into the repository itself
+@c <en>The obvious cause for this message (especially for
+@c <en>non-client/server @sc{cvs}) is that the @sc{cvs} root
+@c <en>is, for example, @file{/usr/local/cvsroot} and you try
+@c <en>to check out files when you are in a subdirectory, such
+@c <en>as @file{/usr/local/cvsroot/test}. However, there is a
+@c <en>more subtle cause, which is that the temporary
+@c <en>directory on the server is set to a subdirectory of the
+@c <en>root (which is also not allowed). If this is the
+@c <en>problem, set the temporary directory to somewhere else,
+@c <en>for example @file{/var/tmp}; see @code{TMPDIR} in
+@c <en>@ref{Environment variables}, for how to set the
+@c <en>temporary directory.
+The obvious cause for this message (especially for
+non-client/server @sc{cvs}) is that the @sc{cvs} root
+is, for example, @file{/usr/local/cvsroot} and you try
+to check out files when you are in a subdirectory, such
+as @file{/usr/local/cvsroot/test}. However, there is a
+more subtle cause, which is that the temporary
+directory on the server is set to a subdirectory of the
+root (which is also not allowed). If this is the
+problem, set the temporary directory to somewhere else,
+for example @file{/var/tmp}; see @code{TMPDIR} in
+@ref{Variáveis de ambiente}, for how to set the
+temporary directory.
+
+@item cannot commit files as 'root'
+See @samp{'root' is not allowed to commit files}.
+
+@c For one example see basica-1a10 in the testsuite
+@c For another example, "cvs co ." on NT; see comment
+@c at windows-NT/filesubr.c (expand_wild).
+@c For another example, "cvs co foo/bar" where foo exists.
+@c <en>@item cannot open CVS/Entries for reading: No such file or directory
+@item cannot open CVS/Entries for reading: No such file or directory
+@c <en>This generally indicates a @sc{cvs} internal error, and
+@c <en>can be handled as with other @sc{cvs} bugs
+@c <en>(@pxref{BUGS}). Usually there is a workaround---the
+@c <en>exact nature of which would depend on the situation but
+@c <en>which hopefully could be figured out.
+This generally indicates a @sc{cvs} internal error, and
+can be handled as with other @sc{cvs} bugs
+(@pxref{Paus}). Usually there is a workaround---the
+exact nature of which would depend on the situation but
+which hopefully could be figured out.
+
+@c This is more obscure than it might sound; it only
+@c happens if you run "cvs init" from a directory which
+@c contains a CVS/Root file at the start.
+@item cvs [init aborted]: cannot open CVS/Root: No such file or directory
+This message is harmless. Provided it is not
+accompanied by other errors, the operation has
+completed successfully. This message should not occur
+with current versions of @sc{cvs}, but it is documented
+here for the benefit of @sc{cvs} 1.9 and older.
+
+@c <en>@item cvs server: cannot open /root/.cvsignore: Permission denied
+@item cvs server: cannot open /root/.cvsignore: Permission denied
+@c <en>@itemx cvs [server aborted]: can't chdir(/root): Permission denied
+@itemx cvs [server aborted]: can't chdir(/root): Permission denied
+@c <en>See @ref{Connection}.
+See @ref{Conexão}.
+
+@c <en>@item cvs [checkout aborted]: cannot rename file @var{file} to CVS/,,@var{file}: Invalid argument
+@item cvs [checkout aborted]: cannot rename file @var{file} to CVS/,,@var{file}: Invalid argument
+@c <en>This message has been reported as intermittently
+@c <en>happening with @sc{cvs} 1.9 on Solaris 2.5. The cause is
+@c <en>unknown; if you know more about what causes it, let us
+@c <en>know as described in @ref{BUGS}.
+This message has been reported as intermittently
+happening with @sc{cvs} 1.9 on Solaris 2.5. The cause is
+unknown; if you know more about what causes it, let us
+know as described in @ref{Paus}.
+
+@c <en>@item cvs [@var{command} aborted]: cannot start server via rcmd
+@item cvs [@var{command} aborted]: cannot start server via rcmd
+@c <en>This, unfortunately, is a rather nonspecific error
+@c <en>message which @sc{cvs} 1.9 will print if you are
+@c <en>running the @sc{cvs} client and it is having trouble
+@c <en>connecting to the server. Current versions of @sc{cvs}
+@c <en>should print a much more specific error message. If
+@c <en>you get this message when you didn't mean to run the
+@c <en>client at all, you probably forgot to specify
+@c <en>@code{:local:}, as described in @ref{Repository}.
+This, unfortunately, is a rather nonspecific error
+message which @sc{cvs} 1.9 will print if you are
+running the @sc{cvs} client and it is having trouble
+connecting to the server. Current versions of @sc{cvs}
+should print a much more specific error message. If
+you get this message when you didn't mean to run the
+client at all, you probably forgot to specify
+@code{:local:}, as described in @ref{Repositório}.
+
+@item ci: @var{file},v: bad diff output line: Binary files - and /tmp/T2a22651 differ
+@sc{cvs} 1.9 and older will print this message
+when trying to check in a binary file if
+@sc{rcs} is not correctly installed. Re-read the
+instructions that came with your @sc{rcs} distribution
+and the @sc{install} file in the @sc{cvs}
+distribution. Alternately, upgrade to a current
+version of @sc{cvs}, which checks in files itself
+rather than via @sc{rcs}.
+
+@c <en>@item cvs checkout: could not check out @var{file}
+@item cvs checkout: could not check out @var{file}
+@c <en>With @sc{cvs} 1.9, this can mean that the @code{co} program
+@c <en>(part of @sc{rcs}) returned a failure. It should be
+@c <en>preceded by another error message, however it has been
+@c <en>observed without another error message and the cause is
+@c <en>not well-understood. With the current version of @sc{cvs},
+@c <en>which does not run @code{co}, if this message occurs
+@c <en>without another error message, it is definitely a @sc{cvs}
+@c <en>bug (@pxref{BUGS}).
+With @sc{cvs} 1.9, this can mean that the @code{co} program
+(part of @sc{rcs}) returned a failure. It should be
+preceded by another error message, however it has been
+observed without another error message and the cause is
+not well-understood. With the current version of @sc{cvs},
+which does not run @code{co}, if this message occurs
+without another error message, it is definitely a @sc{cvs}
+bug (@pxref{Paus}).
+@c My current suspicion is that the RCS in the rcs (not
+@c cvs/winnt/rcs57nt.zip) directory on the _Practical_
+@c CD is bad (remains to be confirmed).
+@c There is also a report of something which looks
+@c very similar on SGI, Irix 5.2, so I dunno.
+
+@c <en>@item cvs [login aborted]: could not find out home directory
+@item cvs [login aborted]: could not find out home directory
+@c <en>This means that you need to set the environment
+@c <en>variables that @sc{cvs} uses to locate your home directory.
+@c <en>See the discussion of @code{HOME}, @code{HOMEDRIVE}, and @code{HOMEPATH} in
+@c <en>@ref{Environment variables}.
+This means that you need to set the environment
+variables that @sc{cvs} uses to locate your home directory.
+See the discussion of @code{HOME}, @code{HOMEDRIVE}, and @code{HOMEPATH} in
+@ref{Variáveis de ambiente}.
+
+@item cvs update: could not merge revision @var{rev} of @var{file}: No such file or directory
+@sc{cvs} 1.9 and older will print this message if there was
+a problem finding the @code{rcsmerge} program. Make
+sure that it is in your @code{PATH}, or upgrade to a
+current version of @sc{cvs}, which does not require
+an external @code{rcsmerge} program.
+
+@item cvs [update aborted]: could not patch @var{file}: No such file or directory
+This means that there was a problem finding the
+@code{patch} program. Make sure that it is in your
+@code{PATH}. Note that despite appearances the message
+is @emph{not} referring to whether it can find @var{file}.
+If both the client and the server are running a current
+version of @sc{cvs}, then there is no need for an
+external patch program and you should not see this
+message. But if either client or server is running
+@sc{cvs} 1.9, then you need @code{patch}.
+
+@item cvs update: could not patch @var{file}; will refetch
+This means that for whatever reason the client was
+unable to apply a patch that the server sent. The
+message is nothing to be concerned about, because
+inability to apply the patch only slows things down and
+has no effect on what @sc{cvs} does.
+@c xref to update output. Or File status?
+@c Or some place else that
+@c explains this whole "patch"/P/Needs Patch thing?
+
+@c <en>@item dying gasps from @var{server} unexpected
+@item dying gasps from @var{server} unexpected
+@c <en>There is a known bug in the server for @sc{cvs} 1.9.18
+@c <en>and older which can cause this. For me, this was
+@c <en>reproducible if I used the @samp{-t} global option. It
+@c <en>was fixed by Andy Piper's 14 Nov 1997 change to
+@c <en>src/filesubr.c, if anyone is curious.
+@c <en>If you see the message,
+@c <en>you probably can just retry the operation which failed,
+@c <en>or if you have discovered information concerning its
+@c <en>cause, please let us know as described in @ref{BUGS}.
+There is a known bug in the server for @sc{cvs} 1.9.18
+and older which can cause this. For me, this was
+reproducible if I used the @samp{-t} global option. It
+was fixed by Andy Piper's 14 Nov 1997 change to
+src/filesubr.c, if anyone is curious.
+If you see the message,
+you probably can just retry the operation which failed,
+or if you have discovered information concerning its
+cause, please let us know as described in @ref{Paus}.
+
+@c <en>@item end of file from server (consult above messages if any)
+@item end of file from server (consult above messages if any)
+@c <en>The most common cause for this message is if you are
+@c <en>using an external @code{rsh} program and it exited with
+@c <en>an error. In this case the @code{rsh} program should
+@c <en>have printed a message, which will appear before the
+@c <en>above message. For more information on setting up a
+@c <en>@sc{cvs} client and server, see @ref{Remote repositories}.
+The most common cause for this message is if you are
+using an external @code{rsh} program and it exited with
+an error. In this case the @code{rsh} program should
+have printed a message, which will appear before the
+above message. For more information on setting up a
+@sc{cvs} client and server, see @ref{Repositórios remotos}.
+
+@c <en>@item cvs [update aborted]: EOF in key in RCS file @var{file},v
+@item cvs [update aborted]: EOF in key in RCS file @var{file},v
+@c <en>@itemx cvs [checkout aborted]: EOF while looking for end of string in RCS file @var{file},v
+@itemx cvs [checkout aborted]: EOF while looking for end of string in RCS file @var{file},v
+@c <en>This means that there is a syntax error in the given
+@c <en>@sc{rcs} file. Note that this might be true even if @sc{rcs} can
+@c <en>read the file OK; @sc{cvs} does more error checking of
+@c <en>errors in the RCS file. That is why you may see this
+@c <en>message when upgrading from @sc{cvs} 1.9 to @sc{cvs}
+@c <en>1.10. The likely cause for the original corruption is
+@c <en>hardware, the operating system, or the like. Of
+@c <en>course, if you find a case in which @sc{cvs} seems to
+@c <en>corrupting the file, by all means report it,
+@c <en>(@pxref{BUGS}).
+@c <en>There are quite a few variations of this error message,
+@c <en>depending on exactly where in the @sc{rcs} file @sc{cvs}
+@c <en>finds the syntax error.
+This means that there is a syntax error in the given
+@sc{rcs} file. Note that this might be true even if @sc{rcs} can
+read the file OK; @sc{cvs} does more error checking of
+errors in the RCS file. That is why you may see this
+message when upgrading from @sc{cvs} 1.9 to @sc{cvs}
+1.10. The likely cause for the original corruption is
+hardware, the operating system, or the like. Of
+course, if you find a case in which @sc{cvs} seems to
+corrupting the file, by all means report it,
+(@pxref{Paus}).
+There are quite a few variations of this error message,
+depending on exactly where in the @sc{rcs} file @sc{cvs}
+finds the syntax error.
+
+@cindex mkmodules
+@item cvs commit: Executing 'mkmodules'
+This means that your repository is set up for a version
+of @sc{cvs} prior to @sc{cvs} 1.8. When using @sc{cvs}
+1.8 or later, the above message will be preceded by
+
+@example
+cvs commit: Rebuilding administrative file database
+@end example
+
+If you see both messages, the database is being rebuilt
+twice, which is unnecessary but harmless. If you wish
+to avoid the duplication, and you have no versions of
+@sc{cvs} 1.7 or earlier in use, remove @code{-i mkmodules}
+every place it appears in your @code{modules}
+file. For more information on the @code{modules} file,
+see @ref{modules}.
+
+@c This message comes from "co", and I believe is
+@c possible only with older versions of CVS which call
+@c co. The problem with being able to create the bogus
+@c RCS file still exists, though (and I think maybe
+@c there is a different symptom(s) now).
+@c FIXME: Would be nice to have a more exact wording
+@c for this message.
+@item missing author
+Typically this can happen if you created an RCS file
+with your username set to empty. @sc{cvs} will, bogusly,
+create an illegal RCS file with no value for the author
+field. The solution is to make sure your username is
+set to a non-empty value and re-create the RCS file.
+@c "make sure your username is set" is complicated in
+@c and of itself, as there are the environment
+@c variables the system login name, &c, and it depends
+@c on the version of CVS.
+
+@c <en>@item cvs [checkout aborted]: no such tag @var{tag}
+@item cvs [checkout aborted]: no such tag @var{tag}
+@c <en>This message means that @sc{cvs} isn't familiar with
+@c <en>the tag @var{tag}. Usually this means that you have
+@c <en>mistyped a tag name; however there are (relatively
+@c <en>obscure) cases in which @sc{cvs} will require you to
+@c <en>@c Search sanity.sh for "no such tag" to see some of
+@c <en>@c the relatively obscure cases.
+@c <en>try a few other @sc{cvs} commands involving that tag,
+@c <en>before you find one which will cause @sc{cvs} to update
+This message means that @sc{cvs} isn't familiar with
+the tag @var{tag}. Usually this means that you have
+mistyped a tag name; however there are (relatively
+obscure) cases in which @sc{cvs} will require you to
+@c Search sanity.sh for "no such tag" to see some of
+@c the relatively obscure cases.
+try a few other @sc{cvs} commands involving that tag,
+before you find one which will cause @sc{cvs} to update
+@c <en>@cindex CVSROOT/val-tags file, forcing tags into
+@cindex CVSROOT/val-tags file, forcing tags into
+@c <en>@cindex val-tags file, forcing tags into
+@cindex val-tags file, forcing tags into
+@c <en>the @file{val-tags} file; see discussion of val-tags in
+@c <en>@ref{File permissions}. You only need to worry about
+@c <en>this once for a given tag; when a tag is listed in
+@c <en>@file{val-tags}, it stays there. Note that using
+@c <en>@samp{-f} to not require tag matches does not override
+@c <en>this check; see @ref{Common options}.
+the @file{val-tags} file; see discussion of val-tags in
+@ref{Permissões de arquivos}. You only need to worry about
+this once for a given tag; when a tag is listed in
+@file{val-tags}, it stays there. Note that using
+@samp{-f} to not require tag matches does not override
+this check; see @ref{Opções comuns}.
+
+@c <en>@item *PANIC* administration files missing
+@item *PANIC* administration files missing
+@c <en>This typically means that there is a directory named
+@c <en>@sc{cvs} but it does not contain the administrative files
+@c <en>which @sc{cvs} puts in a CVS directory. If the problem is
+@c <en>that you created a CVS directory via some mechanism
+@c <en>other than @sc{cvs}, then the answer is simple, use a name
+@c <en>other than @sc{cvs}. If not, it indicates a @sc{cvs} bug
+@c <en>(@pxref{BUGS}).
+This typically means that there is a directory named
+@sc{cvs} but it does not contain the administrative files
+which @sc{cvs} puts in a CVS directory. If the problem is
+that you created a CVS directory via some mechanism
+other than @sc{cvs}, then the answer is simple, use a name
+other than @sc{cvs}. If not, it indicates a @sc{cvs} bug
+(@pxref{Paus}).
+
+@item rcs error: Unknown option: -x,v/
+This message will be followed by a usage message for
+@sc{rcs}. It means that you have an old version of
+@sc{rcs} (probably supplied with your operating
+system), as well as an old version of @sc{cvs}.
+@sc{cvs} 1.9.18 and earlier only work with @sc{rcs} version 5 and
+later; current versions of @sc{cvs} do not run @sc{rcs} programs.
+@c For more information on installing @sc{cvs}, see
+@c (FIXME: where? it depends on whether you are
+@c getting binaries or sources or what).
+@c The message can also say "ci error" or something
+@c instead of "rcs error", I suspect.
+
+@c <en>@item cvs [server aborted]: received broken pipe signal
+@item cvs [server aborted]: received broken pipe signal
+@c <en>This message seems to be caused by a hard-to-track-down
+@c <en>bug in @sc{cvs} or the systems it runs on (we don't
+@c <en>know---we haven't tracked it down yet!). It seems to
+@c <en>happen only after a @sc{cvs} command has completed, and
+@c <en>you should be able to just ignore the message.
+@c <en>However, if you have discovered information concerning its
+@c <en>cause, please let us know as described in @ref{BUGS}.
+This message seems to be caused by a hard-to-track-down
+bug in @sc{cvs} or the systems it runs on (we don't
+know---we haven't tracked it down yet!). It seems to
+happen only after a @sc{cvs} command has completed, and
+you should be able to just ignore the message.
+However, if you have discovered information concerning its
+cause, please let us know as described in @ref{Paus}.
+
+@item 'root' is not allowed to commit files
+When committing a permanent change, @sc{cvs} makes a log entry of
+who committed the change. If you are committing the change logged
+in as "root" (not under "su" or other root-priv giving program),
+@sc{cvs} cannot determine who is actually making the change.
+As such, by default, @sc{cvs} disallows changes to be committed by users
+logged in as "root". (You can disable this option by passing the
+@code{--enable-rootcommit} option to @file{configure} and recompiling @sc{cvs}.
+On some systems this means editing the appropriate @file{config.h} file
+before building @sc{cvs}.)
+
+@item Too many arguments!
+This message is typically printed by the @file{log.pl}
+script which is in the @file{contrib} directory in the
+@sc{cvs} source distribution. In some versions of
+@sc{cvs}, @file{log.pl} has been part of the default
+@sc{cvs} installation. The @file{log.pl} script gets
+called from the @file{loginfo} administrative file.
+Check that the arguments passed in @file{loginfo} match
+what your version of @file{log.pl} expects. In
+particular, the @file{log.pl} from @sc{cvs} 1.3 and
+older expects the logfile as an argument whereas the
+@file{log.pl} from @sc{cvs} 1.5 and newer expects the
+logfile to be specified with a @samp{-f} option. Of
+course, if you don't need @file{log.pl} you can just
+comment it out of @file{loginfo}.
+
+@item cvs [update aborted]: unexpected EOF reading @var{file},v
+See @samp{EOF in key in RCS file}.
+
+@c <en>@item cvs [login aborted]: unrecognized auth response from @var{server}
+@item cvs [login aborted]: unrecognized auth response from @var{server}
+@c <en>This message typically means that the server is not set
+@c <en>up properly. For example, if @file{inetd.conf} points
+@c <en>to a nonexistent cvs executable. To debug it further,
+@c <en>find the log file which inetd writes
+@c <en>(@file{/var/log/messages} or whatever inetd uses on
+@c <en>your system). For details, see @ref{Connection}, and
+@c <en>@ref{Password authentication server}.
+This message typically means that the server is not set
+up properly. For example, if @file{inetd.conf} points
+to a nonexistent cvs executable. To debug it further,
+find the log file which inetd writes
+(@file{/var/log/messages} or whatever inetd uses on
+your system). For details, see @ref{Conexão}, and
+@ref{Servidor de autenticação por senha}.
+
+@c <en>@item cvs commit: Up-to-date check failed for `@var{file}'
+@item cvs commit: Up-to-date check failed for `@var{file}'
+@c <en>This means that someone else has committed a change to
+@c <en>that file since the last time that you did a @code{cvs
+@c <en>update}. So before proceeding with your @code{cvs
+@c <en>commit} you need to @code{cvs update}. @sc{cvs} will merge
+@c <en>the changes that you made and the changes that the
+@c <en>other person made. If it does not detect any conflicts
+@c <en>it will report @samp{M @var{file}} and you are ready
+@c <en>to @code{cvs commit}. If it detects conflicts it will
+@c <en>print a message saying so, will report @samp{C @var{file}},
+@c <en>and you need to manually resolve the
+@c <en>conflict. For more details on this process see
+@c <en>@ref{Conflicts example}.
+This means that someone else has committed a change to
+that file since the last time that you did a @code{cvs
+update}. So before proceeding with your @code{cvs
+commit} you need to @code{cvs update}. @sc{cvs} will merge
+the changes that you made and the changes that the
+other person made. If it does not detect any conflicts
+it will report @samp{M @var{file}} and you are ready
+to @code{cvs commit}. If it detects conflicts it will
+print a message saying so, will report @samp{C @var{file}},
+and you need to manually resolve the
+conflict. For more details on this process see
+@ref{Exemplo de conflitos}.
+
+@item Usage: diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1 file2 file3
+@example
+Only one of [exEX3] allowed
+@end example
+This indicates a problem with the installation of
+@code{diff3} and @code{rcsmerge}. Specifically
+@code{rcsmerge} was compiled to look for GNU diff3, but
+it is finding unix diff3 instead. The exact text of
+the message will vary depending on the system. The
+simplest solution is to upgrade to a current version of
+@sc{cvs}, which does not rely on external
+@code{rcsmerge} or @code{diff3} programs.
+
+@item warning: unrecognized response `@var{text}' from cvs server
+If @var{text} contains a valid response (such as
+@samp{ok}) followed by an extra carriage return
+character (on many systems this will cause the second
+part of the message to overwrite the first part), then
+it probably means that you are using the @samp{:ext:}
+access method with a version of rsh, such as most
+non-unix rsh versions, which does not by default
+provide a transparent data stream. In such cases you
+probably want to try @samp{:server:} instead of
+@samp{:ext:}. If @var{text} is something else, this
+may signify a problem with your @sc{cvs} server.
+Double-check your installation against the instructions
+for setting up the @sc{cvs} server.
+@c FIXCVS: should be printing CR as \r or \015 or some
+@c such, probably.
+
+@c <en>@item cvs commit: [@var{time}] waiting for @var{user}'s lock in @var{directory}
+@item cvs commit: [@var{time}] waiting for @var{user}'s lock in @var{directory}
+@c <en>This is a normal message, not an error. See
+@c <en>@ref{Concurrency}, for more details.
+This is a normal message, not an error. See
+@ref{Concorrência}, for more details.
+
+@item cvs commit: warning: editor session failed
+@cindex Exit status, of editor
+This means that the editor which @sc{cvs} is using exits with a nonzero
+exit status. Some versions of vi will do this even when there was not
+a problem editing the file. If so, point the
+@code{CVSEDITOR} environment variable to a small script
+such as:
+
+@example
+#!/bin/sh
+vi $*
+exit 0
+@end example
+
+@c "warning: foo was lost" and "no longer pertinent" (both normal).
+@c Would be nice to write these up--they are
+@c potentially confusing for the new user.
+@end table
+
+@c <en>@node Connection
+@node Conexão
+@c <en>@appendixsec Trouble making a connection to a CVS server
+@appendixsec Trouble making a connection to a CVS server
+
+This section concerns what to do if you are having
+trouble making a connection to a @sc{cvs} server. If
+you are running the @sc{cvs} command line client
+running on Windows, first upgrade the client to
+@sc{cvs} 1.9.12 or later. The error reporting in
+earlier versions provided much less information about
+what the problem was. If the client is non-Windows,
+@sc{cvs} 1.9 should be fine.
+
+If the error messages are not sufficient to track down
+the problem, the next steps depend largely on which
+access method you are using.
+
+@table @code
+@cindex :ext:, troubleshooting
+@item :ext:
+Try running the rsh program from the command line. For
+example: "rsh servername cvs -v" should print @sc{cvs}
+version information. If this doesn't work, you need to
+fix it before you can worry about @sc{cvs} problems.
+
+@cindex :server:, troubleshooting
+@item :server:
+You don't need a command line rsh program to use this
+access method, but if you have an rsh program around,
+it may be useful as a debugging tool. Follow the
+directions given for :ext:.
+
+@cindex :pserver:, troubleshooting
+@item :pserver:
+Errors along the lines of "connection refused" typically indicate
+that inetd isn't even listening for connections on port 2401
+whereas errors like "connection reset by peer",
+"received broken pipe signal", "recv() from server: EOF",
+or "end of file from server"
+typically indicate that inetd is listening for
+connections but is unable to start @sc{cvs} (this is frequently
+caused by having an incorrect path in @file{inetd.conf}
+or by firewall software rejecting the connection).
+"unrecognized auth response" errors are caused by a bad command
+line in @file{inetd.conf}, typically an invalid option or forgetting
+to put the @samp{pserver} command at the end of the line.
+Another less common problem is invisible control characters that
+your editor "helpfully" added without you noticing.
+
+One good debugging tool is to "telnet servername
+2401". After connecting, send any text (for example
+"foo" followed by return). If @sc{cvs} is working
+correctly, it will respond with
+
+@example
+cvs [pserver aborted]: bad auth protocol start: foo
+@end example
+
+If instead you get:
+
+@example
+Usage: cvs [cvs-options] command [command-options-and-arguments]
+...
+@end example
+
+@noindent
+then you're missing the @samp{pserver} command at the end of the
+line in @file{inetd.conf}; check to make sure that the entire command
+is on one line and that it's complete.
+
+Likewise, if you get something like:
+
+@example
+Unknown command: `pserved'
+
+CVS commands are:
+ add Add a new file/directory to the repository
+...
+@end example
+
+@noindent
+then you've misspelled @samp{pserver} in some way. If it isn't
+obvious, check for invisible control characters (particularly
+carriage returns) in @file{inetd.conf}.
+
+If it fails to work at all, then make sure inetd is working
+right. Change the invocation in @file{inetd.conf} to run the
+echo program instead of cvs. For example:
+
+@example
+2401 stream tcp nowait root /bin/echo echo hello
+@end example
+
+After making that change and instructing inetd to
+re-read its configuration file, "telnet servername
+2401" should show you the text hello and then the
+server should close the connection. If this doesn't
+work, you need to fix it before you can worry about
+@sc{cvs} problems.
+
+On AIX systems, the system will often have its own
+program trying to use port 2401. This is AIX's problem
+in the sense that port 2401 is registered for use with
+@sc{cvs}. I hear that there is an AIX patch available
+to address this problem.
+
+Another good debugging tool is the @samp{-d}
+(debugging) option to inetd. Consult your system
+documentation for more information.
+
+If you seem to be connecting but get errors like:
+
+@example
+cvs server: cannot open /root/.cvsignore: Permission denied
+cvs [server aborted]: can't chdir(/root): Permission denied
+@end example
+
+@noindent
+then you probably haven't specified @samp{-f} in @file{inetd.conf}.
+(In releases prior to @sc{cvs} 1.11.1, this problem can be caused by
+your system setting the @code{$HOME} environment variable
+for programs being run by inetd. In this case, you can either
+have inetd run a shell script that unsets @code{$HOME} and then runs
+@sc{cvs}, or you can use @code{env} to run @sc{cvs} with a pristine
+environment.)
+
+If you can connect successfully for a while but then can't,
+you've probably hit inetd's rate limit.
+(If inetd receives too many requests for the same service
+in a short period of time, it assumes that something is wrong
+and temporarily disables the service.)
+Check your inetd documentation to find out how to adjust the
+rate limit (some versions of inetd have a single rate limit,
+others allow you to set the limit for each service separately.)
+@end table
+
+@c <en>@node Other problems
+@node Outros problemas
+@c <en>@appendixsec Other common problems
+@appendixsec Other common problems
+
+Here is a list of problems which do not fit into the
+above categories. They are in no particular order.
+
+@itemize @bullet
+@item
+@c <en>On Windows, if there is a 30 second or so delay when
+@c <en>you run a @sc{cvs} command, it may mean that you have
+@c <en>your home directory set to @file{C:/}, for example (see
+@c <en>@code{HOMEDRIVE} and @code{HOMEPATH} in
+@c <en>@ref{Environment variables}). @sc{cvs} expects the home
+@c <en>directory to not end in a slash, for example @file{C:}
+@c <en>or @file{C:\cvs}.
+On Windows, if there is a 30 second or so delay when
+you run a @sc{cvs} command, it may mean that you have
+your home directory set to @file{C:/}, for example (see
+@code{HOMEDRIVE} and @code{HOMEPATH} in
+@ref{Variáveis de ambiente}). @sc{cvs} expects the home
+directory to not end in a slash, for example @file{C:}
+or @file{C:\cvs}.
+@c FIXCVS: CVS should at least detect this and print an
+@c error, presumably.
+
+@item
+@c <en>If you are running @sc{cvs} 1.9.18 or older, and
+@c <en>@code{cvs update} finds a conflict and tries to
+@c <en>merge, as described in @ref{Conflicts example}, but
+@c <en>doesn't tell you there were conflicts, then you may
+@c <en>have an old version of @sc{rcs}. The easiest solution
+@c <en>probably is to upgrade to a current version of
+@c <en>@sc{cvs}, which does not rely on external @sc{rcs}
+@c <en>programs.
+If you are running @sc{cvs} 1.9.18 or older, and
+@code{cvs update} finds a conflict and tries to
+merge, as described in @ref{Exemplo de conflitos}, but
+doesn't tell you there were conflicts, then you may
+have an old version of @sc{rcs}. The easiest solution
+probably is to upgrade to a current version of
+@sc{cvs}, which does not rely on external @sc{rcs}
+programs.
+@end itemize
+
+@c ---------------------------------------------------------------------
+@c <en>@node Credits
+@node Créditos
+@c <en>@appendix Credits
+@appendix Créditos
+
+@cindex Contributors (manual)
+@cindex Credits (manual)
+Roland Pesch, then of Cygnus Support <@t{roland@@wrs.com}>
+wrote the manual pages which were distributed with
+@sc{cvs} 1.3. Much of their text was copied into this
+manual. He also read an early draft
+of this manual and contributed many ideas and
+corrections.
+
+The mailing-list @code{info-cvs} is sometimes
+informative. I have included information from postings
+made by the following persons:
+David G. Grubbs <@t{dgg@@think.com}>.
+
+Some text has been extracted from the man pages for
+@sc{rcs}.
+
+The @sc{cvs} @sc{faq} by David G. Grubbs has provided
+useful material. The @sc{faq} is no longer maintained,
+however, and this manual is about the closest thing there
+is to a successor (with respect to documenting how to
+use @sc{cvs}, at least).
+
+In addition, the following persons have helped by
+telling me about mistakes I've made:
+
+@display
+Roxanne Brunskill <@t{rbrunski@@datap.ca}>,
+Kathy Dyer <@t{dyer@@phoenix.ocf.llnl.gov}>,
+Karl Pingle <@t{pingle@@acuson.com}>,
+Thomas A Peterson <@t{tap@@src.honeywell.com}>,
+Inge Wallin <@t{ingwa@@signum.se}>,
+Dirk Koschuetzki <@t{koschuet@@fmi.uni-passau.de}>
+and Michael Brown <@t{brown@@wi.extrel.com}>.
+@end display
+
+The list of contributors here is not comprehensive; for a more
+complete list of who has contributed to this manual see
+the file @file{doc/ChangeLog} in the @sc{cvs} source
+distribution.
+
+@c ---------------------------------------------------------------------
+@c <en>@node BUGS
+@node Paus
+@c <en>@appendix Dealing with bugs in CVS or this manual
+@appendix Dealing with bugs in CVS or this manual
+
+@cindex Bugs in this manual or CVS
+Neither @sc{cvs} nor this manual is perfect, and they
+probably never will be. If you are having trouble
+using @sc{cvs}, or think you have found a bug, there
+are a number of things you can do about it. Note that
+if the manual is unclear, that can be considered a bug
+in the manual, so these problems are often worth doing
+something about as well as problems with @sc{cvs} itself.
+
+@cindex Reporting bugs
+@cindex Bugs, reporting
+@cindex Errors, reporting
+@itemize @bullet
+@item
+If you want someone to help you and fix bugs that you
+report, there are companies which will do that for a
+fee. One such company is:
+
+@cindex Ximbiot
+@cindex Support, getting CVS support
+@example
+Ximbiot
+319 S. River St.
+Harrisburg, PA 17104-1657
+USA
+Email: info@@ximbiot.com
+Phone: (717) 579-6168
+Fax: (717) 234-3125
+@url{http://ximbiot.com/}
+
+@end example
+
+@item
+If you got @sc{cvs} through a distributor, such as an
+operating system vendor or a vendor of freeware
+@sc{cd-rom}s, you may wish to see whether the
+distributor provides support. Often, they will provide
+no support or minimal support, but this may vary from
+distributor to distributor.
+
+@item
+If you have the skills and time to do so, you may wish
+to fix the bug yourself. If you wish to submit your
+fix for inclusion in future releases of @sc{cvs}, see
+the file @sc{hacking} in the @sc{cvs} source
+distribution. It contains much more information on the
+process of submitting fixes.
+
+@item
+There may be resources on the net which can help. Two
+good places to start are:
+
+@example
+@url{http://cvs.nongnu.org/}
+@end example
+
+If you are so inspired, increasing the information
+available on the net is likely to be appreciated. For
+example, before the standard @sc{cvs} distribution
+worked on Windows 95, there was a web page with some
+explanation and patches for running @sc{cvs} on Windows
+95, and various people helped out by mentioning this
+page on mailing lists or newsgroups when the subject
+came up.
+
+@item
+It is also possible to report bugs to @email{bug-cvs@@nongnu.org}.
+Note that someone may or may not want to do anything
+with your bug report---if you need a solution consider
+one of the options mentioned above. People probably do
+want to hear about bugs which are particularly severe
+in consequences and/or easy to fix, however. You can
+also increase your odds by being as clear as possible
+about the exact nature of the bug and any other
+relevant information. The way to report bugs is to
+send email to @email{bug-cvs@@nongnu.org}. Note
+that submissions to @email{bug-cvs@@nongnu.org} may be distributed
+under the terms of the @sc{gnu} Public License, so if
+you don't like this, don't submit them. There is
+usually no justification for sending mail directly to
+one of the @sc{cvs} maintainers rather than to
+@email{bug-cvs@@nongnu.org}; those maintainers who want to hear
+about such bug reports read @email{bug-cvs@@nongnu.org}. Also note
+that sending a bug report to other mailing lists or
+newsgroups is @emph{not} a substitute for sending it to
+@email{bug-cvs@@nongnu.org}. It is fine to discuss @sc{cvs} bugs on
+whatever forum you prefer, but there are not
+necessarily any maintainers reading bug reports sent
+anywhere except @email{bug-cvs@@nongnu.org}.
+@end itemize
+
+@cindex Known bugs in this manual or CVS
+People often ask if there is a list of known bugs or
+whether a particular bug is a known one. The file
+@sc{bugs} in the @sc{cvs} source distribution is one
+list of known bugs, but it doesn't necessarily try to
+be comprehensive. Perhaps there will never be a
+comprehensive, detailed list of known bugs.
+
+@c ---------------------------------------------------------------------
+@c <en>@node Index
+@node Indice
+@c <en>@unnumbered Index
+@unnumbered Índice
+@c <en>@cindex Index
+@cindex Índice
+
+@printindex cp
+
+@summarycontents
+
+@contents
+
+@bye
+
+Local Variables:
+fill-column: 55
+End: