0

シェル アクセスを使用して gitolite をセットアップし、Capistrano を使用してコードを運用環境にデプロイしました。問題は、Capistrano が改行を使用して複数のコマンドを 1 行にまとめており、gitolite には改行を探すセキュリティ チェックがあり、停止することです。カピストラーノ側とギトライト側のどちらから取り組むべきかわかりません。

「cap deploy」を実行すると、このエラーが表示されます

executing "rm -rf /home/git/public_html/project/releases/20101129165633/log   
/home/git/public_html/project/releases/20101129165633/public/system 
/home/git/public_html/project/releases/20101129165633/tmp/pids &&\\\n
  mkdir -p /home/git/public_html/project/releases/20101129165633/public &&\\\n  
  mkdir -p /home/git/public_html/project/releases/20101129165633/tmp &&\\\n      ln -s /home/git/public_html/project/shared/log /home/git/public_html/project/releases/20101129165633/log &&\\\n      ln -s /home/git/public_html/project/shared/system /home/git/public_html/project/releases/20101129165633/public/system &&\\\n      ln -s /home/git/public_html/project/shared/pids /home/git/public_html/project/releases/20101129165633/tmp/pids"
servers: ["projectsite.com"]
[projectsite.com] executing command

エラーメッセージ:

** [out :: projectsite.com] I don't like newlines in the command: <COMMAND FROM ABOVE>

これを処理する gitolite コードはこちら: https://github.com/sitaramc/gitolite/blob/pu/src/gl-auth-command

4

1 に答える 1

4

あなたはおそらくこれまでにこれを理解していましたが、これに対する答えが見られないのは悲しいことです.

改行の代わりに、複数のコマンドを"; ". デプロイ スクリプトの例を次に示します。

role :server, "projectsite.com"
namespace :deploy do
    desc "Does whatever beeudoublez wants"
    task :default, :roles => :server, :except => { :no_release => true } do
        run [ "rm -rf /home/git/public_html/project/releases/20101129165633/log /home/git/public_html/project/releases/20101129165633/public/system /home/git/public_html/project/releases/20101129165633/tmp/pids",
              "mkdir -p /home/git/public_html/project/releases/20101129165633/public",
              "mkdir -p /home/git/public_html/project/releases/20101129165633/public"].join("; ")
    end
end
于 2012-05-26T03:25:49.177 に答える