Die Bereitstellung von nur geänderte Teil einer website mit git-ftp (svn2web für git)
Ich habe eine website mit vielen großen Bilder-Datei. Die Quelle (auch der Bilder) ist gepflegt mit git. Ich Wünsche bereitstellen, die per ftp auf einen bluehost-wie Billig server.
Will ich nicht implementieren Sie alle der website (so dass ich nicht zum hochladen zu viele unveränderte Dateien über und über), aber zu tun, etwa die folgenden:
- In einem git-repository, markieren Sie die zuletzt bereitgestellte Version mit einem tag "bereitgestellt".
- Wenn ich sage "bereitstellen revision X", finden Sie heraus, welche Dateien sich geändert hat zwischen Version X und revision tagged as bereitstellen, und laden Sie nur diese.
Ähnlich ist es im Geist zu svn2web. Aber ich möchte, dass für DVCS. Mercurial alternative angesehen werden.
Es ist ein ziemlich einfaches Skript zu schreiben, aber ich möchte lieber nicht das Rad neu erfinden, wenn es etwas ähnliches Skript auf dem web.
Capistrano und fab scheint zu wissen, nur wie Sie schieben die ganze revision, in Ihre SCM-integration. Also ich glaube nicht, dass ich Sie derzeit verwendet werden.
- Ein nettes tool, das nicht scm verwandten, aber hat eine ähnliche Arbeit, durch die Zwischenspeicherung der ftp-site, sate, und drücken Sie ihn, bis nur noch geänderte Dateien, ist weex.sf.net
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den git-ftp Skript könnte das sein, was du suchst. Es nimmt die änderungen der lokalen git-repository und Synchronisierung Sie zu einem remote-git-repo über ftp.
Habe ich es durch das hosten von git-repo erstellt, mit den --bare option. Legen Sie es auf meinen ftp-server.
als lief ./git-ftp.py. Sie werden aufgefordert, ftp-Benutzername, Passwort, ftp-host, lokalen git repo-Pfad, remote-git-repo-path (Speicherort der bare-repository).
Dann verbindet es sich mit dem ftp-git-repo und sendet dann die diffs allein. (es verwendet das git-python-Bibliothek zu bekommen, dass die info benötigt).
Das Skript hat einige Probleme. Es scheint Eingabeaufforderung für Benutzername details immer und musste ich auskommentieren, Zeile 68.
Aber diese Dinge kann leicht behoben werden.
Alternative
Wenn Sie auf nix-Plattform eine alternative ist die Nutzung curlftpfs. Es wird montieren Sie Ihr ftp-Konto, da sich ein Geräte-Verzeichnis aus, die Sie tun können, alle normalen git-Operationen (push, pull). Natürlich ist diese Lösung ain ' T git-spezifisch.
Müssen Sie mit dem nackten option, wie oben erwähnt, auf die repo gemeinsam auf FTP-als auch ausgeführt werden
git update-server-info innerhalb der repo, bevor Sie teilen es über FTP.
Vorsicht: Dies ist nicht eine gute Idee, wenn Sie planen, mehrere Benutzer zu schreiben, um Ihre git-repo. Als FTP hat keinen Mechanismus, um Zugang SPERREN. Sie werden am Ende mit einer korrupten repo. Testen Sie vor der Einnahme Produktion.
Ich habe ein Skript namens git-Bereitstellung, hoffe es hilft.
Können Sie speichern die neueste bereitgestellt revision irgendwo in einer Datei, dann können Sie einfach die Namen der geänderten Dateien:
Ersetzen Sie es mit dem nach sha-1-codes, oder die $neuesten werden kann, "master", zum Beispiel.
Andere Möglichkeit wäre die Verwendung von
git archive
.Natürlich, wie erwähnt, von Joey in seinem "
git archive
als Distribution-package-format":Mehr details in der header dieses perl-Skript pristine-tar.
Sie könnte genauso gut verwenden wput (wput --timestamping --reupload --dont-weiter) - wie wget nur für ftp-Upload
Kleinen BASH-Lösung für Mercurial: hg-bereitstellen
Den Befehl
git-ftp push
ausgit-ftp
scheint ganz gut zu funktionieren.Installieren Sie es
Nach der Installation konfigurieren Sie Ihr ftp-Konto
Dann tun Sie es zum ersten mal
Und dann für jede änderung, die Sie gerade brauchen,
Werden die Dateien hochgeladen, um die Benutzer-home -
~/
Verzeichnis.