From 4d89f0c16c61175042c47b493cb945618db8f72b Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Fri, 24 Jul 2020 00:41:19 +0200 Subject: Read a blob from a repository Work out the code required to get a file blob's contents from a Git repository using the 'git2' crate. We'll be using this to get the original file for patching. --- src/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index f65b637..fe945be 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -204,4 +204,26 @@ mod tests { fn patches_file() { // File::open("../testdata/"); } + + #[test] + fn read_git_blob() { + use std::path::Path; + + use git2::Repository; + + let repo = Repository::open("./private/suggestion-test").unwrap(); + let commit = repo.find_commit("b58be52880a0a0c0d397052351be31f19acdeca4".parse().unwrap()).unwrap(); + + let object = commit + .tree().unwrap() + .get_path(Path::new("src/server.rs")).unwrap() + .to_object(&repo).unwrap(); + + let blob = object + .as_blob().unwrap() + .content(); + + println!("{:?}", commit); + println!("{}", std::str::from_utf8(blob).unwrap()); + } } -- cgit v1.2.3