<?xml version="1.0" encoding="UTF-8"?>


Εγκατάσταση ενός CVS Repository — ο τρόπος του
FreeBSD


Stijn Hoop

<stijn@win.tue.nl>
Αναθεώρηση: 43126
 νευματικά Δικαιώματα © 2001-2003 Stijn Hoop
Το FreeBSD είναι ένα κατοχυρωμένο εμπορικό
σύμβολο του FreeBSD Foundation.
 ολλές από τις λέξεις ή φράσεις οι οποίες
χρησιμοποιούνται από τους κατασκευαστές ή
τους πωλητές τους για να διακρίνουν τα
προϊόντα τους θεωρούνται εμπορικά σύμβολα.
Όπου αυτές εμφανίζονται σε αυτό το κείμενο
και για όσες από αυτές γνωρίζει η Ομάδα
Ανάπτυξης του FreeBSD ότι είναι πιθανόν να
είναι εμπορικά σύμβολα, θα δείτε ένα από τα
σύμβολα: «™» ή «®».
2013-11-07 από gabor.
 ερίληψη
Το άρθρο αυτό περιγράφει τα βήματα που
έκανα για να εγκαταστήσω ένα CVS repository που
χρησιμοποιεί τα ίδια αρχεία δέσμης εντολών
(scripts) με αυτά που χρησιμοποιεί και το FreeBSD
project στη δική του εγκατάσταση. Η
συγκεκριμένη προσέγγιση έχει αρκετά
πλεονεκτήματα έναντι μιας τυποποιημένης CVS
εγκατάστασης, όπως πιο λεπτομερή έλεγχο
πρόσβασης στο δέντρο του κώδικα καθώς και
αυτόματη παραγωγή ευανάγνωστων email με
λεπτομέρειες για κάθε αλλαγή στον πηγαίο
κώδικα (commit).
-------------------------------------------------------------------------------
 ίνακας  εριεχομένων


  1._Εισαγωγή

  2.__ρώτη_Εγκατάσταση

  3._Ειδική_Εγκατάσταση_του_FreeBSD_Project


1. Εισαγωγή

Τα περισσότερα projects ελεύθερου λογισμικού
(free software) και ανοιχτού κώδικα (open source)
χρησιμοποιούν το CVS σαν σύστημα ελέγχου του
κώδικά τους.  αρόλο που το CVS είναι πολύ
καλό σε αυτόν τον τομέα έχει κι αυτό το
μερίδιό του σε ελαττώματα και αδυναμίες.
Μια από αυτές τις αδυναμίες είναι το ότι η
κοινή χρήση κώδικα μπορεί γρήγορα να
οδηγήσει σε έναν διαχειριστικό εφιάλτη,
ειδικά αν υπάρχει η επιθυμία να
προστατευτούν ορισμένα κομμάτια του
δέντρου του κώδικα από κοινή πρόσβαση.
Η ομάδα ανάπτυξης του FreeBSD χρησιμοποιεί
εκτενώς το CVS. Διαθέτει επίσης μια μεγάλη
βάση από προγραμματιστές από πολλές
διαφορετικές χώρες. Αναπτύχθηκαν λοιπόν
μερικά αρχεία δέσμης εντολών για να κάνουν
την διαχείριση του repository πιο εύκολη.
 ρόσφατα τα αρχεία αυτά αναθεωρήθηκαν και
κανονικοποιήθηκαν από τον Josef Karthauser για να
είναι πιο εύκολο να χρησιμοποιηθούν και σε
άλλα έργα. Το άρθρο αυτό περιγράφει μια
μέθοδο χρήσης αυτών των νέων αρχείων
δέσμης εντολών.
Για να μπορέσετε να χρησιμοποιήσετε με τον
καλύτερο τρόπο τις πληροφορίες αυτού του
άρθρου θα πρέπει να γνωρίζετε τις βασικές
μεθόδους λειτουργίας του CVS.

2.  ρώτη Εγκατάσταση


 ροειδοποίηση:

Είναι καλή ιδέα να εκτελέσετε για πρώτη
φορά αυτή τη διαδικασία χρησιμοποιώντας
ένα κενό δοκιμαστικό repository, για να είναι
βέβαιο ότι θα κατανοήσετε όλες τις
συνέπειες.  ριν ξεκινήσετε σιγουρευτείτε
ότι έχετε πρόσφατα backups, τα οποία εγγυημένα
δουλεύουν!

