3 个不稳定版本
0.2.0 | 2021年3月18日 |
---|---|
0.1.1 | 2021年3月17日 |
0.1.0 | 2021年3月17日 |
#4 在 #focuses
每月26次下载
34KB
695 行
anni-fetch
专注于 git fetch 所做的功能的库。
示例
use anni_fetch::client::Message::PackData;
use anni_fetch::{Pack, Client};
use std::io::Cursor;
use anni_fetch::client::RequestBuilder;
fn main() {
// create client
let client = Client::new("https://github.com/project-anni/repo.git");
// request and get message iterator
let iter = client.request(
RequestBuilder::new(true)
.command("fetch")
.argument("thin-pack")
.argument("ofs-delta")
.argument("deepen 1")
.want(&client.ls_ref("HEAD").expect("failed to get sha1 of HEAD"))
.argument("done")
.build()
).unwrap();
// prepare buffer for pack
let mut pack = Vec::new();
for msg in iter {
match msg {
// receive and insert into pack
PackData(mut d) => pack.append(&mut d),
_ => {}
}
}
let mut cursor = Cursor::new(pack);
// read pack
Pack::from_reader(&mut cursor).expect("invalid pack file");
}
依赖项
~2.5–3.5MB
~92K SLoC