3 个版本 (破坏性更新)
0.3.0 | 2019年2月25日 |
---|---|
0.2.0 | 2018年12月11日 |
0.1.0 | 2018年12月8日 |
#10 in #libgit2
24KB
470 行
nip
nip 是一个 Git 远程辅助工具,它将您的存储库对象放在 IPFS 上 - 即 任何地方。
安装
与大多数 Rust 包一样,使用 Cargo 安装将是最简单的方法。
$ cargo install nip
用法
重要:在尝试使用 nip 之前,请确保您的本地 IPFS 实例正在其标准端口上运行。
首次将现有存储库推送到 nip 远程
$ git remote add nip nip::new-ipfs # Use a magic placeholder URL representing a new IPFS repo
$ git push --all nip # Push all refs to a brand new repo
从 nip 克隆存储库
$ git clone nip::/ipfs/QmZq47khma5nP7DjHUPoERhKnfNUPqkr5pVwmS8A6TQSeN some_repo
使用 nipctl 进行存储库管理(进行中)
nip 附带了 nipctl
- 一个用于 nip 存储库管理的实用工具。截至目前,其功能非常有限(打印对象和索引),但一些计划中的功能包括
- 垃圾回收 - 删除所有未与任何
refs
项关联的对象 - 管理 git 推送通知设置 - 取决于 此问题
它是如何工作的?
请参阅 FAQ.md
以了解底层 nip 功能的概览。
开发
如果您想对 nip 进行修改,请从 dev_bootstrap.sh
脚本开始。它将 nipctl
和 git-remote-nip
分别符号链接到 ~/.cargo/bin
中的 nipdevctl
和 git-remote-nipdev
。结果,对于每个具有 nipdev::
地址的远程,git
都将选择 git-remote-nipdev
而不是 git-remote-nip
,这使得在开发过程中可以轻松进行测试。
限制
- 运行时间 - nip 只能以 IPFS 允许的速度运行。
- 存储库固定和 git 推送通知 - 对远程存储库进度感兴趣的人无法知道对其进行的推送。请参阅 此问题 了解解决方案的进展。
- 磁盘空间 - 按设计,本地 Git 对象需要与 IPFS 对应项相匹配,这些对应项存储在您的本地 IPFS 节点的数据存储中。实际上这意味着每个推送到 nip 存储库的本地对象都需要以 IPFS 理解的形式存储在您的磁盘上。然而,nip 对所有与它一起使用的存储库保证对象去重,这意味着给定的 Git 对象在 IPFS 上只存储一次,不管它来自哪个存储库。
- 对象大小 - nip 还不知道如何将对象流入/流出本地仓库,将会尝试将它们加载到RAM中,这会大大增加具有大型对象的仓库的内存占用。已追踪 此处。
依赖项
~23-36MB
~611K SLoC