«Ø¥ß CVS Àx¦s®w(repository) - ¨Ï¥Î FreeBSD ªº¤è¦¡

Stijn Hoop

$FreeBSD: doc/zh_TW.Big5/articles/cvs-freebsd/article.sgml,v 1.2 2006/01/31 01:30:59 vanilla Exp $

FreeBSD ¬O FreeBSD°òª÷·|ªºµù¥U°Ó¼Ð

³\¦h»s³y°Ó©M¸g¾P°Ó¨Ï¥Î¤@¨ÇºÙ¬°°Ó¼Ðªº¹Ï®×©Î¤å¦r³]­p¨Ó¹üÅã¦Û¤vªº²£«~¡C ¥»¤å¤¤¥X²{ªº²³¦h°Ó¼Ð¡A¥H¤Î FreeBSD Project ¥»¨­¼s©Ò¤Hª¾ªº°Ó¼Ð¡A«á­±±N¥H '"' ©Î '®' ²Å¸¹¨Ó¼Ðµù¡C

³o¥÷¤å¥ó´y­z¤F¨Ï¥Î©M FreeBSD ±M®×¬Û¦Pªº©R¥O½Z¨Ó«Ø¥ß CVS Àx¦s®wªº¨BÆJ ¡C³o©M¼Ð·Ç CVS «Ø¥ßªºÀx¦s®w¬Û¸û¤§¤U¦³³\¦hÀuÂI¡A¥]§t¤F§ó¦h¹ï©ó­ì©l½X¾ðªº granular access ±±¨î¡A¥H¤Î¬°¨C¤@¦¸ªº´£¥æ²£¥Í©öŪªº¹q¤l¶l¥ó¡C


1 ²¤¶

¤j¦h¼Æªº¶}©ñ­ì©l½X³nÅé±M®×³£¨Ï¥Î CVS §@¬° ¥L­Ìªº­ì©l½X±±¨î¨t²Î¡C·í CVS ¦³³o¼ËªºÀuÂI¦s¦b ®É¡A¥¦¤]¦³³¡¥÷ªº·å²«©M¯ÊÂI¡C¨ä¤¤¤§¤@ªº­ì¦]¬O©M¨ä¥Lªº¶}µoªÌ¤À¨É­ì©l½X¾ð¯à °÷§Ö³t¦a¾É­P¨t²ÎºÞ²zªº´c¹Ú¡A¯S§O¬O¦pªG¨ä¤¤¤@¤H§Æ±æ«OÅ@³¡¥÷ªº­ì©l½X¾ð§K¨ü ©ó¤@¯ëªº¦s¨ú¡C

FreeBSD ¬O¨ä¤¤¤@­Ó¨Ï¥Î CVS ªº±M®×¡A¦P®É¤] ¬O°ò©ó¥¦ªº¶}µoªÌ¹M§G©ó¥þ¥@¬É¡C¥L­Ì¼¶¼g¤F¤@¨Ç©R¥O½Z¨Ï±oºÞ²zÀx¦s®wÅܱo§ó¥[ ®e©ö¡C³Ìªñ³o¨Ç©R¥O½Z¥Ñ Josef Karthauser ­«·s¾ã²z¹L¥B§ó¼Ð·Ç¤Æ¡A¨Ï±o¦b¨ä¥Lªº±M®×¤W¦A ¦¸¨Ï¥Î³o¨Ç©R¥O½Z·|§ó¥[®e©ö¡C¥»¤å¥ó±N´y­z¨Ï¥Î³o¨Ç·sªº©R¥O½Zªº¤èªk¡C

¬°¤F¨Ï¥»¤å¥ó¤¤ªº°T®§¦³¥Î¡A§A»Ý­n¼ô±x CVS °ò¥»ªº¾Þ§@¤è¦¡¡C


2 °ò¥»³]©w

Warning: ³Ì¦nªº¤è¦¡¬O¦b¤@­Ó¥þ·sªºÀx¦s®w¤¤°õ¦æ³o¨Ç¨BÆJ¡A¨Ã½T©w§A¤F¸Ñ©Ò¦³ªº«á ªG¡C¦P®É¡A½Ð½T©w§A¦³³Ì·s¥B¥iŪªº¸ê®Æ³Æ¥÷¡I


2.1 ªì©l¤ÆÀx¦s®w

­º¥ý­n°µªº¬O«Ø¥ß¤@­Ó·sªºÀx¦s®w¡A°õ¦æ¤U¦C©R¥O§i¶D CVS «Ø¥ß¨Ãªì©l¤Æ¡G

% cvs -d path-to-repository init

³o©R¥O§i¶D CVS «Ø¥ß CVSROOT ªº¥Ø¿ý¡A³o­Ó¥Ø¿ý¸Ì©ñ¸m¤F©Ò¦³ªº²ÕºAÀÉ¡C


2.2 ³]©wÀx¦s®wªº¸s²Õ

