Till att börja med skapar vi en bare repository på servern som vi kommer att pusha ändringarna till.
$ cd ~
$ mkdir homepage
$ git init --bare homepageInitialized empty Git repository in /home/user/homepage/
Vi har nu ett tomt projekt som vi kommer att pusha nya versioner till som då automatiskt kommer att läggas upp i katalogen för hemsidan med hjälp post-receive kroken i git. I katalogen finns nu en del kataloger, bland annat hooks i vilken scripten läggs som ska köras. vi skapar nu en fil post-receive i vilken vi anger koden som ska köras. Jag använder joe för att redigera filen, men det går bra med vilken texteditor som helst.
$ cd homepage/hooks
$ joe post-receiveI filen skriver nu följande.
Uppdatering. den ursprungliga versionen initierade inte submodulerna tydligen, vidare skippade den även eventuella submoduler till submodulerna. För att lösa det så har jag lagt till --init --recursive.
#!/bin/bash
export GIT_WORK_TREE=/var/www/homepage
git checkout -f master
cd /var/www/homepage
git --git-dir /home/user/homepage/ --work-tree=. submodule update --init --recursiveFilen gör vi nu exekverbar så att den kan köras.
chmod +x post-receiveNu kommer hemsidan automatiskt att updateras när vi pushar till den här.
På arbetsdatorn lägger vi nu upp den här som en remote repository så att vi kan pusha till den.
$ cd /home/user/myproject/
$ git remote add production ssh://user@host:/home/user/homepageNu ska allting uppdateras på servern automatiskt, inklusive submodulerna i git, när vi gör en git push production.
Man kan också uppdatera flera servrar samtidigt genom att lägga till dem under samma remote i config filen för git.
$ cd .git
$ joe configleta upp upp raden med din remote, i det här fallet heter den production.
[remote "production"]
url = ssh://user@host:/home/user/homepage
Lägg till en rad med adressen till den andra servern, så det ser som nedanstående.
[remote "production"]
url = ssh://user@host:/home/user/homepage
url = ssh://user@host2:/home/user/homepageNästa gång du gör en push mot production så kommer nu båda servarna att uppdateras.