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/
- 鏈得得-得得號:楓言楓語(我的號)
微信聯繫方式以下:
也歡迎加入知識星球: