Play grim reaper and remove the obsolete article about

CVSup Advanced points from the repository including
translations.

Announced on and no objections from:	freebsd-doc mailinglist
This commit is contained in:
Benedict Reuschling 2013-05-01 14:34:55 +00:00
parent fb122a85cf
commit 7feccf6673
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=41535
9 changed files with 0 additions and 959 deletions
en_US.ISO8859-1/articles
fr_FR.ISO8859-1/articles
ru_RU.KOI8-R/articles

View file

@ -13,7 +13,6 @@ SUBDIR+= contributors
SUBDIR+= cups
SUBDIR+= custom-gcc
SUBDIR+= cvs-freebsd
SUBDIR+= cvsup-advanced
SUBDIR+= explaining-bsd
SUBDIR+= fbsd-from-scratch
SUBDIR+= filtering-bridges

View file

@ -1,17 +0,0 @@
#
# $FreeBSD$
#
# Article: CVSup Advanced Points
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?= YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,274 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
"../../../share/xml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN" "../../share/xml/entities.ent">
%entities;
]>
<article lang='en'>
<articleinfo>
<title>CVSup Advanced Points</title>
<authorgroup>
<author>
<firstname>Salvo</firstname>
<surname>Bartolotta</surname>
<affiliation>
<address><email>bartequi@neomedia.it</email></address>
</affiliation>
</author>
</authorgroup>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>The present article assumes a basic understanding of <application>CVSup</application>
operation. It documents several delicate issues connected with
source synchronization via <application>CVSup</application>, viz. effective solutions to
the problem of stale files as well as special source updating
cases; which issues are likely to cause apparently inexplicable
troubles.</para>
</abstract>
</articleinfo>
<sect1 id="preface">
<title>Preface</title>
<para>This document is the fruit of the author's attempts to
fully understand the niceties of <application>CVSup</application> &amp; source updating.&nbsp;:-)
While the author has made every effort to make these pages
as informative and correct as possible, he is only human and
may have made all sorts of typos, mistakes, etc. He will be
very grateful for any comments and/or suggestions you send to
his e-mail address, <email>bartequi@neomedia.it</email>.</para>
</sect1>
<sect1 id="introduction">
<title>Introduction</title>
<para>If you have visited
<ulink url="http://www.polstra.com/">John Polstra's site</ulink>
and read
<ulink url="http://www.polstra.com/projects/freeware/CVSup/faq.html">his
FAQ</ulink>,
you may have noticed Question 12 &amp; 13.</para>
<para>When updating any collection of sources (eg
<filename>/usr/ports</filename>), &man.cvsup.1; makes use of
the related checkouts file in order to perform the updating
process in the most efficient and correct way. In this example
(<filename>/usr/ports</filename>), the related checkouts file
is <filename>/usr/sup/ports-all/checkouts.cvs:.</filename> if
your base is <filename>/usr</filename>.</para>
<para>A checkouts file contains information on the current status
of your sources&mdash;in a way, a sort of <quote>photograph</quote>. This
significant information enables <command>cvsup</command> to retrieve updates most
effectively. Further, and maybe more important, it enables <command>cvsup</command>
to correctly manage your sources by locally deleting any files
no longer present in the repository, thus leaving no stale files
on your system. In fact, without a checkouts file, <command>cvsup</command> would
<emphasis>not</emphasis> know which files your collection was composed of (cf
&man.cvsup.1; and the fallback method for details); as a result,
it could not delete on your system those files no longer present
in the repository. They would remain on your system (stale
files), and might cause you subtle build failures or other
trouble. For example, this problem is likely to occur if you
first update your ports collection several weeks after you
got your installation CD-ROMs.</para>
<para>It is therefore recommended that you adopt the two-step procedure
outlined in the <application>CVSup</application> FAQ (cf Q12, Q13); in subsequent sections, you
will be given interesting and instructive concrete examples.</para>
</sect1>
<sect1 id="script">
<title>A useful python script: <command>cvsupchk</command></title>
<para>Alternatively, in order to examine your sources for
inconsistencies, you may wish to utilize the <command>cvsupchk</command> python
script; which script is currently found in
<filename>/usr/ports/net/cvsup/work/cvsup-16.1/contrib/cvsupchk</filename>,
together with a nice <filename>README</filename>. Prerequisites:</para>
<orderedlist>
<listitem>
<para><literal>/usr/ports/net/cvsup</literal> &prompt.root;
<userinput> make extract</userinput></para>
</listitem>
<listitem>
<para>python (also found in the ports collection :-))</para>
</listitem>
<listitem>
<para>a checkouts file for your collection of sources.</para>
</listitem>
</orderedlist>
<para>If you are updating your sources for the very first time,
of course you do not have a checkouts file. After installing
python and updating your sources (eg <filename>/usr/ports</filename>),
you can check them thus:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/ports-all/checkouts.cvs:. | more</userinput></screen>
<para>If you want to check your RELENG_4 sources:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/src-all/checkouts.cvs:RELENG_4 | more</userinput></screen>
<para>In each case, <command>cvsupchk</command> will inspect your sources for
inconsistencies by utilizing the information contained in the
related checkouts file. Such anomalies as deleted files being
present (aka stale files), missing checked-out files, extra RCS
files, and dead directories will be printed to standard output.</para>
<para>In the next section, we will provide important, typical
examples of source updating; which examples will show you the
role of checkouts files and the dangers of negligent source
management.</para>
</sect1>
<sect1 id="examples">
<title>Examples of more advanced source management</title>
<sect2>
<title>How to safely change tags when updating
<literal>src-all</literal></title>
<para>If you specify eg <literal>tag=A</literal> in your <filename>supfile</filename>, <command>cvsup</command> will create
a checkouts file called <filename>checkouts.cvs:A</filename>:
for instance, if <literal>tag=RELENG_4</literal>, a checkouts file called
<filename>checkouts.cvs:RELENG_4</filename> is generated.
This file will be used to retrieve and/or store information
identifying your 4-STABLE sources.</para>
<para>When tracking <literal>src-all</literal>, if you wish to
pass from <literal>tag=A</literal> to <literal>tag=B</literal> (A less/greater than B not making
any difference) and if your checkouts file is
<filename>checkouts.cvs:A</filename>, the following actions
should be performed:</para>
<orderedlist>
<listitem>
<para>&prompt.root; <userinput>mv checkouts.cvs:A
checkouts.cvs:B</userinput>
(This provides the subsequent step with the appropriate
checkouts file)</para>
</listitem>
<listitem>
<para>write a <filename>supfile</filename> whose collection line reads:</para>
<programlisting>src-all tag=B</programlisting>
</listitem>
<listitem>
<para>cvsup your sources using the new <filename>supfile</filename>.</para>
</listitem>
</orderedlist>
<para>The <command>cvsup</command> utility will look for <filename>checkouts.cvs:B</filename>&mdash;in
that the target is B; that is, <command>cvsup</command> will make use of
the information contained therein to correctly manage your
sources.</para>
<para>The benefits:</para>
<itemizedlist>
<listitem>
<para>the sources are dealt with correctly (in particular,
no stale files)</para>
</listitem>
<listitem>
<para>less load is placed on the server, in that <command>cvsup</command>
operates in the most efficient way.</para>
</listitem>
</itemizedlist>
<para>For example, <literal>A=RELENG_4</literal>, <literal>B=.</literal>. The period in <literal>B=.</literal> means
-CURRENT. This is a rather typical update, from 4-STABLE
to -CURRENT. While it is straightforward to <quote>downgrade</quote> your
sources (e.g., from -CURRENT to -STABLE), downgrading a system
is quite another matter. You are STRONGLY advised not to
attempt such an operation, unless you know exactly what you
are doing.</para>
</sect2>
<sect2>
<title>Updating to the same tag as of a different date</title>
<para>If you wish to switch from <literal>tag=A</literal> to <literal>tag=A</literal> as of a
different GMT date (say, <literal>date=D</literal>), you will execute the
following:</para>
<orderedlist>
<listitem>
<para>write a <filename>supfile</filename> whose collection line reads:</para>
<programlisting>src-all tag=A date=D</programlisting>
</listitem>
<listitem>
<para>update your sources using the new <filename>supfile</filename></para>
</listitem>
</orderedlist>
<para>Whether the new date precedes that of the last sync
operation with <literal>tag=A</literal> or not, it is immaterial. For example,
in order to specify the date <quote>August 27, 2000, 10:00:00 GMT</quote>
you write the line:</para>
<programlisting>src-all tag=RELENG_4 date=2000.08.27.10.00.00</programlisting>
<note><para>The format of a date is rigid. You have to specify
all the components of the date: century (<quote>20</quote>, i.e., the 21st
century, must be supplied whereas <quote>19</quote>, the past century, can
be omitted), year, month, day, hour, minutes, seconds&mdash;as
shown in the above example. For more information, please
see &man.cvsup.1;.</para></note>
<para>Whether or not a date is specified, the checkouts file
is called <filename>checkouts.cvs:A</filename> (e.g.,
<filename>checkouts.cvs:RELENG_4</filename>). As a result,
no particular action is needed in order to revert to the
previous state: you have to modify the date in the <filename>supfile</filename>,
and run <command>csvup</command> again.</para>
</sect2>
<sect2>
<title>Updating your ports collection for the first time</title>
<para>If you want to <quote>sync</quote> your ports tree for
the first time you should use a tag that matches your &os;
installation. E.g., if you have installed the Ports
Collection during the installation of &os; 5.3-RELEASE the
following should be used:
<programlisting>ports-all tag=RELEASE_5_3_0</programlisting>
The <command>cvsup</command> program will create a ports
checkout file, which is precisely the goal of the first
special sync operation. Now we can use the <quote>.</quote>
tag to update the tree whenever we feel it should be updated:
<programlisting>ports-all tag=.</programlisting>
All subsequent updates will be carried out smoothly.</para>
<para>If you have been reading the apparently nit-picking
remarks in these sections, you will probably have recognized
the potential for trouble in a source updating process.
A number of people have actually run into problems. You have
been warned. :-)</para>
</sect2>
</sect1>
</article>