2.1. Αρχικοποίηση του repository

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

  % cvs -d path-to-repository init

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

2.2. Η ομάδα του repository

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

  # pw groupadd ncvs

Μετά, θα πρέπει να εκτελέσετε την εντολή chown
(8) στον φάκελο με παράμετρο την ομάδα που
μόλις προσθέσατε, θέτοντας έτσι την ομάδα
στην οποία ανήκει ο κατάλογος:

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

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

2.3.  αίρνοντας τον πηγαίο κώδικα

Τώρα θα πρέπει να αποκτήσετε τον κατάλογο
CVSROOT από το repository του FreeBSD. Αυτό γίνεται
εύκολα, κάνοντας check out από ένα ανοιχτής
πρόσβασης FreeBSD CVS mirror. Δείτε το_σχετικό
κεφάλαιο_στο_εγχειρίδιο για περισσότερες
πληροφορίες. Ας υποθέσουμε ότι ο πηγαίος
κώδικας θα αποθηκευτεί στον κατάλογο CVSROOT-
freebsd που βρίσκεται μέσα στον τρέχοντα
κατάλογο.

2.4. Αντιγράφοντας τα scripts του FreeBSD

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

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

Σημειώστε ότι πιθανότατα θα πάρετε μερικές
προειδοποιήσεις σχετικά με το ότι μερικοί
φάκελοι δεν θα αντιγραφούν. Δεν πειράζει.
Δεν τους χρειάζεστε αυτούς τους
καταλόγους.

2.5. Tα scripts

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

* access - το αρχείο αυτό δεν χρησιμοποιείται
  στις συνηθισμένες εγκαταστάσεις του CVS.
  Χρησιμοποιείται μόνο στην ειδική
  εγκατάσταση_του_FreeBSD_project, για να ελέγχεται
  η πρόσβαση στο repository. Μπορείτε να
  αφαιρέσετε αυτό το αρχείο αν δεν σας
  ενδιαφέρει να χρησιμοποιήσετε κάτι
  τέτοιο στη δική σας εγκατάσταση.
* avail - το αρχείο αυτό ελέγχει την πρόσβαση
  στο repository ανά κατάλογο ή αρχείο. Μέσα σε
  αυτό, μπορείτε να καθορίσετε ομάδες
  χρηστών στους οποίους θέλετε να δώσετε
  πρόσβαση στο repository, όπως επίσης και να
  απαγορέψετε commits σε επίπεδο καταλόγου ή
  αρχείου. Θα πρέπει να το προσαρμόσετε ώστε
  να περιέχει τις ομάδες χρηστών και τους
  φακέλους που θα υπάρχουν στο δικό σας
  repository.
* cfg.pm - το αρχείο αυτό ερμηνεύει τις
  ρυθμίσεις σας και παρέχει τις εξ' ορισμού
  ρυθμίσεις. Δεν πρέπει να αλλάξετε αυτό το
  αρχείο. Αντίθετα, θα πρέπει να
  τοποθετήσετε τις δικές σας αλλαγές στις
  ρυθμίσεις στο αρχείο cfg_local.pm.
* cfg_local.pm - το αρχείο αυτό περιέχει όλες τις
  ρυθμιζόμενες παραμέτρους του συστήματος.
  Θα πρέπει να κάνετε οποιεσδήποτε
  ρυθμίσεις σας εδώ, όπως σε ποια διεύθυνση
  θα στέλνονται τα email από κάθε commit, σε
  ποιους hosts θα επιτρέπεται να γίνονται commit,
  κλπ.  ερισσότερες πληροφορίες σχετικά με
  αυτό θα βρείτε παρακάτω.
* checkoutlist - το αρχείο αυτό περιλαμβάνει όλα
  τα αρχεία που βρίσκονται κάτω από τον
  έλεγχο του CVS στον κατάλογο αυτό—όλα
  εκτός από τα προκαθορισμένα αρχεία που
  δημιουργεί η εντολή cvs init. Θα πρέπει να το
  αλλάξετε για να αφαιρέσετε μερικά,
  σχετικά μόνο με το FreeBSD, αρχεία.
