Wie erzwinge ich gitdas Ausführen eines post-receiveHooks auf einem Server, auch wenn ich kein neues Commit zum Pushen habe?
Hintergrund
Ich verwende git, um eine Website automatisch auf einem Server bereitzustellen. Ich habe ein nacktes Repo in einem geschützten Bereich des Servers und einen post-receiveHook, der den Inhalt auscheckt und bestimmte Dateien systematisch in einen public_htmlOrdner kopiert . (Inspiriert von diesem Tutorial )
Ich hatte es satt, den post-receiveHook manuell auf dem Server zu ändern, sodass mein post-receiveHook jetzt tatsächlich eine neue Version von sich selbst aus dem Repo kopiert:
#!/bin/sh
rm -rf ~/../protected/*
GIT_WORK_TREE=~/../protected git checkout -f
# Rewrite over this file with any updates from the post-receive file
cp ~/../protected/post-receive hooks/post-receive
# Delete public_html
# Copy stuff public_html
Das Problem ist natürlich, dass der neue post-receiveHook nie ausgeführt wird. Eine scheinbar einfache Lösung wäre lediglich, erneut zu pushen, aber jetzt ist bereits alles auf dem neuesten Stand. Dies ist ärgerlich, da ich jedes Mal, wenn ich den post-receiveHook aktualisiere, ein neues Commit vortäuschen muss . Gibt es eine Möglichkeit, den post-receiveHook aufzurufen , ohne ein Commit vorzutäuschen oder sich ssheinzumischen?
Was ich versucht habe
git push
git push -f
checkout -fist, benutze ichrm -rf ~/repo.git/refs/heads/master. Dadurch wird der Hauptzweig gelöscht und jedes Mal ein Push ermöglicht.