               Nastrojka hranilischa CVS - podhod FreeBSD

  Stijn Hoop

   <stijn@win.tue.nl>

   $FreeBSD: doc/ru_RU.KOI8-R/articles/cvs-freebsd/article.sgml,v 1.4
   2010/02/19 17:03:52 gabor Exp $

   Copyright (c) 2001, 2002, 2003 Stijn Hoop

   FreeBSD `eto zaregistrirovannaya torgovaya marka FreeBSD
   Foundation.

   Mnogie iz oboznachenij, ispol'zuemye proizvoditelyami i prodavcami
   dlya oboznacheniya svoih produktov, zayavlyayutsya v kachestve
   torgovyh marok. Kogda takie oboznacheniya poyavlyayutsya v `etom
   dokumente, i Proektu FreeBSD izvestno o torgovoj marke, k
   oboznacheniyu dobavlyaetsya znak ''(TM)'' ili ''(R)''.

   V `etoj stat'e opisany shagi, kotorye ya predprinyal dlya
   nastrojki hranilischa CVS, ispol'zuyuschego te zhe samye skripty,
   chto ispol'zuyutsya v proekte FreeBSD v ih nastrojke. `Eto imeet
   nekotorye preimuschestva pered standartnoj nastrojkoj CVS, v tom
   chisle bolee tochnyj kontrol' dostupa k derevu ishodnyh tekstov i
   posylku soderzhatel'nyh soobschenij `elektronnoj pochty pri
   kazhdom kommite.

     --------------------------------------------------------------

1. Vvedenie

   Bol'shinstvo programmnyh proektov s otkrytym kodom ispol'zuyut CVS
   v kachestve sistemy upravleniya ishodnym kodom. Hotya CVS ves'ma
   horosha v `etom kachestve, u neio est' svoi neudobstva i
   nedostatki. Odnim iz nih yavlyaetsya to, chto sovmestnoe
   ispol'zovanie dereva ishodnyh tekstov s drugimi razrabotchikami
   mozhet bystro privesti k koshmarnym problemam pri
   administrirovanii, osobenno esli kto-to zahochet zaschitit' chasti
   dereva ot obschedostupnosti.

   FreeBSD yavlyaetsya odnim iz proektov, ispol'zuyuschim CVS. Zdes'
   takzhe imeet bol'shoe kolichestvo razrabotchikov, razbrosannyh po
   vsemu miru. Oni razrabotali nekotorye skripty, oblegchayuschie
   upravlenie hranilischem. Nedavno `eti skripty byli peresmotreny i
   privedeny v poryadok Dzhozefom Kartauzerom (Joseph Karthauser), v
   celyah oblegcheniya ih ispol'zovaniya v drugih proektah. V `etoj
   stat'e opisan odin iz metodov ispol'zovaniya novyh skriptov.

   CHtoby izvlech' maksimum informacii iz `etoj stat'i, vy dolzhny
   vladet' osnovnymi metodami raboty s CVS.

     --------------------------------------------------------------

