1. 使用git命令获取最近提交的分支
lastBranch=`git for-each-ref --sort=-committerdate refs/remotes/origin | grep -E 'preRelease' | head -1`
lastBranch=${lastBranch#*refs/remotes/}
echo $lastBranch
2. 使用sort + 文件排序
versions=()
branches=`git branch -a | grep origin/preRelease/`
for branch in $branches;
do
new_version=`echo $branch | awk -F '/' '{print $4}'`;
new_version=${new_version%%_*}
echo $new_version
versions[${#versions[*]}]=$new_version;
done
for version in ${versions[@]};
do
echo $version >> versions.txt
done
newest_version=`sort -rV versions.txt | head -n 1`
echo $newest_version
newest_version=`git branch -a | grep origin/preRelease/${newest_version}_`
newest_version=${newest_version/remotes\/origin\//}
echo $newest_version
rm versions.txt
3. 不用文件排序
function version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }
versions=()
branches=`git branch -a | grep origin/preRelease/`
for branch in $branches;
do
new_version=`echo $branch | awk -F '/' '{print $4}'`;
new_version=${new_version%%_*}
echo $new_version
versions[${#versions[*]}]=$new_version;
done
newest_version=$versions[0]
for version in ${versions[@]};
do
if version_gt $version $newest_version; then
newest_version=$version
fi
done
echo $newest_version
newest_version=`git branch -a | grep origin/preRelease/${newest_version}_`
newest_version=${newest_version/remotes\/origin\//}
echo $newest_version
4. 简化3
function version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }
branches=`git branch -a | grep origin/preRelease/`
newest_version=0
for branch in $branches;
do
version=`echo $branch | awk -F '/' '{print $4}'`;
version=${version%%_*}
echo $version
if version_gt $version $newest_version; then
newest_version=$version
fi
done
echo $newest_version
newest_version=`git branch -a | grep origin/preRelease/${newest_version}_`
newest_version=${newest_version/remotes\/origin\//}
echo $newest_version
参考