2013-11-21 23 views
2

我有一个项目,里面藏有大约30个存储库。我摆弄他们一下,现在我想重置一切,然后重新导入它们。据我所知,没有办法“清理”Stash中的存储库,所以我决定删除它们并重新创建它们。由于存在一堆存储库,这可能不是我最后一次这样做,所以我会非常感谢一次删除/创建多个存储库的方式,因为我需要相当长的时间通过前端手动完成此操作。有谁知道,如果可能的话?在Atlassian Stash中立即删除多个存储库

回答

2

把开发商藏在这里。我没有看到Marketplace上的插件会这样做。一个简单的bash脚本会使用我们的REST api吗?

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 

或者类似的东西

+0

没有看到你的答案,直到刚刚现在。我已经使用REST API编写了perl脚本:)谢谢 – Vince

0

通过具有访问您的藏匿/主机到位桶,我想出了下面的脚本一台Linux机器:

#!/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;