diff options
author | Teddy Wing | 2020-07-24 00:41:19 +0200 |
---|---|---|
committer | Teddy Wing | 2020-07-24 00:42:53 +0200 |
commit | 4d89f0c16c61175042c47b493cb945618db8f72b (patch) | |
tree | c2cd94703719000037e56ff9cf5498ee3ed3f305 /src/lib.rs | |
parent | 55894d54c19d8eed751ef31b66698c0a85997cee (diff) | |
download | git-suggestion-4d89f0c16c61175042c47b493cb945618db8f72b.tar.bz2 |
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.
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -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()); + } } |