admin管理员组文章数量:1565258
一、脚本代码
batchClone.sh
#!/bin/bash
#变量
#subgroup需要替换
subgroup='common-group';
#access_token需要替换,从gitlab右上角用户头像->Settings->Access Tokens获取
access_token='xxxxxxxxxxxxxxxxxx';
#获取项目列表接口地址
url="http://example/api/v4/projects?simple=true&membership=true&search=${subgroup}";
#获取项目列表
curl --header "PRIVATE-TOKEN: ${access_token}" $url -o projects.txt;
#遍历项目列表,克隆到当前目录下
cat projects.txt | sed 's/,/\
/g' | grep 'ssh_url_to_repo' | sed 's/"/\
/g' | grep 'git@' | while read line;
do
git clone $line $(echo $line | awk -F "${subgroup}/" '{print $2}' | awk -F '.git' '{print $1}');
done;
#删除projects.txt
rm -rf projects.txt
二、补充说明
1.在windows和mac系统下测试通过。
2.主要逻辑是调用gitlab的projects接口获取项目列表,再执行git clone。
3.projects接口通过参数筛选返回项目列表,这里是通过search传参做了subgroup的筛选,具体传参见gitlab文档:https://docs.gitlab/ee/api/projects.html
4.若已有同名文件夹,会自动跳过(其实是报错已存在文件夹)。
三、遇到的问题
1.储备shell、linux知识
https://www.runoob/linux/linux-shell.html
2.mac系统下报错
1)permission denied
执行命令:
chmod 777 batchClone.sh
2)command not found
脚本顶部增加解释语言:#!/bin/bash
3)not such file
编写.sh文件的回车由CRLF改为LF
4)Too many arguments
sed命令在mac系统下有差异,回车要用\
加真的回车(LF),不能用\n
解决方案参考文章:
https://blog.csdn/yalecaltech/article/details/107405961
https://wwwblogs/mianbaoshu/p/14009550.html
https://wwwblogs/xiaozhuangAna/p/9726670.html
https://blog.csdn/kakabuqinuo/article/details/99845797
https://blog.csdn/xavier679/article/details/82966953
版权声明:本文标题:git批量clone脚本 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727372310a1111327.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论