Sto ancora giocherellando con Pelican e cercavo un modo per committare i nuovi post UNA volta sola, senza dover committare una seconda volta gli html generati.
Ci sono riuscito abbastanza facilmente, ecco come:
Prerequisiti:
Cominciamo:
Setup dell'ambiente
Apriamo una shell e scriviamo
pip install virtualenvwrapper
mkvirtualenv pelican
pip install pelican markdown
e dovremmo avere un virtualenv con pelican pronto all'installazione.
God bless virtualenvwrapper
Ora creaimo la cartella dove installeremo pelican:
mkdir pelican
cd pelican
pelican-quickstart
a sto punto partirà l'installazione vera e propria, rispondete a tutte le domande ed è fatta.
Deploy su GitHub
Su GitHub creiamo due nuovi repository con nome username.github.io e username.github.io-source, (dove username è chiaramente il vostro username di github).
Quello "-source" potete chiamarlo come vi pare.
Ora linkiamo il "-source" alla folder nella quale abbiamo appena installato pelican e committiamo tutto
git init
echo "output" > .gitignore
git remote add origin git@github.com:username/username.github.io-source.git
dopodichè creiamo un submodule nella cartella output con
git submodule add -f git@github.com:username/username.github.io.git output
a questo punto entriamo nella folder .git\hooks e creiamo il "trigger" che rigenererà il sito ad ogni push e committerà i file statici sul repository html
creiamo quindi un nuovo file "pre-push"
#!/bin/sh
cd output
git fetch --all
find * -maxdepth 0 -name '.git' -prune -o -exec rm -rf '{}' ';'
cd ..
pelican content -s publishconf.py
cd output
git add --all .
git commit -am "automatic commit"
git push origin master
exit 0
adesso, tornando nella root di pelican potremmo fare
git add .
git commit -am "hello pelican"
git push origin master
e se tutto è ok, dovrebbe partire da sola la seconda commit/push sul repository statico!
Comments !