* commit_prep.pl - το script αυτό εκτελεί διάφορους
  ελέγχους πριν από κάθε commit, ανάλογα με τις
  ρυθμίσεις που έχετε κάνει στο αρχείο
  cfg_local.pm. Δεν θα χρειαστεί να πειράξετε αυτό
  το αρχείο.
* commitcheck - το script αυτό καλείται απευθείας από
  το CVS.  ρώτα ελέγχει, χρησιμοποιώντας το
  πρόγραμμα cvs_acls.pl, αν ο committer έχει πρόσβαση
  στο συγκεκριμένο μέρος του δέντρου του
  κώδικα, και μετά εκτελεί το commit_prep.pl που
  εκτελεί τους διάφορους pre-commit ελέγχους. Αν
  δεν υπάρξει κάποιο πρόβλημα στους
  ελέγχους αυτούς, τότε το CVS θα επιτρέψει
  στο commit να συνεχίσει. Δεν θα χρειαστεί να
  πειράξετε αυτό το αρχείο.
* commitinfo - το αρχείο αυτό χρησιμοποιείται από
  το CVS στο να αποφασίσει ποιο script να
  εκτελέσει πριν από κάθε commit—στη δική μας
  περίπτωση αυτό το ρόλο καλύπτει το commitcheck.
  Δεν θα χρειαστεί να πειράξετε αυτό το
  αρχείο.
* config - το αρχείο ρυθμίσεων γι' αυτό το repository.
  Θα πρέπει να κάνετε αλλαγές σ' αυτό το
  αρχείο ανάλογα με τις ανάγκες σας, αλλά οι
  περισσότεροι διαχειριστές μπορούν να
  αφήσουν τις εξ' ορισμού ρυθμίσεις.
   ερισσότερες πληροφορίες για τις
  διάφορες δυνατότητες επιλογών που έχετε
  στο αρχείο αυτό μπορείτε να βρείτε στο
  εγχειρίδιο του CVS.
* cvs_acls.pl - το script αυτό ελέγχει την ταυτότητα
  του committer, και αν επιτρέπεται αυτός να έχει
  πρόσβαση στο δέντρο του κώδικα. Αυτό
  γίνεται με βάση το αρχείο avail. Δεν θα
  χρειαστεί να πειράξετε αυτό το αρχείο.
* cvsignore - στο αρχείο αυτό καθορίζονται τα
  αρχεία που το CVS δεν θα πρέπει να επιτρέψει
  το checkin τους στο repository. Μπορείτε να
  επεξεργαστείτε αυτό το αρχείο ανάλογα με
  τις δικές σας προτιμήσεις.  ερισσότερες
  πληροφορίες για το αρχείο αυτό θα βρείτε
  στο εγχειρίδιο του CVS.
* cvswrappers - το αρχείο αυτό χρησιμοποιείται
  από το CVS για την ενεργοποίηση ή
  απενεργοποίηση του keyword expansion, ή για το αν
  κάποιο αρχείο θα πρέπει να
  αντιμετωπίζεται ως binary. Μπορείτε να
  επεξεργαστείτε αυτό το αρχείο ανάλογα με
  τις επιθυμίες σας.  ερισσότερες
  πληροφορίες σχετικά με το αρχείο αυτό
  μπορείτε να βρείτε στο εγχειρίδιο του CVS.
  Σημειώστε πως οι επιλογές -t και -f δε
  δουλεύουν σωστά για client/server χρήση του CVS.
* edithook - το αρχείο αυτό δεν χρησιμοποιείται
  πια, αλλά εξακολουθεί να υπάρχει για
  ιστορικούς λόγους. Μπορείτε να σβήσετε
  αυτό το αρχείο.
* editinfo - το CVS χρησιμοποιεί αυτό το αρχείο
  για παράκαμψη των editors. Το FreeBSD δεν
  χρησιμοποιεί αυτή την λειτουργικότητα
  γιατί η ερμηνεία του log μηνύματος γίνεται
  από τα verifymsg και logcheck αρχεία. Επιλέξαμε να
  γίνεται έτσι αυτό επειδή η χρήση του editinfo
  έχει κάποια προβλήματα με τα commits από
  μακριά και με τα commits που χρησιμοποιούν
  τις επιλογές -F ή -F. Δεν θα χρειαστεί να
  πειράξετε αυτό το αρχείο.
