<!--
      Setting up a CVS repository - the FreeBSD way
      Greek Translation

      Original revision: 1.x
-->

<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
]>

<article lang="el">
  <articleinfo>
    <title>Εγκατάσταση ενός CVS Repository - ο τρόπος του FreeBSD</title>

    <author>
      <firstname>Stijn</firstname>
      <surname>Hoop</surname>
      <affiliation>
	<address><email>stijn@win.tue.nl</email></address>
      </affiliation>
    </author>

    <copyright>
      <year>2001</year>
      <holder role="mailto:stijn@win.tue.nl">Stijn Hoop</holder>
    </copyright>

    <pubdate role="rcs">$Date: 2002-04-06 18:24:16 $</pubdate>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <abstract>
      <para>Το άρθρο αυτό περιγράφει τα βήματα που έκανα για να εγκαταστήσω
	ένα CVS repository που χρησιμοποιεί τις ίδιες δέσμες εντολών (scripts)
	με αυτές που χρησιμοποιεί και το FreeBSD project στη δική του
	εγκατάσταση. Η συγκεκριμένη προσέγγιση έχει αρκετά πλεονεκτήματα
	έναντι μιας τυποποιημένης CVS εγκατάστασης, όπως ένα περισσότερο
	κατευθυνόμενo έλεγχο πρόσβασης στο δέντρο του κώδικα καθώς και
	αυτόματη παραγωγή ευανάγνωστων email με λεπτομέρειες για κάθε
	commit.</para>
    </abstract>
  </articleinfo>

  <sect1>
    <title>Εισαγωγή</title>

    <para>Τα περισσότερα έργα ανοιχτού κώδικα χρησιμοποιούν το
      <application>CVS</application> σαν σύστημα ελέγχου του κώδικα τους.
      Παρόλο που το <application>CVS</application> είναι πολύ καλό σε αυτόν
      τον τομέα έχει κι αυτό το μερίδιο του σε ελαττώματα και αδυναμίες.  Μια
      από αυτές είναι το ότι η κοινή χρήση κώδικα μπορεί γρήγορα να οδηγήσει
      σε έναν εφιάλτη διαχείρισης, ειδικά αν υπάρχει η επιθυμία να
      προστατευτούν ορισμένα κομμάτια του δέντρου του κώδικα από κοινή
      πρόσβαση.</para>

    <para>Το FreeBSD είναι ένα από τα έργα που χρησιμοποιεί το
      <application>CVS</application>.  Διαθέτει επίσης μια μεγάλη βάση από
      developers από πολλές διαφορετικές χώρες.  Αναπτύχθηκαν λοιπόν μερικές
      δέσμες ενεργειών για να κάνουν την διαχείριση του repository πιο εύκολη.
      Πρόσφατα οι δέσμες αυτές αναθεωρήθηκαν και κανονικοποιήθηκαν από τον
      Joseph Karthauser για να είναι πιο εύκολο να χρησιμοποιηθούν και σε άλλα
      έργα. Το άρθρο αυτό περιγράφει μια μέθοδο χρήσης αυτών των νέων
      scripts.</para>

    <para>Για να μπορέσετε να χρησιμοποιήσετε με τον καλύτερο τρόπο τις
      πληροφορίες αυτού του άρθρου θα πρέπει να γνωρίζετε τις βασικές μεθόδους
      λειτουργίας του <application>CVS</application>.</para>
  </sect1>

  <sect1>
    <title>Πρώτη Εγκατάσταση</title>

    <warning>
      <para>Το καλύτερο θα ήταν να εκτελέσετε για πρώτη φορά αυτή τη
	διαδικασία χρησιμοποιώντας ένα κενό δοκιμαστικό repository, για να
	είναι βέβαιο ότι θα κατανοήσετε όλες τις συνέπειες.  Όπως πάντα,
	σιγουρευτείτε ότι έχετε πρόσφατα backups, τα οποία εγγυημένα
	δουλεύουν!</para>
    </warning>

    <sect2>
      <title>Αρχικοποίηση του repository</title>

      <para>Το πρώτο πράγμα που θα πρέπει να κάνετε όταν στήνετε ένα νέο
	repository είναι να πείτε στο <application>CVS</application> να το
	αρχικοποιήσει:

	<screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-repository</replaceable> init</userinput></screen>

	Αυτό λέει στο <application>CVS</application> να δημιουργήσει τον
	<filename>CVSROOT</filename> φάκελο διαχείρισης, όπου συμβαίνουν όλες
	οι παραμετροποιήσεις.</para>
    </sect2>

    <sect2>
      <title>Η ομάδα του repository</title>

      <para>Τώρα θα δημιουργήσουμε την ομάδα στην οποία θα ανήκει το
	repository.  Όλοι οι commiters θα πρέπει να ανήκουν στην ομαδα αυτή,
	ώστε να μπορούν να γράφουν στο repository.  Για το σκοπό αυτό θα
	χρησιμοποιήσουμε την ίδια ομάδα που χρησιμοποιεί γι' αυτό και το
	FreeBSD, την ομάδα <literal>ncvs</literal>.

	<screen>&prompt.root; <userinput>pw groupadd <replaceable>ncvs</replaceable></userinput></screen>

	Μετά, θα πρέπει να εκτελέσετε την &man.chown.8; στον φάκελο με
	παραμέτρους την ομάδα που μόλις προσθέσατε:

	<screen>&prompt.root; <userinput>chown -R :<replaceable>ncvs</replaceable> <replaceable>path-to-your-repository</replaceable></userinput></screen>

	Αυτό εξασφαλίζει ότι κανείς δεν θα μπορεί να γράψει στο repository αν
	δεν ανήκει στην σωστή ομάδα.</para>
    </sect2>

    <sect2>
      <title>Παίρνοντας τον πηγαίο κώδικα</title>

      <para>Τώρα θα πρέπει να αποκτήσετε τον <filename>CVSROOT</filename>
	κατάλογο από το repository του FreeBSD.  Αυτό γίνεται εύκολα, κάνοντας
	check out από ένα ανοιχτής πρόσβασης FreeBSD CVS mirror. Δείτε <ulink
	  url="../../../../en_US.ISO8859-1/books/handbook/anoncvs.html">το
	  σχετικό κεφάλαιο στο εγχειρίδιο</ulink> για περισσότερες
	πληροφορίες.  Ας υποθέσουμε ότι ο πηγαίος κώδικας θα αποθηκευτεί στον
	κατάλογο <filename>CVSROOT-freebsd</filename> που βρίσκεται μέσα στον
	τρέχοντα κατάλογο.</para>
    </sect2>

    <sect2>
      <title>Αντιγράφοντας τα scripts του FreeBSD</title>

      <para>Ύστερα, αντιγράφουμε τον πηγαίο κώδικα που βρίσκεται στον FreeBSD
	<filename>CVSROOT</filename> στο δικό μας repository.  Αν είστε
	συνηθισμένος με το <application>CVS</application>, ίσως να
	προσπαθήσετε να κάνετε import τις δέσμες εντολών, σε μια προσπάθεια να
	γίνει ύστερα ο συγχρονισμός με τις κατοπινές εκδόσεις ευκολότερος.
	Ωστόσο, αποδεινύεται ότι το <application>CVS</application> παρουσιάζει
	μια δυσλειτουργία στην περιοχή αυτή: Όταν εισάγετε πηγαίο κώδικα μέσα
	στο <filename>CVSROOT</filename> φάκελο, δεν θα ενημερωθούν τα
	απαραίτητα αρχεία διαχείρισης.  Για να μπορέσετε να το κάνετε να τα
	αναγνωρίσει, θα πρέπει να κάνετε checkin ξεχωριστά κάθε αρχείο αφού
	έχετε τελειώσει με την εισαγωγή, χάνοντας έτσι την αξία του
	<literal>cvs import</literal>.  Επομένως, η προτεινόμενη μέθοδος είναι
	απλά να αντιγράψετε τα scripts.</para>

      <para>Δεν είναι και τόσο σημαντικό το αν η παραπάνω παράγραφος δεν σας
	φαίνεται πολύ ξεκάθαρη&mdash;το τελικό αποτέλέσμα είναι το ίδιο.  Απλά
	ελέγξτε τον <filename>CVSROOT</filename> φάκελο και αντιγράψτε τα
	FreeBSD αρχεία πάνω από τα δικά σας τοπικά (απείραχτα) αντίγραφα:

	<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>
    </sect2>

    <sect2>
      <title>Tα scripts</title>

      <para>Τώρα έχετε στον φάκελο εργασίας σας ένα ακριβές αντίγραφο των
	scripts που το ίδιο το FreeBSD project χρησιμοποιεί στο δικό του
	repository. Μια περίληψη του σε τι χρησιμεύει το κάθε αρχείο
	περιλαμβάνεται παρακάτω.</para>

      <itemizedlist>
	<listitem>
	  <para><filename>access</filename> - το αρχείο αυτό δεν
	    χρησιμοποιείται στην εξ'ορισμού εγκατάσταση.  Χρησιμοποιείται μόνο
	    στην <link linkend="freebsdspecific">ειδική εγκατάσταση του
	    FreeBSD 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> στον κατάλογο αυτό.  Θα πρέπει να
	    το αλλάξετε για να αφαιρέσετε μερικά, σχετικά μόνο με το FreeBSD,
	    αρχεία.</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>.  Πρώτα ελέγχει αν
	    ο commiter έχει πρόσβαση στο συγκεκριμένο μέρος του δέντρου του
	    κώδικα, και μετά εκτελεί το <filename>commit_prep.pl</filename>
	    που εκτελεί τους διάφορους pre-commit ελέγχους.  Αν δεν υπάρξει
	    κάποιο πρόβλημα στους τελευταίους, τότε το
	    <application>CVS</application> θα επιτρέψει στο commit να
	    συνεχίσει.  Δεν θα χρειαστεί να πειράξετε αυτό το αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>commitinfo</filename> - το αρχείο αυτό
	    χρησιμοποιείται από το <application>CVS</application> στο να
	    αποφασίσει ποιο script να εκτελέσει πριν από κάθε commit.  Δεν θα
	    χρειαστεί να πειράξετε αυτό το αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>config</filename> - το αρχείο ρυθμίσεων γι' αυτό το
	    repository.  Θα πρέπει να κάνετε αλλαγές σ' αυτό το αρχείο ανάλογα
	    με τις ανάγκες σας, αλλά οι περισσότεροι διαχειριστές μπορούν να
	    αφήσουν τις εξ' ορισμού ρυθμίσεις.  Περισσότερες πληροφορίες για
	    τις δυνατές επιλογές που έχετε στο αρχείο αυτό μπορείτε να βρείτε
	    στο εγχειρίδιο του <application>CVS</application>.</para>
	</listitem>

	<listitem>
	  <para><filename>cvs_acls.pl</filename> - το script αυτό καθορίζει
	    την ταυτότητα του commiter, και το αν θα του επιτραπεί πρόσβαση
	    στο δέντρο του κώδικα. Αυτό γίνεται με βαση το
	    <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>.</para>
	</listitem>

	<listitem>
	  <para><filename>edithook</filename> - το αρχείο αυτό δεν
	    χρησιμοποιείται πια, αλλά εξακολουθεί να υπάρχει για ιστορικούς
	    λόγους.  Δεν θα χρειαστεί να επεξεργαστείτε καθόλου αυτό το
	    αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>editinfo</filename> - το
	    <application>CVS</application> χρησιμοποιεί αυτό το αρχείο για
	    παράκαμψη των editors.  Το FreeBSD δεν χρησιμοποιεί αυτή την
	    λειτουργικότητα γιατί η ερμηνεία του log μηνύματος γίνεται από τα
	    <filename>verifymsg</filename> και <filename>logcheck</filename>
	    αρχεία.  Δεν θα χρειαστεί να πειράξετε αυτό το αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>exclude</filename> - το αρχείο αυτό περιέχει regular
	    expressions που χρησιμοποιούν για να προσδιοριστούν τα αρχεία που
	    δεν μπορούν να περιέχουν επικεφαλίδα επισκόπησης (revision
	    header).  Στην FreeBSD εγκατάσταση, όλα τα αρχεία κάτω από έλεγχο
	    επισκόπησης (revision control) είναι απαραίτητο να περιέχουν ένα
	    revision header (όπως &dollar;FreeBSD&dollar;).  Όλα τα ονόματα
	    αρχείων που ταιριάζουν με τουλάχιστον μια από τις γραμμές του
	    αρχείου αυτού εξαιρούνται από τον συγκεκριμένο έλεγχο.  Θα πρέπει
	    να προσθέσετε τις ανάλογες regular expressions στο αρχείο αυτό
	    όταν κάνετε checkin αρχεία που δεν θα πρέπει να περιέχουν revision
	    header.  Για τον σκοπό της εγκατάστασης των scripts, ίσως να είναι
	    καλύτερα να εξαιρείται ο <filename>CVSROOT/</filename> κατάλογος
	    από τον έλεγχο των headers.</para>
	</listitem>

	<listitem>
	  <para><filename>log_accum.pl</filename> - πρόκειται για ένα script
	    που παίρνει το log μήνυμα όπως αυτό δίνεται από το
	    <filename>logcheck</filename> script, και το προσθέτει στο τέλος
	    ενός αρχείου log στο repository για σκοπούς δημιουργίας αντιγράφων
	    ασφαλείας.  Επίσης, αναλαμβάνει να στείλει ένα mail στην email
	    διεύθυνση που έχετε δηλώσει (στο
	    <filename>cfg_local.pm</filename>).  Δεν θα χρειαστεί να πειράξετε
	    το αρχείο αυτό.</para>
	</listitem>

	<listitem>
	  <para><filename>logcheck</filename> - το αρχείο αυτό ερμηνεύει το
	    commit log μήνυμα που παρέχουν οι commiters, και προσπαθεί κατά
	    κάποιο τρόπο να το κανονικοποιήσει.</para>

	  <note>
	    <para>Το script εξαρτάται από ένα τοπικό FreeBSD hack του
	      <application>CVS</application>: Η έκδοση αυτή επανατοποθετεί το
	      log μήνυμα αφού όμως αυτό έχει τροποποιηθεί από το script.  Η
	      κανονική έκδοση του <application>CVS</application> προφανώς δεν
	      κάνει κάτι τέτοιο, κάτι που θα έκανε το script αυτό
	      άχρηστο.</para>
	  </note>
	</listitem>

	<listitem>
	  <para><filename>loginfo</filename> - το αρχείο αυτό χρησιμοποιείται
	    από το <application>CVS</application> για τον έλεγχο του που θα
	    στέλνονται οι πληροφορίες των logs.  Δεν θα χρειαστεί να πειράξετε
	    αυτό το αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>modules</filename> - το αρχείο αυτό διατηρεί την
	    παραδοσιακή του σημασία στο <application>CVS</application>.  Θα
	    πρέπει να αφαιρέσετε τα FreeBSD modules από την κανονική έκδοση.
	    Μπορείτε να επεξεργαστείτε αυτό το αρχείο ανάλογα με τις επιθυμίες
	    σας.  Περισσότερες πληοροφορίες για το αρχείο αυτό είναι
	    διαθέσιμες στο εγχειρίδιο του
	    <application>CVS</application>.</para>
	</listitem>

	<listitem>
	  <para><filename>notify</filename> - το αρχείο αυτό χρησιμοποιείται
	    από το <application>CVS</application> στην περίπτωση που κάποιος
	    τοποθετήσει εντολή παρακολούθησης σε κάποιο αρχείο.  Δεν
	    χρησιμοποιείται στο repository του FreeBSD.  Μπορείτε να
	    επεξεργαστείτε αυτό το αρχείο ανάλογα με τις επιθυμίες σας.
	    Περισσότερες πληροφορίες για το αρχείο αυτό είναι διαθέσιμες στο
	    εγχειρίδιο του <application>CVS</application>.</para>
	</listitem>

	<listitem>
	  <para><filename>options</filename> - το αρχείο αυτό σχετίζεται άμεσα
	    με την FreeBSD έκδοση του <application>CVS</application>.  Περιέχει
	    το keyword που θα γίνεται expand στα revision headers.  Θα πρέπει
	    να τροποποιήσετε το αρχείο αυτό για να είναι ίδιο με την έκδοση
	    που έχετε εισάγει στο αρχείο <filename>cfg_local.pm</filename> (αν
	    αποφασίσετε να χρησιμοποιήσετε αυτή την λειτουργία, που προς το
	    παρόν δουλεύει σωστά με την έκδοση του
	    <application>CVS</application> που έχει το FreeBSD).</para>
	</listitem>

	<listitem>
	  <para><filename>rcsinfo</filename> - το αρχείο αυτό αντιστοιχεί
	    φακέλους του repository σε αρχεία template.  Εξ' ορισμού, το
	    FreeBSD χρησιμοποιεί ένα template για ολόκληρο το repository.
	    Μπορείτε να προσθέσετε και άλλα στο αρχείο αυτό αν το
	    επιθυμείτε.</para>
	</listitem>

	<listitem>
	  <para><filename>rcstemplate</filename> - το αρχείο αυτό είναι το
	    template που θα δούν τελικά οι commiters όταν θα κάνουν checkin.
	    Θα πρέπει να επεξεργαστείτε αυτό το αρχείο ώστε να περιγράφει τις
	    διάφορες επιπλέον παραμέτρους που ορίσατε στο αρχείο
	    <filename>cfg_local.pm</filename>.</para>
	</listitem>

	<listitem>
	  <para><filename>tagcheck</filename> - το αρχείο αυτό ελέγχει την
	    πρόσβαση στην χρήση των tags στο repository.  Η κανονική έκδοση του
	    FreeBSD δεν επιτρέπει tags με ονόματα όπως RELENG*, λόγω της
	    διαδικασίας δημιουργίας των διαφορετικών relases.  Θα πρέπει να
	    επεξεργαστείτε το αρχείο αυτό ανάλογα με τις δικές σας ανάλογες
	    προτιμήσεις.</para>
	</listitem>

	<listitem>
	  <para><filename>taginfo</filename> - το αρχείο αυτό αντιστοιχεί
	    λειτουργίες των tags σε αντίστοιχους φακέλους του repository για
	    την πρόσβαση στα scripts ελέγχου.  Δεν θα χρειαστεί να
	    τροποποιήσετε αυτό το αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>unwrap</filename> - το αρχείο αυτό χρειάζεται για το
	    αυτόματο <quote>unwrap</quote> των binary αρχείων (δείτε
	    <filename>cvswrappers</filename>) στο checkout.  Δεν
	    χρησιμοποιείται στην τρέχουσα FreeBSD εγκατάσταση.  Δεν θα
	    χρειαστεί να πειράξετε το αρχείο αυτό.</para>
	</listitem>

	<listitem>
	  <para><filename>verifymsg</filename> - το αρχείο αυτό αντιστοιχεί
	    υποκαταλόγους του repository σε προγράμματα επεξεργασίας των
	    μηνυμάτων του log.  Δεν θά 'πρεπε να πειράζετε αυτό το
	    αρχείο.</para>
	</listitem>

	<listitem>
	  <para><filename>wrap</filename> - το script αυτό χρειάζεται για το
	    αυτόματο <quote>wrap</quote> των binary αρχείων (δείτε
	    <filename>cvswrappers</filename>) κατά το checkin.  Δεν
	    χρησιμοποιείται στην τρέχουσα εγκατάσταση του FreeBSD.  Δεν θα
	    χρειαστεί να τροποποιήσετε το αρχείο αυτό.</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Τροποποιώντας τα scripts</title>

      <para>Το επόμενο βημα είναι η αλλαγή των scripts ώστε να μπορούν να
	χρησιμοποιηθούν στο δικό σας περιβάλλον.  Θα πρέπει να ελέγξετε όλα τα
	αρχεία μέσα στον φάκελο και να κάνετε τις τροποποιήσεις σας.  Πιο
	συγκεκριμένα, θα θέλετε κατά πάσα πιθανότητα να τροποποιήσετε τα
	παρακάτω αρχεία:</para>

      <procedure>
	<step>
	  <para>Αν δεν θέλετε να χρησιμοποιήσετε τις λειτουργίες των scripts
	    οι οποίες είναι <link linkend="freebsdspecific">αποκλειστικές του
	    FreeBSD</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>Εκτός αυτού στο συγκεκριμένο αρχείο μπορείτε να εισάγετε και
	    ομάδες απο commiters.  Εξ' ορισμού, το FreeBSD χρησιμοποιεί το
	    αρχείο <filename>access</filename> για την τοποθέτηση όλων των
	    commiters, αλλά μπορείτε να χρησιμοποιήσετε όποιο από επιθυμείτε.
	    Μπορείτε επίσης να προσθέσετε και ομάδες αν το επιθυμείτε (η
	    σύνταξη καθορίζεται στην κορυφή του αρχείου
	    <filename>cvs_acls.pl</filename>).</para>
	</step>

	<step>
	  <para>Διορθώστε το αρχείο <filename>cfg_local.pm</filename> ώστε να
	    περιέχει τις επιλογές που επιθυμείτε. Πιο συγκεκριμενα, θα πρέπει
	    να ελέγξετε τις παρακάτω τροποποιήσιμες επιλογές:

	    <itemizedlist>
	      <listitem>
		<para><literal>%TEMPLATE_HEADERS</literal> - Αυτές
		  επεξεργάζονται από τα log scripts, και τοποθετούνται κάτω
		  από το mail του κάθε commit αν υπάρχουν και δεν είναι κενές
		  στο μήνυμα του commit.  Μπορείτε πολύ πιθανόν να αφαιρέσετε
		  τις <literal>PR</literal> και <literal>MFC after</literal>
		  καταχωρήσεις.  Και φυσικά μπορείτε να προσθέσετε τις δικές
		  σας.</para>
	      </listitem>

	      <listitem>
		<para><literal>$MAIL_BRANCH_HDR</literal> - Αν θέλετε να
		  προσθέσετε μια επικεφαλίδα σε κάθε commit μήνυμα mail που θα
		  περιγράφει το branch στο οποίο έγινε το συγκεκριμένο commit,
		  ορίστε την τιμή αυτή να ταιριάζει με την δική σας
		  εγκατάσταση σας.  Ή αφήστε την κενή αν δεν επιθυμείτε μια
		  τέτοια επικεφαλίδά.</para>
	      </listitem>

	      <listitem>
		<para><literal>@COMMIT_HOSTS</literal> - Ορίστε την τιμή αυτή
		  σε μια λίστα από hosts από τους οποίους μπορούν να
		  επιτρέπονται commit.</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>commitlogs</filename> στο αρχείο που
		  αναφέρεται.</para>
	      </listitem>

	      <listitem>
		<para><literal>$COMMITCHECK_EXTRA</literal> - Αν δεν θέλετε να
		  χρησιμοποιήσετε <link linkend="freebsdspecific">τους
		  ίδιους ελέγχους πρόσβασης με το FreeBSD</link>, θα πρέπει να
		  αφαιρέσετε τον ορισμό της τιμής
		  <literal>$COMMITCHECK_EXTRA</literal> από το αρχείο
		  αυτό.</para>
	      </listitem>
	    </itemizedlist>

	  <note>
	    <para>Η αλλαγή της παραμέτρου <literal>$IDHEADER</literal> είναι
	      εγγυημένο ότι θα δουλέψει μόνο σε πλατφόρμες FreeBSD.  Εξαρτάται
	      από ειδικές μετατροπές του FreeBSD στο
	      <application>CVS</application>.</para>
	  </note>

	  Μπορείτε να ελέγξετε το αρχείο <filename>cfg.pm</filename> για να
	  δείτε ποιές άλλες παραμέτρους μπορείτε να αλλάξετε, αλλά οι παραπάνω
	  είναι οι πιο συνήθεις επιλογές.</para>
	</step>

	<step>
	  <para>Επεξεργαστείτε το αρχείο <filename>exclude</filename> για να
	    αφαιρέσετε τις ειδικές καταχωρήσεις του FreeBSD (όπως όλες τις
	    γραμμές που ξεκινούν με <literal>^ports/</literal> κτλ.).  Εκτός
	    αυτού, βάλτε σε σχόλια τις γραμμές που ξεκινούν με
	    <literal>^CVSROOT/</literal>, και προσθέστε μια γραμμή που θα
	    περιέχει μόνο το <literal>^CVSROOT/</literal>.  Αφού εγκατασταθεί
	    ο wrapper, μπορείτε να προσθέσετε το δικό σας header στα αρχεία
	    που βρίσκονται μέσα στον <filename>CVSROOT</filename> κατάλογο και
	    να επαναφέρετε τις γραμμές αυτές, αλλά προς το παρόν απλά θα σας
	    δημιουργήσουν προβλήματα όταν θα προσπαθήσετε να κάνετε commit
	    αργότερα.</para>
	</step>

	<step>
	  <para>Ανοίξτε το αρχείο <filename>modules</filename>, και αφαιρέστε
	    όλες τις σχετικές με το FreeBSD καταχωρήσεις.  Προσθέστε τα δικά
	    σας modules αν το επιθυμείτε.</para>
	</step>

	<step>
	  <note>
	    <para>Το βήμα αυτό είναι απαραίτητο μόνο αν έχετε ορίσει
	      κάποια τιμή στην παράμετρο <literal>$IDHEADER</literal> του
	      αρχείου <filename>cfg_local.pm</filename> (η οποία δουλεύει μόνο
	      εφόσον χρησιμοποιείτε την τροποποιημένη έκδοση του
	      <application>CVS</application> που έχει το FreeBSD).</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>Προαιρετικά αφαιρέστε τους ελέγχους του FreeBSD από το αρχείο
	    <filename>tagcheck</filename>.  Μπορείτε απλά να προσθέσετε
	    <literal>exit 0</literal> στην αρχή του αρχείου για να
	    απενεργοποιήσετε όλους τους ελέγχους στο tagging.</para>
	</step>

	<step>
	  <para>Το τελευταίο πράγμα που πρέπει να γίνει, είναι να
	    σιγουρευτείτε ότι τα commitlogs μπορούν να αποθηκευτούν.  Εξ'
	    ορισμού αποθηκεύονται στο repository, μέσα στον φάκελο
	    <filename>commitlogs</filename> που είναι υποφάκελος του
	    <filename>CVSROOT</filename>.  Αυτός ο φάκελος πρέπει να
	    δημιουργηθεί, οπότε κάντε τα ακόλουθα:

	    <screen>&prompt.user; <userinput>mkdir commitlogs</userinput>
