私は、Gitosis (Debian Lenny) を使用して Web アプリケーションを開発しています。これを別のリモート リポジトリ/場所にプッシュできるようにしたいので、アプリケーションの「最先端」、「リリース候補」、および「本番」バージョンを使用できます。ミラー化された物理 Web ディレクトリとコードベース。各ディレクトリにアプリケーションのブランチが必要です。つまり、1 つのリポジトリ、3 つの「ライブ」バージョンです。
私はGitを初めて使用するので、おそらくより良い解決策がありますが、これまでに思いついたのは、フックをブランチにアタッチする方法を見つけることです(まだ見つけていません)。ブランチがコミットされています。
私の質問は、コミットされたブランチをチェックし、そのブランチに基づいてディレクトリの変数を設定し、HTTP 経由で即座にアクセスできるディレクトリにコードベースを文字通りコピーする更新後のフックを設定する方法についてです。
git rev-list --branches --pretty=oneline --max-count=1
次のようなものが返されます。
cc5112ba59bc82f2e847ac264317c062ce80f69f test commit
しかし、「実験的」や「マスター」などのブランチ自体の名前が必要です。
だから基本的に私は次のようなものを探しています:
1)コミットされたばかりのブランチの名前(「マスター」、「実験的」など)を文字列に取得します
2) Bash ケースを使用して、使用するディレクトリを宣言します
3) "git archive --format=tar HEAD | (cd $LOCATION && tar xf -)" のようなものを実行します。場所はケースから返されたものです。
私は次のように近づいていると思っていましたが、ブランチ名ではなくコミットメッセージを返すことに気付きました:
#!/bin/sh
# Get substr from "sha1[space]commit-msg"
BRANCH=$(git rev-list --pretty=oneline --branches --max-count=1 | awk '{split($0,array," ")} END{print array[2]}')
case $BRANCH in
"experimental")
dir="/home/APP_NAME/experimental"
;;
"master")
dir="/home/APP_NAME/production"
;;
esac
# move to location and copy files
git archive --format=tar HEAD | (cd $loc && tar xf -)
ブランチをコミットの最初の部分として常に配置すれば、このようなことを達成できることに気付きましたが、本当に心配したくありません。
どんな助けでも大歓迎です。前もって感謝します!