Frage

Wenn ich einen Klon eines Git Repository als Cache-Kopie auf einem Remote-Server für Capistrano / vlad Stil Einsatz haben, ist es besser, A zu tun)

git archive --format=tar origin/master | (cd #{destination} && tar xf -)

oder B)

cp -R cached-copy #{destination} && rm -Rf #{destination}/.git

Um zu klären, das Repository bereits auf dem Remote-Server ist, und ich möchte nur eine bestimmte Version zu einem Veröffentlichung Verzeichnis auf demselben Server bei der Bereitstellung kopieren.

War es hilfreich?

Lösung

Ich würde sagen, eigentlich

rsync -avP /local/repo/* server:/remote/repo

Das funktioniert, solange es auf OK ist überspringen alle Punkt-Dateien im Repo, nicht nur .git. Wenn Sie überspringen wollen nur .git dann werden Sie die -f Option benötigen und die Manpage.

Ich liebe rsync . Funktioniert prima und die meiste Zeit können Sie es verwenden, wie Sie scp verwenden würde!

Andere Tipps

A)

Sie speichern die Netzwerk-Overhead die .git Verzeichnis übertragen, die möglicherweise sehr groß sein könnte, je nachdem, wie viel Geschichte und Objekte im aktuellen HEAD nicht.

Wenn Sie jemals eine tatsächliche Git Repository auf dem entfernten Ende haben wollte bist du besser dran zu einem echten Repository schieben und nur die Deltas zu ändern.

Weder!

Ein besserer Weg, dies zu tun ist:

  • git fetch Cache
  • Klonen, den Cache zu Ihrem aktuellen Verzeichnis (mit den --no-checkout Optionen aktiviert)
  • Kasse commit Sie wollen.

Wenn Sie einen lokalen Klon tun Git verwendet Hardlinks. Das heißt, bis Sie eine Datei ändern, die Sie nicht, Sie 1.000 Installationen haben und verwenden können (fast) nur den Raum, den Sie für einen brauchen würde. Auf diese Weise wird alot auch schneller Archivierung oder rsync.

Auch jemand schon geschrieben, damit Sie Ihren Code hat.

vigetlab des capistrano_rsync_with_remote_cache

Ich benutze dies mit Subversion und es funktioniert gut für mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top