Wie erstelle ich einen Cron-Job, der meine Projektänderungen wöchentlich an Git überträgt?

8

Ich verwende git, um eine historische Abschrift der an meinem Projekt vorgenommenen Änderungen zu erstellen. Ich verstehe, dass es nicht die ideale Verwendung ist, aber es ist das Verwendungsmuster, das ich aus verschiedenen Gründen gewählt habe, auf das ich der Kürze halber nicht eingehen werde.

Wie würde ich einen Cron-Job erstellen, der die Änderungen jeden Tag oder jede Woche in das Repository überträgt?

Ich verwende die neueste Version von Git unter Ubuntu 10.10.

Jason
quelle

Antworten:

9
0 20 * * 0 /path_to_script

Dadurch wird der angegebene Befehl (Ersetzen /path_to_script') jeden Sonntag um 20:00 Uhr Ortszeit ausgeführt. Die Syntax für Cron-Jobs ist recht einfach, und es gibt ein cleveres Tool , mit dem Sie sie erstellen können, ohne sich an die Codepositionen zu erinnern.

In diesem Fall sollte der Befehl ein Skript sein, das das Commit für Sie ausführt. Ich denke, es wäre in Ihrem Fall am einfachsten, ein schnelles Shell-Skript zu schreiben, um in das Klonverzeichnis zu wechseln und dann das Commit auszuführen. Erstellen Sie eine Datei unter ~/commit.shund legen Sie diese darin ab ( /location/of/clonenatürlich ersetzen )


#!/bin/sh
cd /location/of/clone
git-commit -m "commit message, to avoid being prompted interactively"

Dann chmod +x ~/commit.sh, um es ausführbar zu machen und den Cron-Job ausführen zu lassen (unter Bezugnahme auf den vollständigen Pfad, anstatt ihn zu verwenden ~).

jcrawfordor
quelle
Gute Antwort. Beachten Sie, dass der Cronjob (offensichtlich) nur ausgeführt wird, wenn Ihr Computer zur angegebenen Zeit (z. B. Sonntag, 20:00 Uhr) ausgeführt wird.
Pableu
Wie kann ich dafür sorgen, dass der Push auch auf den Server übertragen wird?
Jason
Und wie mache ich es, Dateien hinzuzufügen, die ich hinzugefügt habe
Jason
Fügen Sie dem Skript einfach git-push hinzu, damit es auch auf den Server übertragen wird. Sie können die Option -a für git-commit verwenden, damit automatisch alle Dateien hinzugefügt werden, die geändert oder gelöscht wurden.
Jcrawfordor
1
Möchten Sie -adem Commit-Befehl kein a hinzufügen , damit automatisch alle Dateien hinzugefügt werden, die bereits im Staging-Bereich verfolgt wurden?
Dror
2

Führen Sie aus crontab -e, um Ihren Benutzer cronjob zu bearbeiten, und fügen Sie diese Zeile ein:

0 20 * * 0 (cd /path/to/myproject && git add . && git commit -m "Automatic Commit" && git push)

Natürlich müssen Sie Ihr GIT-Repo einschließlich eines funktionierenden Remote-Repositorys einrichten, aber das ist nicht Gegenstand dieser Frage.

Sprecher
quelle