Goedendag,

Ik zit erover te denken om op mijn geweldige VPS binnenkort een SVN-service te installeren, waarmee ik mijn projecten ervan beheer.

Nu vroeg ik me enkele dingen af:

- Hoe hebben jullie de boel geconfigureerd aan de hand van de diverse projecten?
Ikzelf heb een heel mooi CMS die ik ontwikkel, en het lijkt me erg logisch om die in een repository te gooien.

Maar wat nou als ik een nieuwe versie gemaakt heb van mijn CMS? Wat moet er dan eigenlijk precies gebeuren?

En ook voor mijn klanten maak ik diverse templates (smarty) voor in het CMS. Kan ik dan ook het beste per template een repository maken?

Is dit een beetje goede tutorial?
http://www.helmers.nu/?p=314
Elk project een eigen repository (ook om rechten voor andere gebruikers in te stellen)
En voor een wat groter project zit er een hook op de commit die automatisch de documentatie genereert.

Maar voor nieuwe projecten pak ik GIT omdat ik daarmee lokaal kan werken en wijzigingen bijhouden zonder online te moeten werken. En heb je geen service nodig om de bestanden op een server te zetten.

Maar de tutorial ziet er goed en duidelijk uit, een voordeel is dat hij heel recent is wat de kans vergroot dat die nog werkt.
Mja, ik heb de meeste ervaring met SVN tot nu toe, en dat geeft daarom ook mijn voorkeur aan.

Ik ga zeker ook naar GIT kijken.

Hoe kan je eigenlijk je repo koppellen aan je live webomgeving voor de development?
Dat je dan dus je hele repo gelijk loopt met http://dev.bedrijf.nl/project1 ?
Je kunt acties koppelen met hooks (dit kan zowel in svn als in git) daarmee kun je allerlei scripts aanroepen. Bijvoorbeeld een script dat je webomgeving update.
Heb je een voorbeeld van zo'n hook?
Mijn klant gebruikt ook svn voor java/jboss applicaties, ik weet er niet het fijne van van maar: hooks can be found in the tools/hook-scripts directory of your subversion install

edit:
er is veel te vinden op google met "voorbeeld svn hook"
Ik heb een wat ouder voorbeeld van een SVN hook dat ik kan geven (de gerichte info is gestript maar het laat het idee zien)
Dit zorgt er voor dat de svn berichten ook in een forum gedeelte komen.

/path/naar/svn/repo/map/hooks/post-commit

#!/bin/sh

REPOS="$1"
REV="$2"

/usr/bin/php5 -f /path/naar/svn/repo/map/hooks/post-commit.php $REPOS $REV


En dan
/path/naar/svn/repo/map/hooks/post-commit.php
<?php
...
$sRepos = $argv[1];
$sName = basename( $sRepos );
$iRev = (int) $argv[2];

// Get all info of commit
$arCommand = array( 'author' , 'changed' , 'date' , 'log' );
foreach( $arCommand as $sCommand )
{
$arCommit[ $sCommand ] = trim( shell_exec( BIN_SVNLOOK .' '. $sCommand .' '. $sRepos .' --revision '. $iRev ) );
}
...
// Post a message
$sMessage = 'Revision: '. $iRev .''. PHP_EOL . $arCommit['log'] . PHP_EOL . PHP_EOL .'Modified files:'. PHP_EOL .'[*] '. str_replace( PHP_EOL , PHP_EOL .'[*] ' , $arCommit['changed'] );
$sMessageParsed = preg_replace( '/\[b\](.*?)\[\/b\]/si' , '<b>\\1</b>' , $sMessage );
$sMessageParsed = preg_replace( '/\[\*\] (.*?)(\n|$)/si' , '<li>\\1</li>' , $sMessageParsed );
$sMessageParsed = nl2br( $sMessageParsed );
...
mysql_query( 'INSERT INTO tabelnaam VALUES(NULL,'. $arUsernameToUserId[ $arCommit['author'] ] .','. $arCommit['date'] .',\''. mysql_escape_string( $sMessage
) .'\',\''. mysql_escape_string( $sMessageParsed ) .'\',\'127.0.0.1\',0,0)' );
?>
Erg handig dus, zo'n hook.

Maar een symlink van /home/svn/repos/project/ naar /home/mijn_username/domains/dev.bedrijf.nl/public_html/ zou toch ook kunnen, lijkt me? Of zie ik dat nou verkeerd?
Ja, dat zou ook kunnen. Dit moet geen enkel probleem zijn denk ik. Al weet ik niet wat er gebeurt als iemand een commit doet met een trage verbinding. Dan kan het zijn dat niet alle bestanden gewijzigd zijn tijdens het opvragen van een pagina.
symlinks kan altijd op linux mits geldig en je moet de rechten natuurlijk wel goed inregelen. home/domains/dev.bedrijf.nl/public_html/ is wel een vreemd opgebouwde target voor een linux symbolic link of ligt de "symlink" op een andere level?
Hoe bedoel je?
In het geval van DirectAdmin worden de bestanden daar opgeslagen. Ik gooi dit het liefst /home vanwege de backup e.d.

Of is dit pad of deze manier niet logisch, Aad?

TJVB tvb op 11/09/2011 22:38:06

Ja, dat zou ook kunnen. Dit moet geen enkel probleem zijn denk ik. Al weet ik niet wat er gebeurt als iemand een commit doet met een trage verbinding. Dan kan het zijn dat niet alle bestanden gewijzigd zijn tijdens het opvragen van een pagina.

Mja, een commit duurt ook niet echt gek lang, en ook bij uploaden via FTP speelt hetzelfde.

Reageren