2013-11-21 2 views
2

대담한 저장소에 약 30 개의 저장소가있는 프로젝트가 있습니다. 나는 그 (것)들과 조금 돌아서 지금 모든 것을 다시 놓고 그 (것)들을 다시 수입하고 싶다. 내가 볼 수있는 한 Stash에서 저장소를 "정리"할 수있는 방법이 없으므로 삭제하고 다시 만들게되었습니다. 리포지토리가 많으므로이 작업을 수행 할 마지막 시간이 아닐 수도 있습니다. 한 번에 여러 리포지토리를 삭제/생성하는 방법에 대해 정말 감사 할 것입니다. 상당한 시간이 필요하기 때문입니다. 프론트 엔드를 통해 수동으로이 작업을 수행 할 수 있습니다. 가능하면 누구나 알 수 있습니까?Atlassian Stash에서 한 번에 여러 저장소 삭제

답변

2

여기 개발자를 숨겨 둡니다. Marketplace에서 플러그인을 보지 못했습니다. 우리의 REST api을 사용하는 간단한 bash 스크립트가 도움이 될까요? 나는 다음과 같은 스크립트를 내놓았다 감춰 /의 bitbucket 호스트에 액세스 할 수있는 리눅스 머신 통해 그

+0

은 때까지 답을하지 않았나요 지금. 나는 이미 REST API를 사용하여 Perl 스크립트를 작성했다 :) 고마워. – Vince

0

같은

for path in 'projectA/repos/repoA' 'myprojectB/repos/myrepoB' 'somethingC/repos/somethingC'; do curl -X DELETE --user username:password http://host:port/rest/api/1.0/projects/$path; done 

또는 뭔가 :

#!/bin/bash 
USER='someUser' 
PASS='secretPassWord' 

sudo apt-get -qq install jq curl 
TMP=/tmp/PROJECTS.TO.DELETE.$RANDOM 

# Get a list of all Projects 
curl -k -s --user $USER:$PASS "https://stashHost/rest/api/1.0/projects/?limit=10000" | jq -r ".values[].key" | sort >$TMP 

# Allow an opertunity to remove some projects from this deletion process 
nano $TMP 

# Loop through the remaining projects listed in the $TMP file and remove all repo's and projects. 
for P in $(cat $TMP); do 
     echo "Project: $P" 
     for R in $(curl -k -s --user $USER:$PASS "https://stashHost/rest/api/1.0/projects/$P/repos?limit=10000" | jq -r ".values[].slug" | sort); 
     do 
       # Delete the repository 
       OUTPUT=`curl -k -s -X DELETE --user $USER:$PASS "https://stashHost/rest/api/1.0/projects/$P/repos/$R" | jq -r ".message"` 
       printf "Deleting: %10s\t%40s\t%s\n" $P $R "$OUTPUT" 
     done; 
     # Delete the empty project (with no remaining repos) 
     curl -k -s -X DELETE --user $USER:$PASS "https://stashHost/rest/api/1.0/projects/$P"; 
done; 
관련 문제