2. Pervonachal'naya nastrojka

     Vnimanie: Navernoe, luchshe snachala vypolnit' `etu proceduru s
     pustym testovym hranilischem, chtoby ponyat' vse posledstviya
     vashih dejstvij. Kak obychno v takih sluchayah, u vas dolzhny
     imet'sya svezhie chitaemye rezervnye kopii!

     --------------------------------------------------------------

  2.1. Inicializaciya hranilischa

   Pervym delom pri nastrojke novogo hranilischa neobhodimo ego
   inicializirovat', dlya chego vydat' CVS takuyu komandu:

 % cvs -d path-to-repository init

   Rezul'tatom ee vypolneniya budet sozdannyj CVS sluzhebnyj katalog
   CVSROOT, v kotorom vypolnyaetsya vsya nastrojka.

     --------------------------------------------------------------

  2.2. Gruppa pol'zovatelej hranilischa

   Teper' my sozdadim gruppu, kotoraya budet vladet' hranilischem. V
   `etoj gruppe dolzhny prisutstvovat' vse kommittery, dlya togo,
   chtoby oni mogli pisat' v hranilische. Dlya `etoj gruppy my primem
   standartnoe dlya FreeBSD nazvanie ncvs.

 # pw groupadd ncvs

   Zatem vy dolzhny pri pomoschi komandy chown(8) smenit' vladel'ca i
   gruppu dlya tol'ko chto dobavlennogo kataloga:

 # chown -R :ncvs path-to-your-repository

   `Eto nuzhno dlya togo, chtoby nikto ne mog zapisyvat' v
   hranilische, ne yavlyayas' chlenom gruppy.

     --------------------------------------------------------------

  2.3. Poluchenie ishodnyh tekstov

   Teper' vam nuzhno poluchit' katalog CVSROOT iz hranilischa
   FreeBSD. Prosche vsego `eto delaetsya izvlecheniem s anonimnogo
   zerkala CVS FreeBSD. Obratites' k sootvetstvuyuschej glave
   Rukovodstva dlya polucheniya dopolnitel'noj informacii. My budem
   polagat', chto ishodnye teksty hranyatsya v podkataloge
   CVSROOT-freebsd tekuschego kataloga.

     --------------------------------------------------------------

  2.4. Kopirovanie skriptov FreeBSD

   Teper' my skopiruem ishodnye teksty FreeBSD iz CVSROOT v nashe
   hranilische. Esli vy znakomy s CVS, to dlya vas mozhet imet' smysl
   popytat'sya importirovat' skripty, chtoby oblegchit'
   sinhronizaciyu s posleduyuschimi versiyami. Odnako pri `etom
   okazyvaetsya, chto CVS imeet v `etoj oblasti nedostatok: pri
   importirovanii ishodnyh tekstov v katalog CVSROOT ona ne budet
   obnovlyat' neobhodimye administrativnye fajly. CHtoby v `etom
   ubedit'sya, vam nuzhno proverit' kazhdyj fajl posle
   importirovaniya, pri `etom smysl cvs import teryaetsya. Po`etomu
   rekomenduemym metodom yavlyaetsya prostoe kopirovanie skriptov.

   Ne imeet znacheniya, kak vy otnosites' k predyduschemu
   paragrafu--rezul'tat odin i tot zhe. Prosto pomestite vash CVSROOT
   i skopirujte fajly FreeBSD poverh vashih lokal'nyh (neizmenennyh)
   kopij:

 % cvs -d path-to-your-repository checkout CVSROOT
 % cd CVSROOT
 % cp ../CVSROOT-freebsd/* .
 % cvs add *

   Zametim, chto vy, skoree vsego, poluchite neskol'ko
   preduprezhdenij o tom, chto nekotorye katalogi ne byli
   skopirovany; `eto normal'no, vam oni ne nuzhny.

     --------------------------------------------------------------

  2.5. Skripty

   Teper' u vas est' rabochij katalog i tochnaya kopiya skriptov,
   kotorye ispol'zuyutsya v proekte FreeBSD dlya raboty s
   hranilischem. Dalee sleduet kratkoe opisanie naznacheniya kazhdogo
   fajla.

     * access - po umolchaniyu pri standartnoj nastrojke `etot fajl
       ne ispol'zuetsya. On primenyaetsya v specifichnyh dlya proekta
       FreeBSD nastrojkah, gde on upravlyaet dostupom k hranilischu.
       Vy mozhete udalit' `etot fajl, esli vy ne sobiraetes'
       ispol'zovat' takuyu nastrojku.

     * avail - `etot fajl upravlyaet dostupom k hranilischu. V nem vy
       mozhete ukazat' gruppy lyudej, kotorym razreshen dostup k
       hranilischu, a takzhe zapretit' kommity na urovne katalogov.
       Vy dolzhny podnastroit' ego tak, chtoby on soderzhal gruppy i
       katalogi, imeyuschiesya v vashem hranilische.

     * cfg.pm - `etot fajl analiziruet vashu konfiguraciyu i
       soderzhit nastrojki po umolchaniyu. Vy ne dolzhny izmenyat'
       `etot fajl. Vmesto `etogo razmeschajte vashi izmeneniya v
       konfiguracii v fajle cfg_local.pm.

     * cfg_local.pm - `etot fajl soderzhit vse nastraivaemye
       parametry sistemy. Vy dolzhny nastraivat' vse parametry zdes',
       naprimer, kuda posylaetsya pochta pri kommite, s kakih hostov
       mozhno vypolnyat' kommity, i prochee. Nizhe daetsya bolee
       polnaya informaciya ob `etom.

     * checkoutlist - `eti fajly perechislyayut vse fajly,
       upravlyaemye CVS v `etom kataloge. Vy dolzhny otredaktirovat'
       ego dlya udaleniya nekotoryh specifichnyh dlya FreeBSD fajlov.

     * commit_prep.pl - `etot skript vypolnyaet razlichnye proverki
       pered vypolneniem kommita, v zavisimosti ot togo, vklyuchili
       li vy ih v cfg_local.pm. Vam ne nuzhno ego trogat'.

     * commitcheck - `etot skript vyzyvaetsya neposredstvenno iz CVS.
       Snachala on proveryaet, s ispol'zovaniem cvs_acls.pl, imeet li
       kommiter dostup k ukazannoj chasti dereva, a zatem zapuskaet
       commit_prep.pl dlya vypolneniya razlichnyh proverok pered
       kommitom. Esli oni vypolnilis' normal'no, to CVS pozvolit
       vypolnit' kommit. Vam ne nuzhno trogat' `etot fajl.

     * commitinfo - `etot fajl ispol'zuetsya v CVS dlya opredeleniya
       togo, kakoj skript zapuskat' pered kommitom--v dannom sluchae
       commitcheckl. Vam ne nuzhno trogat' `etot fajl.

     * config - konfiguracionnyj fajl dlya `etogo hranilischa. Vy
       dolzhny izmenyat' ego pri neobhodimosti, no bol'shinstvo
       administratorov mogut ostavit' vse nastrojki po umolchaniyu.
       Dopolnitel'nuyu informaciyu o parametrah, kotorye mogut byt'
       zdes' zadany, mozhno najti v rukovodstve po CVS.

     * cvs_acls.pl - `etot skript identificiruet pol'zovatelya i to,
       imeet li on dostup k derevu. `Eto delaetsya na osnove
       informacii v fajle avail. Vam ne nuzhno trogat' `etot fajl.

     * cvsignore - `etot fajl perechislyaet fajly, kotorye CVS ne
       dolzhna pomeschat' v hranilische. Vy mozhete otredaktirovat'
       ego po svoemu usmotreniyu. Bolee polnaya informaciya ob `etom
       fajle nahoditsya v rukovodstve po CVS.

     * cvswrappers - `etot fajl ispol'zuetsya v CVS dlya vklyucheniya
       ili vyklyucheniya rasshireniya klyuchevyh slov, ili dolzhen li
       fajl schitat'sya binarnym. Vy mozhete redaktirovat' ego po
       svoemu usmotreniyu. Bolee polnaya informaciya ob `etom fajle
       nahoditsya v rukovodstve po CVS. Imejte vvidu, chto opcii CVS
       -t i -f nekorrektno rabotayut v rezhime klient/server.

     * edithook - `etot fajl bol'she ne ispol'zuetsya, no ostavlen po
       istoricheskim prichinam. Vy mozhete spokojno udalit' `etot
       fajl.

     * editinfo - CVS ispol'zuet `etot fajl dlya nastrojki redaktora.
       FreeBSD ne ispol'zuet `etu funkcional'nost', tak kak obrabotka
       soobschenij dlya zhurnala vypolnyaetsya v fajlah verifymsg i
       logcheck. `Eto proishodit po toj prichine, chto editinfo
       nekorrektno rabotaet v rezhime klient/server, ili v sluchayah
       kogda ispol'zuyutsya opcii -m ili -F. Vam ne nuzhno trogat'
       `etot fajl.

     * exclude - v `etom fajle perechisleny regulyarnye vyrazheniya,
       ispol'zuemye commit_prepl.pl dlya vydeleniya fajlov, v kotoryh
       mogut ne soderzhat'sya zagolovki s nomerom versii. V nastrojke
       FreeBSD vse fajly soderzhaschiesya v hranilische dolzhny imet'
       zagolovok s versiej (tipa $FreeBSD$). Vse fajly s imenami,
       kotorye sootvetstvuyut odnoj iz strok `etogo fajla,
       isklyuchayutsya iz proverki. Vy dolzhny dobavit' vyrazheniya v
       `etot fajl, esli vy pomeschaete v hranilische fajly, kotorye
       ne mogut imet' zagolovki s versiyami. Dlya celej ustanovki
       skriptov luchshim resheniem mozhet okazat'sya isklyuchenie
       CVSROOT/ iz proverki zagolovkov.

     * log_accum.pl - `eto skript, kotoryj prinimaet zhurnal'noe
       soobschenie v vide, dannom skriptom logcheck, i dobavlyaet ego
       k fajlu zhurnala v hranilische dlya hraneniya rezervnoj kopii.
       On takzhe otrabatyvaet posylku soobscheniya po `elektronnoj
       pochte na adres, kotoryj vy zadadite (v fajle cfg_local.pm).
       On podklyuchaetsya k CVS cherez loginfo. Vam ne nuzhno trogat'
       `etot fajl.

     * logcheck - pri kommite `etot fajl analiziruet soobschenie dlya
       zhurnala, kotoroe sostavlyayut kommittery, i pytaetsya ego
       nekotorym obrazom uluchshit'. On podklyuchaetsya k CVS cherez
       logcheck. Vam ne nuzhno trogat' `etot fajl.

         Zamechanie: `Etot skript zavisit ot ryada lokal'nyh
         modifikacij CVS, sdelannyj vo FreeBSD: `eta versiya chitaet
         zhurnal'noe soobschenie povtorno posle togo, kak `etot
         skript ego modificiruet. Standartnaya versiya CVS `etogo ne
         delaet, chto delaet `etot skript bespoleznym, tak kak on ne
         mozhet modificirovat' zhurnal'noe soobschenie, hotya mozhet
         proverit' ego na predmet pravil'nosti sintaksisa. CVS versii
         1.11.2 i vyshe mozhet byt' nastroen, chtob imet' povedenie
         podobnoe FreeBSD, putem ustanovki opcii
         RereadLogAfterVerify=always v fajle config.

     * loginfo - `etot fajl ispol'zuetsya CVS dlya upravleniya togo,
       kuda posylaetsya protokol'naya informaciya. S pomosch'yu
       `etogo fajla podklyuchaetsya log_accum.pl. Vam ne nuzhno
       trogat' `etot fajl.

     * modules - `etot fajl sohranyaet svoio tradicionnoe naznachenie
       v CVS. Vy dolzhny udalit' moduli FreeBSD iz standartnoj
       versii. Vy mozhete redaktirovat' `etot fajl po svoemu
       usmotreniyu. Bolee polnaya informaciya ob `etom fajle
       nahoditsya v rukovodstve po CVS.

     * notify - `etot fajl ispol'zuetsya v CVS v tom sluchae, esli
       kto-to zadast otslezhivanie fajla. `Eto ne ispol'zuetsya v
       hranilische FreeBSD. Vy mozhete redaktirovat' ego po svoemu
       usmotreniyu. Bolee polnaya informaciya ob `etom fajle
       nahoditsya v rukovodstve po CVS.

     * options - `etot fajl specifichen dlya versii CVS ot FreeBSD,
       no takzhe podderzhivaetsya versiej dlya Debian. On soderzhit
       klyuchevoe slovo dlya rasshireniya v zagolovkah versij. Vy
       dolzhny zamenit' `eto na klyuchevoe slovo, kotoroe vy zadali v
       fajle cfg_local.pm (esli vy ispol'zuete `etu vozmozhnost',
       kotoraya v nastoyaschee vremya specifichna dlya FreeBSD).

     * rcsinfo - `etot fajl otobrazhaet katalogi v hranilische na
       fajly shablonov, kak naprimer rcstemplate. Po umolchaniyu
       FreeBSD ispol'zuet odin shablon dlya vsego hranilischa. Vy
       mozhete dobavlyat' drugie k `etomu fajlu po svoemu
       usmotreniyu.

     * rcstemplate - `etot fajl yavlyaetsya aktual'nym fajlom
       shablona, kotoryj vidyat kommittery, kogda pomeschayut chto-to
       v hranilische. Vy dolzhny otredaktirovat' ego dlya opisaniya
       razlichnyh dopolnitel'nyh parametrov, kotorye vy opredelili v
       cfg_local.pm.

     * tagcheck - `eti fajly upravlyayut dostupom k sozdaniyu metok v
       hranilische. Standartnaya dlya FreeBSD versiya ne pozvolyaet
       sozdavat' metki s imenami tipa RELENG* iz-za peresecheniya s
       processom sozdaniya relizov. Vy dolzhny otredaktirovat' `etot
       fajl po vashemu usmotreniyu.

     * taginfo - `etot fajl stavit v sootvetstvie operacii s metkami
       nad katalogami hranilischa skriptam upravleniya dostupom,
       naprimer tagcheck. Vam ne nuzhno trogat' `etot fajl.

     * unwrap - `etot skript nuzhen dlya avtomaticheskoj obratnoj
       obrabotki (''unwrap'') dvoichnyh fajlov (posmotrite
       cvswrappers) pri izvlechenii. `Eto ne ispol'zuetsya v
       tekuschej nastrojke FreeBSD po prichine togo, chto ne rabotaet
       s konfiguraciej klient/server. Vam ne nuzhno trogat' `etot
       fajl.

     * verifymsg - `etot fajl stavit v sootvetstvie katalogam
       hranilischa skripty vtorichnoj obrabotki zhurnal'nyh
       soobschenij, naprimer logcheck. Vam ne nuzhno trogat' `etot
       fajl.

     * wrap - `etot skript mozhet byt' ispol'zovan dlya
       avtomaticheskoj obrabotki (''wrap'') dvoichnyh fajlov
       (posmotrite cvswrappers) pri pomeschenii v hranilische. `Eto
       ne ispol'zuetsya v tekuschej nastrojke FreeBSD, po prichine
       togo, chto ne rabotaet s konfiguraciej klient/server. Vam ne
       nuzhno trogat' `etot fajl.

     --------------------------------------------------------------

  2.6. Nastrojka skriptov

   Sleduyuschim shagom yavlyaetsya nastrojka skriptov tak, chtoby oni
   rabotali v vashih usloviyah. Vy dolzhny prosmotret' vse fajly v
   kataloge i vypolnit' vashi nastrojki. V chastnosti, vy mozhet
   potrebovat'sya otredaktirovat' sleduyuschie fajly:

    1. Esli vy ne hotite ispol'zovat' specifichnye dlya FreeBSD
       vozmozhnosti skriptov, to vy mozhete bez posledstvij udalit'
       fajl access:

 % cvs rm -f access

    2. Otredaktirujte avail tak, chtoby on soderzhal razlichnye
       katalogi hranilischa, dostupom k kotorym vy hotite upravlyat'.
       Obyazatel'no sohranite strochku avail||CVSROOT, inache vy
       zablokiruete sami sebya na sleduyuschem shage.

       Drugimi parametrami, kotorye vy mozhete dobavit' v `etot fajl,
       yavlyayutsya gruppy kommitterov. Po umolchaniyu FreeBSD
       ispol'zuet fajl access dlya perechisleniya vseh kommitterov,
       no vy mozhete ispol'zovat' lyuboj fajl. Vy mozhete takzhe
       dobavit' gruppy, esli hotite (sintaksis opisan v nachale fajla
       cvs_acls.pl).

    3. Otredaktirujte fajl cfg_local.pm tak, chtoby on soderzhal
       parametry, kotorye vy hotite. V chastnosti, vy dolzhny
       vzglyanut' na takie punkty nastrojki:

          * %TEMPLATE_HEADERS - oni obrabatyvayutsya skriptami
            vedeniya protokola, i vstavlyayutsya nizhe pochtovogo
            soobscheniya, esli oni prisutstvuyut i ne yavlyayutsya
            pustymi v soobschenii pri kommite. Vy mozhete, navernoe,
            udalit' stroki PR i MFC after. I, konechno, vy mozhete
            dobavit' svoi sobstvennye.

          * $MAIL_BRANCH_HDR - esli vy hotite v kazhdoe soobschenie
            pri kommite vstavlyat' zagolovok, opisyvayuschij vetku, v
            kotoruyu byl vypolnen kommit, zadajte `eto v sootvetstvii
            s vashim okruzheniem. Ili ostav'te `eto pustym, esli ne
            hotite imet' takoj zagolovok.

          * @COMMIT_HOSTS - zadajte zdes' spisok hostov, s kotoryh
            mozhno vypolnyat' kommity.

          * $MAILADDRS - zadajte zdes' adres administratora ili
            spiska, v kotoryj dolzhny napravlyat'sya pochtovye
            soobscheniya pri kommite.

          * @LOG_FILE_MAP - izmenite `etot massiv po svoemu
            usmotreniyu - kazhdoe regulyarnoe vyrazhenie
            sravnivaetsya s katalogom kommita, i protokol'noe
            soobschenie pri kommite sohranyaetsya v podkataloge
            commitlogs v ukazannom fajle.

          * $COMMITCHECK_EXTRA - esli vy ne hotite ispol'zovat'
            specifichnye dlya FreeBSD proverki dostupa, to vy dolzhny
            udalit' opredeleniya $COMMITCHECK_EXTRA iz `etogo fajla.

         Zamechanie: Izmenenie parametra $IDHEADER garantirovanno
         rabotaet tol'ko na platformah FreeBSD; `eto zavisit ot
         specifichnyh dlya FreeBSD modifikacij v CVS.

       Vy mozhete proverit' cfg.pm na predmet togo, kakie drugie
       parametry mogut byt' izmeneny, no perechislennoe vyshe
       yavlyaetsya dostatochnym podmnozhestvom.

    4. Otredaktirujte exclude dlya udaleniya specifichnyh dlya
       FreeBSD zapisej (naprimer, vseh strok, kotorye nachinayutsya s
       ^ports/ i tak dalee). Bolee togo, zakommentirujte stroki,
       nachinayuschiesya s ^CVSROOT/, i dobav'te odnu stroku tol'ko s
       ^CVSROOT/. Posle ustanovki obrabotchika (wrapper) vy mozhete
       dobavit' svoi zagolovki k fajlam v kataloge CVSROOT i
       vosstanovit' `eti stroki, no teper' oni budut imet' smysl,
       tol'ko kogda vy popytaetes' vypolnit' kommit pozzhe.

    5. Otredaktirujte fajl modules i udalite vsio, chto otnositsya k
       FreeBSD. Dobav'te sobstvennye moduli, esli hotite.

    6. Zamechanie: `Etot shag neobhodim, esli tol'ko vy zadali
         znachenie dlya $IDHEADER v cfg_local.pm (chto rabotaet
         tol'ko pri ispol'zovanii modificirovannoj vo FreeBSD versii
         CVS).

       Otredaktirujte fajl options tak, chtoby on sootvetstvoval
       metke, kotoruyu vy zadali v cfg_local.pm. Global'nyj poisk i
       zamena FreeBSD na vashu metku dolzhny srabotat'.

    7. Otredaktirujte fajl rcstemplate tak, chtoby on soderzhal te
       zhe samye klyuchevye slova, chto zadany v cfg_local.pm.

    8. Opcional'no udalite proverki FreeBSD iz tagcheck. Vy mozhete
       prosto dobavit' exit 0 v nachalo fajla, chtoby zapretit' vse
       proverki pri ustanovke metki.

    9. Poslednim dejstviem, kotoroe nuzhno sdelat' pered tem, kak
       zakonchit' rabotu, yavlyaetsya proverka togo, chto protokoly
       kommitov mogut sohranyat'sya. Po umolchaniyu oni
       sohranyayutsya v hranilische, v podkataloge commitlogs
       kataloga CVSROOT. `Etot katalog dolzhen byt' sozdan, tak chto
       vypolnite sleduyuschee:

 % mkdir commitlogs
 % cvs add commitlogs

   A teper', posle tschatel'noj proverki, vy dolzhny vypolnit' kommit
   vashih izmenenij. Ubedites', chto vy dali sami sebe dostup k
   katalogu CVSROOT v vashem avail do togo, kak ego delat', tak kak v
   protivnom sluchae vy zablokiruete sami sebya. Tak chto ubedites',
   chto vsio imenno tak, kak vy i predpolagali, a zatem vypolnite
   sleduyuschee:

 % cvs commit -m '- Initial FreeBSD scripts commit'

     --------------------------------------------------------------

  2.7. Testirovanie nastrojki

   Vy gotovy k pervomu testirovaniyu: prinuditel'nomu kommitu v fajl
   avail, chtoby ubedit'sya, chto vsio rabotaet tak, kak ozhidalos'.

 % cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' avail

   Esli vsio rabotaet, pozdravlyaem! Teper' u vas imeetsya
   rabotayuschaya nastrojka skriptov FreeBSD dlya vashego
   hranilischa. Esli CVS vsio eschio o chiom-to soobschaet, vernites'
   i prover'te, vse li vysheupomyanutye shagi byli vypolneny
   pravil'no.

     --------------------------------------------------------------

3. Specifichnaya dlya FreeBSD nastrojka

   Proekt FreeBSD sam po sebe ispol'zuet neskol'ko druguyu nastrojku,
   v kotoroj takzhe ispol'zuyutsya fajly iz podkataloga freebsd
   kataloga FreeBSD CVSROOT. Proekt ispol'zuet ih iz-za bol'shogo
   kolichestva kommitterov, kotorye vse dolzhny byt' v odnoj i toj
   zhe gruppe. Po`etomu byl napisan prostoj obrabotchik,
   proveryayuschij, chto lyudi imeyut pravil'nye prava na vypolnenie
   kommita, a zatem ustanavlivayuschij identifikator gruppy,
   sootvetstvuyuschij identifikatoru hranilischa.

   Esli vashemu hranilischu `eto tozhe nuzhno, to shagi dlya
   vypolneniya `etogo opisany nizhe. No snachala obzor svyazannyh s
   `etim fajlov.

     --------------------------------------------------------------

  3.1. Fajly, ispol'zuemye v nastrojke FreeBSD

     * access - `etot fajl upravlyaet informaciej o dostupe. Vy
       dolzhny otredaktirovat' `etot fajl dlya vklyucheniya vseh
       uchastnikov vashego proekta.

     * freebsd/commitmail.pl - `etot fajl bol'she ne ispol'zuetsya,
       no ostavlen po istoricheskim prichinam. Vam ne nuzhno trogat'
       `etot fajl.

     * freebsd/cvswrap.c - `eto ishodnyj tekst obrabotchika CVS,
       kotoryj vam nuzhno ustanovit', chtoby proverki dostupa real'no
       zarabotali. Dopolnitel'naya informaciya ob `etom nizhe. Vy
       dolzhny otredaktirovat' marshruty v makrosah ACCESS i REALCVS
       tak, chtoby oni sootvetstvovali vashej nastrojke.

     * freebsd/mailsend.c - `etot fajl nuzhen v nastrojke FreeBSD
       dlya spiskov rassylki. Vam ne nuzhno trogat' `etot fajl.

     --------------------------------------------------------------

  3.2. Procedura

    1. Otredaktirujte fajl access tak, chtoby on soderzhal tol'ko
       vashe imya pol'zovatelya.

    2. Otredaktirujte cvswrap.c tak, chtoby on soderzhal pravil'nyj
       marshrut dlya vashej nastrojki. `Eto opredeleno v makrose po
       imeni ACCESS. Vy dolzhny takzhe izmenit' raspolozhenie
       real'nogo vypolnimogo fajla cvs, esli ono ne podhodit k vashej
       situacii. Dlya standartnogo cvswrap.c predpolagaetsya, chto on
       zamenit obschesistemnuyu komandu cvs, kotoraya budet
       peremeschena v /usr/bin/ncvs.

       V moiom `ekzemplyare cvswrap.c pomescheno sleduyuschee:

 #define ACCESS "/local/cvsroot/CVSROOT/access"
 #define REALCVS "/usr/bin/ncvs"

    3. Sleduyuschim shagom yavlyaetsya ustanovka obrabotchika dlya
       togo, chtoby proverit' pravil'nost' ustanovki gruppy pri
       vypolnenii kommita. Ishodnye teksty dlya `etogo razmescheny v
       cvswrap.c iz vashego CVSROOT.

       Otkompilirujte ishodnye teksty, kotorye vy redaktirovali dlya
       vklyucheniya pravil'nyh putej:

 % cc -o cvs cvswrap.c

       A zatem ustanovite ih (dlya `etogo vy dolzhny byt'
       pol'zovatelem root):

 # mv /usr/bin/cvs /usr/bin/ncvs
 # mv cvs /usr/bin/cvs
 # chown root:ncvs /usr/bin/cvs /usr/bin/ncvs
 # chmod o-rx /usr/bin/ncvs
 # chmod u-w,g+s /usr/bin/cvs

       Pri `etom obrabotchik budet ustanovlen po umolchaniyu kak
       komanda cvs, chto garantiruet vsemi, ispol'zuyuschimi
       hranilische, poluchenie pravil'nyh urovnej dostupa.

    4. Teper' vy mozhete ubrat' vseh iz vashej gruppy hranilischa.
       Vsio upravlenie dostupom vypolnyaetsya vashim obrabotchikom, i
       on budet ustanavlivat' pravil'nuyu gruppu dlya dostupa.

     --------------------------------------------------------------

  3.3. Testirovanie nastrojki

   Teper' vash obrabotchik dolzhen byt' ustanovlen. Konechno, vy
   mozhete protestirovat' ego, vypolniv prinuditel'nyj kommit v fajl
   access:

 % cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' access

   I snova, esli `eto ne srabotaet, prover'te, pravil'no li byli
   vypolneny vse vysheperechislennye shagi.

     --------------------------------------------------------------

            `Etot, i drugie dokumenty, mogut byt' skachany s
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

  Po voprosam, svyazannym s FreeBSD, prochitajte dokumentaciyu prezhde
                 chem pisat' v <questions@FreeBSD.org>.
         Po voprosam, svyazannym s `etoj dokumentaciej, pishite
                           <doc@FreeBSD.org>.
  Po voprosam, svyazannym s russkim perevodom dokumentacii, pishite v
                    rassylku <frdp@FreeBSD.org.ua>.
  Informaciya po podpiske na `etu rassylku nahoditsya na sajte proekta
                               perevoda.
