Mijn project workflow
Sinds kort werk ik met een nieuwe workflow voor al mijn projecten. In deze post ga ik je kort vertellen hoe mijn workflow eruit ziet.
Er zijn ongekend veel manieren om je workflow in te delen. Omdat ik niet al te lang ben overgestapt naar Mercurial, vond ik dat een goed moment om ook eens kritisch te kijken naar mijn workflow.
Zo ziet mijn Workflow er globaal uit. Ik zal per 'fase' iets gaan toelichten.
Voorbereidingen
Als ik aan een nieuw project begin dan houdt dat meestal in dat ik de laatste stabiele versie van Cake download/kopieer, en dat ik een hg repository aanmaak. In deze map staan alle bestanden die aan de opdracht gerelateerd zijn. Om dit te doen, heb ik een klein scriptje geschreven voor Terminal.app:
#!/bin/sh
projectsDir=~/Projects/
projectName=$1
echo "Creating Project directory in: ${projectsDir}${projectName}" &&
mkdir -p ${projectsDir}${projectName} &&
cd ${projectsDir}${projectName} &&
hg init &&
echo Exporting latest CakePHP release... &&
svn co -r `svn ls --verbose https://svn.cakephp.org/repo/tags | sort -rn | head -n 1 | cut -d ' ' -f 1-4 | tr -s " "` https://svn.cakephp.org/repo/trunk/cake/1.2.x.x/ . &&
hg add . &&
hg commit -m "Initial commit: clean CakePHP installation." &&
echo "Done, quitting now."
Het scriptje slikt 1 parameter: de naam van het project. Wat het vervolgens doet is de laatste stable release downloaden, en een nieuwe hg repository maken. Daarna wordt er meteen de initial commit gedaan.
Lekker klussen

Voor iedere nieuwe feature start ik een nieuwe branch, zodat mijn default branch altijd stabiel is. Op deze branch worden dus alleen bugfixes direct gecommit, alle andere wijzigingen gaan eerst in een branch. Zodra ik klaar ben met de nieuwe feature, en deze is getest en stabiel bevonden, dan wordt deze feature gemerged met de default branch. Het is heel goed mogelijk dat er meerdere branches tegelijk openstaan, waar ook actief aan gewerkt wordt.
Pushen
Als ik een branch heb gemerged met de default branch, of ik heb een andere belangrijke wijziging doorgevoerd, is het tijd om deze wijzigingen live te zetten. Uiteraard doe ik dit niet door het mapje via FTP te kopiëren: dat duurt simpelweg veel te lang. Hiervoor gebruiken we het push commando binnen hg.
Dankzij RBTS heb ik een VPS, waardoor ik staat ben om alles te draaien wat ik wil, plus ik heb SSH toegang. Daardoor kan ik mijn wijzigingen gewoon via SSH pushen. Na een push moet ik alleen nog even uppen, en een nieuwe wijziging staat live!
Hoe ziet jouw workflow eruit? Ik ben benieuwd!
Reacties
Er is op dit moment één reactie.
Permalink
één reactie
Teun Hompe
Jul 16th 2009, 10:39
Wijzigingen sla ik op in een zipje. Dat zipje geef ik handige en herkenbare namen, zoals 'versie0.1.zip' en 'versie0.11_overlap_werkt.zip'. Zo houd ik dus backups, zodat ik eenvoudig een rollback kan doen als er fouten in m'n code sluipen...
;-)