* exclude - το αρχείο αυτό περιέχει κανονικές
  εκφράσεις (regular expressions) που
  χρησιμοποιούνται από το πρόγραμμα
  commit_prep.pl για να προσδιοριστούν τα αρχεία
  που δεν είναι απαραίτητο να περιέχουν
  επικεφαλίδα επισκόπησης (revision header). Στην
  εγκατάσταση του FreeBSD, όλα τα αρχεία κάτω
  από έλεγχο επισκόπησης (revision control) είναι
  απαραίτητο να περιέχουν μια επικεφαλίδα
  επισκόπησης (όπως $FreeBSD$). Όλα τα ονόματα
  αρχείων που ταιριάζουν με τουλάχιστον μια
  από τις γραμμές του αρχείου αυτού
  εξαιρούνται από τον συγκεκριμένο έλεγχο.
  Θα πρέπει να προσθέσετε τις ανάλογες
  κανονικές εκφράσεις στο αρχείο αυτό όταν
  κάνετε checkin αρχεία που δεν είναι
  απαραίτητο να περιέχουν επικεφαλίδα
  επισκόπησης. Κατά τη διάρκεια της
  εγκατάστασης των νέων scripts ελέγχου, ίσως
  να είναι καλύτερα να εξαιρείται ο
  κατάλογος CVSROOT/ από τον έλεγχο των headers.
* log_accum.pl - πρόκειται για ένα script που παίρνει
  το log μήνυμα όπως αυτό δίνεται από το logcheck
  script, και το προσθέτει στο τέλος ενός
  αρχείου log στο repository, έτσι ώστε να υπάρχουν
  αντίγραφα ασφαλείας από τα commit logs. Επίσης,
  αναλαμβάνει να στείλει ένα mail στην email
  διεύθυνση που έχετε δηλώσει (στο cfg_local.pm).
  Συνεργάζεται με το CVS μέσω του αρχείου
  loginfo. Δεν θα χρειαστεί να πειράξετε το
  αρχείο αυτό.
* logcheck - το αρχείο αυτό ερμηνεύει το commit log
  μήνυμα που παρέχουν οι committers, και
  προσπαθεί κατά κάποιο τρόπο να το
  κανονικοποιήσει. Συνεργάζεται με το CVS
  μέσω του αρχείου verifymsg. Δεν θα χρειαστεί να
  πειράξετε το αρχείο αυτό.

  Σημείωση:

  Το script εξαρτάται από μια τοπική αλλαγή του
  FreeBSD στο CVS: Η αλλαγή αυτή ξαναδιαβάζει το
  log μήνυμα αφού αυτό έχει τροποποιηθεί από
  το script. Η κανονική έκδοση του CVS προφανώς
  δεν κάνει κάτι τέτοιο, οπότε το logcheck δε
  μπορεί να κάνει μικροδιορθώσεις στο log
  μήνυμα, αλλά μπορεί να ελέγξει ότι το
  μήνυμα δεν έχει συντακτικά λάθη. Απο την
  έκδοση 1.11.2 και μετά το ίδιο το CVS μπορεί να
  ρυθμιστεί να έχει την ίδια συμπεριφορά με
  αυτή που έχει η έκδοση του FreeBSD με την
  επιλογή RereadLogAfterVerify=always στο αρχείο config.
* loginfo - το αρχείο αυτό χρησιμοποιείται από
  το CVS για τον έλεγχο του που θα στέλνονται
  οι πληροφορίες των logs. Εδώ ενεργοποιείται
  το πρόγραμμα log_accum.pl. Δεν θα χρειαστεί να
  πειράξετε αυτό το αρχείο.
* modules - το αρχείο αυτό διατηρεί την
  παραδοσιακή του σημασία στο CVS. Θα πρέπει
  να αφαιρέσετε τα FreeBSD modules από την κανονική
  έκδοση. Μπορείτε να επεξεργαστείτε αυτό
  το αρχείο ανάλογα με τις επιθυμίες σας.
   ερισσότερες πληροφορίες για το αρχείο
  αυτό είναι διαθέσιμες στο εγχειρίδιο του
  CVS.
