私のPCから本番サーバーでgitコマンドを起動したいと思います。本番アプリケーションのドキュメントルートは、gitリポジトリのクローンです。
製品版では、sites/all/drush/drushrc.phpに次の行を追加しました。
<?php
// Drush aliases
$options['Shell-aliases']['git-status'] = '!git status';
本番環境にログインして「git status」を実行すると、すべてが動作します。
実行しようとすると、私のPCから "drush @ mysite.prod git-status"取得します:
fatal: Not a git repository (or any of the parent directories): .git
Command git status failed.
「drush @ mysite.local git-status」を実行しようとすると、機能します(そして、私のローカルコピーは本番コピーのようであり、ドキュメントルートはgitリポジトリのクローンです)。
どうしましたか?私のエイリアスで宣言されたドキュメントルートディレクトリは正しく(他の一般的なDrushコマンドが機能します)、gitリポジトリのチェックアウトです。
ありがとう。
これは、Drushの6.xブランチとmasterブランチの両方、および6.2.0リリースでうまく機能します。したがって、最初のステップは最新バージョンで試して、それが機能するかどうかを確認することです。それでも問題が解決しない場合は、-vフラグを使用してコマンドを再度実行し、より詳細な出力を取得してください。次のようなものが表示されます。
_$ drush -v @mysite.prod git-status
Loaded alias @server.xxxxxxxxxxx from file [notice]
/home/ga/local/config/drush-aliases/server.aliases.drushrc.php
Loaded alias @mysite.prod from file [notice]
/home/ga/local/config/drush-aliases/mysite.aliases.drushrc.php
Include /home/ga/local/drupal/drush_extensions [notice]
Include /home/ga/.drush [notice]
Calling proc_open(ssh -o PasswordAuthentication=no [email protected] 'cd /srv/www/myserver.com/htdocs && git status');
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ../xxxxx.txt
nothing added to commit but untracked files present (use "git add" to track)
Command dispatch complete [notice]
_
シェルから "proc_open(...)
"内でコマンドを実行してみて、同じように動作するかどうかを確認してください。正しく機能するまでsshオプションを調整します。次に、_$options['ssh-options']
_を設定して調整します。
注:
Shellエイリアスを定義せずにこのようなことをしたい場合は、以下も機能するはずです。
_drush @mysite.prod ssh git status
_