web-dev-qa-db-ja.com

ssh://[email protected]/~/bar.com.gitにプッシュした後、〜/ bar.comに移動してgit pullを実行するようにGitフックを設定する方法は?

リモートサーバーにセットアップすることを勧められました

foo.com/~/bar.com       # live webpage content
foo.com/~/bar.com.git   # a bare repo

だから、私のローカルマシンから、私はすることができます

git Push

リモートマシン上のfoo.com/~/bar.com.gitにプッシュされます(フルパスはssh://[email protected]/~/bar.com.gitです

hookを追加して、プッシュ後にリモートサーバーがcd ~/bar.comを実行し、すべてのコンテンツが更新されるようにgit pullを実行する方法ローカルマシン)? (Mercurialのようにgit updateを実行する必要はありませんか?)

(これは サーバー上のフォルダーをgit cloneしてから編集してgit pushできませんか? 現在、foo.comcd ~/bar.comにsshして、そこから待機して、ローカルからgit pullを実行した後はいつでもgit Pushを実行できますマシン、しかしそれが自動的に行われるのは良いことです)

更新:特定の詳細とその方法を知っている場合にのみ回答を投稿してください。ここでグーグルで検索して、最初または2番目のグーグルの結果を投稿しても、助けにはなりません。

Update 2~/bar.com.git/hooksにアクセスし、コンテンツを含む新しいファイルpost-receiveを追加しました:

#!/bin/bash

cd ~/bar.com
git pull ../bar.com.git master

また、chmod 755 post-receive、ローカルマシン上のファイルを編集し、git com -m "ok"およびgit Pushを編集しても、リモートマシンのフォルダー~/bar.comに変更が加えられません。

37

このためにpost-receiveリポジトリに ~/bar.com.git フックを追加できます。これを行うには、~/bar.com.git/hooks/ディレクトリにコンテンツを含む実行可能ファイルpost-receiveを追加します。

#!/bin/sh

unset $(git rev-parse --local-env-vars)
cd ~/bar.com
git pull

確認してくださいpost-receiveファイルには実行可能ビット(755など)があります。

これで、何かが~/bar.com.gitリポジトリにプッシュされるたびに、~/bar.comリポジトリが自動的に更新されます。

こちらもご覧ください

一部の環境変数を設定解除する必要がある理由を理解するため。

56
Frank S. Thomas

次のpost-updateスクリプトを使用します(必ず実行可能ビットを設定してください):

#!/bin/sh
rm -rf ~/public_html/xxx
git-archive --format=tar --prefix=xxx master | tar x -C ~/public_html

それはそれを行いますが、サイトが利用できない場合、短いウィンドウがあります。 git pull~/bar.comで直接実行すると、gitの.gitディレクトリが公開されるため、httpサーバーでそれをブロックするか、.gitをディレクトリ階層の上位に保持してください。 。何かのようなもの:

~
 \
  - repo
    \
     - .git
     - bar.com
       \
        - your content
1
wolf