View file

@ -11,7 +11,6 @@ SUBDIR+= committers-guide
SUBDIR+= contributing
SUBDIR+= contributing-ports
SUBDIR+= contributors
SUBDIR+= cvsup-advanced
SUBDIR+= explaining-bsd
SUBDIR+= filtering-bridges
SUBDIR+= fonts

View file

@ -1,21 +0,0 @@
#
# The FreeBSD Documentation Project
# The FreeBSD French Documentation Project
#
# $FreeBSD$
# Original revision: 1.1
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
JADEFLAGS+= -V %generate-article-toc%
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,342 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
"../../../share/xml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//FR" "../../share/xml/entities.ent">
%entities;
<!ENTITY % not.published "IGNORE">
]>
<!--
The FreeBSD Documentation Project
The FreeBSD French Documentation Project
$FreeBSD$
$Id: article.xml,v 1.7 2007-01-20 13:34:48 blackend Exp $
Original revision: 1.12
-->
<article lang="fr">
<articleinfo>
<title>Utilisation avancée de cvsup</title>
<authorgroup>
<author>
<firstname>Salvo</firstname>
<surname>Bartolotta</surname>
<affiliation>
<address><email>bartequi@neomedia.it</email></address>
</affiliation>
</author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>Le présent article suppose une compréhension
de base de l'utilisation de <application>CVSup</application>.
Il expose plusieurs problèmes délicats
liés &agrave; la synchronisation des sources &agrave;
l'aide de <application>CVSup</application>, c'est &agrave;
dire des solutions efficaces aux problèmes des fichiers
obsolètes aussi bien qu'aux cas spéciaux de mise
&agrave; jour des sources, ces problèmes sont susceptibles
de causer des désagréments apparemment
inexplicables.</para>
&trans.a.fonvieille;
</abstract>
</articleinfo>
<sect1 id="preface">
<title>Préface</title>
<para>Ce document est le fruit des tentatives de l'auteur de
comprendre les finesses de <application>CVSup</application> et
de la mise &agrave; jour des sources.&nbsp;:-)
Bien que l'auteur ait fait de nombreux efforts pour
rendre ces pages aussi instructives et correctes que possible,
il n'est qu'un être humain et a pu avoir commis toutes sortes
de coquilles, d'erreurs, etc... Il sera vraiment reconnaissant
pour tous les commentaires et/ou suggestions que vous enverrez
&agrave; son adresse électronique
<email>bartequi@neomedia.it</email>.</para>
</sect1>
<sect1 id="introduction">
<title>Introduction</title>
<para>Si vous avez consulté le <ulink
url="http://www.polstra.com/">site de John Polstra</ulink> et lu
sa <ulink
url="http://www.polstra.com/projects/freeware/CVSup/faq.html">FAQ</ulink>,
vous avez pu avoir remarqué les questions 12 et 13.</para>
<para>En mettant &agrave; jour n'importe quelle &ldquo;catalogue&rdquo;
- collection de sources (e.g. <filename>/usr/ports</filename>),
&man.cvsup.1; se sert des fichiers de &ldquo;checkouts&rdquo;
relatifs afin d'effectuer le processus de mise &agrave; jour de la
manière la plus efficace et la plus correcte possible. Dans cet
exemple (<filename>/usr/ports</filename>), le fichiers de
&ldquo;checkouts&rdquo; relatif est
<filename>/usr/sup/ports-all/checkouts.cvs:.</filename> si votre
répertoire de base est <filename>/usr</filename>.</para>
<para>Un fichier &ldquo;checkouts&rdquo; contient l'information
sur l'état actuel de vos sources -- d'une certaine
manière, une sorte de &ldquo;photographie&rdquo;. Cette
information permet &agrave; <application>cvsup</application> de
rechercher les mises &agrave; jour le plus efficacement. De
plus, et c'est peut-être plus important, il permet
&agrave; <application>cvsup</application> de gérer
correctement vos sources en effaçant localement tout
fichier qui n'est plus présent sur l'archive centrale,
et de ce fait ne pas laisser de fichiers obsolètes sur
votre système. En fait, sans un fichier
&ldquo;checkouts&rdquo;, <application>cvsup</application> ne
saurait PAS de quels fichiers votre catalogue est composé
(Cf &man.cvsup.1; pour plus de détails), et en
conséquence, il ne pourrait PAS effacer de votre
système ces fichiers qui ne sont plus présents sur
l'archive centrale. Ils resteraient sur votre système
(les fichiers obsolètes), et pourraient vous causer de
subtiles échecs de compilation ou tout autre
désagrément. Par exemple, ce problème est
susceptible de se produire si vous mettez &agrave; jour votre
catalogue de logiciels portés plusieurs semaines
après que vous ayez eu vos CDROMs d'installation.</para>
<para>Il est donc recommandé que vous adoptiez la
procédure en deux temps décrite dans la FAQ de
<application>CVSup</application> (Cf Q12, Q13); dans les
sections suivantes, on vous présentera des exemples
concrets intéressant et instructifs.</para>
</sect1>
<sect1 id="script">
<title>Une procédure python utile: cvsupchk</title>
<para>Alternativement, afin d'examiner les sources pour les
inconsistences, vous pouvez souhaiter utiliser la procédure
python <command>cvsupchk</command>, procédure qui se
trouve actuellement dans
<filename>/usr/ports/net/cvsup/work/cvsup-16.1/contrib/cvsupchk</filename>,
avec un sympathique <filename>README</filename>.
Prérequis:</para>
<orderedlist>
<listitem>
<para><literal>/usr/ports/net/cvsup</literal> &prompt.root;
<userinput> make extract</userinput></para>
</listitem>
<listitem>
<para>python (que l'on trouve également dans le catalogue
des logiciels portés :-)).</para>
</listitem>
<listitem>
<para>Un fichier &ldquo;checkouts&rdquo; pour votre
catalogue des sources.</para>
</listitem>
</orderedlist>
<para>Si vous mettez &agrave; jour vos sources pour la toute
première fois, naturellement vous n'avez pas de fichier
&ldquo;checkouts&rdquo;. Après l'installation de python
et la mise &agrave; jour de vos sources (e.g.
<filename>/usr/ports</filename>), vous pouvez les vérifier
ainsi:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/ports-all/checkouts.cvs:. | more</userinput></screen>
<para>Si vous désirez vérifier vos sources RELENG_4:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/src-all/checkouts.cvs:RELENG_4 | more</userinput></screen>
<para>Dans chaque cas, <command>cvsupchk</command>
inspectera vos sources &agrave; la
recherche d'inconsistances en utilisant les informations
contenues dans le fichier de &ldquo;checkouts&rdquo; relatif.
Des anomalies comme des fichiers effacés, encore
présents (aka fichiers obsolètes), fichiers
récupérés absents, fichiers RCS
supplémentaires, et répertoires vides seront
affichés sur la sortie standard.</para>
<para>Dans la section suivante, nous présenterons des exemples
typiques de la mise &agrave; jour de source, exemples qui vous
montreront le rôle des fichiers de &ldquo;checkouts&rdquo;
et les dangers d'une gestion négligée des sources.</para>
</sect1>
<sect1 id="examples">
<title>Exemples avancés de gestion des sources</title>
<sect2>
<title>Comment modifier sans risques le champ tag quand vous
mettez &agrave; jour <literal>src-all</literal></title>
<para>Si vous spécifiez par exemple <literal>tag=A</literal>
dans votre fichier <filename>supfile</filename>,
<application>cvsup</application> créera
un fichier &ldquo;checkouts&rdquo; appelé
<filename>checkouts.cvs:A</filename>, par exemple avec le
champ <literal>tag=RELENG_4</literal>, un fichier de
&ldquo;checkouts&rdquo;
<filename>checkouts.cvs:RELENG_4</filename> est
généré. Ce fichier sera utilisé
pour récupérer et/ou stocker
l'information identifiant vos sources 4-STABLE.</para>
<para>En suivant le catalogue <literal>src-all</literal>, si
vous souhaitez passer de <literal>tag=A</literal> &agrave;
<literal>tag=B</literal> (A inférieur/supérieur
&agrave; B important peu) et si votre fichier
&ldquo;checkouts&rdquo; est
<filename>checkouts.cvs:A</filename>, les opérations
suivantes devront être effectuées:</para>
<orderedlist>
<listitem>
<para>&prompt.root; <userinput>mv checkouts.cvs:A
checkouts.cvs:B</userinput>
(ceci fournit &agrave; l'étape suivante le fichier
&ldquo;checkouts&rdquo; approprié)</para>
</listitem>
<listitem>
<para>Ecrivez un fichier <filename>supfile</filename>
dont la ligne désignant le catalogue est:</para>
<programlisting>src-all tag=B</programlisting>
</listitem>
<listitem>
<para>Cvsupez vos sources en utilisant le nouveau
<filename>supfile</filename>.</para>
</listitem>
</orderedlist>
<para><application>Cvsup</application> recherchera <filename>checkouts.cvs:B</filename>
-- dans ce cas la cible est B, c'est &agrave; dire que
<application>cvsup</application> se
servira des informations contenues dans ce fichier pour gérer
correctement vos sources.</para>
<para>Les avantages:</para>
<itemizedlist>
<listitem>
<para>Les sources sont traitées correctement (en
particulier aucun fichier obsolète).</para>
</listitem>
<listitem>
<para>Moins de charge sur le serveur, dans ce cas
<application>CVSup</application>
agit de la manière la plus efficace.</para>
</listitem>
</itemizedlist>
<para>Par exemple, <literal>A=RELENG_4</literal>,
<literal>B=.</literal>, le point dans <literal>B=.</literal>
signifie -CURRENT. C'est une mise &agrave; jour plutôt
typique de la branche 4-STABLE vers la branche -CURRENT.
Alors qu'il est simple de revenir &agrave; une ancienne
version de sources (e.g. -CURRENT vers -STABLE), il n'en va
pas de même avec le système. Vous êtes
FORTEMENT déconseillé de tenter une telle
opération, &agrave; moins que vous ne sachiez
exactement ce que vous faites.</para>
</sect2>
<sect2>
<title>Mettre &agrave; jour en conservant le même champ
tag mais pour une date différente</title>
<para>Si vous souhaitez basculer du champ <literal>tag=A</literal>
au champ <literal>tag=A</literal> avec une date GMT
différente (disons <literal>date=D</literal>) vous
exécuterez ce qui suit:</para>
<orderedlist>
<listitem>
<para>Ecrivez un <filename>supfile</filename> dont la
ligne désignant le catalogue est:</para>
<programlisting>src-all tag=A date=D</programlisting>
</listitem>
<listitem>
<para>Mettez &agrave; jour vos sources en utilisant le nouveau
<filename>supfile</filename>.</para>
</listitem>
</orderedlist>
<para>Que la nouvelle date précède ou non celle
de la dernière synchronisation avec le champ
<literal>tag=A</literal> est peu important. Par exemple,
afin d'indiquer la date du &ldquo;27 Août 2000 &agrave;
10h00s00 GMT&rdquo; vous écrirez la ligne:</para>
<programlisting>src-all tag=RELENG_4 date=2000.08.27.10.00.00</programlisting>
<note><para>Le format de la date est rigide. Vous devez
indiquer toutes les composantes de la date: le siècle
(<quote>20</quote>, i.e. le vingtième siècle, doit être
fourni tandis que <quote>19</quote>, le siècle passé peut
être omis), l'année, le mois, le jour, l'heure,
les minutes et les secondes &mdash; comme montré dans
l'exemple ci-dessus. Pour plus d'information, veuillez
consulter la page de manuel &man.cvsup.1;.</para></note>
<para>Qu'une date soit spécifiée ou non, le fichier
&ldquo;checkouts&rdquo; est appelé
<filename>checkouts.cvs:A</filename> (e.g.
<filename>checkouts.cvs:RELENG_4</filename>). Comme
conséquence, aucune action particulière n'est
nécessaire afin de retourner &agrave; l'état
précédent: vous devez modifier la date
dans le <filename>supfile</filename> et remettre &agrave;
jour &agrave; nouveau.</para>
</sect2>
<sect2>
<title>Mise &agrave; jour de votre catalogue des logiciels
portés pour la première fois</title>
<para>Comme les logiciels portés sont
étiquetés &ldquo;.&rdquo; (i.e. -CURRENT),
vous pouvez correctement les synchroniser en
ajoutant le mot-clé <literal>date</literal> (Cf
&man.cvsup.1; pour le format exact), vous devriez
spécifier une date aussi proche que possible que celle
de &ldquo;l'expédition&rdquo; de votre catalogue de
logiciel porté. Après que <application>CVSup</application> ait
créé le fichier &ldquo;checkouts&rdquo; du catalogue des
logiciels portés, qui est précisément le
but de cette première opération de synchronisation,
le champ <literal>date</literal> doit être retiré,
toutes les mises &agrave; jour suivantes seront faites en
douceur.</para>
<para>Si vous avez voulu chercher la petite bête dans ce texte,
vous vous êtes probablement aperçu des
problèmes potentiels du processus de mise &agrave; jour des
sources. Un certain nombre de personnes ont eu réellement
des problèmes. Vous avez été
avertis. :-)</para>
</sect2>
</sect1>
</article>