²{¦b§Ú­Ì±N«Ø¥ß¤@­Ó¾Ö¦³¸ÓÀx¦s®wªº¸s²Õ¡A©Ò¦³ªº¶}µoªÌ¥²¶·¥[¤J³o­Ó¸s²Õ ¡A³o¼Ë¥L­Ì¤~¯à°÷¦s¨ú¸ÓÀx¦s®w¡C§Ú­Ì°²³]¸s²Õ¦WºÙ¬O¥H FreeBSD ¤º©wªº ncvs¡C

# pw groupadd ncvs

±µªÌ§A»Ý­n¨Ï¥Î chown(8) ±N¥Ø¿ý©Ò¦³ªÌ«ü©wµ¹­è­è·s¼Wªº¸s²Õ¡G

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

¦p¦¹¤@¨Ó¨S¦³¾A·íªº¸s²Õ³\¥i±N¨S¦³¨ä¥L¤H¥i¥H¼g¤J¸ÓÀx¦s®w¡C


2.3 ¨ú¦^­ì©lÀÉ®×

²{¦b§A»Ý­n±q FreeBSD Àx¦s®w¤¤¨ú¦^ CVSROOT ¥Ø¿ý¡A ±q FreeBSD °Î¦Wªº CVS ¬M®g¯¸¨Ó¨ú¦^·|¬O³Ì²³æªº¤èªk¡C½Ð¬d¾\ ¦b handbook ¤¤ªº¬ÛÃö³¹¸`¨Ó Àò±o§ó¦h¸ê°T¡C§Ú­Ì°²³]¨ú¦^ªºÀɮצs©ñ¦b¬Û¦P¥Ø¿ý¤Uªº CVSROOT-freebsd ¥Ø¿ý¤¤¡C


2.4 ½Æ»s FreeBSD ªº©R¥O½Z

±µ¤U¨Ó§Ú­Ì­n½Æ»s FreeBSD CVSROOT ¸ÌªºÀɮרì§A ªºÀx¦s®w¤¤¡C¦pªG§A¬O±E±x©ó CVS¡A§A¤]³\·|·Q§A ¥i¥Hª½±µ¶×¤J³o¨Ç©R¥O½Z¡A¸Õ¹Ï§ó®e©öªº¦P®É©M§ó·sªºª©¥»¦P¨B¡F¤£¹L¡A¨Æ¹ê¬O CVS ¦b³o­Ó³¡¥÷¦³¯ÊÂI¡G·í¶×¤JÀɮרì CVSROOT ®É¡A¥¦¨Ã¤£·|§ó·s²ÕºAÀÉ¡C¬°¤F­n»{¥X³o¨ÇÀÉ®× ¡A§AÁٻݭn¦b¶×¤J¥¦­Ì«á¤@¤@­«·s´£¥æ¡A³o´N¥¢¥h¤F cvs import ªº»ù­È¡C¦]¦¹¡A«ØÄ³ªº¤èªk¬O¶È½Æ»s³o¨Ç©R¥O ½Z¹L¥h¡C

­Y¤W­z¤º®e¹ï§A¨S¦³·N¸q¬O¤£­«­nªº¡X¡X¦]¬°³Ì«áªºµ²ªG³£¬O¤@¼Ëªº¡C ­º¥ý¶×¥X§Aªº CVSROOT¡AµM«á½Æ»s­è­è¨ú¦^ªº FreeBSD Àɮר쥻¦aªº¥Ø¿ý¤¤¡]©|¥¼ÅܰʹL¡^¡G

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

ª`·N¡G§A«Ü¥i¯à·|±o¨ì¤@¬qÃö©ó¬Y¨Ç¥Ø¿ý¨S¦³³Q½Æ»sªºÄµ§i¡A³o¬O¥¿±`ªº¡A §A¨Ã¤£»Ý­n¥Î¨ì³o¨Ç¥Ø¿ý¡C


2.5 ©R¥O½Z»¡©ú

²{¦b§Aªº¤u§@¥Ø¿ý¤¤¦³¤F§¹¾ã FreeBSD ±M®×¦b¥¦­ÌªºÀx¦s®w¤¤¨Ï¥Îªº©R¥O½Z ªº½Æ¥»¡A¥H¤U¬O¨C­ÓÀɮײ³æªº¤¶²Ð¡C

  • access - ¦¹Àɮצb¹w³]ªº¦w¸Ë¤¤¨S¦³³Q¥Î¨ì¡C ³o¬O¨Ï¥Î¦bFreeBSD ªº¯S®í³]©w¤¤ ¡A¥Î¨Ó±±¨îÀx¦s®wªº¦s¨ú¡C¦pªG§A¤£§Æ±æ¨Ï¥Î³o­Ó³]©wªº¸Ü§A¥i¥H§R°£³o­ÓÀɮסC

  • avail - ¦¹ÀÉ®×±±¨îÀx¦s®wªº¦s¨ú¡C¦b¦¹Àɮפ¤ §A¥i¥H«ü©w¤¹³\¦s¨úÀx¦s®wªº¸s²Õ¡A¤]¥i¥H°w¹ï¥Ø¿ý©ÎÀɮרөڵ´´£¥æ¡C§AÀ³¸Ó ½Õ¾ã¬°¦b§AªºÀx¦s®w¤¤±N¥]§tªº¸s²Õ©M¥Ø¿ý¡C

  • cfg.pm - ¦¹ÀÉ®×»¡©ú¤F³]©w¤º®e¡A¨Ã´£¨Ñ¹w³]ªº³]©w¡C §A¤£¸Ó­×§ï¦¹ÀɮסA¦Ó¸Ó±N­×§ïªº³]©w©ñ¨ì cfg_local.pm¡C

  • cfg_local.pm - ¦¹ÀÉ®×¥]§t©Ò¦³ªº¨t²Î³]©w­È ¡C§AÀ³¸Ó³]©w©Ò¦³¦C¦b¦¹ªº³]©w¡A¨Ò¦p´£¥æªº¶l¥ó­n±H¨ì­þ¡B¦b­þ¨Ç¥D¾÷¤W ªº¨Ï¥ÎªÌ¥i¥H´£¥æµ¥µ¥¡C§ó¦hªº¬ÛÃö¸ê°T¦bµy«á·|´£¨ì¡C

  • checkoutlist - ¦¹ÀɮצC¥X©Ò¦³¦b CVS ±±¨î¤U¦¹¥Ø¿ý¤¤ªºÀɮסA°£¤F¼Ð·Ç¦b cvs init «Ø¥ß¥XªºÀɮסC§A¥i¥H§R°£¬Y¨Ç¤£»Ý­nªº FreeBSD ¯S®íªºÀɮסC

  • commit_prep.pl - ¦¹©R¥O½Z°õ¦æ¦UºØ´£¥æ«eªºÀˬd¡A °ò©ó§A¬O§_¦b cfg_local.pm ¤¤±Ò¥Î¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • commitcheck - ¦¹©R¥O½Z·|ª½±µ¼vÅT CVS¡C­º¥ý¥¦·|¨Ï¥Î cvs_acls.pl ¨ÓÀˬd´£¥æªÌ¬O§_¥i¥H¦s¨ú«ü©wªº­ì©l½X¾ð¡A µM«á°õ¦æ commit_prep.pl ¨Ó½T»{¦UºØ´£¥æ«eªºÀˬd¡C ¦pªG¤@¤Á¥¿±`¡ACVS ±N¤¹³\¦¹¦¸´£¥æÄ~Äò°õ¦æ¡C §A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • commitinfo - ¦¹Àɮ׬O CVS ¥Î¨Ó©w¸q¦b´£¥æ«e©Ò­n°õ¦æªºµ{¦¡¡X¡X¦b ¦¹¨Ò¤¤¬O commitcheck¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • config - Àx¦s®wªº³]©w¿ï¶µ¡C§A¥i¥H­×§ï¬°§A ·Q­nªº¡A¦ý¤j¦h¼ÆªººÞ²zªÌ¥i¯à·|«O¯d¹w³]­È¡C§ó¦hÃö©ó¥i¥H¦b¦¹³]©wªº¿ï¶µ ¸ê°T¥i¥H¬d¾\ CVS ¤â¥U¡C

  • cvs_acls.pl - ¦¹©R¥O½Z©w¸q´£¥æªÌªº¨­¤À¡A¥H ¤Î¥L/¦o¬O§_¤¹³\¦s¨ú­ì©l½X¾ð¡A¥¦¬O°ò©ó avail ¤¤ ªº³]©w¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • cvsignore - ¦¹ÀɮצC¥X­þ¨ÇÀÉ®× CVS ¤£¥Î³B²z¨ìÀx¦s®w¤¤¡A§A¥i¥H­×§ï¦¨§A·Q ­nªº¡C§ó¦hÃö©ó¥i¥H¦¹Àɮתº»¡©ú¥i¥H¬d¾\ CVS ¤â¥U¡C

  • cvswrappers - ¦¹Àɮ׬O CVS ¥Î¨Ó±Ò¥Î©Î°±¥ÎÃöÁä¦r®i¶}¡A©ÎªÌ¬O§_ÀÉ ®×¸Ó³Qµø¬°¤G¶i¦ìÀÉ¡C§A¥i¥H­×§ï¦¨§A·Q­nªº¡C§ó¦hÃö©ó¥i¥H¦¹Àɮתº»¡©ú ¥i¥H¬d¾\ CVS ¤â¥U¡Cª`·N -t ©M -f ¿ï¶µ¦b CVS client/server ¨Ã¤£¯à°÷¥¿½Tªº¹B§@¡C

  • edithook - ¦¹Àɮפw¸g¨S¦³¦b¨Ï¥Î¤F¡A¯dµÛ¥u ¬O¬°¤F¬Y¨Ç¦³·N¸qªº­ì¦]¡C§A¥i¥H¦w¥þ¦a§R°£¦¹ÀɮסC

  • editinfo - CVS ¨Ï¥Î³o­ÓÀɮרӱj­¢§A¨Ï¥Î¯S©wªº½s¿è¾¹¡CFreeBSD ¨S¦³¨Ï¥Î³o­Ó¥\¯à¡A¦] ¬°¿é¤J¤é»x°T®§¤w¸g¥Ñ verifymsg ©M logcheck ¨Ó§¹¦¨¡C³o¬O¦]¬° editinfo ¥\¯à¦b±q»·ºÝ´£¥æ©Î¬O¨Ï¥Î -m ©Î -F ¿ï¶µ®É¤£·|°õ¦æ¡C§A¤£ ¸Ó§ó°Ê¦¹ÀɮסC

  • exclude - ¦¹ÀɮצC¥X³Q commit_prep.pl ©w¸q¤£¯à¥]§t­×¥¿ª©¼ÐÀYªºÀɮסC ¦b FreeBSD ª©¥»ªº³]©w¤¤¡A©Ò¦³¦b­×¥¿ª©±±¨î¤UªºÀɮ׻ݦ³¤@­Ó­×¥¿ª©¼ÐÀY ¡A¡]¹³¬O $FreeBSD$¡^¡C¦b¦¹Àɮפ¤©Ò¦³²Å¦X¤@¦æ¤@­ÓªºÀÉ ®×¦WºÙ±N¤£·|³QÀˬd¡C§A¥i¥H¦b¦¹Àɮפ¤¬°¤£»Ý­n­×¥¿ª©¼ÐÀYªºÀÉ®×·s¼W¤@ ­Ó¥¿³W¹Bºâ¦¡¡C¬°¤F¦w¸Ë³o¨Ç©R¥O½Z¡A³Ì¦nªº¤èªk¬O±Æ°£ CVSROOT/ ·|¨ü¨ì¼ÐÀYªºÀˬd¡C

  • log_accum.pl - ¦¹©R¥O½Z·|³B²z¥Ñ logcheck ©Ò´£¨Ñªº¤é»x°T®§¡A¨Ã¥B±N¤§¬°³Æ¥÷¥Øªº ªþ¥[©óÀx¦s®w¤¤ªº°O¿ýÀɮסC¦P®É¤]°õ¦æ­n±N¶l¥ó±H¨ì§A´£¨Ñªº«H½c¤¤ªºµ{ ¦¡¡]¦b cfg_local.pm ¤¤¡^¡C¥¦©M CVS ¤§¶¡¬O¥Ñ loginfo ­t³d·¾³q¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • logcheck - ¦¹ÀɮפÀªR´£¥æªÌ´£¨Ñªº¤é»x°T®§ ¡A¨Ã¸Õ¹Ï¹ï¨ä§@²M²z°Ê§@¡C¥¦©M CVS ¤§¶¡¬O ¥Ñ verifymsg ­t³d·¾³q¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

    Note: ¦¹©R¥O½Z¨Ìªþ©ó¥»¦aªº FreeBSD CVS ³B²z¡GFreeBSD ª©¥»¦b¦¹©R¥O½Z­×§ï¹L«á¤~Ū¨ú¤é»x°T®§¡F¼Ð·Çªº CVS ª©¥»ÁöµM¯à°÷Àˬd»yªk¤W¬O§_¥¿½T¡A¦ý¨Ã ¤£·|²M²z¤é»x°T®§¡CCVS 1.11.2 ¥i¥H³z¹L¦b config ³]©w RereadLogAfterVerify=always ¨Ó©M FreeBSD ª©¥»¦³¬Û¦Pªº§@¥Î¡C

  • loginfo - ¦¹Àɮ׬O CVS ¥Î¨Ó±±¨î¤é»x°T®§­n±H¨ì­þ¸Ì¡A¦Ó log_accum.pl ­t³d³B²z¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • modules - ¦¹Àɮ׫O¯d¤F CVS ­ì©lªº·N¸q¡C§AÀ³¸Ó§R°£·s¼Wªº FreeBSD ¼Ò²Õ¡A¨Ã­×§ï¬°§A·Q­nªº¤º®e¡C§ó¦hÃö©ó¥i¥H¦¹Àɮתº»¡©ú¥i¥H¬d¾\ CVS ¤â¥U¡C

  • notify - ¦¹Àɮ׬° CVS ¥Î¨Ó±±¨îºÊ¬Ý¬Y­ÓÀɮסC¦b FreeBSD ªº Àx¦s®w¤¤¨S¦³¨Ï¥Î¨ì¦¹ÀɮסA§A¥i¥H­×§ï¦¨§A·Q­nªº¡C§ó¦hÃö©ó¥i¥H¦¹ÀÉ®× ªº»¡©ú¥i¥H¬d¾\ CVS ¤â¥U¡C

  • options - ¦¹ÀÉ®×¶È­­¨Ï¥Î©ó FreeBSD ©M Debian ªº CVS ª©¥»¡C¥¦¥]§t¤F»Ý­n¦b­×¥¿ª©¼ÐÀY¤¤ ®i¶}ªºÃöÁä¦r¡C§A¥i¥H­×§ï¬°²Å¦X§A«ü©w¦b cfg_local.pm ªºÃöÁä¦r¡C

  • rcsinfo - ¦¹Àɮשw¸q´£¥æ®ÉÀx¦s®w©Ò­n¨Ï¥Îªº ¤é»x°T®§¼Ë¦¡½d¥»¡A¦p rcstemplate¡CFreeBSD ¹w³] ¬°©Ò¦³ªºÀx¦s®w¨Ï¥Î¦P¤@­Ó¼Ë¦¡½d¥»¡A§A¥i¥H¥[¤J¨ä¥L§A·Q­nªº¡C

  • rcstemplate - ¦¹Àɮ׬O´£¥æªÌ¦b´£¥æ®É·|¬Ý¨ì ªº¤é»x°T®§¼Ë¦¡½d¥»¡A§AÀ³¸Ó­×§ï¬°§A©w¸q¦b cfg_local.pm ªº¦UºØ°Ñ¼Æ¡C

  • tagcheck - ¦¹ÀÉ®×±±¨î¦bÀx¦s®w¤¤¶K¤W¼ÐÅÒªº ¦s¨ú¡C¼Ð·Çªº FreeBSD ª©¥»©Úµ´¦W¬° RELENG* ªº¼ÐÅÒ¡A¦]¬°³o¬O release engineering ªº¤u§@¡C§A¥i¥H®Ú¾Ú»Ý­n¨Ó­×§ï¦¹ÀɮסC

  • taginfo - ¦¹ÀÉ®×±±¨î°õ¦æ¦bÀx¦s®w¤¤¶K¤W¼ÐÅÒ ªº¦s¨úªº©R¥O½Z¡A¦p tagcheck¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • unwrap - ¦¹©R¥O½Z¥i¥H¥Î¨Ó¦b¶×¥X®É¦Û°Ê¡§¸Ñ¶}¡¨ ¤G¶i¦ìÀÉ¡]½Ð¨£ cvswrappers¡^¡C²{¦b FreeBSD ¨Ã ¨S¦³¨Ï¥Î¦¹³]©w¡A¦]¬°¦¹¥\¯à¦b»·ºÝ´£¥æ®É¨Ã¤£¬O°õ¦æªº«D±`§¹µ½¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • verifymsg - ¦¹ÀɮץΨӰõ¦æ©M¤é»x°T®§¬ÛÃöªº ©R¥O½Z¡A¦p logcheck¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • wrap - ¦¹©R¥O½Z¥i¥H¥Î¨Ó¦b´£¥æ®É¦Û°Ê¡§¥]»q¡¨ ¤G¶i¦ìÀÉ¡]½Ð¨£ cvswrappers¡^¡C²{¦b FreeBSD ¨Ã ¨S¦³¨Ï¥Î¦¹³]©w¡A¦]¬°¦¹¥\¯à¦b»·ºÝ´£¥æ®É¨Ã¤£¬O°õ¦æªº«D±`§¹µ½¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC


2.6 ¦Û­q©R¥O½Z

±µ¤U¨Óªº¨BÆJ­n³]©w³o¨Ç©R¥O½Z¨Ï±o¥¦­Ì¥i¥H¦b§AªºÀô¹Ò¤¤¹B§@¡C§AÀ³¸ÓÀË ¬d©Ò¦³¦b¥Ø¿ý¤¤ªºÀɮסA¨Ã­×§ï¬°²Å¦X§Aªº³]©w¡C¤×¨ä¡A§A·|·Q­n­×§ï¤U¦CªºÀɮסG

  1. ¦pªG§A¤£§Æ±æ¨Ï¥ÎFreeBSD ªº¯S®í³]©w¡A §A¥i¥H¦w¥þ¦a§R°£ access¡G

    % cvs rm -f access
    
  2. ½s¿è avail ¨Ó¥]§t§A·Q±±¨î¦s¨úªº¦UºØÀx¦s®w ¥Ø¿ý¡A½Ð½T©w§A¦³«O¯d avail||CVSROOT ³o¤@¦æ¡A§_«h §A±N·|¦b¤U¤@¨B§â§A¦Û¤vÂê¦b¥~­±¡C

    ¥t¥~§A¥i¥H¦b¦¹Àɮפ¤·s¼W¶}µoªÌªº¸s²Õ¡AFreeBSD ¹w³]¨Ï¥Î access ¨Ó¦C¥X©Ò¦³ªº¶}µoªÌ¡A¦ý§A¥i¥H¨Ï¥Î¥ô¦ó§A ·Q­n¥ÎªºÀɮסC¦pªG§A·Qªº¸Ü¤]¥i¥H·s¼W¸s²Õ¡]½Ð¨Ï¥Î«ü©w¦b cvs_acls.pl ¤W¼h¸Ìªº»yªk¡^¡C

  3. ½s¿è cfg_local.pm ¨Ó¥]§t§A»Ý­nªº¿ï¶µ¡C¤×¨ä §AÀ³¸ÓÀ˵ø¤@¤U¤U¦Cªº³]©w¶µ¥Ø¡G

    • %TEMPLATE_HEADERS - ³o¬O¥Î¨Ó¨ú±o¤é»x°T ®§¤º®eªºµ{§Ç¡A¨Ã¥[¤J±N§e²{ªº¶l¥ó¶µ¥Ø©M´£¨Ñ«DªÅ­Èªº°T®§¡C§A¥i ¥H§R°£ PR ©M MFC after ±Ô­z¡A·íµM¤]¥i¥H¥[¤J§A·Q­nªº¡C

    • $MAIL_BRANCH_HDR - ¦pªG§A·Q­n¦b¨C¤@«Ê ´£¥æªº¶l¥ó¤¤¥[¤J´y­z¬O¦b­þ¤@­Ó¤À¤ä¤¤´£¥æªº¼ÐÀY¡A¨º»ò½Ð©w¸q¬° ²Å¦X§Aªº³]©w¡C¦pªG§A¤£·Q¨Ï¥Î³o¼Ëªº¼ÐÀY¡A¨º»ò½Ð³]©w¬°ªÅ­È¡C

    • @COMMIT_HOSTS - ©w¸q¨Ï¥ÎªÌ¯à°÷´£¥æªº¥D¾÷¡C

    • $MAILADDRS - ³]©wÀ³¸Ó¦¬¨ì´£¥æ¶l¥óªº¶l ¥ó¦ì§}¡C

    • @LOG_FILE_MAP - ¥H§A©Ò»Ý­nªº¨Ó­×§ï³o­Ó °}¦C¡A¨C­Ó³]©w­ÈÀ³¸Ó²Å¦X³Q´£¥æªº¥Ø¿ý¡A¦Ó´£¥æªº¤é»x°T®§·|¥H commitlogs ªº¦WºÙÀx¦s¦b¨C­Ó³Q³]©wªº¥Ø¿ý¤U¡C

    • $COMMITCHECK_EXTRA - ¦pªG§A¤£·Q¨Ï¥Î FreeBSD ¯S®íªº¦s¨ú±±¨î ¥\¯à¡A§A¥i¥H¦b¦¹Àɮפ¤§R°£¹ï $COMMITCHECK_EXTRA ªº©w¸q¡C

    Note: ­×§ï $IDHEADER ªº¥\¯à¥u¦³¦b FreeBSD ¥­¥x¤W¥i¥H¹B§@¡A¥¦¬O¬Û¨Ì¦b FreeBSD ªº¯S®í CVS ³]©w¤W¡C

    §A¥i¥HÀˬd cfg.pm ¬O§_¦³¨ä¥Lªº°Ñ¼Æ¥i¥H­×§ï ¡A¦ý¬O­×§ï³Ì¦n¬O¦³­ì¦]ªº¡C

  4. §R°£ exclude ¤¤Ãö©óFreeBSD ªº¯S®í³]©wªº±Ô ­z¡]¦p¥H ^ports/ ¬°¶}ÀYªº¨C¤@¦æµ¥¡^¡C¦¹¥~¡Aµù¸Ñ ±¼¥H ^CVSROOT/ ¬°¶}ÀYªº¦æ¦C¡AµM«á·s¼W¤@¦æ¥u¦³ ^CVSROOT/¡Cµ¥¨ìÃöÁä¦r®i¶}ªº©R¥O½Z¦w¸Ë¦n«á¡A§A¥i ¥H¦b CVSROOT ¥Ø¿ý¤¤ªºÀɮ׸̥[¤W¼ÐÀY¡AµM«á¦A«ì ´_­è­èµù¸Ñªº¦æ¦C¡A¦ý¦b§AÁÙ¨S¦³´£¥æ«e«h¥u«O«ù³o¼Ë¡C

  5. ½s¿è modules¡A¨Ã§R°£©Ò¦³ FreeBSD ªº¸s²Õ¡C ¥[¤J§A»Ý­nªº¼Ò²Õ¡C

  6. Note: ¦¹¨BÆJ¥u¦³¦b§A©ó cfg_local.pm ¤¤«ü©w ¤F $IDHEADER ¤~¦³¥²­n³]©w¡]¥u¦³¦b FreeBSD ªº¯S®í CVS ³]©w¤W¤~¯à°÷°õ¦æ¡^¡C

    ½s¿è options ¥H²Å¦X§A¦b cfg_local.pm ¤¤³]©wªº¼ÐÅÒ¦WºÙ¡C¨Ã¦b©Ò¦³ªºÀÉ®× ¤¤·j´M FreeBSD ¨Ã´À´«¬°§A³]©wªº¼ÐÅÒ¦WºÙ¡C

  7. ­×§ï rcstemplate ¬°©M¦b cfg_local.pm ¤¤¬Û¦Pªº³]©w¡C

  8. ¿ï¾Ü©Êªº§R°£¦b tagcheck ¤¤°w¹ï FreeBSD ÀË ¬dªº³]©w¡C§A¥i¥H¶È¶È¦bÀɮתº³Ì¤W¼h¥[¤W exit 0 ¨Ó ¨ú®ø©Ò¦³¼ÐÅÒªºÀˬd¡C

  9. ¦b§A§¹¦¨«eªº³Ì«á¤@¥ó¨Æ¬O½T»{ commitlogs ¥i¥H¥¿½TÀx¦s¡C¹w³]·|Àx ¦s¦bÀx¦s®w¤¤ªº commitlogs ¤l¥Ø¿ý¤¤¡A¦Ó³o­Ó¥Ø¿ý »Ý­n¥ý«Ø¥ß¡G

    % mkdir commitlogs
    % cvs add commitlogs
    

²{¦b¡A¦b²Ó¤ßªºÀ˵ø¹L«á¡A§A¥i¥H´£¥æ§Aªº­×§ï¤F¡C½T©w§A¥ý«e¦³¦b avail ¤¤¤¹³\§A¦Û¤v¦s¨ú CVSROOT ¥Ø¿ý¡A¦]¬°¦pªG¨S¦³³o¼Ë°µªº¸Ü§A·|§â§A¦Û¤vÂê¦b¥~­±¡C§¹¾ã½T»{¹L«á½Ð°õ¦æ¤U ¦C©R¥O¡G

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

2.7 ´ú¸Õ³]©w

§A¤w¸g·Ç³Æ¦n°µ°ò¥»ªº´ú¸Õ¤F¡G±j¨î´£¥æ avail ¥H½T»{¨C¥ó¨Æ³£¦p¹w´Áªº¹B§@¡C

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

¦pªG¤@¤Á¥¿±`¡A¨º»ò®¥³ß¤F¡I§A²{¦b¤w¸g¬°§AªºÀx¦s®w«Ø¥ß¦n FreeBSD ªº©R ¥O½Z¤F¡C¦pªG CVS ¤´µM¦³Äµ§i¤°»ò¡A¦^ÀYÀ˵ø¤W ­zªº¨BÆJ¬O§_¦³¥¿½Tªº°õ¦æ¡C


3 FreeBSD ªº¯S®í³]©w

