[OpenBSD]

Anonymous CVS


Inhoud


Wat is Anonymous CVS?

Anonymous CVS is een methode om uw lokale kopie van de OpenBSD source tree up to date te houden met de wijzigingen die in de huidige OpenBSD broncode gemaakt worden. Naast het volgen van de bleeding edge ontwikkelingen is het ook mogelijk om de errata-patches van een versie te volgen.

Het grote voordeel van Anonymous CVS over andere technieken om broncode te updaten is dat het werkt met een centrale broncode repository of mirror. Dit betekent dat u de volledige set van CVS-commando's tot uw beschikking hebt om uw wijzigingen samen te voegen en te updaten met andere wijzigingen in de broncode en om diffs uit te voeren, histories te wijzigen en andere queries tegen de centrale repository.

Het OpenBSD-project heeft op dit moment vier actieve en twee historische broncode-repositories:

Samenvattend is de ware kracht van Anonymous CVS dat het een "tolerant" broncodecontrolesysteem is - het respecteert wijzigingen die u hebt gemaakt aan uw lokale broncode en doet zoveel mogelijk zijn best om uw gehele source tree te updaten, in plaats van u achter te laten met een lijst van geheimzinnige problemen die opgelost moeten worden voordat u verder kan.

Wat is CVS?

CVS is het broncodecontrolesysteem dat gebruikt wordt om de OpenBSD source tree te onderhouden. Het implementeert een centrale repository voor alle officieel uitgebrachte broncode en wijzigingen, en stelt ontwikkelaars in staat om lokale kopiťťn van de broncode te onderhouden met hun wijzigingen. Er zijn twee toegangsniveaus voor de broncode tree:

De grote kracht van CVS is dat het de mogelijkheid heeft om wijzigingen in de centrale repository en wijzigingen die u in uw lokale kopie aanbrengt intelligent samen te voegen. Dit betekent dat wanneer u een wijziging aanbrengt in een module en een update uitvoert uw wijzigingen niet "weggevaagd" worden, CVS doet daarentegen zijn best om de wijzigingen die aangebracht zijn in de centrale code samen te voegen met de wijzigingen die u in uw lokale kopie hebt gemaakt.

Wanneer de wijzigingen niet volledig samengevoegd kunnen worden heeft CVS een "soft fallback", welke u aangetekende wijzigingen aan uw lokale kopie geeft, een ongewijzigde kopie van uw versie behoudt en vervolgt met het updaten van andere broncode-modules die u aangevraagd hebt.

Crypto broncode ophalen via cvs(1)

BELANGIJKE OPMERKING: Er zijn enkele kwesties rondom cryptografische software waar iedereen bewust van moet zijn:

Beginnen met Anonymous CVS

Hoewel u de hele broncode tree kan downloaden van een AnonCVS server kun u vaak veel tijd en bandbreedte besparen door uw broncode tree "vooraf te laden" met de broncodebestanden van de OpenBSD-CD of een FTP-server. Dit is helemaal het geval als u -stable draait, omdat er relatief weinig bestanden gewijzigd worden tussen -release en -stable.

Om de CVS tree van de CD uit te pakken naar /usr/src (aannemend dat de CD gemount is op /mnt):

    # cd /usr/src
    # tar xzf /mnt/src.tar.gz
    # cd /usr
    # tar xzf /mnt/xenocara.tar.gz
    # tar xzf /mnt/ports.tar.gz
De broncodebestanden die van de FTP-servers gedownload kunnen worden zijn verdeeld in twee bestanden om de downloadtijd zo klein mogelijk te houden voor degene die enkel met een deel van de tree willen werken. De twee bestanden zijn sys.tar.gz, welke alleen de bestanden bevat om de kernel mee te maken, en src.tar.gz welke alle andere "userland" programma's bevat. Over het algemeen wilt u ze echter beide geÔnstalleerd hebben. Aannemend dat de gedownloade bestanden, src.tar.gz, sys.tar.gz en xenocara.tar.gz zich in /usr bevinden:
    # cd /usr/src
    # tar xzf ../sys.tar.gz
    # tar xzf ../src.tar.gz
    # cd /usr
    # tar xzf xenocara.tar.gz
    # tar xzf ports.tar.gz

Niet iedereen zal alle bestanden willen uitpakken, maar omdat het systeem gesynchroniseerd moet worden, moeten gewoonlijk alle trees opgezet worden.

U kan ook gewoon cvs(1) gebruiken om een "checkout" van de broncode repository te doen. Dit wordt behandeld in de volgende sectie.

Hierna is /usr/src een mooi checkout-gebied waar alle cvs(1)-commando's zullen werken.

CVS gebruiken om uw Source Tree Op te halen en te Updaten

CVS is ontworpen als een eenvoudige manier om uw broncode op te halen en te updaten. U moet eerst bepalen of u -current of een patch branch wilt volgen. De current branch bevat alle laatste wijzigingen, terwijl de patch branch een formele uitgave bevat plus de patches van errata en kleinere kwesties. Voor meer informatie over deze "flavors" van OpenBSD, zie hier.

