【Xserver】SourceTreeでプッシュするとファイルが更新される環境を作ってみる

前回からの続きです。

Xserver に Git さんが居ることがわかったので、今回はちゃんと、ベアリポジトリを作って、SourceTree から操作しよう!サイトのファイル更新も SourceTree からやってみよう!の回ですm(_ _)m

ベアリポジトリとは、HEADを持たない、いわゆるリモートリポジトリのことです。GitHub や GitLab で動いているリポジトリが、ベアリポジトリです。
逆に、HEADを持っている(作業ファイルを監視している)ノンベアリポジトリがローカルリポジトリです。

Xserver にベアリポジトリとノンベアリポジトリの2つを用意することで、Git でのファイル更新ができるようになります。

SSH接続を簡略化する

SSH についてですが、前回はスルーしてしまいましたが、ターミナルから毎回ログインコマンドを打つのも大変なので、config ファイルを作成します。

vi ~/.ssh/config
Host 【好きな認識名】
    HostName 【ホスト名】
    User 【アカウント名】
    IdentityFile 【秘密キーのパス】
    Port 10022
    TCPKeepAlive yes
    IdentitiesOnly yes

記入できたら、:wq で保存終了します。忘れずに読み込み権限も付与します。

chmod 600 ~/.ssh/config

これで簡単にSSH接続ができるようになりました。

ssh 【好きな認識名】

サーバーにベアリポジトリとノンベアリポジトリを用意する

それでは、サーバーにまずベアリポジトリを用意します。
ディレクトリ構成は下記の想定です。

/demo.git .gitとしていますが、ディレクトリです。ベアリポジトリが入ります。
/demo ファイルの更新ができるディレクトリです。ノンベアリポジトリが入ります。

ベアリポジトリ用のディレクトリを作ります。cd でディレクトリを作りたい好きな場所に移動してください。mkdir でディレクトリを作ります。

cd 【ディレクトリを作りたい好きな場所へ】
mkdir demo.git

作成したディレクトリに移動してベアリポジトリを作ります。

cd demo.git
git init --bare

続いて、ノンベアリポジトリを生成します。

git clone 【/homeから始まるディレクトリのフルパス】demo.git/ 【/homeから始まるディレクトリのフルパス】demo/

SourceTree の設定

ベアリポジトリとノンベアリポジトリの用意ができたので、SourceTree の設定もします。
新規ボタンから「URLからクローン」を選択します。
ソースURLに、SSHの認識名に続けてdemo.gitのフルパスを入力します。
秘密キーのパスワードを聞かれたら入力してください。保存先のパス、名前はお好きに設定ください。

ssh://【configで設定した認識名】【/homeから始まるディレクトリのフルパス】demo.git

SourceTree の準備ができましたので、適当に index.html を作ってプッシュします。

ファイルが更新されるか確認します。cd で demo ディレクトリに移動し、git pull します。

cd demo
git pull

ブラウザで、/demo/index.html が確認できれば成功です!

git pull を自動化する

git pullを自動化し、SourceTree からのプッシュのみでサーバーのファイルが更新されるようにします。

demo.git ディレクトリ内にある hooks ディレクトリに移動します。

cd demo.git/hooks

post-updateというファイルを生成します。

vi post-update

実行文を記入します。終わったら :wq で保存終了します。

#!/bin/sh
cd 【/homeから始まるディレクトリのフルパス】demo
git --git-dir=.git pull

実行権限も付与します。

chmod a+x post-update

ローカルの index.html を変更し、プッシュします。

ブラウザから /demo/index.html が変更されているか確認してみましょう( ´ ▽ ` )ノ

どうしてベアリポジトリとノンベアリポジトリの2つが必要なの?

ベアリポジトリは実際のファイルを持っていないので、ファイルの更新をするには、実際のファイルを持つノンベアリポジトリの力も必要だからです…!