FreeBSD ±M®×¦Û¤v¨Ï¥Î¤@­Ó¦³ÂI¤£¦Pªº³]©w¡A¨º´N¬O¦P®É¤]¨Ï¥Î FreeBSD CVSROOT ¤¤ªº freebsd ¤l¥Ø¿ý¡C¦] ¬°¤j¶qªº´£¥æªÌ¥²¶·¦b¬Û¦Pªº¸s²Õ¤¤¡A¦]¦¹±M®×¼g¤F¤@­Ó²³æªº wrapper ¨Ó½T»{´£ ¥æªÌ¥i¥H¥¿½Tªº´£¥æ¡A¨Ã³]©wÀx¦s®wªº¸s²Õ¦WºÙ¡C

¦pªG§AªºÀx¦s®w¤]»Ý­n³o¼Ëªº¥\¯à¡A¨º»ò¤U­±´N·|¤¶²Ð¦p¦ó«Ø¥ß¡A¤£¹L­º¥ý­n ¥ý¨Ó¬Ý¤@¬q½ÆÂøªº·§­z¡C


3.1 FreeBSD ³]©w¤¤¨Ï¥ÎªºÀÉ®×

  • access - ¦¹ÀɮץΨӱ±¨îÀx¦s®wªº¦s¨ú¡C§A À³¸Ó½s¿è¨Ã¥[¤J©Ò¦³¦b±M®×¤¤ªº¦¨­û¡C

  • freebsd/commitmail.pl - ¦¹Àɮפw¸g¨S¦³¦b ¨Ï¥Î¤F¡A¯dµÛ¥u¬O¬°¤F¬Y¨Ç¦³·N¸qªº­ì¦]¡C§A¤£¸Ó§ó°Ê¦¹ÀɮסC

  • freebsd/cvswrap.c - ¦¹ CVS wrapper ­ì©l ½X¬O¥Î¨Ó«Ø¥ßÀˬd©Ò¦³¦s¨úªº¤u§@¡C§ó¦hªº°T®§¦bµy«á·|´£¥X¡C§AÀ³¸Ó½s ¿è ACCESS ©M REALCVS ªº¸ô®| ¥H²Å¦X§Aªº³]©w¡C

  • freebsd/mailsend.c - ¦¹Àɮ׬O FreeBSD ³] ©w mailing lists »Ý­nªº¡A§A¤£¸Ó§ó°Ê¦¹ÀɮסC


