我们目前让我们的开发团队使用git在VSTS上工作。分支的数量变得非常大,而不是每个月手动删除分支,我希望能够自动删除未被触及的分支,例如60天。我知道Jenkins可以做到这一点,但我们现在还没有Jenkins,并且想知道是否可以通过一些服务钩子在VSTS中做到这一点?
答案 0 :(得分:2)
VSTS是not support server-side hooks so far。但是还有其他方法可以自动删除本地计算机中的旧分支。详细步骤如下:
1。在某个目录(例如D:\script_for_git
)中,克隆VSTS git repo(仅用于自动删除分支)。
2. 在根git仓库(del.sh
)中添加shell脚本(D:\script_for_git\repo
)以删除180天(6个月)未更改的远程分支以前,shell脚本的内容如下:
git fetch origin
for reBranch in $(git branch -a)
do
{
if [[ $reBranch == remotes/origin* ]];
then
{
if [[ $reBranch ==remotes/origin/HEAD ]]; then
echo "HEAD is not a branch"
else
branch=$(echo $reBranch | cut -d'/' -f 3)
echo $branch
sha=$(git rev-parse origin/$branch)
dateo=$(git show -s --format=%ci $sha)
datef=$(echo $dateo | cut -d' ' -f 1)
Todate=$(date -d "$datef" +'%s')
current=$(date +'%s')
day=$(( ( $current - $Todate )/60/60/24 ))
echo $day
if [ "$day" -gt 180 ]; then
git push origin :$branch
echo "delete the old branch $branch"
fi
fi
}
fi
}
done
3. 运行此shell脚本的计划。调度运行脚本的方式有很多种,与操作系统相关。例如,如果您使用的是Windows,则可以参考this post。如果您使用的是Linux,可以参考this post。
答案 1 :(得分:0)
我建议你设置一个预定的构建定义,它将运行git命令来确定需要删除的内容并删除服务器上的那些分支。
有用的资源: