                      Tonkie voprosy raboty CVSup

  Salvo Bartolotta

   <bartequi@neomedia.it>

   $FreeBSD: head/ru_RU.KOI8-R/articles/cvsup-advanced/article.xml
   39632 2012-10-01 11:56:00Z gabor $

   $FreeBSD: head/ru_RU.KOI8-R/articles/cvsup-advanced/article.xml
   39632 2012-10-01 11:56:00Z gabor $

   FreeBSD `eto zaregistrirovannaya torgovaya marka FreeBSD
   Foundation.

   CVSup `eto zaregistrirovannaya torgovaya marka John D. Polstra.

   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 predpolagaetsya ponimanie osnov raboty CVSup. V nej
   opisyvayutsya nekotorye tonkie voprosy, svyazannye s
   sinhronizaciej ishodnyh tekstov pri pomoschi CVSup, opisany
   `effektivnye resheniya dlya problemy poteryannyh fajlov, a takzhe
   osobye sluchai obnovleniya ishodnyh tekstov; voprosy, kotorye,
   skoree vsego, vyzyvayut neozhidanno voznikayuschie problemy.

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

1. Obzor

   `Etot dokument yavlyaetsya plodom popytok avtora polnost'yu
   ponyat' preimuschestva CVSup & obnovleniya ishodnogo koda. :-)
   Hotya avtor prilagal vse usiliya, chtoby sdelat' `eti stranicy
   maksimal'no informativnymi i korrektnymi, on vsego lish' chelovek
   i mog sdelat' vse tipy opechatok, oshibok i tak dalee. On budet
   ochen' priznatelen za lyubye kommentarii i/ili pozhelaniya,
   kotorye vy prishlete emu po `elektronnoj pochte na adres
   <bartequi@neomedia.it>.

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

2. Vvedenie

   Esli vy poseschali sajt Dzhona Polstra (John Polstra) i prochli
   ego FAQ, to vy mogli otmetit' voprosy 12 & 13.

   Pri obnovlenii lyubogo nabora ishodnyh tekstov (naprimer,
   /usr/ports), cvsup(1) ispol'zuet sootvetstvuyuschij fajl
   izvlechenij dlya togo, chtoby vypolnyat' process obnovleniya samym
   pravil'nym i `effektivnym sposobom. V `etom primere (/usr/ports),
   sootvetstvuyuschim fajlom izvlechenij yavlyaetsya
   /usr/sup/ports-all/checkouts.cvs:. esli osnovnym katalogom
   yavlyaetsya /usr.

   Fajl izvlechenij soderzhit informaciyu o tekuschem sostoyanii
   vashih ishodnyh tekstov - nechto vrode ''fotografii''. `Eta
   znachaschaya informaciya pozvolyaet cvsup sgruzhat' obnovleniya
   naibolee `effektivno. K tomu zhe, i, mozhet byt', bolee vazhno to,
   chto `eto pozvolyaet cvsup pravil'no upravlyat' vashimi ishodnymi
   tekstami, udalyaya lokal'nye fajly, kotoryh bol'she net v
   hranilische, takim obrazom ne pozvolyaya poyavlyat'sya v vashej
   sisteme zabytym fajlam. Dejstvitel'no, bez fajla izvlechenij cvsup
   ne budet znat', iz kakih fajlov sostoit vash nabor (podrobnosti
   smotrite v spravochnoj sisteme po cvsup(1) otnositel'no metoda
   otkatki); v rezul'tate on ne mozhet udalit' v vashej sisteme te
   fajly, kotoryh bol'she net v hranilische. Oni (udalennye fajly)
   budut ostavat'sya v sisteme, i mogut vyzvat' nekotorye oshibki pri
   postroenii ili drugie problemy. K primeru, poyavlenie `etoj
   problemy ves'ma veroyatno, esli vy pervyj raz obnovili vash nabor
   portov cherez neskol'ko nedel' posle polucheniya vashih
   ustanovochnyh kompakt-diskov.

   Po `etoj prichine rekomenduetsya, chto vy posleduete dvuhshagovoj
   procedure, opisannoj v CVSup FAQ (smotrite Q12, Q13); v
   posleduyuschih razdelah vam budut dany konkretnye primery,
   interesnye i pouchitel'nye.

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

