0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git pull でデプロイする時ハマったこと

Posted at

そろそろバージョン管理の必要性を感じ、Git学習中なのですが、git pullでデプロイする環境を作るにあたって、理解不足でハマったため、今後のためにメモしておきます^^;
実際の作業はリンク先参照。

#git pullでデプロイとは?

すでに多くの記事がありますが、ローカル環境から、リモート環境へpushした際、Web環境等へコンテンツやスクリプトを自動的にpushし配置するための仕組みを言っています。
一般的には以下の手順で行うようです。

  1. コンテンツやスクリプトの配置領域をgit initで working tree 化する(今回コンテンツ用リポジトリと呼びます)
  2. 非公開領域にgit clone --bare --sharedでベアリポジトリを作成(今回管理用リポジトリと呼びます)
  3. 管理用リポジトリのフック(hooks)に post-receive を作成し、実行権限を付与
  4. ローカル環境からpushし、コンテンツ用リポジトリに意図通り反映されていれば完成

最終的に参考にしたのはこちらのサイトでした。ありがとう^^
ベアリポジトリとノンベアリポジトリ:理論編〜GitでWordpressのテーマを管理
ベアリポジトリとノンベアリポジトリ:実践編〜GitでWordPressのテーマを管理

#ハマったトコロ
いろんな情報に左右されながら、作業したため、かなり時間がかかってしまいました。Gitの挙動と問題解決方法を理解していなかったのが致命的でした。

  • コンテンツ用リポジトリに更新が反映されない(post-receive 編)

原因は2点。post-receive に実行権限がなかったのと、post-receive 内の挙動でコンテンツ用リポジトリのディレクトリに移動後、git コマンドがうまく動作しなかったことが原因でした。

前者は実行権限を与えることで解消。post-receive の挙動の切り分け方法が分からず、原始的な方法(実行コマンドを echo 'aaa' > ~/test.txt に差し替え)で切り分けしました。ログとかってどこに出るんだろ。。。

後者は git コマンド実行前にunset GIT_DIRを入れることで解消。コマンドラインからの入力の場合、正常に動作していたため、unset GIT_DIRの情報にたどり着くまで、結構悩みました。

  • コンテンツ用リポジトリに更新が反映されない(ケアレスミス編)

切り分けの途中で、コンテンツ用リポジトリ側のファイルを更新してしまっていたため、pullがうまく動作していませんでした。ケアレスミスですね^^;全然気が付かず、かなり時間をかけてしまいました。。。

課題

Gitの根底の理解が出来ていないので、ちゃんと時間を取って、学習する必要がありそうです。
特に挙動を追うための手段があるのかないのかもわかっていないので、そこからかなぁ。

最近物覚えが悪く、同じことでつまずくので、ハマったシリーズでも作ろうかと思ってます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?