【SHELL】批量下载GIT代码

现在下载代码由SVN更换成GIT,代码仓库路径也从原来的一个变为多个,路径较多,记忆复杂,手工处理较慢。那有没有一种办法可以简单、方便处理呢?

当然有,这里将介绍我今天使用shell处理的方法。

已知:
1、输入:有类似如下的代码路径:git@example.com:framework/app_manager.git
2、输出:将所列出的代码路径全部下载到指定的文件夹下

以下为SHELL代码:

#!/bin/sh

#输入:git@example.com:framework/app_manager.git
#输出:app_manager
GetGitRepsName()
{
    #echo "git@example.com:framework/app_manager.git"|sed 's;^.*\/\(.*\)\.git;\1;g'

    #这里提供了两种方法去找到app_manager
    #gname=`echo $1 | cut -d / -f 2 | cut -d . -f1`
    gname=`echo $1 |sed 's;^.*\/\(.*\)\.git;\1;g'`
    echo $gname
}

DownloadGitCode()
{
    echo "processing : $1"
    git clone $1

    echo "get target dir"
    dirname=`GetGitRepsName $1`
    echo "$dirname"

    cd $dirname
    pwd
    #忽略权限检查,这是为什么要获取dirname的原因
    git config --add core.filemode false
    cd ..
    pwd
    echo 
}

target_dir=default_git
if [ $# -eq 1 ];then
    target_dir=$1
fi

echo "create target folder:$target_dir"
mkdir -p $target_dir
rm -rf $target_dir/*
cd $target_dir

#将所需要的权限放到数组中,**注意‘\’前有一个空格**
GIT_LIST_ARRAY=(\
"git@example.com:framework/app_manager.git" \
"git@example.com:framework/common_lib.git" \
"git@example.com:framework/flash_manager.git" \
"git@example.com:framework/javavm.git" \
"git@example.com:player/player.git" \
"git@example.com:player/pvr.git" \
"git@example.com:player/usb_manager.git" \
"git@example.com:dtv/resource_manager.git" \
)

#遍历数组,逐步处理
for gg in ${GIT_LIST_ARRAY[@]}
do
    echo "input:$gg"
    DownloadGitCode $gg
done

cd ..

大功告成!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git指令的Shell脚本,能够快速便捷地管理Git库,包括添加修改、提交修改、显示库状态、推送到远程库、从远程库更新到本地、版本恢复等操作。 使用方法: 1. 在Linux系统中,将本文件放在Git库目录下,利用Shell运行本文件; 2.在windows系统中,需下载安装与操作系统相对应的Git软件,并将本文件放在Git库目录下,双击即可运行。 运行示例: Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? h A: Add all changes to repository. C: Commit all changes to repository. D: Show differences between current version with HEAD->. E: Exit shell script. F: Fetch origin/master and merge. L: Show latest two-weeks logs of repository. P: Push commissions to origin/master. U: User command mode(Press ‘Enter’ to exit). R: Reset current version according version_id. S: Show status of repository. Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? s On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: Git.sh modified: PyNote/PyNote_2.md no changes added to commit (use "git add" and/or "git commit -a") Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? a On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD ..." to unstage) modified: Git.sh modified: PyNote/PyNote_2.md
要实现批量进行git clone操作,你可以按照以下步骤操作: 1. 首先,创建一个名为batch_git_clone.sh的shell脚本文件,并将下面的代码复制到文件中: ``` #!/bin/sh echo "批量git clone开始!" while read git_url do # 过滤空行,以及#开头的注释行 [[ -z $git_url || $git_url =~ ^#.* ]] && continue git clone ${git_url} done < $1 wait echo "批量git clone结束!" ``` 这个脚本会读取存放git url的文件,并逐行进行git clone操作。 2. 接下来,创建一个名为git_url_list.txt的文本文件,并将需要进行git clone的仓库的url按行存放在该文件中,例如: ``` https://github.com/xxx/xxx.git https://github.com/xxx/xxx.git ``` 3. 运行batch_git_clone.sh脚本,将git_url_list.txt文件作为参数传递给脚本,即: ``` ./batch_git_clone.sh git_url_list.txt ``` 执行上述命令后,脚本会逐行读取git_url_list.txt文件中的url,并进行git clone操作。 这样,你就可以批量进行git clone操作了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [批量 git clone](https://blog.csdn.net/myzryo/article/details/129495923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [git批量克隆 批量切换分支 批量pull](https://blog.csdn.net/weixin_41130251/article/details/127997092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值