2 个版本

使用旧的 Rust 2015

0.1.1 2015年9月23日
0.1.0 2015年9月21日

#13 in #mercurial

MIT 许可证

16KB
241

HgLib:Mercurial 命令服务器的 Rust 客户端库

此软件包提供 Rust 编程语言对 Mercurial 分布式版本控制系统 (DVCS) 的客户端接口,使用 Mercurial 的 命令服务器。命令服务器旨在允许工具围绕 Mercurial 仓库构建,而不必依赖于 Mercurial 的内部 API 或许可证。

API 文档: http://kbullock.ringworld.org/rustdoc/hglib/

安装

要使用 hglib,请将软件包添加到您的 Cargo.toml

[dependencies]
hglib = "0.1.1"

lib.rs:

Mercurial 命令服务器的客户端库

此软件包提供 Rust 编程语言对 Mercurial 分布式版本控制系统 (DVCS) 的客户端接口,使用 Mercurial 的 命令服务器。命令服务器旨在允许工具围绕 Mercurial 仓库构建,而不必依赖于 Mercurial 的内部 API 或许可证。

高级 API

cmdserver 模块提供了一个高级接口,用于管理启动和与命令服务器实例的通信

use hglib::cmdserver::CommandServer;
let cmdserver = CommandServer::new().ok().expect("failed to start command server");

此高级接口目前大部分尚未实现,但基于已正常工作的原始 API。

原始 API

connection 模块中的较低级别 API 允许您在命令服务器协议级别运行命令。命令的组装和结果分块读取是手动完成的。

use hglib::connection::Connection;
use hglib::Chunk;
let mut conn = Connection::new().ok().expect("failed to start command server");
let (capabilities, encoding) =
    conn.read_hello().ok().expect("failed to read server hello");

let cmditer =
    conn.raw_command(vec![b"log", b"-l", b"5"])
        .ok().expect("failed to send raw command");
for chunk in cmditer {
    match chunk {
        Ok(Chunk::Output(s)) => { io::stdout().write(&s); },
        Ok(Chunk::Error(s)) => { io::stdout().write(&s); },
        Ok(Chunk::Result(r)) => println!("command exited with status: {}", r),
        Ok(_) => {},
        Err(e) => panic!("failed to read chunk: {}", e),
    }
}

依赖项

~115KB