* notify - το αρχείο αυτό χρησιμοποιείται από
  το CVS στην περίπτωση που κάποιος
  τοποθετήσει εντολή παρακολούθησης σε
  κάποιο αρχείο. Δεν χρησιμοποιείται στο
  repository του FreeBSD. Μπορείτε να επεξεργαστείτε
  αυτό το αρχείο ανάλογα με τις επιθυμίες
  σας.  ερισσότερες πληροφορίες για το
  αρχείο αυτό είναι διαθέσιμες στο
  εγχειρίδιο του CVS.
* options - το αρχείο αυτό σχετίζεται άμεσα με
  την FreeBSD έκδοση του CVS και υποστηρίζεται
  μόνο από αυτή και την έκδοση του Debian.
   εριέχει το keyword που θα γίνεται expand στα
  revision headers. Θα πρέπει να τροποποιήσετε το
  αρχείο αυτό για να είναι ίδιο με την
  έκδοση που έχετε εισάγει στο αρχείο
  cfg_local.pm (αν αποφασίσετε να χρησιμοποιήσετε
  αυτή την λειτουργία, που προς το παρόν
  δουλεύει σωστά μόνο με την έκδοση του CVS
  που έχει το FreeBSD).
* rcsinfo - το αρχείο αυτό αντιστοιχεί φακέλους
  του repository σε αρχεία template, όπως π.χ. το
  rcstemplate. Εξ' ορισμού, το FreeBSD χρησιμοποιεί
  ένα template για ολόκληρο το repository. Μπορείτε
  να προσθέσετε και άλλα στο αρχείο αυτό αν
  το επιθυμείτε.
* rcstemplate - το αρχείο αυτό είναι το template που θα
  δούν τελικά οι committers όταν θα κάνουν checkin.
  Θα πρέπει να επεξεργαστείτε αυτό το
  αρχείο ώστε να περιγράφει τις διάφορες
  επιπλέον παραμέτρους που ορίσατε στο
  αρχείο cfg_local.pm.
* tagcheck - το αρχείο αυτό ελέγχει την πρόσβαση
  στην χρήση των tags στο repository. Η κανονική
  έκδοση του FreeBSD δεν επιτρέπει tags με
  ονόματα όπως RELENG*, λόγω της διαδικασίας
  δημιουργίας των επίσημων εκδόσεων. Θα
  πρέπει να επεξεργαστείτε το αρχείο αυτό
  ανάλογα με τις δικές σας ανάλογες
  προτιμήσεις.
* taginfo - το αρχείο αυτό αντιστοιχεί
  λειτουργίες των tags σε φακέλους του repository
  με προγράμματα ελέγχου, όπως το tagcheck. Δεν
  θα χρειαστεί να τροποποιήσετε αυτό το
  αρχείο.
* unwrap - το αρχείο αυτό μπορεί να
  χρησιμοποιηθεί για το αυτόματο «unwrap» των
  binary αρχείων (δείτε cvswrappers) στο checkout. Δεν
  χρησιμοποιείται στην τρέχουσα
  εγκατάσταση του CVS για το FreeBSD επειδή δεν
  λειτουργεί σωστά με τα απομακρυσμένα commits.
  Δεν θα χρειαστεί να τροποποιήσετε το
  αρχείο αυτό.
* verifymsg - το αρχείο αυτό αντιστοιχεί
  υποκαταλόγους του repository σε προγράμματα
  επεξεργασίας των μηνυμάτων του log, όπως
  π.χ. το logcheck. Δεν θα χρειαστεί να
  τροποποιήσετε το αρχείο αυτό.
* wrap - το script αυτό χρειάζεται για το αυτόματο
  «wrap» των binary αρχείων (δείτε cvswrappers) κατά το
  checkin. Δεν χρησιμοποιείται στην τρέχουσα
  εγκατάσταση του FreeBSD επειδή δεν
  λειτουργεί σωστά με τα απομακρυσμένα commits.
  Δεν θα χρειαστεί να τροποποιήσετε το
  αρχείο αυτό.


