VSTS:如何自动删除git分支

时间:2017-07-05 18:50:36

标签: git azure-devops

我们目前让我们的开发团队使用git在VSTS上工作。分支的数量变得非常大,而不是每个月手动删除分支,我希望能够自动删除未被触及的分支,例如60天。我知道Jenkins可以做到这一点,但我们现在还没有Jenkins,并且想知道是否可以通过一些服务钩子在VSTS中做到这一点?

2 个答案:

答案 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命令来确定需要删除的内容并删除服务器上的那些分支。

有用的资源:

  1. How to run git commands in build
  2. How to delete a branch both locally and in remote?