我们也有相同的约定,但我们使用git:在master分支中我们的maven版本总是0.0.1-SNAPSHOT,并且对于每个分支maven分支是BRANCH_NAME-SNAPSHOT。
我们处理了从分支到主问题的相同合并,此外,开发人员忘记运行versions:set
并在主服务器中提交了错误的版本。
我们创建了一个混帐挂钩,防止这种错误提交:
#!/bin/bash
# To enable this hook:
# ln -s ~/src/common-arsbigdata/common-fw/src/main/resources/bin/pre-commit ~/src/common-arsbigdata/.git/hooks/pre-commit
BRANCH_NAME=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
echo "current branch: $BRANCH_NAME"
for file in $(find . -name 'pom.xml' -not -path "*/target/*" -not -path "*/bin/*"); do
VERSION=`head $file | grep "<version>" | sed -e 's,.*<version>\([^<]*\)-SNAPSHOT</version>.*,\1,g'`;
if [[ $BRANCH_NAME == "master" ]]; then
if [[ $VERSION != "0.0.1" ]]; then
echo $file
echo "expected version 0.0.1, actual version is $VERSION"
exit 1
fi
elif [[ $VERSION != $BRANCH_NAME ]]; then
echo $file
echo "expected version $BRANCH_NAME, actual version is $VERSION"
exit 1
fi
done
我们管理git仓库里面的钩,每个开发机器上创建的.git/hooks
它的软链接
谢谢你你写得很好的回应。特别是3.帮助了我很多。 – Nico 2010-08-25 07:23:35