Git versjonskontroll: Intro

Hvordan kan du få din Drupal-site over på Git på 15 minutter eller mer, og samtidig lære de vanligste kommandoene.

Versjonskontroll for websider er et must. Har du et viktig nettsted online som du gjerne skulle lagt under versjonskontroll med for eksempel Git? Her er en kjapp guide til hvordan du kommer i gang!

Hos meg bar den forsiktige starten preg av at jeg ikke helt klarte å gripe prosessen. Jeg trengte en lettforståelig usecase som viste nøyaktig hvordan jeg kunne få mittlegendariskeprosjekt.com under versjonskontroll, og jeg trengte hjelp med å forstå gangen i fortsettelsen. 

Legg en eksisterende Drupal-site under versjonskontroll

Vårt mål er å få siten under versjonskontroll, slik at oppgraderinger kan gjøres lokalt, og testes offline før resten av verden får se linkfargen endres fra #ff3366 til #ff3399. Før vi fortsetter, sjekk at følgende er sant:

  • Din site lever sitt glade liv på en server hvor git er installert
  • Du har tilgang til ssh
  • Du har opprettet en gratis konto på Github.com + opprettet et prosjekt
  • Kaffen smaker

Ssh inn på serveren din, og gå til roten av siten:

$ cd public_hml/

Her kjører vi:

$ git init

Nå er repo opprettet, men ingenting er lagt til. Dette kan du sjekke ved å kjøre en kommando du kommer til å bruke rett som det er:

$ git status

For å legge rubb og stubb inn i git, kjører vi kort og godt:

$ git add .

Men det skulle du ikke gjort! For det er ikke alle filer vi ønsker å ha med. Filer som stadig endres, eller som kun gir mening på en bestemt server vil vi typisk utelate. Derfor anbefales det å opprette en fil ved navn .gitignore som legges i roten av siten (ikke i .git-mappen). I denne filen har jeg følgende innhold som standard for Drupal-sider:

.DS_Store
sites/default/files
sites/default/settings.php
.htaccess
CVS
robots.txt
backup
cache
_MACOSX

Det finnes gode grunner for å utelate disse filene, spesielt de som faktisk hører hjemme i en fungerende site. Du kan selv tenke ut hvorfor :) Etter å ha opprettet en .gitignore du er godt fornøyd med, kan de legge til filene (se over).

Nå kan du gjøre din første commit. For hver commit må du også i samme slengen gi en logg-beskjed. Kjør:

$ git commit -m "Her er loggbeskjeden min! I fremtiden kommer jeg sikkert til å skrive FIRST eller INITIAL COMMIT slik proffene i utlandet gjør."

Og vips kan du velge deg et repo på github, og la dette bli basen for din verdifulle kode:

git remote add origin git [at] github [dot] com:front/mittlegendariskeprosjekt.git

Hente siten fra github til din egen maskin

Herfra er det fryd og gammen. Hent filene fra github:

$ git clone git [at] github [dot] com:front/mittlegendariskeprosjekt.git

Legg inn noen standardfiler som måtte mangle, som .htaccess og settings.php (se over). Kopier databasen fra live site, installer lokalt, og dermed er du klar for å endre den skjærende rosafargen til noe enda litt mer skjærende i style.css. 

For at git skal ta hensyn til dine endringer, må du på nytt add'e filer som er endret/slettet/lagt til. Får oversikt ved å sjekke status (git status), og legg til endringene:

$ git add sites/all/themes/mittlegendariskeprosjekt/css/style.css

Commit endringene:

$ git commit -m "Rosafargen var lei. Nå er den så fin, så."

Og til slutt: Send endringen til github:

$ git push origin master

Gratulerer! Men på livesiten ser alt ut som før...! Hvorfor? Fordi endringene som nå er blitt synlige i github ikke er hentet fra livesiten! Kronen på verket blir derfor å gå inn på live serveren og hente godsakene:

$ git pull origin master

Gratulerer, du har herved revolusjonert din egen arbeidsflyt! Og forhåpentligvis blitt bitt av git.

Les også