&prompt.user; <userinput>cvs add commitlogs</userinput></screen></para>
	</step>
      </procedure>

      <para>Τώρα, αφού ελέγξετε τα πάντα προσεκτικά, θα πρέπει να κάνετε
	commit τις αλλαγές σας.  Φροντίστε να είστε σίγουροι ότι έχετε δώσει
	στον εαυτό σας πρόσβαση στον φάκελο <filename>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>, για να σιγουρευτείτε ότι όλα
	δουλεύουν όπως θα έπρεπε.

	<screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' avail</userinput></screen>

	Άν όλα πάνε καλά, συγχαρητήρια!  Έχετε καταφέρει να στήσετε μια πλήρως
	λειτουργική εγκατάσταση των FreeBSD scripts για το repository σας.
	Στην περίπτωση που το <application>CVS</application> εξακολουθεί να
	παραπονιέται για κάτι, επιστρέψτε στις προηγούμενες ενότητες και
	ελέγξτε ξανά ότι έχετε εκτελέσει σωστά όλα τα προηγούμενα
	βήματα.</para>
    </sect2>
  </sect1>

  <sect1 id="freebsdspecific">
    <title>Ειδική Εγκατάσταση του FreeBSD Project</title>

    <para>Το ίδιο το FreeBSD project χρησιμοποιεί μια ελαφρώς διαφορετική
      εγκατάσταση, που χρησιμοποιεί επίσης αρχεία από τον υποφάκελο
      <filename>freebsd</filename> του <filename>CVSROOT</filename> που
      χρησιμοποιείται στο FreeBSD. Το project χρειάζεται κάτι τέτοιο λόγω του
      μεγάλου αριθμού των commiters, που διαφορετικά θα έπρεπε να ανήκουν όλοι
      στο ίδιο group.  Έτσι, δημιουργήθηκε ένας απλός wrapper ο οποίος αφού
      πρώτα εξασφαλίζει τα σωστά διαπιστευτήρια των commiters, αλλάζει
      μετέπειτα το group id σε αυτό του repository.</para>

    <para>Αν και το δικό σας repository χρειάζεται κάτι ανάλογο, τα βήματα που
      θα πρέπει να ακολουθήσετε ακολουθούν παρακάτω.  Αλλά πρώτα ας κάνουμε
      μια σύντομη επισκόπηση των σχετικών αρχείων.</para>

    <sect2>
      <title>Αρχεία που χρησιμοποιούνται στην ειδική εγκατάσταση του
	FreeBSD</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> - το αρχείο αυτό
	      χρειάζεται για την σχετική με τις λίστες ταχυδρομείου
	      εγκατάσταση του FreeBSD.  Δεν θα χρειαστεί να πειράξετε το
	      αρχείο αυτό.</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 σε επίπεδο συστήματος, η οποία θα θα μεταφερθεί στο
	    αρχείο <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:

	    <screen>&prompt.user; <userinput>cc -o cvs cvswrap.c</userinput></screen>

	    Στη συνέχεια εγκαταστήστε τον με τα ακόλουθα (Θα πρέπει να είστε
	    root για το βήμα αυτό):

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

	    Αυτό εγκαθιστά τον wrapper σαν την εξ' ορισμού
	    <command>cvs</command> εντολή, κάνοντας έτσι σίγουρο ότι
	    οποιοσδήποτε θελήσει να χρησιμοποιήσει το repository, θα πρέπει να
	    έχει τα κατάλληλα επίπεδα πρόσβασης.</para>
	</step>

	<step>
	  <para>Μπορείτε τώρα να αφαιρέσετε όλους τους χρήστες από το
	    repository group σας.  Όλοι οι έλεγχοι πρόσβασης θα γίνονται από
	    τον wrapper, και ο ίδιος ο wrapper θα θέτει το ανάλογο group με το
	    οποίο θα γίνεται και η τελική πρόσβαση.</para>
      </procedure>
    </sect2>

    <sect2>
      <title>Ελέγχοντας την εγκατάσταση</title>

      <para>Ο wrapper πρέπει πλέον να είναι έτοιμος. Μπορείτε φυσικά να το
	δοκιμάσετε κάνοντας ένα forced commit στο αρχείο
	<filename>access</filename>:

	<screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' access</userinput></screen>

	Ξανά, αν αυτό αποτύχει, ελέγξτε για το αν όλα τα παραπάνω βήματα έχουν
	εκτελεστεί σωστά.</para>
    </sect2>
  </sect1>
</article>
