Changes between Initial Version and Version 1 of SynBuild


Ignore:
Timestamp:
08/08/08 00:10:41 (16 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SynBuild

    v1 v1  
     1= Ontwikkelen aan de Syn-3 source tree =
     2
     3Alle Syn-3 software bevind zich in een hele grote SVN tree. SVN is een versie beheer systeem: het zorgt ervoor dat we met meerdere mensen tegelijk aan de zelfde files kunnen werken, en dat je elkaar nooit in de weg zit. Conflicten worden indien mogelijk automatisch opgelost en oude versies kun je altijd terug halen. (je hoeft dus nooit meer extra backups te maken). Kortom: iedereen kan precies zien wanneer wat door wie is gewijzigd.
     4
     5Ook bevat deze tree een groot aantal scripts om het meeste automatisch voor je te doen. Deze pagina legt je uit hoe je aan de tree komt en hoe deze is ingedeeld.
     6
     7== Vereisten ==
     8
     9Theoretisch kan Syn-3 op alle Linux omgevingen gebouwd worden, omdat pakketjes altijd in een buildroot gecompiled worden. We gebruiken momenteel Slackware, Gentoo, Syn-3 en Ubuntu omgevingen om te bouwen en dit gaat prima.
     10
     11Je bent in elk geval het volgende nodig:
     12
     13 * root account
     14 * rsync
     15 * svn (Subversion)
     16 * mksquashfs
     17 * tar-1.13 in /bin/tar-1.13. ('''belanrijk, geattached aan deze pagina''')
     18 * Mogelijkheid om loop back devices te maken.
     19 * Meer dan 10 gig diskspace
     20 * mkfs.xfs versie 2.9.4 of hoger. (als je usbsticks wilt maken met mkcd)
     21 * 4gig vrij op je /tmp, het liefst met tmpfs. tmpfs+grote swapfile is veeel sneller dan een gewoon filesystem!
     22
     23= Syn-3 sources =
     24
     25== Toegang tot svn tree ==
     26
     27Je bent eerst svn inlog account nodig. Deze maakt iemand van Datux aan op twins in /home/svn/syn3/conf/. Zie SynAccounts.
     28
     29Toegang tot dit systeem (trac) is ook handig. Dit doet iemand met Admin rechten bij de admin pagina.
     30
     31Als je toegang tot trac hebt kun je via 'Browse Source' ook door de source bladeren. Ook staan er in de wiki vele verwijzigen naar files uit deze sources, wat erg handig is.
     32
     33== source tree ophalen ==
     34
     35De eerste keer moet je een zogenaamde 'checkout' doen. Met dit commando haal je de hele tree binnen.
     36
     37Dit hoeft niet persee als root:
     38
     39{{{
     40psy@krikky ~ $ svn co svn://twins.kantoor.datux.nl/syn3/trunk svnsyn3
     41Authentication realm: <svn://twins.kantoor.datux.nl:3690> 32fb8cd9-e6f8-0310-8218-8ae0250c70fb
     42Password for 'psy':
     43Authentication realm: <svn://twins.kantoor.datux.nl:3690> 32fb8cd9-e6f8-0310-8218-8ae0250c70fb
     44Username: edwin
     45Password for 'edwin':
     46A    svnsyn3/tests
     47A    svnsyn3/tests/mailserver
     48A    svnsyn3/tests/mailserver/mailtest
     49A    svnsyn3/tests/mailserver/mailtest/spam.mail
     50A    svnsyn3/tests/mailserver/mailtest/mailtest
     51A    svnsyn3/tests/mailserver/mailtest/normal.mail
     52A    svnsyn3/tests/mailserver/mailtest/virus.mail
     53..duurt heel lang ;)
     54}}}
     55
     56Druk bij het eerste password op enter, dan mag je opnieuw proberen en kan je je svn username invoeren.
     57
     58Na lange tijd vind je de tree onder svnsyn3.
     59
     60Het ip van twins.kantoor.datux.nl is momenteel '''172.16.137.102'''.
     61
     62== svn tree updaten ==
     63
     64Om de wijzigingen van andere developers binnen te halen doe je af en toe een svn update:
     65
     66{{{
     67root@builder:/home/psy/syn3# svn update
     68U    install/install.sh
     69U    install/lang_nl.sh
     70U    install/lang_pl.sh
     71...
     72Updated to revision 3421.
     73
     74}}}
     75
     76Het is handig om dit elke dag te doen, en hierna de status te controleren
     77
     78== svn nieuwe files en directoryies toevoegen ==
     79
     80Als je een nieuw pakketje gemaakt hebt moet je deze directory markeren als toevgevoegd:
     81{{{
     82root@builder:/home/psy/syn3# svn add npl/internetserver/ebtables
     83A      npl/internetserver/ebtables
     84A      npl/internetserver/ebtables/ebtables.pkg
     85A      npl/internetserver/ebtables/ebtables.version
     86A      npl/internetserver/ebtables/ebtables.md5
     87A      npl/internetserver/ebtables/ebtables-v2.0.8-1.tar.gz
     88A      npl/internetserver/ebtables/ebtables.SlackBuild
     89A      npl/internetserver/ebtables/ebtables.arch
     90}}}
     91
     92Dit gebeurd alleen lokaal, pas bij het committen (zie verderop) word de data ook naar de centrale server gestuurd.
     93
     94== svn status controleren ==
     95
     96Om te zien of het updaten goed gegaan is en om te zien of je wijzigingen gemaakt hebt gebruik je svn status. Dit commando laat de '''locale''' status van je tree zien en doet dus niks met de server:
     97
     98{{{
     99root@builder:/home/psy/syn3# svn status
     100?      test
     101?      npl/bla
     102A      npl/internetserver/ebtables
     103A      npl/internetserver/ebtables/ebtables.pkg
     104A      npl/internetserver/ebtables/ebtables.version
     105A      npl/internetserver/ebtables/ebtables.md5
     106A      npl/internetserver/ebtables/ebtables-v2.0.8-1.tar.gz
     107A      npl/internetserver/ebtables/ebtables.SlackBuild
     108A      npl/internetserver/ebtables/ebtables.arch
     109M      npl/mailserver/syncml_openxchange/syncml_openxchange.SlackBuild
     110...
     111}}}
     112
     113
     114De eerste en tweede kolom zijn het belangrijkste, zie ook svn status --help:
     115
     116    First column: Says if item was added, deleted, or otherwise changed
     117    *  ' ' no modifications
     118    *  'A' Added
     119    *  ''''C' Conflicted'''
     120    *  'D' Deleted
     121    *  'I' Ignored
     122    *  'M' Modified
     123    *  'R' Replaced
     124    *  'X' item is unversioned, but is used by an externals definition
     125    *  '?' item is not under version control
     126    *  '!' item is missing (removed by non-svn command) or incomplete
     127    *  '~' versioned item obstructed by some item of a different kind
     128
     129    Second column: Modifications of a file's or directory's properties
     130    *  ' ' no modifications
     131    *  ''''C' Conflicted'''
     132    *  'M' Modified
     133
     134Let er dus op dat je geen conflicten hebt. Als je dit wel hebt is het het handigste om de conflicteren de file en bijbehorden troep weg te halen en nogmaals update te doen. Een andere optie bij tekstfiles is de boel handmatig mergen.
     135
     136== Wijzgingen opslaan op svn server ==
     137
     138Als je een aantal wijzigingen gemaakt hebt moet je deze committen (opslaan), onder volgende voorwaarden:
     139
     140 * Het gewijzigde onderdeel moet compleet zijn en het liefst als 1 geheel gecommit worden. (tenzij je een dag werk hebt, dan mag je een backup-commit doen)
     141 * Niet meer dan 1 onderdeel of wijziging tegelijk committen, bij iedere wijziging duidelijk commentaar!
     142 * Er moet niks stuk gaan waar anderen van afhankelijk zijn.
     143 * Nieuwe onderdelen op de juiste plek in de tree adden. (eventueel vragen aan edwin) Verderop vind je een overzicht van de tree indeling.
     144 * Indien het een pakket betreft, dit pakket eerst rebuilden alvorens te committen indien mogelijk.
     145
     146Stel we hebben de volgende status:
     147{{{
     148root@builder:/home/psy/syn3/npl/internetserver# svn status
     149A      ebtables
     150A      ebtables/ebtables.pkg
     151A      ebtables/ebtables.version
     152A      ebtables/ebtables.md5
     153A      ebtables/ebtables-v2.0.8-1.tar.gz
     154A      ebtables/ebtables.SlackBuild
     155A      ebtables/ebtables.arch
     156A      arptables
     157A      arptables/arptables.version
     158A      arptables/arptables.md5
     159A      arptables/arptables-v0.0.3-2.tar.gz
     160A      arptables/arptables.SlackBuild
     161A      arptables/arptables.arch
     162A      arptables/arptables.pkg
     163}}}
     164Zo te zien heb ik 2 nieuwe pakketjes gemaakt, er zijn dus 2 commits nodig:
     165{{{
     166root@builder:/home/psy/syn3/npl/internetserver# cd ebtables/
     167root@builder:/home/psy/syn3/npl/internetserver/ebtables# svn commit -m 'nieuwe pakketje, nodig voor ethernet bridging en firewalling'
     168Adding         ebtables
     169Adding  (bin)  ebtables/ebtables-v2.0.8-1.tar.gz
     170Adding         ebtables/ebtables.SlackBuild
     171Adding         ebtables/ebtables.arch
     172Adding         ebtables/ebtables.md5
     173Adding  (bin)  ebtables/ebtables.pkg
     174Adding         ebtables/ebtables.version
     175Transmitting file data ......
     176Committed revision 3422.
     177root@builder:/home/psy/syn3/npl/internetserver/ebtables# cd ../arptables/
     178root@builder:/home/psy/syn3/npl/internetserver/arptables# svn commit -m 'nieuw pakketje, nodig voor firewalling van arp pakketjes'
     179Adding         arptables
     180Adding  (bin)  arptables/arptables-v0.0.3-2.tar.gz
     181Adding         arptables/arptables.SlackBuild
     182Adding         arptables/arptables.arch
     183Adding         arptables/arptables.md5
     184Adding  (bin)  arptables/arptables.pkg
     185Adding         arptables/arptables.version
     186Transmitting file data ......
     187Committed revision 3423.
     188root@builder:/home/psy/syn3/npl/internetserver/arptables#
     189}}}
     190
     191'''Let op:''' Als je eenmaal iets commit, kan dit nooit meer uit de history verwijderd worden. File en directorys kun je wel uit de tree verwijderen, maar ze blijven uiteraard bestaan in de oude revisie.
     192
     193=== Wijzigingen opslaan terwijl je geen rechten hebt ===
     194
     195Als je geen schrijfrechten hebt in de syn3 tree, kun je je wijzigingen op de volgende manier opslaan in een patch file:
     196{{{
     197psy /home/psy/syn3/npl # svn diff > bugfix-ldap.patch
     198}}}
     199
     200Deze file kun je opsturen naar info@datux.nl, waarna hij gereviewed word en eventueel in de tree opgenomen word. Binary files worden niet meegenomen in een diff, daarom is het altijd van belang de orginele url mee naar de sourcefiles mee te sturen!
     201
     202== Een fork maken ==
     203
     204Soms kan het handig zijn een zogenaamde ''fork'' te maken. Jou wijzigingen worden dan gecommit in je eigen svn tree, zodat anderen er geen last van hebben. Zo kan je zoveel prutsen als je wilt, en als je klaar bent voeg je je wijzigingen weer toe aan de hoofd tree (trunk).
     205
     206'''Voorbeelden en uitleg nodig!'''
     207
     208= Meer info =
     209
     210Voor meer info zie over de indeling van de source tree zie SynTree.