3. Poleznyj skript na yazyke python: cvsupchk

   Kak al'ternativu dlya proverki celostnosti vashih ishodnyh tekstov
   vy mozhete ispol'zovat' skript cvsupchk, napisannyj na yazyke
   python; `etot skript v nastoyaschee vremya nahoditsya v
   /usr/ports/net/cvsup/work/cvsup-16.1/contrib/cvsupchk, vmeste s
   horoshim README. Predvaritel'nye trebovaniya:

    1. /usr/ports/net/cvsup # make extract

    2. python (takzhe nahoditsya v kollekcii portov :-))

    3. Fajl izvlechenij dlya vashego nabora ishodnyh tekstov.

   Esli vy obnovlyaete vashi ishodnye teksty samyj pervyj raz,
   konechno zhe, u vas net fajla izvlechenij. Posle ustanovki python
   i obnovleniya vashih ishodnyh tekstov (k primeru, /usr/ports), vy
   mozhete proverit' ih tak:

 % /path/to/cvsupchk -d /usr -c /usr/sup/ports-all/checkouts.cvs:. | more

   Esli vy hotite proverit' vashi ishodnye teksty RELENG_4:

 % /path/to/cvsupchk -d /usr -c /usr/sup/src-all/checkouts.cvs:RELENG_4 | more

   V kazhdom sluchae cvsupchk budet proveryat' vashi ishodnye teksty
   na celostnost', ispol'zuya informaciyu, nahodyaschuyusya v
   sootvetstvuyuschem fajle izvlechenij. Soobscheniya o takih
   anomaliyah, kak prisutstvie udalennyh fajlov (tak nazyvaemyh
   zabytyh fajlov), otsutstvie izvlechennyh fajlov, nalichie lishnih
   fajlov RCS i mertvyh katalogov budut vydavat'sya na standartnyj
   vyvod.

   V sleduyuschem razdele my dadim vazhnye, tipovye primery
   obnovleniya ishodnyh tekstov; `eti primery pokazhut vam rol'
   fajlov izvlechenij i opasnosti nebrezhnogo upravleniya ishodnymi
   tekstami.

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