3.2 ¨BÆJ

  1. ¥u¦³¥[¤J§Aªº¨Ï¥ÎªÌ¦WºÙ¨ì access ¤¤¡C

  2. ½s¿è cvswrap.c ªº¸ô®|¥H²Å¦X§Aªº³]©w¡A©w¸q ¦b¤j¼gªº ACCESS ¤¤¡C¦P®É¦pªG¹w³]­È¤£²Å¦X§Aªº±¡ªp ªº¸Ü¤]À³¸Ó­×§ï¥»¦a¹ê»Úªº cvs µ{¦¡©Ò¦b¦ì¸m¡C­ì©l ªº cvswrap.c §Æ±æ´À¥N¦øªAºÝªº CVS µ{¦¡¡A¨Ò¦p¥i ¯à·|¬O /usr/bin/ncvs¡C

    §Úªº cvswrap.c ¬O³o¼Ë¡G

    #define ACCESS "/local/cvsroot/CVSROOT/access"
    #define REALCVS "/usr/bin/ncvs"
    
  3. ±µ¤U¨Ó¬O«Ø¥ß wrapper ¨Ó½T»{§A¦b´£¥æ®É¬O¦b¥¿½Tªº¸s²Õ¤¤¡C ¦b§Aªº CVSROOT ¤¤ªº cvswrap.c ­n¯à°÷¨Ï¥Î¡C

    ¦b§A§¹¦¨½s¿è¨Ã¥[¤J¥¿½Tªº¸ô®|«á§Ú­Ì­n¨Ó½sĶ­ì©l½X¡G

    % cc -o cvs cvswrap.c
    

    µM«á¶i¦æ»Ý­n³]©w¡]¦¹¨BÆJ»Ý­n root Åv­­¡^¡G

    # 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
    

    ³o·|±N wrapper ¦w¸Ë¦¨¹w³]ªº cvs µ{¦¡¡A½Ð½T©w ¥ô¦ó­n¨Ï¥ÎÀx¦s®wªº¤HÀ³¸Ó¦³¥¿½Tªº¦s¨úÅv­­¡C

  4. ²{¦b§A¥i¥H§R°£©Ò¦³¦bÀx¦s®w¸s²Õ¤¤ªº¨Ï¥ÎªÌ¡A©Ò¦³ªº¦s¨ú±±¨î·|¸g¥Ñ wrapper §¹¦¨¡A¦P®É wrapper ·|³]©w¦s¨úªº¥¿½T¸s²Õ¡C


3.3 ´ú¸Õ³]©w

§Aªº wrapper ²{¦bÀ³¸Ó¤w¸g¦w¸Ë¦n¤F¡A§A·íµM¤]¥i¥H±j¨î´£¥æ access ¨Ó´ú¸Õ¬O§_¥¿±`¡G

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

¦P¼Ë¦a¡A¦pªG¦³¿ù»~¡AÀˬd¬O§_¤W­z©Ò¦³¨BÆJ³£¦³¥¿½Tªº°õ¦æ¡C


¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C