Webseiten einfacher aktualisieren mit Mercurial und lftp

-> Webseiten auf den FTP-Server laden wird einfach "hg push".

Ich schreibe seit langem eigene Webseiten, und die Notwendigkeit, sie jedesmal von Hand auf den Server hochzuladen, wenn ich etwas geändert hatte, war mir seit Jahren ein Dorn im Auge.

Vor kurzem habe ich nun angefangen, die Webseiten mit Mercurial als Versionsverwaltung zu bearbeiten, und Mercurial hat eine sehr praktische Funktion: Hooks (also Anker).

Damit kann ich einen Befehl ausführen, wenn ich in meiner Versionsverwaltung eine bestimmte Handlung ausführe.

Ich verwende sie, um meine Webseiten direkt auf den FTP-Server zu kopieren, sobald ich Änderungen in Mercurial "push"e.

Das heißt, sobald ich eine Webseite so weit aktualisiert habe, dass ich sie veröffentlichen will, gehe ich nur kurz in die Konsole und tippe

hg push

und schon landet meine Webseite automatisch aktualisiert auf meinem FTP-Server.

Und wenn ich nichts geändert habe, merkt Mercurial das und ruft den FTP nichtmal auf.

Damit es auch bei euch funktioniert, braucht ihr nur Mercurial und lftp. Ich bin mir sicher, es geht auch ohne lftp, aber damit geht es bei mir gut, und es war schnell installiert. Warum sollte ich mir die Arbeit machen, wenn es andere schon für mich gemacht haben?

-> Mercurial: http://www.selenic.com/mercurial/
-> lftp: http://linux.maruhn.com/sec/lftp.html

Danach müsst ihr nur noch das folgende in hgrc im Repository der Webseite eintragen (in ".hg/hgrc" - Zeilen, die mit "#" anfangen, sind Kommentare):

default-push müsst ihr noch für euch anpassen. Bei mir nimmt es mein Mercurial repo auf freehg.org

------ ------ Datei ------ ------
[paths]
# default-push = http://USER:PASSWORD@freehg.org/u/ArneBab/erynnia/

[hooks]
# Update my website automatically when I push the repo.
# Explanations: lftp -c 'COMMAND'
# COMMAND:
# open CMD -u USER,PASSWORD FTP_SERVER
# CMD:
# -R: Reverse -> local_source remote_source
# -X GLOB: Glob: Shell-style -< exclude the .hg dir

outgoing = lftp -c 'open -e "mirror -R -X .hg/ ABSOLUTER_PFAD_LOKAL RELATIVER_PFAD_FTP" -u USER,PASS ftp://FTP_SERVER '

------ ------ /Datei ------ ------

Und schon ist es nur noch "hg push", um die Webseiten zu aktualisieren.

Und es wird nur hochgeladen, was sich geändert hat (dank lftp).

Effektiv ist das ein "push content to FTP" mit Mercurial.

Viel Spaß!

PS: Wenn du Webseiten mit noch weniger Aufwand basteln willst, kannst du deine Webseiten auch mit pyMarkdown_Minisite schreiben, einem Projekt, das ich gestartet habe, weil ich nicht alles in HTML kodieren und trotzdem einfache und schön aussehende Webseiten haben wollte. Die Technik in diesem Artikel nutze ich dabei zum automatischen hochladen der Seiten.

Darstellungsoptionen

Wählen Sie hier Ihre bevorzugte Anzeigeart für Kommentare und klicken Sie auf „Einstellungen speichern“ um die Änderungen zu übernehmen.

danke für den Tip

erspart mir einiges hin und her schieben ;)

Gern geschehen :)

Für mich hat es bewirkt, dass mir jetzt die Arbeit an statischen seiten wieder Spaß macht :)

Ich bin allerdings sicher, dass das noch viel sauberer geht (z.B. nur die Dateien hochladen, die sich geändert haben (info z.B. aus hg outgoing) o.ä.).

Vielleicht gibt's dazu ja irgendwann mal ein Modul. :)

Nebenbei: Danke für die Rückmeldung!
--
Unpolitisch sein
heißt politisch sein
ohne es zu merken
- Arne Babenhauserheide

Inhalt abgleichen
Willkommen im Weltenwald!



Beliebte Inhalte

sn.1w6.org news