2017-07-05 17 views
1

現在、私たちの開発チームはgitを使ってVSTSから作業しています。ブランチの数はかなり増えています。毎月ブランチを手動で削除するのではなく、60日間は触れられていないブランチを自動削除する機能が必要です。私はJenkinsでこれが可能であることは知っていますが、現時点でJenkinsはいません。これがVSTSでいくつかのサービスフック経由で可能かどうか疑問に思っていましたか?VSTS:gitブランチの自動削除方法

+0

プルリクエストをマージするとき、ブランチを自動的に削除するオプションがありますが、それは解決策ですか? –

+0

私はこれを聞かせてください - 私はチームがそれらを掃除する前に数ヶ月間枝を残しているのを見ました。この理由は何でしょうか?もしそうでなければ、なぜそれが解決策にはならないのか分からない。 – Greg

+0

古い枝を残す理由はありません。とにかく数ヶ月でそれらを取り除く意思を持って特に。すべての私のプロジェクトでは、マージ後にブランチを削除します。 –

答えて

1

VSTSはnot support server-side hooks so farです。しかし、ローカルマシンの古いブランチを自動削除する他の方法があります。以下のように詳細手順:特定のディレクトリ(のようなD:\script_for_git)で

1.は、VSTSのgitのレポ(分岐のみを自動削除に使用)をクローン。

2.ルートGitのレポ(D:\script_for_git\repo)180日(6ヶ月)前に変更されていなかったリモートブランチ、以下のようにシェルスクリプトの内容を削除するためにシェルスクリプト(del.sh)を追加します。

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 

このシェルスクリプトを実行するスケジュール。スクリプトを実行するスケジューリング方法はたくさんあり、OSに関連しています。あなたが窓を使用している場合など、this postを参照することができます。 linuxを使用している場合はthis postを参照できます。

関連する問題