4

capistrano/vlad スタイルのデプロイ用のリモート サーバーにキャッシュされたコピーとして git リポジトリのクローンがある場合、A) を実行する方が良いですか?

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

または B)

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

明確にするために、リポジトリは既にリモートサーバーにあり、展開中に特定のバージョンを同じサーバーのリリースディレクトリにコピーしたいだけです。

4

4 に答える 4

8

私は実際に言うだろう

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

これ.git. スキップしたい場合 、オプションとマニュアルページ.gitが必要です。-f

rsyncが大好きです。うまく機能し、ほとんどの場合、scp を使用するのと同じように使用できます。

于 2008-12-17T05:10:59.483 に答える
3

A)

現在の HEAD にない履歴とオブジェクトの量によっては、.git ディレクトリを転送するネットワーク オーバーヘッドを節約できます。

リモート エンドに実際の git リポジトリが必要な場合は、実際のリポジトリにプッシュし、デルタを変更するだけで済みます。

于 2008-12-17T04:51:16.883 に答える
2

また、誰かがすでにあなたのコードを書いているかもしれません。

vigetlabのcapistrano_rsync_with_remote_cache

私はこれを Subversion で使用していますが、うまく機能します。

于 2008-12-17T04:53:54.540 に答える