iOS相关技术实现

从github下载单独文件的两种方式

2018-08-16  本文已影响39人  快乐的老船长

一、通过git方式

在Git1.7.0以后加入了Sparse Checkout模式,这使得Check Out指定文件或者文件夹成为可能。

  1. 指定远程仓库
  2. 指定克隆模式: Sparse Checkout模式
  3. 指定克隆的文件夹(或者文件)
  4. 拉取远程文件

下面以克隆SMSSDK下的 /SDK/SMSSDK 目录为例。

$ mkdir SMSSDK

$ cd SMSSDK 

$ git init // 初始化空仓库 

$ git remote add -f origin https://github.com/MobClub/SMSSDK-for-iOS.git // 关联远程地址 

$ git config core.sparsecheckout true // 开启Sparse Checkout模式 

$ echo "SDK/SMSSDK" >> .git/info/sparse-checkout // 设置需Check Out的文件 

$ git pull origin master // Check Out
image.png

.git文件比较大

附:shell调用的脚本 下载地址:https://github.com/JinhuiLu/SparseCheckout.git
#!/bin/sh

UPDATE=${1}
RESPOSITORY_PATH=${2}
REMOTE_URL=${3}
COMMIT_BRANCH=${4}
CHECKOUT_LIST=${@:5:$#-4}

cd "${RESPOSITORY_PATH}"

git config --global core.sparseCheckout true

if [ ! -d ".git" ]; then
    git init
    git remote add origin "${REMOTE_URL}"
    for i in ${CHECKOUT_LIST}; do
        echo ${i} >> ".git/info/sparse-checkout"
    done
    git pull origin "${COMMIT_BRANCH}" --depth=1
else
    for i in ${CHECKOUT_LIST}; do
        if [[ `grep -c ${i} ".git/info/sparse-checkout"` -eq '0' ]]; then
            echo ${i} >> ".git/info/sparse-checkout"
        else
            echo "Found! ${i}"
        fi
    done
fi

if [[ ${UPDATE} = "ture" ]]; then
    git pull origin "${COMMIT_BRANCH}" --depth=1
fi

git checkout -qf master

使用说明:

isUpdate:true 或者 false 
localPath: 要下载到的路径
remotePath: 远程地址,可以是http,可以是git等
master/branch: 主线或者分支
checkout-List: 要checkout的路径列表,可以传多个,支持通配符 "*"
$ sh SparseCheckout.sh isUpdate localPath remotePath master/branch checkout-List

例子:

$ sh SparseCheckout.sh true /User/lujh/MobProducts/SMSSDK https://github.com/MobClub/SMSSDK-for-iOS.git master SDK/SMSSDK/SMS_SDK.framework SDK/Required/*

二、通过svn方式

打开SMSSDK目录得到地址:

https://github.com/MobClub/SMSSDK-for-iOS/tree/master/SDK/SMSSDK

改tree/master为trunk -->

https://github.com/MobClub/SMSSDK-for-iOS/trunk/SDK/SMSSDK

$ svn checkout https://github.com/MobClub/SMSSDK-for-iOS/trunk/SDK/SMSSDK //直接Checkout即可
image.png

.svn只是单个文件的,不太大,操作方便

上一篇下一篇

猜你喜欢

热点阅读