<?xml version="1.0" encoding="iso-8859-7"?> <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN" "../../../share/xml/freebsd45.dtd"> <!-- FreeBSD Greek Documentation Project %SOURCE% en_US.ISO8859-1/articles/cvs-freebsd/article.xml %SRCID% 1.17 --> <article lang="el"> <articleinfo> <title>ÅãêáôÜóôáóç åíüò CVS Repository — ï ôñüðïò ôïõ &os;</title> <author> <firstname>Stijn</firstname> <surname>Hoop</surname> <affiliation> <address><email>stijn@win.tue.nl</email></address> </affiliation> </author> <copyright> <year>2001</year> <year>2002</year> <year>2003</year> <holder role="mailto:stijn@win.tue.nl">Stijn Hoop</holder> </copyright> <pubdate>$FreeBSD$</pubdate> <releaseinfo>$FreeBSD$</releaseinfo> <legalnotice id="trademarks" role="trademarks"> &tm-attrib.freebsd; &tm-attrib.general; </legalnotice> <abstract> <para>Ôï Üñèñï áõôü ðåñéãñÜöåé ôá âÞìáôá ðïõ Ýêáíá ãéá íá åãêáôáóôÞóù Ýíá CVS repository ðïõ ÷ñçóéìïðïéåß ôá ßäéá áñ÷åßá äÝóìçò åíôïëþí (scripts) ìå áõôÜ ðïõ ÷ñçóéìïðïéåß êáé ôï &os; project óôç äéêÞ ôïõ åãêáôÜóôáóç. Ç óõãêåêñéìÝíç ðñïóÝããéóç Ý÷åé áñêåôÜ ðëåïíåêôÞìáôá Ýíáíôé ìéáò ôõðïðïéçìÝíçò CVS åãêáôÜóôáóçò, üðùò ðéï ëåðôïìåñÞ Ýëåã÷ï ðñüóâáóçò óôï äÝíôñï ôïõ êþäéêá êáèþò êáé áõôüìáôç ðáñáãùãÞ åõáíÜãíùóôùí email ìå ëåðôïìÝñåéåò ãéá êÜèå áëëáãÞ óôïí ðçãáßï êþäéêá (commit).</para> </abstract> </articleinfo> <sect1 id="introduction"> <title>ÅéóáãùãÞ</title> <para>Ôá ðåñéóóüôåñá projects åëåýèåñïõ ëïãéóìéêïý (free software) êáé áíïé÷ôïý êþäéêá (open source) ÷ñçóéìïðïéïýí ôï <application>CVS</application> óáí óýóôçìá åëÝã÷ïõ ôïõ êþäéêÜ ôïõò. Ðáñüëï ðïõ ôï <application>CVS</application> åßíáé ðïëý êáëü óå áõôüí ôïí ôïìÝá Ý÷åé êé áõôü ôï ìåñßäéü ôïõ óå åëáôôþìáôá êáé áäõíáìßåò. Ìéá áðü áõôÝò ôéò áäõíáìßåò åßíáé ôï üôé ç êïéíÞ ÷ñÞóç êþäéêá ìðïñåß ãñÞãïñá íá ïäçãÞóåé óå Ýíáí äéá÷åéñéóôéêü åöéÜëôç, åéäéêÜ áí õðÜñ÷åé ç åðéèõìßá íá ðñïóôáôåõôïýí ïñéóìÝíá êïììÜôéá ôïõ äÝíôñïõ ôïõ êþäéêá áðü êïéíÞ ðñüóâáóç.</para> <para>Ç ïìÜäá áíÜðôõîçò ôïõ &os; ÷ñçóéìïðïéåß åêôåíþò ôï <application>CVS</application>. ÄéáèÝôåé åðßóçò ìéá ìåãÜëç âÜóç áðü ðñïãñáììáôéóôÝò áðü ðïëëÝò äéáöïñåôéêÝò ÷þñåò. Áíáðôý÷èçêáí ëïéðüí ìåñéêÜ áñ÷åßá äÝóìçò åíôïëþí ãéá íá êÜíïõí ôçí äéá÷åßñéóç ôïõ repository ðéï åýêïëç. Ðñüóöáôá ôá áñ÷åßá áõôÜ áíáèåùñÞèçêáí êáé êáíïíéêïðïéÞèçêáí áðü ôïí &a.joe; ãéá íá åßíáé ðéï åýêïëï íá ÷ñçóéìïðïéçèïýí êáé óå Üëëá Ýñãá. Ôï Üñèñï áõôü ðåñéãñÜöåé ìéá ìÝèïäï ÷ñÞóçò áõôþí ôùí íÝùí áñ÷åßùí äÝóìçò åíôïëþí.</para> <para>Ãéá íá ìðïñÝóåôå íá ÷ñçóéìïðïéÞóåôå ìå ôïí êáëýôåñï ôñüðï ôéò ðëçñïöïñßåò áõôïý ôïõ Üñèñïõ èá ðñÝðåé íá ãíùñßæåôå ôéò âáóéêÝò ìåèüäïõò ëåéôïõñãßáò ôïõ <application>CVS</application>.</para> </sect1> <sect1 id="first-setup"> <title>Ðñþôç ÅãêáôÜóôáóç</title> <warning> <para>Åßíáé êáëÞ éäÝá íá åêôåëÝóåôå ãéá ðñþôç öïñÜ áõôÞ ôç äéáäéêáóßá ÷ñçóéìïðïéþíôáò Ýíá êåíü äïêéìáóôéêü repository, ãéá íá åßíáé âÝâáéï üôé èá êáôáíïÞóåôå üëåò ôéò óõíÝðåéåò. Ðñéí îåêéíÞóåôå óéãïõñåõôåßôå üôé Ý÷åôå ðñüóöáôá backups, ôá ïðïßá åããõçìÝíá äïõëåýïõí!</para> </warning> <sect2> <title>Áñ÷éêïðïßçóç ôïõ repository</title> <para>Ôï ðñþôï ðñÜãìá ðïõ èá ðñÝðåé íá êÜíåôå üôáí óôÞíåôå Ýíá íÝï repository åßíáé íá ðåßôå óôï <application>CVS</application> íá ôï áñ÷éêïðïéÞóåé:</para> <screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-repository</replaceable> init</userinput></screen> <para>Áõôü ëÝåé óôï <application>CVS</application> íá äçìéïõñãÞóåé ôïí öÜêåëï äéá÷åßñéóçò <filename class="directory">CVSROOT</filename>, üðïõ óõìâáßíïõí üëåò ïé ðáñáìåôñïðïéÞóåéò.</para> </sect2> <sect2> <title>Ç ïìÜäá ôïõ repository</title> <para>Ôþñá èá äçìéïõñãÞóïõìå ôçí ïìÜäá óôçí ïðïßá èá áíÞêåé ôï repository. ¼ëïé ïé committers èá ðñÝðåé íá áíÞêïõí óå áõôÞ ôçí ïìÜäá, þóôå íá ìðïñïýí íá ãñÜöïõí óôï repository. Ãéá ôï óêïðü áõôü èá ÷ñçóéìïðïéÞóïõìå ôçí ßäéá ïìÜäá ðïõ ÷ñçóéìïðïéåß ãé' áõôü ôï óêïðü êáé ôï &os;, ôçí ïìÜäá <literal>ncvs</literal>.</para> <screen>&prompt.root; <userinput>pw groupadd <replaceable>ncvs</replaceable></userinput></screen> <para>ÌåôÜ, èá ðñÝðåé íá åêôåëÝóåôå ôçí åíôïëÞ &man.chown.8; óôïí öÜêåëï ìå ðáñÜìåôñï ôçí ïìÜäá ðïõ ìüëéò ðñïóèÝóáôå, èÝôïíôáò Ýôóé ôçí ïìÜäá óôçí ïðïßá áíÞêåé ï êáôÜëïãïò:</para> <screen>&prompt.root; <userinput>chown -R :<replaceable>ncvs</replaceable> <replaceable>path-to-your-repository</replaceable></userinput></screen> <para>Áõôü åîáóöáëßæåé üôé êáíåßò äåí èá ìðïñåß íá ãñÜøåé óôï repository áí äåí áíÞêåé óôçí óùóôÞ ïìÜäá.</para> </sect2> <sect2> <title>Ðáßñíïíôáò ôïí ðçãáßï êþäéêá</title> <para>Ôþñá èá ðñÝðåé íá áðïêôÞóåôå ôïí êáôÜëïãï <filename class="directory">CVSROOT</filename> áðü ôï repository ôïõ &os;. Áõôü ãßíåôáé åýêïëá, êÜíïíôáò check out áðü Ýíá áíïé÷ôÞò ðñüóâáóçò &os; CVS mirror. Äåßôå <ulink url="&url.books.handbook;/anoncvs.html">ôï ó÷åôéêü êåöÜëáéï óôï åã÷åéñßäéï</ulink> ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. Áò õðïèÝóïõìå üôé ï ðçãáßïò êþäéêáò èá áðïèçêåõôåß óôïí êáôÜëïãï <filename class="directory">CVSROOT-freebsd</filename> ðïõ âñßóêåôáé ìÝóá óôïí ôñÝ÷ïíôá êáôÜëïãï.</para> </sect2> <sect2> <title>ÁíôéãñÜöïíôáò ôá scripts ôïõ &os;</title> <para>¾óôåñá, áíôéãñÜöïõìå ôïí ðçãáßï êþäéêá áðü ôïí <filename class="directory">CVSROOT</filename> êáôÜëïãï ôïõ &os; óôï äéêü ìáò repository. Áí åßóôå óõíçèéóìÝíïò ìå ôï <application>CVS</application>, ßóùò íá óáò ðåñÜóåé áðü ôï ìõáëü íá ðñïóðáèÞóåôå íá êÜíåôå import ôá scripts, óå ìéá ðñïóðÜèåéá íá ãßíåé ýóôåñá ï óõã÷ñïíéóìüò ìå ôéò êáôïðéíÝò åêäüóåéò åõêïëüôåñïò. Ùóôüóï, áðïäåéêíýåôáé üôé ôï <application>CVS</application> ðáñïõóéÜæåé ìéá äõóëåéôïõñãßá óôçí ðåñéï÷Þ áõôÞ: ¼ôáí åéóÜãåôå ðçãáßï êþäéêá ìÝóá óôï <filename class="directory">CVSROOT</filename> öÜêåëï, äåí èá åíçìåñùèïýí ôá áðáñáßôçôá áñ÷åßá äéá÷åßñéóçò. Ãéá íá ìðïñÝóåôå íá ôï êÜíåôå íá ôá áíáãíùñßóåé, èá ðñÝðåé íá êÜíåôå checkin îå÷ùñéóôÜ êÜèå áñ÷åßï áöïý Ý÷åôå ôåëåéþóåé ìå ôçí åéóáãùãÞ, ÷Üíïíôáò Ýôóé ôçí áîßá ôïõ <literal>cvs import</literal>. ÅðïìÝíùò, ç ðñïôåéíüìåíç ìÝèïäïò åßíáé áðëÜ íá áíôéãñÜøåôå ôá scripts.</para> <para>Äåí åßíáé êáé ôüóï óçìáíôéêü ôï áí ç ðáñáðÜíù ðáñÜãñáöïò äåí óáò öáßíåôáé ðïëý îåêÜèáñç—ôï ôåëéêü áðïôÝëÝóìá åßíáé ôï ßäéï. ÁðëÜ åëÝãîôå ôïí <filename class="directory">CVSROOT</filename> öÜêåëï êáé áíôéãñÜøôå ôá &os; áñ÷åßá ðÜíù áðü ôá äéêÜ óáò ôïðéêÜ (áðåßñá÷ôá) áíôßãñáöá:</para> <screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-your-repository</replaceable> checkout CVSROOT</userinput> &prompt.user; <userinput>cd CVSROOT</userinput> &prompt.user; <userinput>cp ../CVSROOT-freebsd/* .</userinput> &prompt.user; <userinput>cvs add *</userinput></screen> <para>Óçìåéþóôå üôé ðéèáíüôáôá èá ðÜñåôå ìåñéêÝò ðñïåéäïðïéÞóåéò ó÷åôéêÜ ìå ôï üôé ìåñéêïß öÜêåëïé äåí èá áíôéãñáöïýí. Äåí ðåéñÜæåé. Äåí ôïõò ÷ñåéÜæåóôå áõôïýò ôïõò êáôáëüãïõò.</para> </sect2> <sect2> <title>Tá scripts</title> <para>Ôþñá Ý÷åôå óôïí öÜêåëï åñãáóßáò óáò Ýíá áêñéâÝò áíôßãñáöï ôùí scripts ðïõ ôï ßäéï ôï &os; project ÷ñçóéìïðïéåß óôï äéêü ôïõ repository. Ìéá ðåñßëçøç ôïõ óå ôé ÷ñçóéìåýåé ôï êÜèå áñ÷åßï ðåñéëáìâÜíåôáé ðáñáêÜôù.</para> <itemizedlist> <listitem> <para><filename>access</filename> - ôï áñ÷åßï áõôü äåí ÷ñçóéìïðïéåßôáé óôéò óõíçèéóìÝíåò åãêáôáóôÜóåéò ôïõ <application>CVS</application>. ×ñçóéìïðïéåßôáé ìüíï óôçí <link linkend="freebsdspecific">åéäéêÞ åãêáôÜóôáóç ôïõ &os; project</link>, ãéá íá åëÝã÷åôáé ç ðñüóâáóç óôï repository. Ìðïñåßôå íá áöáéñÝóåôå áõôü ôï áñ÷åßï áí äåí óáò åíäéáöÝñåé íá ÷ñçóéìïðïéÞóåôå êÜôé ôÝôïéï óôç äéêÞ óáò åãêáôÜóôáóç.</para> </listitem> <listitem> <para><filename>avail</filename> - ôï áñ÷åßï áõôü åëÝã÷åé ôçí ðñüóâáóç óôï repository áíÜ êáôÜëïãï Þ áñ÷åßï. ÌÝóá óå áõôü, ìðïñåßôå íá êáèïñßóåôå ïìÜäåò ÷ñçóôþí óôïõò ïðïßïõò èÝëåôå íá äþóåôå ðñüóâáóç óôï repository, üðùò åðßóçò êáé íá áðáãïñÝøåôå commits óå åðßðåäï êáôáëüãïõ Þ áñ÷åßïõ. Èá ðñÝðåé íá ôï ðñïóáñìüóåôå þóôå íá ðåñéÝ÷åé ôéò ïìÜäåò ÷ñçóôþí êáé ôïõò öáêÝëïõò ðïõ èá õðÜñ÷ïõí óôï äéêü óáò repository.</para> </listitem> <listitem> <para><filename>cfg.pm</filename> - ôï áñ÷åßï áõôü åñìçíåýåé ôéò ñõèìßóåéò óáò êáé ðáñÝ÷åé ôéò åî' ïñéóìïý ñõèìßóåéò. <emphasis>Äåí</emphasis> ðñÝðåé íá áëëÜîåôå áõôü ôï áñ÷åßï. Áíôßèåôá, èá ðñÝðåé íá ôïðïèåôÞóåôå ôéò äéêÝò óáò áëëáãÝò óôéò ñõèìßóåéò óôï áñ÷åßï <filename>cfg_local.pm</filename>.</para> </listitem> <listitem> <para><filename>cfg_local.pm</filename> - ôï áñ÷åßï áõôü ðåñéÝ÷åé üëåò ôéò ñõèìéæüìåíåò ðáñáìÝôñïõò ôïõ óõóôÞìáôïò. Èá ðñÝðåé íá êÜíåôå ïðïéåóäÞðïôå ñõèìßóåéò óáò åäþ, üðùò óå ðïéá äéåýèõíóç èá óôÝëíïíôáé ôá email áðü êÜèå commit, óå ðïéïõò hosts èá åðéôñÝðåôáé íá ãßíïíôáé commit, êëð. Ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå áõôü èá âñåßôå ðáñáêÜôù.</para> </listitem> <listitem> <para><filename>checkoutlist</filename> - ôï áñ÷åßï áõôü ðåñéëáìâÜíåé üëá ôá áñ÷åßá ðïõ âñßóêïíôáé êÜôù áðü ôïí Ýëåã÷ï ôïõ <application>CVS</application> óôïí êáôÜëïãï áõôü—üëá åêôüò áðü ôá ðñïêáèïñéóìÝíá áñ÷åßá ðïõ äçìéïõñãåß ç åíôïëÞ <command>cvs init</command>. Èá ðñÝðåé íá ôï áëëÜîåôå ãéá íá áöáéñÝóåôå ìåñéêÜ, ó÷åôéêÜ ìüíï ìå ôï &os;, áñ÷åßá.</para> </listitem> <listitem> <para><filename>commit_prep.pl</filename> - ôï script áõôü åêôåëåß äéÜöïñïõò åëÝã÷ïõò ðñéí áðü êÜèå commit, áíÜëïãá ìå ôéò ñõèìßóåéò ðïõ Ý÷åôå êÜíåé óôï áñ÷åßï <filename>cfg_local.pm</filename>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>commitcheck</filename> - ôï script áõôü êáëåßôáé áðåõèåßáò áðü ôï <application>CVS</application>. Ðñþôá åëÝã÷åé, ÷ñçóéìïðïéþíôáò ôï ðñüãñáììá <filename>cvs_acls.pl</filename>, áí ï committer Ý÷åé ðñüóâáóç óôï óõãêåêñéìÝíï ìÝñïò ôïõ äÝíôñïõ ôïõ êþäéêá, êáé ìåôÜ åêôåëåß ôï <filename>commit_prep.pl</filename> ðïõ åêôåëåß ôïõò äéÜöïñïõò pre-commit åëÝã÷ïõò. Áí äåí õðÜñîåé êÜðïéï ðñüâëçìá óôïõò åëÝã÷ïõò áõôïýò, ôüôå ôï <application>CVS</application> èá åðéôñÝøåé óôï commit íá óõíå÷ßóåé. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>commitinfo</filename> - ôï áñ÷åßï áõôü ÷ñçóéìïðïéåßôáé áðü ôï <application>CVS</application> óôï íá áðïöáóßóåé ðïéï script íá åêôåëÝóåé ðñéí áðü êÜèå commit—óôç äéêÞ ìáò ðåñßðôùóç áõôü ôï ñüëï êáëýðôåé ôï <filename>commitcheck</filename>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>config</filename> - ôï áñ÷åßï ñõèìßóåùí ãé' áõôü ôï repository. Èá ðñÝðåé íá êÜíåôå áëëáãÝò ó' áõôü ôï áñ÷åßï áíÜëïãá ìå ôéò áíÜãêåò óáò, áëëÜ ïé ðåñéóóüôåñïé äéá÷åéñéóôÝò ìðïñïýí íá áöÞóïõí ôéò åî' ïñéóìïý ñõèìßóåéò. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôéò äéÜöïñåò äõíáôüôçôåò åðéëïãþí ðïõ Ý÷åôå óôï áñ÷åßï áõôü ìðïñåßôå íá âñåßôå óôï åã÷åéñßäéï ôïõ <application>CVS</application>.</para> </listitem> <listitem> <para><filename>cvs_acls.pl</filename> - ôï script áõôü åëÝã÷åé ôçí ôáõôüôçôá ôïõ committer, êáé áí åðéôñÝðåôáé áõôüò íá Ý÷åé ðñüóâáóç óôï äÝíôñï ôïõ êþäéêá. Áõôü ãßíåôáé ìå âÜóç ôï áñ÷åßï <filename>avail</filename>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>cvsignore</filename> - óôï áñ÷åßï áõôü êáèïñßæïíôáé ôá áñ÷åßá ðïõ ôï <application>CVS</application> äåí èá ðñÝðåé íá åðéôñÝøåé ôï checkin ôïõò óôï repository. Ìðïñåßôå íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï áíÜëïãá ìå ôéò äéêÝò óáò ðñïôéìÞóåéò. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôï áñ÷åßï áõôü èá âñåßôå óôï åã÷åéñßäéï ôïõ <application>CVS</application>.</para> </listitem> <listitem> <para><filename>cvswrappers</filename> - ôï áñ÷åßï áõôü ÷ñçóéìïðïéåßôáé áðü ôï <application>CVS</application> ãéá ôçí åíåñãïðïßçóç Þ áðåíåñãïðïßçóç ôïõ keyword expansion, Þ ãéá ôï áí êÜðïéï áñ÷åßï èá ðñÝðåé íá áíôéìåôùðßæåôáé ùò binary. Ìðïñåßôå íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï áíÜëïãá ìå ôéò åðéèõìßåò óáò. Ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï áñ÷åßï áõôü ìðïñåßôå íá âñåßôå óôï åã÷åéñßäéï ôïõ <application>CVS</application>. Óçìåéþóôå ðùò ïé åðéëïãÝò <literal>-t</literal> êáé <literal>-f</literal> äå äïõëåýïõí óùóôÜ ãéá client/server ÷ñÞóç ôïõ <application>CVS</application>.</para> </listitem> <listitem> <para><filename>edithook</filename> - ôï áñ÷åßï áõôü äåí ÷ñçóéìïðïéåßôáé ðéá, áëëÜ åîáêïëïõèåß íá õðÜñ÷åé ãéá éóôïñéêïýò ëüãïõò. Ìðïñåßôå íá óâÞóåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>editinfo</filename> - ôï <application>CVS</application> ÷ñçóéìïðïéåß áõôü ôï áñ÷åßï ãéá ðáñÜêáìøç ôùí editors. Ôï &os; äåí ÷ñçóéìïðïéåß áõôÞ ôçí ëåéôïõñãéêüôçôá ãéáôß ç åñìçíåßá ôïõ log ìçíýìáôïò ãßíåôáé áðü ôá <filename>verifymsg</filename> êáé <filename>logcheck</filename> áñ÷åßá. ÅðéëÝîáìå íá ãßíåôáé Ýôóé áõôü åðåéäÞ ç ÷ñÞóç ôïõ <filename>editinfo</filename> Ý÷åé êÜðïéá ðñïâëÞìáôá ìå ôá commits áðü ìáêñéÜ êáé ìå ôá commits ðïõ ÷ñçóéìïðïéïýí ôéò åðéëïãÝò <literal>-F</literal> Þ <literal>-F</literal>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>exclude</filename> - ôï áñ÷åßï áõôü ðåñéÝ÷åé êáíïíéêÝò åêöñÜóåéò (regular expressions) ðïõ ÷ñçóéìïðïéïýíôáé áðü ôï ðñüãñáììá <filename>commit_prep.pl</filename> ãéá íá ðñïóäéïñéóôïýí ôá áñ÷åßá ðïõ äåí åßíáé áðáñáßôçôï íá ðåñéÝ÷ïõí åðéêåöáëßäá åðéóêüðçóçò (revision header). Óôçí åãêáôÜóôáóç ôïõ &os;, üëá ôá áñ÷åßá êÜôù áðü Ýëåã÷ï åðéóêüðçóçò (revision control) åßíáé áðáñáßôçôï íá ðåñéÝ÷ïõí ìéá åðéêåöáëßäá åðéóêüðçóçò (üðùò $FreeBSD$). ¼ëá ôá ïíüìáôá áñ÷åßùí ðïõ ôáéñéÜæïõí ìå ôïõëÜ÷éóôïí ìéá áðü ôéò ãñáììÝò ôïõ áñ÷åßïõ áõôïý åîáéñïýíôáé áðü ôïí óõãêåêñéìÝíï Ýëåã÷ï. Èá ðñÝðåé íá ðñïóèÝóåôå ôéò áíÜëïãåò êáíïíéêÝò åêöñÜóåéò óôï áñ÷åßï áõôü üôáí êÜíåôå checkin áñ÷åßá ðïõ äåí åßíáé áðáñáßôçôï íá ðåñéÝ÷ïõí åðéêåöáëßäá åðéóêüðçóçò. ÊáôÜ ôç äéÜñêåéá ôçò åãêáôÜóôáóçò ôùí íÝùí scripts åëÝã÷ïõ, ßóùò íá åßíáé êáëýôåñá íá åîáéñåßôáé ï êáôÜëïãïò <filename class="directory">CVSROOT/</filename> áðü ôïí Ýëåã÷ï ôùí headers.</para> </listitem> <listitem> <para><filename>log_accum.pl</filename> - ðñüêåéôáé ãéá Ýíá script ðïõ ðáßñíåé ôï log ìÞíõìá üðùò áõôü äßíåôáé áðü ôï <filename>logcheck</filename> script, êáé ôï ðñïóèÝôåé óôï ôÝëïò åíüò áñ÷åßïõ log óôï repository, Ýôóé þóôå íá õðÜñ÷ïõí áíôßãñáöá áóöáëåßáò áðü ôá commit logs. Åðßóçò, áíáëáìâÜíåé íá óôåßëåé Ýíá mail óôçí email äéåýèõíóç ðïõ Ý÷åôå äçëþóåé (óôï <filename>cfg_local.pm</filename>). ÓõíåñãÜæåôáé ìå ôï <application>CVS</application> ìÝóù ôïõ áñ÷åßïõ <filename>loginfo</filename>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå ôï áñ÷åßï áõôü.</para> </listitem> <listitem> <para><filename>logcheck</filename> - ôï áñ÷åßï áõôü åñìçíåýåé ôï commit log ìÞíõìá ðïõ ðáñÝ÷ïõí ïé committers, êáé ðñïóðáèåß êáôÜ êÜðïéï ôñüðï íá ôï êáíïíéêïðïéÞóåé. ÓõíåñãÜæåôáé ìå ôï <application>CVS</application> ìÝóù ôïõ áñ÷åßïõ <filename>verifymsg</filename>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå ôï áñ÷åßï áõôü.</para> <note> <para>Ôï script åîáñôÜôáé áðü ìéá ôïðéêÞ áëëáãÞ ôïõ &os; óôï <application>CVS</application>: Ç áëëáãÞ áõôÞ îáíáäéáâÜæåé ôï log ìÞíõìá áöïý áõôü Ý÷åé ôñïðïðïéçèåß áðü ôï script. Ç êáíïíéêÞ Ýêäïóç ôïõ <application>CVS</application> ðñïöáíþò äåí êÜíåé êÜôé ôÝôïéï, ïðüôå ôï <filename>logcheck</filename> äå ìðïñåß íá êÜíåé ìéêñïäéïñèþóåéò óôï log ìÞíõìá, áëëÜ ìðïñåß íá åëÝãîåé üôé ôï ìÞíõìá äåí Ý÷åé óõíôáêôéêÜ ëÜèç. Áðï ôçí Ýêäïóç 1.11.2 êáé ìåôÜ ôï ßäéï ôï <application>CVS</application> ìðïñåß íá ñõèìéóôåß íá Ý÷åé ôçí ßäéá óõìðåñéöïñÜ ìå áõôÞ ðïõ Ý÷åé ç Ýêäïóç ôïõ &os; ìå ôçí åðéëïãÞ <literal>RereadLogAfterVerify=always</literal> óôï áñ÷åßï <filename>config</filename>.</para> </note> </listitem> <listitem> <para><filename>loginfo</filename> - ôï áñ÷åßï áõôü ÷ñçóéìïðïéåßôáé áðü ôï <application>CVS</application> ãéá ôïí Ýëåã÷ï ôïõ ðïõ èá óôÝëíïíôáé ïé ðëçñïöïñßåò ôùí logs. Åäþ åíåñãïðïéåßôáé ôï ðñüãñáììá <filename>log_accum.pl</filename>. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>modules</filename> - ôï áñ÷åßï áõôü äéáôçñåß ôçí ðáñáäïóéáêÞ ôïõ óçìáóßá óôï <application>CVS</application>. Èá ðñÝðåé íá áöáéñÝóåôå ôá &os; modules áðü ôçí êáíïíéêÞ Ýêäïóç. Ìðïñåßôå íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï áíÜëïãá ìå ôéò åðéèõìßåò óáò. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôï áñ÷åßï áõôü åßíáé äéáèÝóéìåò óôï åã÷åéñßäéï ôïõ <application>CVS</application>.</para> </listitem> <listitem> <para><filename>notify</filename> - ôï áñ÷åßï áõôü ÷ñçóéìïðïéåßôáé áðü ôï <application>CVS</application> óôçí ðåñßðôùóç ðïõ êÜðïéïò ôïðïèåôÞóåé åíôïëÞ ðáñáêïëïýèçóçò óå êÜðïéï áñ÷åßï. Äåí ÷ñçóéìïðïéåßôáé óôï repository ôïõ &os;. Ìðïñåßôå íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï áíÜëïãá ìå ôéò åðéèõìßåò óáò. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôï áñ÷åßï áõôü åßíáé äéáèÝóéìåò óôï åã÷åéñßäéï ôïõ <application>CVS</application>.</para> </listitem> <listitem> <para><filename>options</filename> - ôï áñ÷åßï áõôü ó÷åôßæåôáé Üìåóá ìå ôçí &os; Ýêäïóç ôïõ <application>CVS</application> êáé õðïóôçñßæåôáé ìüíï áðü áõôÞ êáé ôçí Ýêäïóç ôïõ Debian. ÐåñéÝ÷åé ôï keyword ðïõ èá ãßíåôáé expand óôá revision headers. Èá ðñÝðåé íá ôñïðïðïéÞóåôå ôï áñ÷åßï áõôü ãéá íá åßíáé ßäéï ìå ôçí Ýêäïóç ðïõ Ý÷åôå åéóÜãåé óôï áñ÷åßï <filename>cfg_local.pm</filename> (áí áðïöáóßóåôå íá ÷ñçóéìïðïéÞóåôå áõôÞ ôçí ëåéôïõñãßá, ðïõ ðñïò ôï ðáñüí äïõëåýåé óùóôÜ ìüíï ìå ôçí Ýêäïóç ôïõ <application>CVS</application> ðïõ Ý÷åé ôï &os;).</para> </listitem> <listitem> <para><filename>rcsinfo</filename> - ôï áñ÷åßï áõôü áíôéóôïé÷åß öáêÝëïõò ôïõ repository óå áñ÷åßá template, üðùò ð.÷. ôï <filename>rcstemplate</filename>. Åî' ïñéóìïý, ôï &os; ÷ñçóéìïðïéåß Ýíá template ãéá ïëüêëçñï ôï repository. Ìðïñåßôå íá ðñïóèÝóåôå êáé Üëëá óôï áñ÷åßï áõôü áí ôï åðéèõìåßôå.</para> </listitem> <listitem> <para><filename>rcstemplate</filename> - ôï áñ÷åßï áõôü åßíáé ôï template ðïõ èá äïýí ôåëéêÜ ïé committers üôáí èá êÜíïõí checkin. Èá ðñÝðåé íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï þóôå íá ðåñéãñÜöåé ôéò äéÜöïñåò åðéðëÝïí ðáñáìÝôñïõò ðïõ ïñßóáôå óôï áñ÷åßï <filename>cfg_local.pm</filename>.</para> </listitem> <listitem> <para><filename>tagcheck</filename> - ôï áñ÷åßï áõôü åëÝã÷åé ôçí ðñüóâáóç óôçí ÷ñÞóç ôùí tags óôï repository. Ç êáíïíéêÞ Ýêäïóç ôïõ &os; äåí åðéôñÝðåé tags ìå ïíüìáôá üðùò RELENG*, ëüãù ôçò äéáäéêáóßáò äçìéïõñãßáò ôùí åðßóçìùí åêäüóåùí. Èá ðñÝðåé íá åðåîåñãáóôåßôå ôï áñ÷åßï áõôü áíÜëïãá ìå ôéò äéêÝò óáò áíÜëïãåò ðñïôéìÞóåéò.</para> </listitem> <listitem> <para><filename>taginfo</filename> - ôï áñ÷åßï áõôü áíôéóôïé÷åß ëåéôïõñãßåò ôùí tags óå öáêÝëïõò ôïõ repository ìå ðñïãñÜììáôá åëÝã÷ïõ, üðùò ôï <filename>tagcheck</filename>. Äåí èá ÷ñåéáóôåß íá ôñïðïðïéÞóåôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>unwrap</filename> - ôï áñ÷åßï áõôü ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá ôï áõôüìáôï <quote>unwrap</quote> ôùí binary áñ÷åßùí (äåßôå <filename>cvswrappers</filename>) óôï checkout. Äåí ÷ñçóéìïðïéåßôáé óôçí ôñÝ÷ïõóá åãêáôÜóôáóç ôïõ CVS ãéá ôï &os; åðåéäÞ äåí ëåéôïõñãåß óùóôÜ ìå ôá áðïìáêñõóìÝíá commits. Äåí èá ÷ñåéáóôåß íá ôñïðïðïéÞóåôå ôï áñ÷åßï áõôü.</para> </listitem> <listitem> <para><filename>verifymsg</filename> - ôï áñ÷åßï áõôü áíôéóôïé÷åß õðïêáôáëüãïõò ôïõ repository óå ðñïãñÜììáôá åðåîåñãáóßáò ôùí ìçíõìÜôùí ôïõ log, üðùò ð.÷. ôï <filename>logcheck</filename>. Äåí èá ÷ñåéáóôåß íá ôñïðïðïéÞóåôå ôï áñ÷åßï áõôü.</para> </listitem> <listitem> <para><filename>wrap</filename> - ôï script áõôü ÷ñåéÜæåôáé ãéá ôï áõôüìáôï <quote>wrap</quote> ôùí binary áñ÷åßùí (äåßôå <filename>cvswrappers</filename>) êáôÜ ôï checkin. Äåí ÷ñçóéìïðïéåßôáé óôçí ôñÝ÷ïõóá åãêáôÜóôáóç ôïõ &os; åðåéäÞ äåí ëåéôïõñãåß óùóôÜ ìå ôá áðïìáêñõóìÝíá commits. Äåí èá ÷ñåéáóôåß íá ôñïðïðïéÞóåôå ôï áñ÷åßï áõôü.</para> </listitem> </itemizedlist> </sect2> <sect2> <title>Ôñïðïðïéþíôáò ôá scripts</title> <para>Ôï åðüìåíï âÞìá åßíáé ç áëëáãÞ ôùí scripts þóôå íá ìðïñïýí íá ÷ñçóéìïðïéçèïýí óôï äéêü óáò ðåñéâÜëëïí. Èá ðñÝðåé íá åëÝãîåôå üëá ôá áñ÷åßá ìÝóá óôïí öÜêåëï êáé íá êÜíåôå ôéò ôñïðïðïéÞóåéò óáò. Ðéï óõãêåêñéìÝíá, èá èÝëåôå êáôÜ ðÜóá ðéèáíüôçôá íá ôñïðïðïéÞóåôå ôá ðáñáêÜôù áñ÷åßá:</para> <procedure> <step> <para>Áí äåí èÝëåôå íá ÷ñçóéìïðïéÞóåôå ôéò ëåéôïõñãßåò ôùí scripts ïé ïðïßåò ÷ñçóéìïðïéïýíôáé <link linkend="freebsdspecific">áðïêëåéóôéêÜ áðü ôï &os;</link>, ìðïñåßôå íá áöáéñÝóåôå ìå áóöÜëåéá ôï áñ÷åßï <filename>access</filename>: <screen>&prompt.user; <userinput>cvs rm -f access</userinput></screen></para> </step> <step> <para>Äéïñèþóôå ôï áñ÷åßï <filename>avail</filename> þóôå íá ðåñéÝ÷åé ôïõò äéÜöïñïõò öáêÝëïõò ôïõ repository óôïõò ïðïßïõò èÝëåôå íá åëÝãîåôå ôçí ðñüóâáóç. Óéãïõñåõôåßôå üôé èá äéáôçñÞóåôå áíÝðáöç ôçí <literal>avail||CVSROOT</literal> ãñáììÞ, åéäÜëëùò èá áðïêëåßóåôå áêüìá êáé ôïí åáõôü óáò ìå ôï åðüìåíï âçìá.</para> <para>Åêôüò áõôïý óôï óõãêåêñéìÝíï áñ÷åßï ìðïñåßôå íá åéóÜãåôå êáé ïìÜäåò áðü committers. Åî' ïñéóìïý, ôï &os; ÷ñçóéìïðïéåß ôï áñ÷åßï <filename>access</filename> ãéá ôçí ôïðïèÝôçóç üëùí ôùí committers, áëëÜ ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå üðïéï Üëëï åðéèõìåßôå. Ìðïñåßôå åðßóçò íá ðñïóèÝóåôå êáé ïìÜäåò áí ôï åðéèõìåßôå (ç óýíôáîç êáèïñßæåôáé óôçí êïñõöÞ ôïõ áñ÷åßïõ <filename>cvs_acls.pl</filename>).</para> </step> <step> <para>Äéïñèþóôå ôï áñ÷åßï <filename>cfg_local.pm</filename> þóôå íá ðåñéÝ÷åé ôéò åðéëïãÝò ðïõ åðéèõìåßôå. Ðéï óõãêåêñéìÝíá, èá ðñÝðåé íá åëÝãîåôå ôéò ðáñáêÜôù ôñïðïðïéÞóéìåò åðéëïãÝò:</para> <itemizedlist> <listitem> <para><literal>%TEMPLATE_HEADERS</literal> - ÁõôÝò ïé åðéêåöáëßäåò åðåîåñãÜæïíôáé áðü ôá log scripts, êáé ôïðïèåôïýíôáé êÜôù áðü ôï mail ôïõ êÜèå commit áí õðÜñ÷ïõí êáé äåí åßíáé êåíÝò óôï ìÞíõìá ôïõ commit. ÃåíéêÜ, ìðïñåßôå íá áöáéñÝóåôå ôéò êáôá÷ùñÞóåéò <literal>PR</literal> êáé <literal>MFC after</literal>—áöïý áõôÝò ó÷åôßæïíôáé ìå ôï bug tracking óýóôçìá ôïõ &os; êáé ôïí ôñüðï ðïõ äéá÷åéñßæåôáé ôï &os; ôá branches ôïõ repository ôïõ. Êáé öõóéêÜ ìðïñåßôå íá ðñïóèÝóåôå ôéò äéêÝò óáò.</para> </listitem> <listitem> <para><literal>$MAIL_BRANCH_HDR</literal> - Áí èÝëåôå íá ðñïóôßèåôáé áõôüìáôá ìéá åðéêåöáëßäá óå êÜèå commit ìÞíõìá mail, ç ïðïßá èá ðåñéãñÜöåé ôï branch óôï ïðïßï Ýãéíå ôï óõãêåêñéìÝíï commit, ïñßóôå ôçí ôéìÞ áõôÞ íá ôáéñéÜæåé ìå ôçí äéêÞ óáò åãêáôÜóôáóç. ÁöÞóôå ôçí êåíÞ áí äåí åðéèõìåßôå íá ðñïóôßèåôáé áõôüìáôá ìéá ôÝôïéá åðéêåöáëßäá.</para> </listitem> <listitem> <para><literal>@COMMIT_HOSTS</literal> - Ïñßóôå ôçí ôéìÞ áõôÞ óå ìéá ëßóôá áðü óõóôÞìáôá (hosts), áðü ôá ïðïßá åðéôñÝðåôáé íá ãßíïíôáé commits.</para> </listitem> <listitem> <para><literal>$MAILADDRS</literal> - Ñõèìßóôå áõôÞ ôçí ôéìÞ óôï email ôïõ äéá÷åéñéóôÞ Þ óå ìéá äéåýèõíóç ëßóôáò óôçí ïðïßá èÝëåôå íá ðçãáßíïõí ôá mail ôùí commit ìçíõìÜôùí.</para> </listitem> <listitem> <para><literal>@LOG_FILE_MAP</literal> - ÁëëÜîôå áõôü ôï array üðùò åðéèõìåßôå. ÊÜèå regexp áíôéóôïé÷åß óôï óõãêåêñéìÝíï öÜêåëï óôïí ïðïßï ãßíåôáé ôï commit, êáé ôï log ìÞíõìá ôïõ commit áðïèçêåýåôáé êÜôù áðü ôïí êáôÜëïãï <filename class="directory">CVSROOT</filename>, óôïí õðïêáôÜëïãï <filename class="directory">commitlogs</filename>, óôï áñ÷åßï ðïõ áíáöÝñåôáé óôçí áíôßóôïé÷ç åããñáöÞ ôïõ ðßíáêá <literal>@LOG_FILE_MAP</literal>.</para> </listitem> <listitem> <para><literal>$COMMITCHECK_EXTRA</literal> - Áí äåí èÝëåôå íá ÷ñçóéìïðïéÞóåôå <link linkend="freebsdspecific">ôïõò ßäéïõò åëÝã÷ïõò ðñüóâáóçò ìå ôï &os;</link>, èá ðñÝðåé íá áöáéñÝóåôå ôïí ïñéóìü ôçò ôéìÞò <literal>$COMMITCHECK_EXTRA</literal> áðü ôï áñ÷åßï áõôü.</para> </listitem> </itemizedlist> <note> <para>Ç áëëáãÞ ôçò ðáñáìÝôñïõ <literal>$IDHEADER</literal> åßíáé åããõçìÝíï üôé èá äïõëÝøåé ìüíï óå ðëáôöüñìåò &os;. ÅîáñôÜôáé áðü åéäéêÝò ìåôáôñïðÝò ôïõ &os; óôï <application>CVS</application>.</para> </note> <para>Ìðïñåßôå íá åëÝãîåôå ôï áñ÷åßï <filename>cfg.pm</filename> ãéá íá äåßôå ðïéÝò Üëëåò ðáñáìÝôñïõò ìðïñåßôå íá áëëÜîåôå, áëëÜ ïé ðáñáðÜíù åßíáé ïé ðéï óõíÞèåéò åðéëïãÝò.</para> </step> <step> <para>Åðåîåñãáóôåßôå ôï áñ÷åßï <filename>exclude</filename> ãéá íá áöáéñÝóåôå ôéò åéäéêÝò êáôá÷ùñÞóåéò ôïõ &os; (üðùò üëåò ôéò ãñáììÝò ðïõ îåêéíïýí ìå <literal>^ports/</literal> êôë.). Åêôüò áõôïý, âÜëôå óå ó÷üëéá ôéò ãñáììÝò ðïõ îåêéíïýí ìå <literal>^CVSROOT/</literal>, êáé ðñïóèÝóôå ìéá ãñáììÞ ðïõ èá ðåñéÝ÷åé ìüíï ôï <literal>^CVSROOT/</literal>. Áöïý åãêáôáóôáèåß ï wrapper, ìðïñåßôå íá ðñïóèÝóåôå ôï äéêü óáò header óôá áñ÷åßá ðïõ âñßóêïíôáé ìÝóá óôïí êáôÜëïãï <filename class="directory">CVSROOT</filename> êáé íá åðáíáöÝñåôå ôéò ãñáììÝò áõôÝò, áëëÜ ðñïò ôï ðáñüí áðëÜ èá óáò äçìéïõñãÞóïõí ðñïâëÞìáôá üôáí èá ðñïóðáèÞóåôå íá êÜíåôå commit áñãüôåñá.</para> </step> <step> <para>Áíïßîôå ôï áñ÷åßï <filename>modules</filename>, êáé áöáéñÝóôå üëåò ôéò ó÷åôéêÝò ìå ôï &os; êáôá÷ùñÞóåéò. ÐñïóèÝóôå ôá äéêÜ óáò modules áí ôï åðéèõìåßôå.</para> </step> <step> <note> <para>Ôï âÞìá áõôü åßíáé áðáñáßôçôï ìüíï áí Ý÷åôå ïñßóåé êÜðïéá ôéìÞ óôçí ðáñÜìåôñï <literal>$IDHEADER</literal> ôïõ áñ÷åßïõ <filename>cfg_local.pm</filename> (ç ïðïßá äïõëåýåé ìüíï åöüóïí ÷ñçóéìïðïéåßôå ôçí ôñïðïðïéçìÝíç Ýêäïóç ôïõ <application>CVS</application> ðïõ Ý÷åé ôï &os;).</para> </note> <para>Äéïñèþóôå ôï áñ÷åßï <filename>options</filename> þóôå íá ôáéñéÜæåé ìå ôï tag ðïõ ïñßóáôå óôï áñ÷åßï <filename>cfg_local.pm</filename>. Ìéá áíáæÞôçóç êáé áíôéêáôÜóôáóç ôïõ <literal>FreeBSD</literal> óå üëï ôï áñ÷åßï åßíáé áñêåôÞ.</para> </step> <step> <para>Åðåîåñãáóôåßôå ôï áñ÷åßï <filename>rcstemplate</filename> þóôå íá ðåñéÝ÷åé ôá ßäéá keywords ìå áõôÜ ðïõ Ý÷åôå ïñßóåé óôï <filename>cfg_local.pm</filename>.</para> </step> <step> <para>ÐñïáéñåôéêÜ, áöáéñÝóôå ôïõò åëÝã÷ïõò ôïõ &os; áðü ôï áñ÷åßï <filename>tagcheck</filename>. Ìðïñåßôå áðëÜ íá ðñïóèÝóåôå <literal>exit 0</literal> óôçí áñ÷Þ ôïõ áñ÷åßïõ ãéá íá áðåíåñãïðïéÞóåôå üëïõò ôïõò åëÝã÷ïõò óôï tagging.</para> </step> <step> <para>Ôï ôåëåõôáßï ðñÜãìá ðïõ ðñÝðåé íá ãßíåé, åßíáé íá óéãïõñåõôåßôå üôé ôá commitlogs ìðïñïýí íá áðïèçêåõôïýí. Ôá <application>CVS</application> scripts ôïõ &os; áðïèçêåýïõí áõôÜ ôá logs óôïí õðïêáôÜëïãï <filename class="directory">commitlogs</filename> ôïõ êáôáëüãïõ <filename class="directory">CVSROOT</filename>. Áõôüò ï öÜêåëïò ðñÝðåé íá äçìéïõñãçèåß, ïðüôå êÜíôå ôá áêüëïõèá:</para> <screen>&prompt.user; <userinput>mkdir commitlogs</userinput> &prompt.user; <userinput>cvs add commitlogs</userinput></screen> </step> </procedure> <para>Ôþñá, áöïý åëÝãîåôå ôá ðÜíôá ðñïóåêôéêÜ, èá ðñÝðåé íá êÜíåôå commit ôéò áëëáãÝò óáò. Öñïíôßóôå íá åßóôå óßãïõñïé üôé Ý÷åôå äþóåé óôïí åáõôü óáò ðñüóâáóç óôïí öÜêåëï <filename class="directory">CVSROOT</filename> ìÝóá áðü ôï áñ÷åßï <filename>avail</filename> ðñéí êÜíåôå ïôéäÞðïôå, åöüóïí óôçí áíôßèåôç ðåñßðôùóç èá êëåéäþóåôå ôïí åáõôü óáò Ýîù. Ïðüôå, öñïíôßóôå ôá ðÜíôá íá åßíáé üðùò åðéèõìåßôå, êáé ìüíï ôüôå äþóôå ôá áêüëïõèá: <screen>&prompt.user; <userinput>cvs commit -m '<replaceable>- Initial FreeBSD scripts commit</replaceable>'</userinput></screen></para> </sect2> <sect2> <title>ÄïêéìÜæïíôáò ôçí ÅãêáôÜóôáóç</title> <para>Åßóôå Ýôïéìïé ãéá ôçí ðñþôç óáò äïêéìÞ: ¸íá forced commit óôï áñ÷åßï <filename>avail</filename>, ãéá íá óéãïõñåõôåßôå üôé üëá äïõëåýïõí üðùò èá Ýðñåðå.</para> <screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' avail</userinput></screen> <para>¶í üëá ðÜíå êáëÜ, óõã÷áñçôÞñéá! ¸÷åôå êáôáöÝñåé íá óôÞóåôå ìéá ðëÞñùò ëåéôïõñãéêÞ åãêáôÜóôáóç ôùí &os; scripts ãéá ôï repository óáò. Óôçí ðåñßðôùóç ðïõ ôï <application>CVS</application> åîáêïëïõèåß íá ðáñáðïíéÝôáé ãéá êÜôé, åðéóôñÝøôå óôéò ðñïçãïýìåíåò åíüôçôåò êáé åëÝãîôå îáíÜ üôé Ý÷åôå åêôåëÝóåé óùóôÜ üëá ôá ðñïçãïýìåíá âÞìáôá.</para> </sect2> </sect1> <sect1 id="freebsdspecific"> <title>ÅéäéêÞ ÅãêáôÜóôáóç ôïõ &os; Project</title> <para>Ôï ßäéï ôï &os; project ÷ñçóéìïðïéåß ìéá åëáöñþò äéáöïñåôéêÞ åãêáôÜóôáóç, ç ïðïßá ÷ñçóéìïðïéåß åðßóçò áñ÷åßá áðü ôïí õðïöÜêåëï <filename class="directory">freebsd</filename> ôïõ <filename class="directory">CVSROOT</filename> ðïõ ÷ñçóéìïðïéåßôáé óôï &os;. Ôï project ÷ñåéÜæåôáé êÜôé ôÝôïéï ëüãù ôïõ ìåãÜëïõ áñéèìïý ôùí committers, ðïõ äéáöïñåôéêÜ èá Ýðñåðå íá áíÞêïõí üëïé óôï ßäéï group. ¸ôóé, äçìéïõñãÞèçêå Ýíáò áðëüò wrapper ï ïðïßïò áöïý ðñþôá åîáóöáëßæåé ôá óùóôÜ äéáðéóôåõôÞñéá ôùí committers, áëëÜæåé ìåôÝðåéôá ôï group id óå áõôü ôïõ repository.</para> <para>Áí êáé ôï äéêü óáò repository ÷ñåéÜæåôáé êÜôé áíÜëïãï, ôá âÞìáôá ðïõ èá ðñÝðåé íá áêïëïõèÞóåôå áêïëïõèïýí ðáñáêÜôù. ÁëëÜ ðñþôá áò êÜíïõìå ìéá óýíôïìç åðéóêüðçóç ôùí ó÷åôéêþí áñ÷åßùí.</para> <sect2> <title>Áñ÷åßá ðïõ ÷ñçóéìïðïéïýíôáé óôçí åéäéêÞ åãêáôÜóôáóç ôïõ &os;</title> <para> <itemizedlist> <listitem> <para><filename>access</filename> - ôï áñ÷åßï áõôü åëÝã÷åé ôéò ðëçñïöïñßåò ãéá ôá äéêáéþìáôá ðñüóâáóçò. Èá ðñÝðåé íá ôï åðåîåñãáóôåßôå áíÜëïãá Ýôóé þóôå íá ðåñéëáìâÜíåé üëá ôá ìÝëç ôïõ project óáò.</para> </listitem> <listitem> <para><filename>freebsd/commitmail.pl</filename> - ôï áñ÷åßï áõôü äåí ÷ñçóéìïðïéåßôáé ðéá, áëëÜ ðáñáìÝíåé ãéá éóôïñéêïýò ëüãïõò. Äåí èá ÷ñåéáóôåß íá åðåîåñãáóôåßôå áõôü ôï áñ÷åßï.</para> </listitem> <listitem> <para><filename>freebsd/cvswrap.c</filename> - ðñüêåéôáé ãéá ôïí ðçãáßï êþäéêá ôïõ CVS wrapper ðïõ èá ðñÝðåé íá åãêáôáóôÞóåôå ãéá íá ìðïñÝóïõí üëïé ïé Ýëåã÷ïé ðñüóâáóçò ôåëéêÜ íá äïõëÝøïõí. Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôç äéáäéêáóßá áõôÞ èá âñåßôå ðáñáêÜôù. Èá ðñÝðåé íá äéïñèþóåôå ôá paths óôéò <literal>ACCESS</literal> êáé <literal>REALCVS</literal> ìáêñïåíôïëÝò þóôå íá ôáéñéÜæïõí ìå ôç äéêÞ óáò åãêáôÜóôáóç.</para> </listitem> <listitem> <para><filename>freebsd/mailsend.c</filename> - ôï áñ÷åßï áõôü ÷ñåéÜæåôáé ãéá ôçí ó÷åôéêÞ ìå ôéò ëßóôåò ôá÷õäñïìåßïõ åãêáôÜóôáóç ôïõ &os;. Äåí èá ÷ñåéáóôåß íá ðåéñÜîåôå ôï áñ÷åßï áõôü.</para> </listitem> </itemizedlist> </para> </sect2> <sect2> <title>Ç äéáäéêáóßá</title> <procedure> <step> <para>Äéïñèþóôå ôï áñ÷åßï <filename>access</filename> þóôå íá ðåñéÝ÷åé ìüíï ôï äéêü óáò username.</para> </step> <step> <para>Äéïñèþóôå ôï áñ÷åßï <filename>cvswrap.c</filename> þóôå íá ðåñéÝ÷åé ôï óùóôü path ãéá ôç äéêÞ óáò åãêáôÜóôáóç. Áõôü ïñßæåôáé ùò ìéá ìáêñïåíôïëÞ ðïõ ïíïìÜæåôáé <literal>ACCESS</literal>. Èá ðñÝðåé åðßóçò íá áëëÜîåôå êáé ôï üíïìá áñ÷åßïõ ôïõ ðñáãìáôéêïý <command>cvs</command> binary áí áõôÞ ðïõ õðÜñ÷åé äåí åßíáé ç óùóôÞ ãéá ôç äéêÞ óáò ðåñßðôùóç. Ôï êáíïíéêü <filename>cvswrap.c</filename> èåùñåß ðùò èá áíôéêáôáóôÞóåôå ôçí åíôïëÞ cvs óå åðßðåäï óõóôÞìáôïò ìå ôï cvwrap, êé ç áñ÷éêÞ åíôïëÞ cvs èá ìåôáöåñèåß óôï áñ÷åßï <filename>/usr/bin/ncvs</filename>.</para> <para>Ôï äéêü ìïõ áíôßôõðï ôïõ áñ÷åßïõ <filename>cvswrap.c</filename> Ý÷åé ôá áêüëïõèá:</para> <programlisting>#define ACCESS "/local/cvsroot/CVSROOT/access" #define REALCVS "/usr/bin/ncvs"</programlisting> </step> <step> <para>Ôï åðüìåíï âÞìá åßíáé íá åãêáôáóôÞóïõìå ôïí wrapper ãéá íá åßìáóôå óßãïõñïé üôé èá ãßíåôáé ç ìåôáôñïðÞ óôï óùóôü group üôáí ãßíåôáé commit. Ï ðçãáßïò êþäéêáò ãé' áõôü âñßóêåôáé óôï áñ÷åßï <filename>cvswrap.c</filename> óôïí êáôÜëïãï <filename>CVSROOT</filename>.</para> <para>Ìåôáãëùôôßóôå ôïí êþäéêá ðïõ Ý÷åôå Þäç äéïñèþóåé þóôå íá ðåñéÝ÷åé ôá óùóôÜ paths:</para> <screen>&prompt.user; <userinput>cc -o cvs cvswrap.c</userinput></screen> <para>Óôç óõíÝ÷åéá åãêáôáóôÞóôå ôï íÝï cvs åêôåëÝóéìï áêïëïõèþíôáò ôá áêüëïõèá âÞìáôá (èá ðñÝðåé íá åßóôå root ãéá ôï âÞìá áõôü):</para> <screen>&prompt.root; <userinput>mv /usr/bin/cvs /usr/bin/ncvs</userinput> &prompt.root; <userinput>mv cvs /usr/bin/cvs</userinput> &prompt.root; <userinput>chown root:<replaceable>ncvs</replaceable> /usr/bin/cvs /usr/bin/ncvs</userinput> &prompt.root; <userinput>chmod o-rx /usr/bin/ncvs</userinput> &prompt.root; <userinput>chmod u-w,g+s /usr/bin/cvs</userinput></screen> <para>Áõôü åãêáèéóôÜ ôïí wrapper óáí ôçí åî' ïñéóìïý <command>cvs</command> åíôïëÞ, êÜíïíôáò Ýôóé óßãïõñï üôé ïðïéïóäÞðïôå èåëÞóåé íá ÷ñçóéìïðïéÞóåé ôï repository, èá ðñÝðåé íá Ý÷åé ôá êáôÜëëçëá åðßðåäá ðñüóâáóçò.</para> </step> <step> <para>Ìðïñåßôå ôþñá íá áöáéñÝóåôå üëïõò ôïõò ÷ñÞóôåò áðü ôï repository group óáò. ¼ëïé ïé Ýëåã÷ïé ðñüóâáóçò èá ãßíïíôáé áðü ôïí wrapper, êáé ï ßäéïò ï wrapper èá èÝôåé ôï áíÜëïãï group ìå ôï ïðïßï èá ãßíåôáé êáé ç ôåëéêÞ ðñüóâáóç.</para> </step> </procedure> </sect2> <sect2> <title>ÅëÝã÷ïíôáò ôçí åãêáôÜóôáóç</title> <para>Ï wrapper ðñÝðåé ðëÝïí íá åßíáé Ýôïéìïò. Ìðïñåßôå öõóéêÜ íá ôï äïêéìÜóåôå êÜíïíôáò Ýíá forced commit óôï áñ÷åßï <filename>access</filename>:</para> <screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' access</userinput></screen> <para>ÎáíÜ, áí áõôü áðïôý÷åé, åëÝãîôå üôé üëá ôá ðáñáðÜíù âÞìáôá Ý÷ïõí åêôåëåóôåß óùóôÜ.</para> </sect2> </sect1> </article>