Versionshantering av Drupalsida

Events happening in the community are now at Drupal community events on www.drupal.org.
kristofferwiklund's picture

Hej

Jag vet att detta har diskuteras många gånger men jag har inte hittat något bra svar. Jag undrar hur man bäst jobbar med en site och versionshantering. Jag kommer ifrån en bakgrund med egenkodat CMS där all kod låg i SVN och man hade en update.php för att uppdatera databas om man gjorde några sådana ändring. Det gjorde att vi kunde sitta tre olika personer och koda mot sin egna webbserver. När man gjort en ny funktion så committade man det och de andra + produktionsserver kunde checka ut koden och köra update.php.

Men hur gör man sånt i Drupal. Det närmaste jag kommit fram till är:

Alt 1. Man har sin produktionserver. Script som kopierar db+filer till localhost. Man jobbar och testar och ser så det blir bra. Sedan när man är nöjd. Går man till produktionsserver och göra om alla ändrar i UI+uppdaterar filer.
Alt 2. Man lär sig features och försöker bara jobba med det.
Alt 3. Använde något backupverktyg för att skilja på struktur och innehålls tabeller och synkar de.

Hur gör ni och hur fungerar det? Har lyssnat lite podcast där det sägs att i Drupal 8 ska man mer har tänkt på det här. Vilket inte bara är ett Drupal problem utan de flesta stora CMS systemen har de här problemen, när struktur och innehåll samsas i databasen.

Comments

Features

adamgerthel's picture

Alternativ två, dvs: Ta en titt på Features (http://drupal.org/project/features). I Drupal är det det enklaste sättet i nuläget. Med hjälp av Features kan du få ut konfiguration i kod, som du sedan versionshanterar.

Alt 1: Går inte alls i längden. Väldigt omständigt.
Alt 2: Har sett vissa göra så, men ser stora risker med det.

/Adam Gerthel - Projektledare, Odd Hill

Vi använder Features och

pontus_nilsson's picture

Vi använder Features och bygger med installationsprofiler. På så sätt kan vi skilja på konfiguration och kod.

//Pontus Nilsson, Digitalist

När det gäller databas-frågan

Zach's picture

När det gäller databas-frågan så skulle jag ha en dev-server som speglar produktionsdatabas och sedan tunnlar utvecklarna mot denna databas. Sedan om någon vill jobba mot sin localhost så får de manuellt dra ner db.

Detta kommer dock kräva att ändringar som görs i dev måste antingen scriptas över till prod eller göras manuellt. Allt beroende på vad som blir enklast/säkrast.

Ni kan ju även spegla de enskilda tabellerna. Det är förmodligen lite mer meck men en snyggare lösning.

Alt 1 fungerar bra men det

jonne_jvl's picture

Alt 1 fungerar bra men det kräver lite mer jobb. Dom ändringar man gör "i UI" som du säger, måste man destillera ner till skriptbara operationer. Sen går det att utföra dom operationerna i en hook_update_N funktion eller liknande. Först då har man möjlighet att stagea innan man går i prod. (regressionstestning osv)

Att göra saker "för hand" i prod bör man bara göra om det är panik/akut eller om man inte är så orolig för att det blir fel.
Blir helt omöjligt att spåra i längden.

Nu är ju jag ett fan av hudson/jenkins och liknande och där passar ett sånt upplägg bra.
Features är grymt och passar också i ett sånt upplägg, men det finns en hel del odokumenterade fallgropar så man måste testa sig fram för att vara säker på att det funkar.

Features och hook_update

kristofferwiklund's picture

Det blir då att läsa på mer om fetures och hook_update och testar på lite olika projekt.

Tackar så mycket för all input.

Kolla in Fredriks tips

glazyr's picture

Fredrik aka frjo är lite av en guru på det där tycker jag iaf :-) Kolla här: http://xdeb.org/node/1487 och se om du får några tips.