2.6. Τροποποιώντας τα scripts

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

  1. Αν δεν θέλετε να χρησιμοποιήσετε τις
     λειτουργίες των scripts οι οποίες
     χρησιμοποιούνται αποκλειστικά_από_το
     FreeBSD, μπορείτε να αφαιρέσετε με ασφάλεια
     το αρχείο access:

       % cvs rm -f access

  2. Διορθώστε το αρχείο avail ώστε να περιέχει
     τους διάφορους φακέλους του repository στους
     οποίους θέλετε να ελέγξετε την πρόσβαση.
     Σιγουρευτείτε ότι θα διατηρήσετε
     ανέπαφη την avail||CVSROOT γραμμή, ειδάλλως θα
     αποκλείσετε ακόμα και τον εαυτό σας με
     το επόμενο βημα.
     Εκτός αυτού στο συγκεκριμένο αρχείο
     μπορείτε να εισάγετε και ομάδες από
     committers. Εξ' ορισμού, το FreeBSD χρησιμοποιεί
     το αρχείο access για την τοποθέτηση όλων
     των committers, αλλά μπορείτε να
     χρησιμοποιήσετε όποιο άλλο επιθυμείτε.
     Μπορείτε επίσης να προσθέσετε και
     ομάδες αν το επιθυμείτε (η σύνταξη
     καθορίζεται στην κορυφή του αρχείου
     cvs_acls.pl).
  3. Διορθώστε το αρχείο cfg_local.pm ώστε να
     περιέχει τις επιλογές που επιθυμείτε.
      ιο συγκεκριμένα, θα πρέπει να ελέγξετε
     τις παρακάτω τροποποιήσιμες επιλογές:

     o %TEMPLATE_HEADERS - Αυτές οι επικεφαλίδες
       επεξεργάζονται από τα log scripts, και
       τοποθετούνται κάτω από το mail του κάθε
       commit αν υπάρχουν και δεν είναι κενές στο
       μήνυμα του commit. Γενικά, μπορείτε να
       αφαιρέσετε τις καταχωρήσεις PR και MFC
       after—αφού αυτές σχετίζονται με το bug
       tracking σύστημα του FreeBSD και τον τρόπο που
       διαχειρίζεται το FreeBSD τα branches του repository
       του. Και φυσικά μπορείτε να προσθέσετε
       τις δικές σας.
     o $MAIL_BRANCH_HDR - Αν θέλετε να προστίθεται
       αυτόματα μια επικεφαλίδα σε κάθε commit
       μήνυμα mail, η οποία θα περιγράφει το branch
       στο οποίο έγινε το συγκεκριμένο commit,
       ορίστε την τιμή αυτή να ταιριάζει με
       την δική σας εγκατάσταση. Αφήστε την
       κενή αν δεν επιθυμείτε να προστίθεται
       αυτόματα μια τέτοια επικεφαλίδα.
     o @COMMIT_HOSTS - Ορίστε την τιμή αυτή σε μια
       λίστα από συστήματα (hosts), από τα οποία
       επιτρέπεται να γίνονται commits.
     o $MAILADDRS - Ρυθμίστε αυτή την τιμή στο email
       του διαχειριστή ή σε μια διεύθυνση
       λίστας στην οποία θέλετε να πηγαίνουν
       τα mail των commit μηνυμάτων.
     o @LOG_FILE_MAP - Αλλάξτε αυτό το array όπως
       επιθυμείτε. Κάθε regexp αντιστοιχεί στο
       συγκεκριμένο φάκελο στον οποίο γίνεται
       το commit, και το log μήνυμα του commit
       αποθηκεύεται κάτω από τον κατάλογο
       CVSROOT, στον υποκατάλογο commitlogs, στο αρχείο
       που αναφέρεται στην αντίστοιχη εγγραφή
       του πίνακα @LOG_FILE_MAP.
     o $COMMITCHECK_EXTRA - Αν δεν θέλετε να
       χρησιμοποιήσετε τους_ίδιους_ελέγχους
       πρόσβασης_με_το_FreeBSD, θα πρέπει να
       αφαιρέσετε τον ορισμό της τιμής
       $COMMITCHECK_EXTRA από το αρχείο αυτό.


     Σημείωση:

     Η αλλαγή της παραμέτρου $IDHEADER είναι
     εγγυημένο ότι θα δουλέψει μόνο σε
     πλατφόρμες FreeBSD. Εξαρτάται από ειδικές
     μετατροπές του FreeBSD στο CVS.
     Μπορείτε να ελέγξετε το αρχείο cfg.pm για
     να δείτε ποιές άλλες παραμέτρους
     μπορείτε να αλλάξετε, αλλά οι παραπάνω
     είναι οι πιο συνήθεις επιλογές.
  4. Επεξεργαστείτε το αρχείο exclude για να
     αφαιρέσετε τις ειδικές καταχωρήσεις του
     FreeBSD (όπως όλες τις γραμμές που ξεκινούν
     με ^ports/ κτλ.). Εκτός αυτού, βάλτε σε σχόλια
     τις γραμμές που ξεκινούν με ^CVSROOT/, και
     προσθέστε μια γραμμή που θα περιέχει
     μόνο το ^CVSROOT/. Αφού εγκατασταθεί ο wrapper,
     μπορείτε να προσθέσετε το δικό σας header
     στα αρχεία που βρίσκονται μέσα στον
     κατάλογο CVSROOT και να επαναφέρετε τις
     γραμμές αυτές, αλλά προς το παρόν απλά θα
     σας δημιουργήσουν προβλήματα όταν θα
     προσπαθήσετε να κάνετε commit αργότερα.
  5. Ανοίξτε το αρχείο modules, και αφαιρέστε
     όλες τις σχετικές με το FreeBSD
     καταχωρήσεις.  ροσθέστε τα δικά σας modules
     αν το επιθυμείτε.
  6.
     Σημείωση:

     Το βήμα αυτό είναι απαραίτητο μόνο αν
     έχετε ορίσει κάποια τιμή στην παράμετρο
     $IDHEADER του αρχείου cfg_local.pm (η οποία
     δουλεύει μόνο εφόσον χρησιμοποιείτε την
     τροποποιημένη έκδοση του CVS που έχει το
     FreeBSD).
     Διορθώστε το αρχείο options ώστε να
     ταιριάζει με το tag που ορίσατε στο αρχείο
     cfg_local.pm. Μια αναζήτηση και αντικατάσταση
     του FreeBSD σε όλο το αρχείο είναι αρκετή.
  7. Επεξεργαστείτε το αρχείο rcstemplate ώστε να
     περιέχει τα ίδια keywords με αυτά που έχετε
     ορίσει στο cfg_local.pm.
  8.  ροαιρετικά, αφαιρέστε τους ελέγχους
     του FreeBSD από το αρχείο tagcheck. Μπορείτε
     απλά να προσθέσετε exit 0 στην αρχή του
     αρχείου για να απενεργοποιήσετε όλους
     τους ελέγχους στο tagging.
  9. Το τελευταίο πράγμα που πρέπει να γίνει,
     είναι να σιγουρευτείτε ότι τα commitlogs
     μπορούν να αποθηκευτούν. Τα CVS scripts του
     FreeBSD αποθηκεύουν αυτά τα logs στον
     υποκατάλογο commitlogs του καταλόγου CVSROOT.
     Αυτός ο φάκελος πρέπει να δημιουργηθεί,
     οπότε κάντε τα ακόλουθα:

       % mkdir commitlogs
       % cvs add commitlogs