View file

@ -15,7 +15,6 @@ SUBDIR+= contributing
SUBDIR+= cups
SUBDIR+= custom-gcc
SUBDIR+= cvs-freebsd
SUBDIR+= cvsup-advanced
SUBDIR+= explaining-bsd
SUBDIR+= fbsd-from-scratch
#SUBDIR+= filtering-bridges

View file

@ -1,22 +0,0 @@
#
# The FreeBSD Russian Documentation Project
#
# $FreeBSD$
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/cvsup-advanced/Makefile,v 1.3 2005/06/12 05:19:07 gad Exp $
#
# Original revision: r20561
#
# Article: CVSup Advanced Points
DOC?= article
FORMATS?= html
WITH_ARTICLE_TOC?=YES
INSTALL_COMPRESSED?=gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.xml
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -1,280 +0,0 @@
<?xml version="1.0" encoding="koi8-r" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
"../../../share/xml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//RU" "../../share/xml/entities.ent">
%entities;
]>
<!--
The FreeBSD Russian Documentation Project
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/cvsup-advanced/article.xml,v 1.5 2005/06/12 05:18:06 gad Exp $
Original revision: r23909
-->
<article lang="ru">
<articleinfo>
<title>Тонкие вопросы работы CVSup</title>
<authorgroup>
<author>
<firstname>Salvo</firstname>
<surname>Bartolotta</surname>
<affiliation>
<address><email>bartequi@neomedia.it</email></address>
</affiliation>
</author>
</authorgroup>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.cvsup;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>В этой статье предполагается понимание основ
работы <application>CVSup</application>. В ней описываются некоторые
тонкие вопросы, связанные с синхронизацией исходных текстов при помощи
<application>CVSup</application>, описаны эффективные решения для проблемы
потерянных файлов, а также особые случаи обновления исходных текстов; вопросы,
которые, скорее всего, вызывают неожиданно возникающие проблемы.</para>
</abstract>
</articleinfo>
<sect1 id="preface">
<title>Обзор</title>
<para>Этот документ является плодом попыток автора полностью понять
преимущества <application>CVSup</application> &amp; обновления
исходного кода.&nbsp;:-) Хотя автор прилагал все усилия, чтобы сделать
эти страницы максимально информативными и корректными, он всего лишь
человек и мог сделать все типы опечаток, ошибок и так далее. Он будет
очень признателен за любые комментарии и/или пожелания, которые вы пришлете
ему по электронной почте на адрес <email>bartequi@neomedia.it</email>.</para>
</sect1>
<sect1 id="introduction">
<title>Введение</title>
<para>Если вы посещали <ulink url="http://www.polstra.com/">сайт Джона
Полстра</ulink> (John Polstra) и прочли <ulink
url="http://www.polstra.com/projects/freeware/CVSup/faq.html">его
FAQ</ulink>, то вы могли отметить вопросы 12 &amp; 13.</para>
<para>При обновлении любого набора исходных текстов (например,
<filename>/usr/ports</filename>), &man.cvsup.1; использует
соответствующий файл извлечений для того, чтобы выполнять процесс
обновления самым правильным и эффективным способом. В этом примере
(<filename>/usr/ports</filename>), соответствующим файлом извлечений
является <filename>/usr/sup/ports-all/checkouts.cvs:.</filename> если
основным каталогом является <filename>/usr</filename>.</para>
<para>Файл извлечений содержит информацию о текущем состоянии ваших
исходных текстов &mdash; нечто вроде <quote>фотографии</quote>. Эта
значащая информация позволяет <command>cvsup</command> сгружать
обновления наиболее эффективно. К тому же, и, может быть, более
важно то, что это позволяет <command>cvsup</command> правильно
управлять вашими исходными текстами, удаляя локальные файлы, которых
больше нет в хранилище, таким образом не позволяя появляться в вашей
системе забытым файлам. Действительно, без файла
извлечений <command>cvsup</command> <emphasis>не</emphasis>
будет знать, из каких файлов состоит ваш набор (подробности смотрите в
справочной системе по &man.cvsup.1; относительно метода откатки); в
результате он не может удалить в вашей системе те файлы, которых больше
нет в хранилище. Они (удаленные файлы) будут оставаться в системе, и
могут вызвать некоторые ошибки при построении или другие проблемы. К
примеру, появление этой проблемы весьма вероятно, если вы первый раз
обновили ваш набор портов через несколько недель после получения ваших
установочных компакт-дисков.</para>
<para>По этой причине рекомендуется, что вы последуете двухшаговой
процедуре, описанной в <application>CVSup</application> FAQ (смотрите Q12, Q13); в
последующих разделах вам будут даны конкретные примеры, интересные и
поучительные.</para>
</sect1>
<sect1 id="script">
<title>Полезный скрипт на языке python: <command>cvsupchk</command></title>
<para>Как альтернативу для проверки целостности ваших исходных текстов вы
можете использовать скрипт <command>cvsupchk</command>, написанный на языке
python; этот скрипт в настоящее время находится в
<filename>/usr/ports/net/cvsup/work/cvsup-16.1/contrib/cvsupchk</filename>,
вместе с хорошим <filename>README</filename>. Предварительные
требования:</para>
<orderedlist>
<listitem>
<para><literal>/usr/ports/net/cvsup</literal> &prompt.root;
<userinput> make extract</userinput></para>
</listitem>
<listitem>
<para>python (также находится в коллекции портов :-))</para>
</listitem>
<listitem>
<para>Файл извлечений для вашего набора исходных текстов.</para>
</listitem>
</orderedlist>
<para>Если вы обновляете ваши исходные тексты самый первый раз, конечно же,
у вас нет файла извлечений. После установки python и обновления ваших
исходных текстов (к примеру, <filename>/usr/ports</filename>), вы можете
проверить их так:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/ports-all/checkouts.cvs:. | more</userinput></screen>
<para>Если вы хотите проверить ваши исходные тексты RELENG_4:</para>
<screen>&prompt.user; <filename>/path/to/</filename><userinput>cvsupchk -d /usr -c /usr/sup/src-all/checkouts.cvs:RELENG_4 | more</userinput></screen>
<para>В каждом случае <command>cvsupchk</command> будет проверять ваши исходные
тексты на целостность, используя информацию, находящуюся в соответствующем файле
извлечений. Сообщения о таких аномалиях, как присутствие удаленных
файлов (так называемых забытых файлов), отсутствие извлеченных файлов,
наличие лишних файлов RCS и мертвых каталогов будут выдаваться на
стандартный вывод.</para>
<para>В следующем разделе мы дадим важные, типовые примеры обновления
исходных текстов; эти примеры покажут вам роль файлов извлечений и
опасности небрежного управления исходными текстами.</para>
</sect1>
<sect1 id="examples">
<title>Примеры более тонкого управления исходными текстами</title>
<sect2>
<title>Как безопасно изменять тэги при обновлении
<literal>src-all</literal></title>
<para>Если в вашем <filename>sup-файле</filename> вы задали, к
примеру, <literal>tag=A</literal>, то <command>cvsup</command>
создаст файл извлечений с именем <filename>checkouts.cvs:A</filename>:
например, если <literal>tag=RELENG_4</literal>, то создаваемый файл
извлечений называется <filename>checkouts.cvs:RELENG_4</filename>. Этот файл
будет использоваться для получения и/или сохранения информации,
идентифицирующей ваши исходные тексты 4-STABLE.</para>
<para>При отслеживании <literal>src-all</literal>, если вы хотите перейти
от <literal>tag=A</literal> к <literal>tag=B</literal> (не имеет
значения, больше или меньше A, чем B), и ваш файл извлечений
называется <filename>checkouts.cvs:A</filename>, то
должны быть выполнены следующие действия:</para>
<orderedlist>
<listitem>
<para>&prompt.root; <userinput>mv checkouts.cvs:A
checkouts.cvs:B</userinput>
(Это даст на последующем шаге корректный файл извлечений)</para>
</listitem>
<listitem>
<para>создайте <filename>sup-файл</filename>, со строкой наборов, которая содержит:</para>
<programlisting>src-all tag=B</programlisting>
</listitem>
<listitem>
<para>при помощи cvsup выполните обновление ваших исходных текстов
с новым <filename>sup-файлом</filename>.</para>
</listitem>
</orderedlist>
<para><command>cvsup</command> будет искать <filename>checkouts.cvs:B</filename> &mdash; так
как целью является B, то <command>cvsup</command> для корректного управления
вашими исходными текстами будет использовать информацию, содержащуюся
здесь.</para>
<para>Выигрыши:</para>
<itemizedlist>
<listitem>
<para>с исходными текстами работа производится корректно (в
частности, не остается забытых файлов)</para>
</listitem>
<listitem>
<para>на сервер ложится меньшая нагрузка, так как <command>cvsup</command> работает
самым эффективным образом.</para>
</listitem>
</itemizedlist>
<para>К примеру, <literal>A=RELENG_4</literal>, <literal>B=.</literal> Точка
в <literal>B=.</literal> означает -CURRENT. Это весьма типичное обновление, от
4-STABLE к -CURRENT. Хотя понятно, как
<quote>состарить</quote> ваши исходные тексты (к примеру, от -CURRENT к -STABLE),
понижение версии системы является совсем другим вопросом. Вам
НАСТОЯТЕЛЬНО не рекомендуется выполнять такое действие, если только вы
точно не понимаете, что делаете.</para>
</sect2>
<sect2>
<title>Обновление в одной и той же метке с разными датами</title>
<para>Если вы хотите перейти от <literal>tag=A</literal> к
<literal>tag=A</literal> с отличающейся
GMT-датой (скажем, <literal>date=D</literal>), то выполняйте следующее:</para>
<orderedlist>
<listitem>
<para>напишите <filename>sup-файл</filename> с такой строкой, определяющей набор:</para>
<programlisting>src-all tag=A date=D</programlisting>
</listitem>
<listitem>
<para>обновите ваши исходные тексты с помощью нового <filename>sup-файла</filename></para>
</listitem>
</orderedlist>
<para>Не имеет значения, предшествует ли новая дата времени последней
операции синхронизации с <literal>tag=A</literal>, или нет. Например, для
того, чтобы задать дату <quote>August 27, 2000, 10:00:00 GMT</quote>, вы пишете
строку:</para>
<programlisting>src-all tag=RELENG_4 date=2000.08.27.10.00.00</programlisting>
<note>
<para>Формат даты строг. Вы задаете все компоненты даты: столетие (<quote>20</quote>,
то есть 21 век. должен быть указан, когда как <quote>19</quote>,
прошлое столетие, может быть опущено), год, месяц, день, час, минуты,
секунды &mdash; как показано в примере выше. За дополнительной информацией
обратитесь к странице справочной системы по &man.cvsup.1;.</para>
</note>
<para>Вне зависимости от того, задана или нет дата, файл извлечений
называется <filename>checkouts.cvs:A</filename> (например,
<filename>checkouts.cvs:RELENG_4</filename>). В итоге не нужны
какие-то действия для возврата к предыдущему состоянию: вы изменяете
дату в <filename>sup-файле</filename>, и запускаете
<command>cvsup</command> снова.</para>
</sect2>
<sect2>
<title>Обновление вашей коллекции портов самый первый раз</title>
<para>Если вы хотите <quote>синхронизировать</quote> ваше дерево
портов в первый раз, вы должны использовать тэг, совпадающий с
вашей установленной версией &os;. Например, если вы установили
коллекцию портов во время установки &os; 5.3-RELEASE, то
следует использовать следующую строку:
<programlisting>ports-all tag=RELEASE_5_3_0</programlisting>
<command>cvsup</command> создаст файл извлечений для коллекции
портов. Теперь мы можем использовать тэг <quote>.</quote> для
последующего обновления дерева портов:
<programlisting>ports-all tag=.</programlisting>
Все последующие обновления будут обрабатываться гладко.</para>
<para>Если вы прочли тонкие замечания в этих разделах, то, наверное, вы
осознали потенциальные проблемы в процессе обновления исходных
текстов. Многие действительно сталкиваются с проблемами. Вас
предупредили. :-)</para>
</sect2>
</sect1>
</article>