From 369a42135992d8175b5f00383005c0a40bc0d0a8 Mon Sep 17 00:00:00 2001 From: Ben S Date: Mon, 2 Mar 2015 03:18:26 +0000 Subject: [PATCH] Temporary workaround for Path in libgit2-rs --- src/dir.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/dir.rs b/src/dir.rs index 28c60dd6..77be8fff 100644 --- a/src/dir.rs +++ b/src/dir.rs @@ -84,8 +84,19 @@ impl Git { /// Discover a Git repository on or above this directory, scanning it for /// the files' statuses if one is found. fn scan(path: &Path) -> Result { + use std::os::unix::OsStrExt; + use std::ffi::AsOsStr; + + // TODO: libgit2-rs uses the new Path module, but exa still uses the + // old_path one, and will have to continue to do so until the new IO + // module gets a bit more developed. So we have to turn Paths into + // old_path::Paths. Yes, this is hacky, but hopefully temporary. let repo = try!(git2::Repository::discover(path)); - let workdir = repo.workdir().unwrap_or(Path::new(".")); + let workdir = match repo.workdir() { + Some(w) => Path::new(w.as_os_str().as_bytes()), + None => return Ok(Git { statuses: vec![] }), // bare repo + }; + let statuses = try!(repo.statuses(None)).iter() .map(|e| (workdir.join(e.path_bytes()), e.status())) .collect();