Τώρα, αφού ελέγξετε τα πάντα προσεκτικά, θα
πρέπει να κάνετε commit τις αλλαγές σας.
Φροντίστε να είστε σίγουροι ότι έχετε
δώσει στον εαυτό σας πρόσβαση στον φάκελο
CVSROOT μέσα από το αρχείο avail πριν κάνετε
οτιδήποτε, εφόσον στην αντίθετη περίπτωση
θα κλειδώσετε τον εαυτό σας έξω. Οπότε,
φροντίστε τα πάντα να είναι όπως
επιθυμείτε, και μόνο τότε δώστε τα
ακόλουθα:

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


2.7. Δοκιμάζοντας την Εγκατάσταση

Είστε έτοιμοι για την πρώτη σας δοκιμή: Ένα
forced commit στο αρχείο avail, για να σιγουρευτείτε
ότι όλα δουλεύουν όπως θα έπρεπε.

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

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

3. Ειδική Εγκατάσταση του FreeBSD Project

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

3.1. Αρχεία που χρησιμοποιούνται στην ειδική
εγκατάσταση του FreeBSD


* access - το αρχείο αυτό ελέγχει τις
  πληροφορίες για τα δικαιώματα πρόσβασης.
  Θα πρέπει να το επεξεργαστείτε ανάλογα
  έτσι ώστε να περιλαμβάνει όλα τα μέλη του
  project σας.
