こんにちは私はこれはかなり単純な質問であるべきだと思っていますが、私はgitの管理にあまり精通していません。
非常に人気のあるhttp://nvie.com/posts/a-successful-git-branching-model/を使用して、gitブランチの一般的なモデルを提供しています。ただし、リリースブランチをマスターにマージしてから開発ブランチに戻すことに関しては、少し混乱しています。
設定ファイルなどのGitのベストプラクティスも気に入っていますが、それは実際には最善の方法ではないように感じます。
私は次のことを考えています:
- 開発ブランチから新しいリリース1.0ブランチを作成します
- 変更を加える(環境をPRODUCTIONに設定)(BAD IDEA)
- リリース1.0ブランチへの変更をコミットします
- リリース1.0からの変更をマスターブランチにマージします
- 新しいバージョンに1.0のタグを付けます
- (これは私にとって曖昧になるところです)
- 変更を加える(環境をDEVELOPMENTに設定)(BAD IDEA)
- リリース1.0ブランチへの変更をコミットします
- リリース1.0ブランチを開発ブランチにマージします
シェルスクリプトを使用して変更を自動化し、場合によっては開発->リリース->マスターの作成全体を自動化します。このスクリプトを「#:update.shproduction1.0」と呼びます。
if !([ "$1" == "production" ] || [ "$1" == "development" ]); then
echo "Must specify production or development as the second argument"
exit;
fi
if [ ! -n "$2" ]; then
echo "Must specify a version (e.g., 1.2, 1.2.1)."
exit;
fi
if ([ "$1" == "production" ]); then
var_env="production";
git checkout -b release-$2 develop
fi
if ([ "$1" == "development" ]); then
var_env="development";
fi
echo "Starting change to $1..."
SRC="define('ENVIRONMENT', '.*');"
DST="define('ENVIRONMENT', '${var_env}');"
sed -i -e "s/[\s]*$SRC/$DST/g" index.php
echo "Updated environment constant."
echo "Do you wish to continue and commit these changes? (y|n)"
read WISH
if([ "$WISH" == "y" ]); then
git checkout master
git merge --no-ff release-$2
git tag -a $2
else
echo "Okay. I give up."
fi
このようにするのは理にかなっていますか?
基本的に、マスターリリースごとに少なくとも2つのコミットがあります。1つは本番変数を設定し、それらの変数をマスターブランチにマージし、もう1つは変数を開発設定に戻し、開発ブランチにマージすることをコミットします。