Git是目前世界上最早进的分布式版本控制系统,凡是进行软件工程研发的工做人员应该都知晓这个工具。html
咱们除了在本地使用Git服务外,常常须要同步数据给7x24小时的远程仓库,方便备份和团队协做,基于这种场景,咱们会常常会使用Github、Coding这类的第三方Git平台,可是对于某些视源代码如生命的商业公司来讲,既不想公开源代码,又舍不得给GitHub交保护费,那就只能本身搭建并维护一台Git服务器做为私有仓库使用。git
那,有没有一种方式,能更优雅和廉价地在全球范围内挂载咱们的Git仓库呢? github
答案是:没问题,借助IPFS技术,咱们来一块儿实现看看!服务器
首先,咱们能够新建或者从远端抓取一个咱们想要挂载在IPFS网络中的Git仓库:微信
$ cd Desktop //--bare:不包含工做区,直接就是版本的内容 $ git clone --bare https://github.com/daijiale/ipfs-md-wiki
这边我选取了一个以前托管在Github上的代码仓库ipfs-md-wiki
,想从新把这个仓库托管在IPFS网络中,造成全球7X24小时能为我服务的分布式Git远端服务器。网络
如今,对于一个bare型Git仓库,想要经过 HTTP 的方式以便其余人获取和克隆,还须要配置一个特定的post-update hook
,Git 附带的 post-update hook
会默认运行命令git update-server-info
来确保仓库能被克隆和使用:分布式
$ cd ipfs-md-wiki.git $ git update-server-info
以后,咱们打开git仓库对象包,经过将大的packfile分解成全部的单独对象,以便咱们git仓库中存在多分支版本状况时,也能一一被ipfs网络识别并添加。ide
$ cp objects/pack/*.pack . $ git unpack-objects < ./*.pack $ rm ./*.pack
仓库环境准备好了以后,剩下要作的就是把它添加到ipfs网络:工具
$ pwd $ ipfs daemon $ ipfs add -r . ... added QmSPWkeZ8cwUSzEHSuvTjgQceWnrorHxG7rfJAEghsZmny ipfs-md-wiki.git
咱们已经将ipfs-md-wiki.git
成功添加到了IPFS网络,如今咱们开启另一个终端,对此仓库进行克隆和抓取操做:post
$cd ../Downloads $git clone http://localhost:8080/ipfs/QmSPWkeZ8cwUSzEHSuvTjgQceWnrorHxG7rfJAEghsZmny ipfs-md-wiki-repo
咱们拿到的ipfs-md-wiki-repo
即为从IPFS网络中同步的Git仓库,查看一下仓库结构:
和迁移前原先托管于Github的仓库对比,数据一致同步过来了,后期也能够不用再托管在相似Github这样的第三方中心化平台上了:
ipfs pin
固定Git仓库资源,建议选用本身常驻地区域的机房,也可使用第三方Ping服务:http://hitchain.io/zh/index.html来便捷实现更多全球节点的挂载 ,价格还算合理: $0.35 1G/月。infura
的第三方网关,目前我知道的,国内有很多朋友正在作本身的第三方网关,后面应该这块基础设施会不少。这里介绍一个比较酷的使用场景:即当咱们在编写代码程序时候,导入的依赖库常用的是Git源码库,并且源码库常常会因其余人的提交而改变,而影响我本地的开发环境编译,这里,咱们用IPFS hash
指纹惟一标识了每一个版本的Git源码库,能够不用顾虑这块的内容,轻量化咱们的本地工程,同时须要更新版本时,也可根据hash
指纹来自由切换、指定:
import ( "github.com/daijiale/ipfs-md-wiki" )
import ( mylib "gateway.ipfs.io/ipfs/QmSPWkeZ8cwUSzEHSuvTjgQceWnrorHxG7rfJAEghsZmny" )
固然,后面也能够作成相似开源中国主导的Hitchain这样的场景,类Github的开发者自治社区:http://hitchain.io/zh/index.html
有人会问,若是Git仓库有更新,亦或是不知足于静态仓库如何处理? 其实答案很简单,有两个解决方案:
hash-log
文件,用以记录每次Git Log和ipfs hash
更新的映射表,保持同步动态更新便可。我和董天一前辈,黄禹铭博士撰写的国内第一本IPFS技术中文书籍《IPFS与区块链:原理与实践》已经上架华章鲜度,纸质书将于今年10月由机械工业出版社华章文学出版,目前正在邀请返利补贴活动期,力度很大,欢迎早期朋友订购,具体活动细则以下:
转载声明:特别鸣谢
天一哥(飞向将来 IPFS指南公众号做者)
与ipfser.org
早期在IPFS大量的布道工做,才有了博主致力于IPFS应用实践的想法,指望更多和咱们同样对这个领域感兴趣的朋友能加入进来。本文研究成果同时收录在https://github.com/ChainBook/IPFS-For-Chinese中,该仓库由 本体网络核心工程师刘一痕发起并兼任Maintainer,对现有的一些成熟公链技术进行源码中文解读工做,遵照Mozilla Public License 2.0开放协议,欢迎感兴趣的朋友加入。
已受权转载的公众号和媒体网站有:
- 巴比特 IPFS专栏
- ipfser.org
- 公众号:IPFS方得社区 (IPFS-Fund)
- 公众号:IPFS指南(ipfs_guide)
- 星鉴网:http://www.ipfsfirst.com/
- 链得得-得得号:枫言枫语(我的号)
微信联系方式以下:
也欢迎加入知识星球: