Op dit moment werken wij als webontwikkel bureau niet met versiebeheer. We bouwen websites met PHP en MySQL en gebruiken hiervoor een IDE (PhpEd). We willen graag versiebeheer gaan gebruiken, maar tot nu toe zijn we tegen te veel dingen opgelopen waardoor we het niet gebruiken.
We zien de voordelen van versie beheer in, maar we willen er niet té veel nadeel van ondervinden in onze dagelijkse werkzaamheden.
Huidige situatie:
Nu hebben we een Small Business Server als domain controller, 14 PC’s met Windows Vista en een Linux ontwikkelserver in een gigabit netwerk. De home partitie van de ontwikkelserver is op iedere PC beschikbaar als netwerk locatie met een stationsletter.
Alle projecten hebben op de ontwikkelserver een eigen map en zijn een subdomein op het intranet.
Wanneer iemand een nieuwe website gaat bouwen, runt hij de installer zodat het CMS op de ontwikkelserver geïnstalleerd wordt. In zijn IDE maakt hij een nieuw project aan, waarbij wordt aangegeven dat de bestanden op de netwerk locatie staan.
De developer start met ontwikkelen van de website en bekijkt het resultaat in een browser. Elke wijziging wordt direct toegepast. Als we iets hebben wat we aan een klant willen tonen, dan kunnen we een subdomein beschikbaar maken voor de buitenwereld.
Wanneer de developer klaar is met ontwikkelen, maakt hij in ons administratiepakket een account aan. Op één van de live webservers wordt dat account aangemaakt en gekoppeld aan een domein.
De FTP gegevens stelt hij in in zijn IDE en met FTP wordt de website naar de live server geüpload.
Versie beheer
In de huidige situatie ontbreekt Source Control volledig. We hebben min of meer besloten om hier Subversion voor te gaan gebruiken. We hebben aardig wat tests en onderzoek gedaan en kwamen tot nu toe niet tot een heel goed werkbare situatie.
We hebben getest met een SVN server op de Linux ontwikkelserver. Een check-out maakt een ‘local’ working copy naar de netwerk share (op dezelfde ontwikkelserver). Probleem hierbij is dat uitchecken, committen, e.d. met de geteste client (Tortoise SVN) dit onwerkbaar traag is. Alles gaat van ontwikkelserver naar client PC en terug naar de ontwikkelserver. Wanneer we via Putty commandline de acties uitvoeren op de ontwikkelserver is alles wel snel. Maar ook dit is niet bepaald fijn werken: putty starten, inloggen op de server, commando’s uitvoeren.
Mogelijke oplossingen
We hebben gezocht naar een vervangende client voor Tortoise. We willen de acties direct uitvoeren op de server. Hiervoor heb ik geen geschikte client kunnen vinden, maar we denken dit zelf wel snel te kunnen maken. De werking zal dan ongeveer hetzelfde zijn als Tortoise, zonder de icoontjes op bestanden en mappen die de status aangeven.
Een andere oplossing is dat iedere developer de local working copy naar zijn eigen PC haalt en daarop werkt. Om te testen moet op de Windows PC dan een webserver draaien. In een Windows omgeving is dit niet ideaal vanwege verschillen tussen Windows en Linux. (include path, bestandspaden, Shell exec, etc). Een mogelijkheid is om op elke PC een virtual machine te draaien met daarop Linux en een webserver. De databases kunnen wel op de ontwikkelserver blijven draaien, zodat je geen problemen hebt met verschillende databases op de eigen PC en de ontwikkelserver (Database versiebeheer is sowieso nog wel een punt).
Wanneer een developer een commit doet op SVN, kunnen we automatisch een script laten draaien die de bestanden uit de repository rsynct met een map op de ontwikkelserver zodat daar ook altijd een werkende versie van de website staat.
Heeft iemand hier een mening over? We moeten iets met versie beheer en SVN lijkt een geschikt pakket om dit te gaan doen. Doordat we met SVN dingen kunnen automatiseren wordt bijvoorbeeld het live zetten van een website een stuk makkelijker. Ook kunnen we vrij makkelijk een acceptatie-omgeving inrichten, die met een druk op een knop geüpdate wordt.
Zijn er dingen waar ik nog niet aan gedacht heb die een mogelijke oplossing zijn voor versie beheer? Is het omgooien van onze huidige werkwijze (van centrale ontwikkelserver naar 14 lokale testservers) een goed idee?
We zien de voordelen van versie beheer in, maar we willen er niet té veel nadeel van ondervinden in onze dagelijkse werkzaamheden.
Huidige situatie:
Nu hebben we een Small Business Server als domain controller, 14 PC’s met Windows Vista en een Linux ontwikkelserver in een gigabit netwerk. De home partitie van de ontwikkelserver is op iedere PC beschikbaar als netwerk locatie met een stationsletter.
Alle projecten hebben op de ontwikkelserver een eigen map en zijn een subdomein op het intranet.
Wanneer iemand een nieuwe website gaat bouwen, runt hij de installer zodat het CMS op de ontwikkelserver geïnstalleerd wordt. In zijn IDE maakt hij een nieuw project aan, waarbij wordt aangegeven dat de bestanden op de netwerk locatie staan.
De developer start met ontwikkelen van de website en bekijkt het resultaat in een browser. Elke wijziging wordt direct toegepast. Als we iets hebben wat we aan een klant willen tonen, dan kunnen we een subdomein beschikbaar maken voor de buitenwereld.
Wanneer de developer klaar is met ontwikkelen, maakt hij in ons administratiepakket een account aan. Op één van de live webservers wordt dat account aangemaakt en gekoppeld aan een domein.
De FTP gegevens stelt hij in in zijn IDE en met FTP wordt de website naar de live server geüpload.
Versie beheer
In de huidige situatie ontbreekt Source Control volledig. We hebben min of meer besloten om hier Subversion voor te gaan gebruiken. We hebben aardig wat tests en onderzoek gedaan en kwamen tot nu toe niet tot een heel goed werkbare situatie.
We hebben getest met een SVN server op de Linux ontwikkelserver. Een check-out maakt een ‘local’ working copy naar de netwerk share (op dezelfde ontwikkelserver). Probleem hierbij is dat uitchecken, committen, e.d. met de geteste client (Tortoise SVN) dit onwerkbaar traag is. Alles gaat van ontwikkelserver naar client PC en terug naar de ontwikkelserver. Wanneer we via Putty commandline de acties uitvoeren op de ontwikkelserver is alles wel snel. Maar ook dit is niet bepaald fijn werken: putty starten, inloggen op de server, commando’s uitvoeren.
Mogelijke oplossingen
We hebben gezocht naar een vervangende client voor Tortoise. We willen de acties direct uitvoeren op de server. Hiervoor heb ik geen geschikte client kunnen vinden, maar we denken dit zelf wel snel te kunnen maken. De werking zal dan ongeveer hetzelfde zijn als Tortoise, zonder de icoontjes op bestanden en mappen die de status aangeven.
Een andere oplossing is dat iedere developer de local working copy naar zijn eigen PC haalt en daarop werkt. Om te testen moet op de Windows PC dan een webserver draaien. In een Windows omgeving is dit niet ideaal vanwege verschillen tussen Windows en Linux. (include path, bestandspaden, Shell exec, etc). Een mogelijkheid is om op elke PC een virtual machine te draaien met daarop Linux en een webserver. De databases kunnen wel op de ontwikkelserver blijven draaien, zodat je geen problemen hebt met verschillende databases op de eigen PC en de ontwikkelserver (Database versiebeheer is sowieso nog wel een punt).
Wanneer een developer een commit doet op SVN, kunnen we automatisch een script laten draaien die de bestanden uit de repository rsynct met een map op de ontwikkelserver zodat daar ook altijd een werkende versie van de website staat.
Heeft iemand hier een mening over? We moeten iets met versie beheer en SVN lijkt een geschikt pakket om dit te gaan doen. Doordat we met SVN dingen kunnen automatiseren wordt bijvoorbeeld het live zetten van een website een stuk makkelijker. Ook kunnen we vrij makkelijk een acceptatie-omgeving inrichten, die met een druk op een knop geüpdate wordt.
Zijn er dingen waar ik nog niet aan gedacht heb die een mogelijke oplossing zijn voor versie beheer? Is het omgooien van onze huidige werkwijze (van centrale ontwikkelserver naar 14 lokale testservers) een goed idee?