Skip to content
This repository has been archived by the owner on Nov 23, 2022. It is now read-only.
/ mclone Public archive

mclone - 麻麻再也不用担心拉取GitHub代码慢了

License

Notifications You must be signed in to change notification settings

nulastudio/mclone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mclone

体验飞一般的clone速度

对比

git clone

git clone

git mclone

git mclone

限制

  1. 仓库大小(仅Proxy):<500M
  2. LFS支持:未知

使用

git clone换成git mclone,完事

安装

Windows

cmd

powershell Invoke-Expression (New-Object Net.WebClient).DownloadString(\"https://gitee.com/liesauer/mclone/raw/v1.5.2/script/install.ps1\")

powershell

Invoke-Expression (New-Object Net.WebClient).DownloadString("https://gitee.com/liesauer/mclone/raw/v1.5.2/script/install.ps1")

Linux/MacOS

curl

sudo bash -c "$(curl -fsSL https://gitee.com/liesauer/mclone/raw/v1.5.2/script/install.sh)"

wget

sudo bash -c "$(wget https://gitee.com/liesauer/mclone/raw/v1.5.2/script/install.sh -O -)"

卸载

Windows

cmd

powershell Invoke-Expression (New-Object Net.WebClient).DownloadString(\"https://gitee.com/liesauer/mclone/raw/v1.5.2/script/uninstall.ps1\")

powershell

Invoke-Expression (New-Object Net.WebClient).DownloadString("https://gitee.com/liesauer/mclone/raw/v1.5.2/script/uninstall.ps1")

Linux/MacOS

curl

sudo bash -c "$(curl -fsSL https://gitee.com/liesauer/mclone/raw/v1.5.2/script/uninstall.sh)"

wget

sudo bash -c "$(wget https://gitee.com/liesauer/mclone/raw/v1.5.2/script/uninstall.sh -O -)"

Mirror

使用第三方的代理直接拉取代码

注意:Mirror不支持以SSH的方式拉取代码,mlcone会自动将SSH替换为HTTPS

Mirror指第三方代理,Proxy Server指自部署的mclone后台。当同时设置MirrorProxy Server时,优先使用Mirror的方式拉取代码。

--mirror

--mirror参数仅对当前次mclone生效。

git mclone --mirror cnpm https://github.com/username/repo.git

mirror list

列举mclone支持的第三方代理

git mclone mirror list

目前已支持:

cnpm        github.com.cnpmjs.org
fastgit     hub.fastgit.org
gitclone    gitclone.com

mirror set <mirror>

设置mclone的第三方代理,一次设置永久生效。

git mclone mirror set cnpm

mirror del

删除mclone的第三方代理。

git mclone mirror del

保留镜像仓库地址

将镜像仓库保存至名叫mirrorremote里,由于mclone的特殊性,仅使用Mirror时才能保留镜像仓库。

--save

git mclone --save https://github.com/username/repo.git

保留后的remote

E:\Projects\mclone\mclone\nocode>git remote -v
mirror  https://gitclone.com/github.com/kelseyhightower/nocode.git (fetch)
mirror  https://gitclone.com/github.com/kelseyhightower/nocode.git (push)
origin  git@github.com:kelseyhightower/nocode.git (fetch)
origin  git@github.com:kelseyhightower/nocode.git (push)

Safe Clone

SafeClone功能将尝试将预mclone的仓库设为私有镜像仓库,避免仓库泄露风险。

注意:需要部署服务器支持并启用SafeClone,使用SafeClone后,未经认证的客户端将无法拉取mclone镜像仓库。

--safe

若服务器支持SafeClone,使用--safe参数后,服务器将尝试进行SafeClone。

git mclone --safe https://github.com/username/repo.git

--unsafe

若服务器支持SafeClone且默认启用SafeClone,使用--unsafe参数后,服务器将尝试进行UnSafeClone。若服务器强制启用SafeClone,--unsafe设置将无效。

git mclone --unsafe https://github.com/username/repo.git

Proxy Server

自部署mclone后台后,需要将mclone的服务器地址切换为自己的代理服务器地址。

--proxy

--proxy参数仅对当前次mclone生效。

git mclone --proxy https://mclone.my.com https://github.com/username/repo.git

proxy set <proxy>

设置mclone的代理服务器地址,一次设置永久生效。

git mclone proxy set https://mclone.my.com

proxy del

删除mclone的代理服务器地址,删除后将使用默认的mclone.nulastudio.org服务器。

git mclone proxy del

FAQ

mclone是如何实现的?

先将仓库镜像到码云,再从码云拉取镜像仓库。

后端代码为什么不开源?

mclone项目后端代码使用了大量的模拟请求到码云来实现自动代理下载,如果后端代码开源,一旦码云进行了限制(应该不会这么小气8?但谁知道呢),如验证码等手段,将会对mclone造成致命打击,甚至可能会威胁到mclone的存在意义(如果每mclone一次都需要破解好几个验证码,这谁顶得住?)。但若有大量请求需要开源,可能会考虑开源。

已开源,见backend分支

我能自己部署mclone后端程序吗?应该怎么部署?

开源后就能。开源后必定有部署教程。

已开源,见backend分支

为什么卡在等待代码同步完成中半天都没反应?

  1. mclone的仓库较大(其实大仓库镜像也很快的说,超过15分钟一般来说都是第二种情况了)
  2. 码云目前镜像仓库采用的是队列的方式,也就是说当前如果有很多待同步的仓库的话,可能会卡很久,甚至半天都没轮到你的仓库同步,这个我们没有办法解决,只能等待或者过段时间再试。

如何拉取私有仓库?

提前声明:请不要使用mclone拉取私有仓库,如确有需要,也请不要拉取特别重要的私有仓库,因为有可能面临仓库泄露的风险!

自部署服务器并使用SafeClone请无视上面的Warning。

  1. 进入GitHub->Setting->Developer settings->Personal access tokens页面,点击Generate new token新增一个Token,Note填写mclone,勾选repo,千万别勾别的!点击Generate token即可添加一条Token。Token只显示一次,如有多次需要,可复制保存下来方便以后使用。

  2. 修改clone地址(仅支持HTTPS、不支持SSH),比如原地址为https://github.com/username/private-repo.git则修改为https://username:token@github.com/username/private-repo.git,将地址中的token替换为你实际的token。示例:https://liesauer:xxxxxxxx@github.com/liesauer/mclone-private-demo.git

  3. 使用新地址进行mclone。

拉取私有仓库存在哪些风险?

  1. Token泄露(间接导致私有仓库泄露)
  2. 私有仓库泄露

当然这些风险都是将近不可能的,但仍需引起注意。

自部署服务器并使用SafeClone请无视上面的风险。

拉取私有仓库为什么存在这些风险?

  1. 开发者盗用了Token
  2. 码云盗用了Token
  3. mclone后端服务器遭到攻击
  4. 接入了不安全的网络,导致被监控窃听
  5. mclone过程中发生异常(如不正常退出、码云服务器出现异常),导致无法清理仓库,从而导致码云上的镜像仓库处于持续公开状态。

自部署服务器并使用SafeClone请无视上面的第一点和第五点。

我的账号出现异常行为或者怀疑我的仓库已泄露,应该怎么处理?

  1. 如果你的账号在mclone之后出现异常行为,进入GitHub->Setting->Developer settings->Personal access tokens页面,并点击Delete将之前添加的mclone Token删除,并请及时修改密码。

  2. 如果你怀疑你的仓库已泄露,请及时联系开发者沟通。

自部署服务器请自行解决。