gpt4 book ai didi

git - 如何编写一个 shell 脚本来从 gitlab 克隆我所有的 repo

转载 作者:行者123 更新时间:2023-12-02 17:31:47 26 4
gpt4 key购买 nike

问题是我想编写一个简单的 shell 脚本来从我的内部 gitlab 克隆我的存储库。我有点困惑的主要事情是如何遍历和克隆每个项目,以及如何检查项目是否存在。这是我到目前为止的任何帮助,将不胜感激!!!

gitlab_pull_script.sh

#!/bin/bash


BLUE='\033[0;34m'
GREEN='\033[0;32m'
NC='\033[0m'

printf "${GREEN}Initializing starting sciprt${BLUE} Pulling from code.mydomain.com${NC}\n"

#var's
codeHost=mydomain.com
codeUser=admin
testApp1="git@$codeHost:$codeUser/testapp1.git"
testApp2="git@$codeHost:$codeUser/testapp2.git"
testApp3="git@$codeHost:$codeUser/testapp3.git"
testApp4="git@$codeHost:$codeUser/testapp4.git"
testApp5="git@$codeHost:$codeUser/testapp5.git"

#this is the part I'm not sure about for checking to make sure the project exist
codeProjects="$tesApp1" && "$tesApp2" && "$tesApp3" && "$tesApp4" && "$tesApp5"


localCodeDir="${HOME}/code/"


do
#once again im not sure if this works to check $codeprojects variable if it exist or not.
if [ -z "$codeProjects" ]; then
echo "Project not found"
exit
else # this is where I am confused on how to make loop through each project ********
cloneCmd="git clone $testApp1"
cloneCmd="git clone $testApp2"
cloneCmd="git clone $testApp3"
cloneCmd="git clone $testApp4"
cloneCmd="git clone $testApp5"
fi
done

最佳答案

是这样的吗?

for app in testapp1 testapp2 testapp3 foo bar emacs-snapshot; do
git clone "git@$codeHost:$codeUser/$app.git"
done

如果您绝对希望将项目放在一个变量中,则将它们分配给一个数组(或者甚至只是一个以空格分隔的带引号的字符串)就可以了。

apps=(testapp1 testapp2 testapp3 foo bar emacs-snapshot)
for app in "${apps[@]}"; do
:

甚至

apps="testapp1 testapp2 testapp3 foo bar emacs-snapshot"
for app in $apps; do
:

我不会担心检查项目是否存在——git 会抛出错误并跳过该项目,然后循环继续列表中的下一个项目。

关于git - 如何编写一个 shell 脚本来从 gitlab 克隆我所有的 repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32227535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com