Wanneer u eenmaal hebt besloten welke tree u wilt volgen moet u kiezen welke Anonymous CVS-server u gaat gebruiken. Een lijst van deze servers bevindt zich hieronder.

Wanneer u eenmaal hebt besloten welke Anonymous CVS Server u wilt gebruiken kan u beginnen cvs te gebruiken. Zij die CD's hebben kunnen beginnen met de CVS checkout die op de CD staat met de hierboven genoemde methode om de broncode op uw systeem te krijgen. Als u geen CD bij de hand hebt, gebruik dan de methode hieronder om een checkout van de broncode te maken.

Het gebruik van ports is het gelijkaardig aan src:

In bovenstaand voorbeeld is -q optioneel, alleen bedoeld om de uitvoer van cvs te minimaliseren. Voor degenen die graag schermen vol uitvoer zien kan het weggelaten worden.

Om een diff te maken van een lokaal gepatchte module (hier cd.c) om met een bugreport mee te sturen:

	# cd /usr
	# cvs diff -u src/sys/scsi/cd.c > /tmp/patch

De cvs(1) man pagina (inbegrepen bij de CVS-broncode) heeft veel meer informatie over hoe CVS gebruikt kan worden.

Waarschuwing: Wanneer u cvs gebruikt moet u er goed op letten dat uw huidige directory de root van de tree die u aangeeft is of een aparte plek zoals /tmp. Sommige commando's zoals "get" kunnen een willekeurige sub-tree aanmaken in de huidige directory en een volgende update zal deze sub-tree recursief uitbreiden.

De anoncvs-dienst geeft beginnende ontwikkelaars een kans om CVS te leren en grondig geintroduceerd te worden aan het ontwikkelproces voordat ze "commit"-rechten krijgen -- als een gevolg van het tonen van nuttige vaardigheden en resultaten van hoge kwaliteit zullen ze natuurlijk later ontwikkelaarstoegang krijgen. Ook kunnen mensen die patches aangeven hun "diff"'s tegen de CVS tree genereren wat de integratie makkelijker maakt.

Voorbeelden van cvs(1)

Een voorbeeld van het gebruik van een anoncvs-server zou zijn:

$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
    [kopieert de bestanden van de repository naar uw machine]
$ cd src/sys/arch/sparc
$ cvs log locore.s
    [toont het commit-log voor het aangegeven bestand]
$ cvs diff -bc -r1.1 -r1.5 locore.s
    [toons de wijzigingen tussen de revisies 1.1 en 1.5]

Beschikbare Anonymous CVS-Servers

N.b.: Als uw server niet op de lijst voorkomt of met onjuiste of onvolledige informatie neem alstublieft contact op met beck@openbsd.org

U kan traceroute(8) gebruiken om uit te zoeken welke server het dichtsbij is. Problemen met een server moeten gemeld worden aan de onderhouder van de server in kwestie.

Als het lokaal beleid belemmert om uitgaande verbindingen te maken naar ssh's standaardpoort van 22 kan daarvoor in de plaats poort 2022 gebruikt worden die door sommige sommige servers worden toegestaan. Dit is opgenomen in bovenstaande lijst. Om een andere poort te gebruiken kunt u een "Host"-sectie opnemen in $HOME/.ssh/config, bijvoorbeeld:

       Host anoncvs.ca.openbsd.org
           Port 2022

Een anoncvs mirror opzetten

Als u een nieuwe anoncvs mirror site wilt opzetten en openstellen voor het publiek, neem dan alsjeblieft contact op met de anoncvs-onderhouder. Anoncvs mirrors vereisen momenteel ongeveer 5 GB schijfruimte (en dit zal toenemen!) en gebruiken tot 32 MB swap per anoncvs-gebruiker (aannemend dat de gebruiker een grote operatie uitvoert; alhoewel kleinere operaties minder bronnen gebruikt heeft anoncvs nog steeds meer impact dan ftp). Zulke anoncvs-machines zouden een zeer goede netwerkverbinding moeten hebben voor het gebied dat ze zullen dienen. Een document die de opzet van anoncvs-servers beschrijft is beschikbaar.

Laatste opmerkingen

Na het upgraden van uw source tree zou u de opmerkingen bovenaan /usr/src/Makefile moeten lezen voordat u een build probeert. Ook zou u indien mogelijk een nieuwe kernel moeten bouwen voordat u een make build doet. In sommige gevallen kan het noodzakelijk zijn om het config programma te herbouwen en te installeren voordat u de kernel kan bouwen. Als config GENERIC faalt is dit waarschijnlijk het geval.

Het is belangrijk om op te merken dat het upgraden van een release naar de current tree door de broncode te herbouwen vrij lastig kan zijn door afhankelijkheden die vaak niet voor de hand liggen. Daarom wordt aanbevolen dat u eerst de laatste snapshot installeert voordat u een tree bouwt uit broncode.


OpenBSD www@openbsd.org
$OpenBSD: anoncvs.html,v 1.131 2013/05/07 12:47:22 ajacoutot Exp $