3

私はWebサイトを開発しており、自分のラップトップを開発サーバーとして使用し、オンラインサーバーを本番サーバーとして使用しています。そして、私はgitを使用してプロジェクトを管理しています。

以前にherokuを使用したことがありますが、単純に使用してWebサイトを公開するのgit push heroku masterは本当にクールだと思うので、自分で作成する予定です。

これが私が行ったことです。本番サーバーでgitをセットアップし(アクセスを管理するためにgitosisを使用)、gitリポジトリでgit remote add git@production:myrepo.gitgitリポジトリのリモートを追加していました。

問題は、本番サーバーでコードを取得する方法です。本番サーバーはgitサーバーとして機能するため、実際のコードではなく.gitフォルダーしか取得できません。本番サーバーでデータのクローンを作成するためのトリックを考えましたgit clone --local myrepo.git myrepo。myrepo.gitのhooks/フォルダーで、post-receive次のようにファイルを編集しました。

#!/bin/sh
touch /tmp/do-we-got-here
cd /path/to/clone/myrepo
/usr/bin/git pull

を使用した後git push production masterdo-we-got-hereファイルが作成されたので、受信後のフックが機能git pullしていることがわかりますが、myrepoフォルダーに移動して使用すると、パーツは機能しませんgit pull。それでもmyrepo.gitからプルしています。

だから私はこれをどのように処理するのか疑問に思っていますか?herokuのようなホスティングサイトが機能しているので、これが可能であることを私は知っています!しかし、質問はどのようにですか?

4

1 に答える 1

4

私も同様の問題を抱えていました、これが私を助けたものです。

#!/bin/sh
touch /tmp/do-we-got-here
cd /path/to/clone/myrepo
unset GIT_DIR
git pull

gitフックを実行すると、GIT_DIRが設定されます。つまり、プルは、変更したディレクトリの2番目のリポジトリでは実行されません。

于 2013-03-15T14:50:18.653 に答える