* freebsd/commitmail.pl - το αρχείο αυτό δεν
  χρησιμοποιείται πια, αλλά παραμένει για
  ιστορικούς λόγους. Δεν θα χρειαστεί να
  επεξεργαστείτε αυτό το αρχείο.
* freebsd/cvswrap.c - πρόκειται για τον πηγαίο
  κώδικα του CVS wrapper που θα πρέπει να
  εγκαταστήσετε για να μπορέσουν όλοι οι
  έλεγχοι πρόσβασης τελικά να δουλέψουν.
   ερισσότερες πληροφορίες για τη
  διαδικασία αυτή θα βρείτε παρακάτω. Θα
  πρέπει να διορθώσετε τα paths στις ACCESS και
  REALCVS μακροεντολές ώστε να ταιριάζουν με τη
  δική σας εγκατάσταση.
* freebsd/mailsend.c - το αρχείο αυτό χρειάζεται για
  την σχετική με τις λίστες ταχυδρομείου
  εγκατάσταση του FreeBSD. Δεν θα χρειαστεί να
  πειράξετε το αρχείο αυτό.


3.2. Η διαδικασία


  1. Διορθώστε το αρχείο access ώστε να περιέχει
     μόνο το δικό σας username.
  2. Διορθώστε το αρχείο cvswrap.c ώστε να
     περιέχει το σωστό path για τη δική σας
     εγκατάσταση. Αυτό ορίζεται ως μια
     μακροεντολή που ονομάζεται ACCESS. Θα
     πρέπει επίσης να αλλάξετε και το όνομα
     αρχείου του πραγματικού cvs binary αν αυτή
     που υπάρχει δεν είναι η σωστή για τη δική
     σας περίπτωση. Το κανονικό cvswrap.c θεωρεί
     πως θα αντικαταστήσετε την εντολή cvs σε
     επίπεδο συστήματος με το cvwrap, κι η αρχική
     εντολή cvs θα μεταφερθεί στο αρχείο /usr/bin/
     ncvs.
     Το δικό μου αντίτυπο του αρχείου cvswrap.c
     έχει τα ακόλουθα:

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

  3. Το επόμενο βήμα είναι να εγκαταστήσουμε
     τον wrapper για να είμαστε σίγουροι ότι θα
     γίνεται η μετατροπή στο σωστό group όταν
     γίνεται commit. Ο πηγαίος κώδικας γι' αυτό
     βρίσκεται στο αρχείο cvswrap.c στον κατάλογο
     CVSROOT.
     Μεταγλωττίστε τον κώδικα που έχετε ήδη
     διορθώσει ώστε να περιέχει τα σωστά paths:

       % cc -o cvs cvswrap.c

     Στη συνέχεια εγκαταστήστε το νέο cvs
     εκτελέσιμο ακολουθώντας τα ακόλουθα
     βήματα (θα πρέπει να είστε 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

     Αυτό εγκαθιστά τον wrapper σαν την εξ'
     ορισμού cvs εντολή, κάνοντας έτσι σίγουρο
     ότι οποιοσδήποτε θελήσει να
     χρησιμοποιήσει το repository, θα πρέπει να
     έχει τα κατάλληλα επίπεδα πρόσβασης.
  4. Μπορείτε τώρα να αφαιρέσετε όλους τους
     χρήστες από το repository group σας. Όλοι οι
     έλεγχοι πρόσβασης θα γίνονται από τον
     wrapper, και ο ίδιος ο wrapper θα θέτει το
     ανάλογο group με το οποίο θα γίνεται και η
     τελική πρόσβαση.


3.3. Ελέγχοντας την εγκατάσταση

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

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

Ξανά, αν αυτό αποτύχει, ελέγξτε ότι όλα τα
παραπάνω βήματα έχουν εκτελεστεί σωστά.
