You are viewing an old Wolf's Little Store website. Please visit wolfslittlestore.be for the most recent version.

You are viewing an old Wolf's Little Store website. Please visit wolfslittlestore.be for the most recent version.

Websites updaten met git

25 juni 2009, 21:27 |

Wat ga je leren?

Een website updaten met 1 terminal commando in plaats van het manueel drag en droppen van files in je FTP client.

Verreisten

Deze tutorial is geschreven vanuit het standpunt van een OSX-gebruiker. Het proces kan mogelijk lichtjes verschillen voor een Linux-gebruiker (voor Windows zou ik het niet weten).

Nota: dit lijkt veel werk maar eens je het onder de knie hebt is het echt wel gemakkelijk. Eén keer een beetje werk, en daarna veel tijdswinst.

Stap 1: lokaal een git repo aanmaken

Je kan een bestaande repository gebruiken maar om deze methode eens uit te proberen volg je best de stappen uit deze tutorial.

Open een nieuw terminal venster.

Maak een directory in je homedir.

wolf@wolf:~> mkdir git_test

Verander je directory naar de net aangemaakte directory.

wolf@wolf:~> cd git_test

Maak daar een nieuwe file aan.

wolf@wolf:~/git_test> touch index.html

Open die file met je een text editor (Textmate, Vim, emacs, pico, etc…). Om het makkelijk te houden gebruiken we pico:

wolf@wolf:~/git_test> pico index.html

Typ nu wat je wil schrijven

Hello!

En druk CTRL+X om pico te exiten, Y (YES) om je wijzigingen op te slaan en ENTER om pico te exiten.

(Eerlijk gezegd kan je al deze bovenstaande stappen overslaan, naar Finder gaan, daar een map aanmaken, in die map een file index.html zetten en daaarin de tekst “Hello!” plaatsen, maar kom, dit is een test of je een beetje met je terminal kan werken)

Initialiseer nu de git repo:

wolf@wolf:~/git_test> git init

Je krijgt een bericht dat dat gelukt is:

Initialized empty Git repository in /Users/wolf/git_test/.git/

Voeg alle files toe

wolf@wolf:~/git_test> git add .

En commit deze:

wolf@wolf:~/git_test> git commit -m "My first commit"

Voila. Op naar de server!

Stap 2: git repo op de server maken

Log via SSH in op je server.

ssh user@servername.domain.com

Er wordt om je wachtwoord gevraagd. Vul dit in.

Je ziet het welkombericht van je server

Linux chroom 2.6.18-domu #6 SMP Mon Feb 11 10:20:19 CET 2008 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun  9 14:37:31 2009 from d51530512.access.telenet.be

Maak in je homedir een nieuwe directory aan

$ mkdir git_test.git

En verander je directory daarnaar:

$ cd git_test.git

Dan maak je daar een git repository zonder work tree:

$ git init --bare

Je krijgt een success message:

Initialized empty Git repository in /path

Voor de volgende stappen veronderstel ik dat je directory structuur er zo uitziet:

~
    default_www
    git_test.git

Je hebt (1) een map die default_www heet en die ingesteld is als de DocumentRoot van je website en (2) een andere folder die een “bare” git repo bevat buiten je DocumentRoot.

Deze git repository op onze server heeft geen working tree. Om ons doel te bereiken moeten we nog een aantal zaken instellen in de git config van deze repo.

Verander je directory naar de git_test.git directory als je er nog niet bent:

$ cd git_test.git

De eerste instelling is waar je DocumentRoot juist staat, in dit geval dus:

git config core.worktree /home/accountname/default_www

Dan

$ git config core.bare false

en

$ git config receive.denycurrentbranch ignore

Daarna definiëren we een “post-receive” hook, hierin staat wat git moet doen nadat er gepusht wordt.

Open de file hooks/post-receive met een text editor in je terminal:

$ pico hooks/post-receive

En we maken post-receive executable met chmod:

$ chmod +x hooks/post-receive

Goed.

3. Lokale git repo naar server repo pointen

Terug op onze lokale computer cd’en we naar onze test git repo:

wolf@wolf:~> cd git_test

Daar voegen we een remote locatie toe:

wolf@wolf:~> git remote add to_web ssh://user@name.of.server.com/path/to/git_test.git

(vul het path in naar de plaats waar je de folder git_test.git hebt aangemaakt)

Dan pushen we de master branch naar onze remote locatie:

wolf@wolf:~> git push to_web +master:refs/heads/master

(Er wordt gevraagd om je wachtwoord tenzij je je SSH keys gebruikt)

Afhankelijk van de grootte van de website kan dit even duren.

En vanaf dan kan je je website updaten met het simpele commando:

wolf@wolf:~> git push to_web

Bekijk je website en als alles goed gegaan staat je

Hoera! Nooit meer de FTP client openen!

(Ik heb dit oorspronkelijk geleerd van dit artikel, alle credits dus naar meneer Abhijit Menon-Sen. Voor meer gedetailleerde info, bvb. waarom je de commands core.bare false en receive.denycurrentbranch ignore in je config moet steken, kan je best daar terecht)

3 reacties op “Websites updaten met git”


Reacties gesloten

Het is niet meer mogelijk om reacties te geven op dit bericht. Na plaatsing is het gedurende 2 weken mogelijk om te reageren. Dit om de kwaliteit van de uiteindelijke post hoog te houden en spam tegen te gaan. Mocht je toch nog (persoonlijk) willen reageren, zie de contactpagina.