4. Primery bolee tonkogo upravleniya ishodnymi tekstami

  4.1. Kak bezopasno izmenyat' t`egi pri obnovlenii src-all

   Esli v vashem sup-fajle vy zadali, k primeru, tag=A, to cvsup
   sozdast fajl izvlechenij s imenem checkouts.cvs:A: naprimer, esli
   tag=RELENG_4, to sozdavaemyj fajl izvlechenij nazyvaetsya
   checkouts.cvs:RELENG_4. `Etot fajl budet ispol'zovat'sya dlya
   polucheniya i/ili sohraneniya informacii, identificiruyuschej
   vashi ishodnye teksty 4-STABLE.

   Pri otslezhivanii src-all, esli vy hotite perejti ot tag=A k tag=B
   (ne imeet znacheniya, bol'she ili men'she A, chem B), i vash fajl
   izvlechenij nazyvaetsya checkouts.cvs:A, to dolzhny byt' vypolneny
   sleduyuschie dejstviya:

    1. # mv checkouts.cvs:A checkouts.cvs:B (`Eto dast na
       posleduyuschem shage korrektnyj fajl izvlechenij)

    2. sozdajte sup-fajl, so strokoj naborov, kotoraya soderzhit:

 src-all tag=B

    3. pri pomoschi cvsup vypolnite obnovlenie vashih ishodnyh
       tekstov s novym sup-fajlom.

   cvsup budet iskat' checkouts.cvs:B - tak kak cel'yu yavlyaetsya B,
   to cvsup dlya korrektnogo upravleniya vashimi ishodnymi tekstami
   budet ispol'zovat' informaciyu, soderzhaschuyusya zdes'.

   Vyigryshi:

     * s ishodnymi tekstami rabota proizvoditsya korrektno (v
       chastnosti, ne ostaetsya zabytyh fajlov)

     * na server lozhitsya men'shaya nagruzka, tak kak cvsup rabotaet
       samym `effektivnym obrazom.

   K primeru, A=RELENG_4, B=. Tochka v B=. oznachaet -CURRENT. `Eto
   ves'ma tipichnoe obnovlenie, ot 4-STABLE k -CURRENT. Hotya
   ponyatno, kak ''sostarit''' vashi ishodnye teksty (k primeru, ot
   -CURRENT k -STABLE), ponizhenie versii sistemy yavlyaetsya sovsem
   drugim voprosom. Vam NASTOYATEL'NO ne rekomenduetsya vypolnyat'
   takoe dejstvie, esli tol'ko vy tochno ne ponimaete, chto delaete.

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

  4.2. Obnovlenie v odnoj i toj zhe metke s raznymi datami

   Esli vy hotite perejti ot tag=A k tag=A s otlichayuschejsya
   GMT-datoj (skazhem, date=D), to vypolnyajte sleduyuschee:

    1. napishite sup-fajl s takoj strokoj, opredelyayuschej nabor:

 src-all tag=A date=D

    2. obnovite vashi ishodnye teksty s pomosch'yu novogo sup-fajla

   Ne imeet znacheniya, predshestvuet li novaya data vremeni
   poslednej operacii sinhronizacii s tag=A, ili net. Naprimer, dlya
   togo, chtoby zadat' datu ''August 27, 2000, 10:00:00 GMT'', vy
   pishete stroku:

 src-all tag=RELENG_4 date=2000.08.27.10.00.00

     Zamechanie: Format daty strog. Vy zadaete vse komponenty daty:
     stoletie (''20'', to est' 21 vek. dolzhen byt' ukazan, kogda kak
     ''19'', proshloe stoletie, mozhet byt' opuscheno), god, mesyac,
     den', chas, minuty, sekundy - kak pokazano v primere vyshe. Za
     dopolnitel'noj informaciej obratites' k stranice spravochnoj
     sistemy po cvsup(1).

   Vne zavisimosti ot togo, zadana ili net data, fajl izvlechenij
   nazyvaetsya checkouts.cvs:A (naprimer, checkouts.cvs:RELENG_4). V
   itoge ne nuzhny kakie-to dejstviya dlya vozvrata k predyduschemu
   sostoyaniyu: vy izmenyaete datu v sup-fajle, i zapuskaete cvsup
   snova.

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

  4.3. Obnovlenie vashej kollekcii portov samyj pervyj raz

   Esli vy hotite ''sinhronizirovat''' vashe derevo portov v pervyj
   raz, vy dolzhny ispol'zovat' t`eg, sovpadayuschij s vashej
   ustanovlennoj versiej FreeBSD. Naprimer, esli vy ustanovili
   kollekciyu portov vo vremya ustanovki FreeBSD 5.3-RELEASE, to
   sleduet ispol'zovat' sleduyuschuyu stroku:

 ports-all tag=RELEASE_5_3_0

   cvsup sozdast fajl izvlechenij dlya kollekcii portov. Teper' my
   mozhem ispol'zovat' t`eg ''.'' dlya posleduyuschego obnovleniya
   dereva portov:

 ports-all tag=.

   Vse posleduyuschie obnovleniya budut obrabatyvat'sya gladko.

   Esli vy prochli tonkie zamechaniya v `etih razdelah, to, navernoe,
   vy osoznali potencial'nye problemy v processe obnovleniya ishodnyh
   tekstov. Mnogie dejstvitel'no stalkivayutsya s problemami. Vas
   predupredili. :-)

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

            `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.
