你好,我认为这个问题应该很简单,但是我不太熟悉Git的管理。
我正在使用极其流行的http://nvie.com/posts/a-successful-git-branching-model/,它为我的Git分支提供了通用模板。然而,我有点困惑于关于将release分支合并到master中,然后再合并回develop分支的部分。
我也喜欢Git配置文件等最佳实践,但感觉那不是最好的方法。
我考虑采取以下步骤:
- 从develop分支创建一个新的release-1.0分支
- 进行更改(将环境设置为PRODUCTION)(坏主意)
- 提交更改到release-1.0分支
- 将修改从release-1.0合并到master分支
- 标记新版本为1.0
- (这就是我感到困惑的地方)
- 进行更改(将环境设置为DEVELOPMENT)(坏主意)
- 提交更改到release-1.0分支
- 将release-1.0分支合并回develop分支
我使用一个shell脚本来自动化这些更改,并可能创建整个develop->release->master。 我会通过命令 "#: update.sh production 1.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
这种方式有意义吗?
基本上,每次主要发布都需要至少两个提交。第一个是为了设置生产变量,将这些变量合并到主分支中,然后再进行一次提交,将变量改回开发环境的设置,并将其合并回开发分支。
release
分支视为“我们将发布所有已经完成的内容+修复我们发现的任何问题的错误修复。”这是一种让人们提交新功能的方式,因为它们完成了破坏发布分支的工作。 - Roman