From 3a961f7b7f25dfcd54f427fa57ca064433e93829 Mon Sep 17 00:00:00 2001
From: George Burgess IV <gbiv@google.com>
Date: Fri, 30 Jul 2021 01:11:15 +0000
Subject: [PATCH 8/8] sparse-git-repo

---
 src/tools/cargo/src/cargo/sources/path.rs | 39 +++++++++++++++++++----
 1 file changed, 32 insertions(+), 7 deletions(-)

diff --git a/src/tools/cargo/src/cargo/sources/path.rs b/src/tools/cargo/src/cargo/sources/path.rs
index f8041be55..a3eadb626 100644
--- a/src/tools/cargo/src/cargo/sources/path.rs
+++ b/src/tools/cargo/src/cargo/sources/path.rs
@@ -194,12 +194,25 @@ impl<'cfg> PathSource<'cfg> {
         let index = repo
             .index()
             .with_context(|| format!("failed to open git index at {}", repo.path().display()))?;
-        let repo_root = repo.workdir().ok_or_else(|| {
-            anyhow::format_err!(
+        let repo_root = if let Some(root) = repo.workdir() {
+            root
+        } else if !repo.is_bare() {
+            // Sparse-checkouts (and possibly other git
+            // configurations) make libgit2 confused but there's still
+            // an actual non-bare repo here.
+            if let Some(r) = repo.path().parent() {
+                r
+            } else {
+                return Err(anyhow::format_err!(
+                    "repo path missing .git subfolder even when non-bare",
+                ));
+            }
+        } else {
+            return Err(anyhow::format_err!(
                 "did not expect repo at {} to be bare",
                 repo.path().display()
-            )
-        })?;
+            ));
+        };
         let repo_relative_path = match paths::strip_prefix_canonical(root, repo_root) {
             Ok(p) => p,
             Err(e) => {
@@ -228,9 +241,21 @@ impl<'cfg> PathSource<'cfg> {
     ) -> CargoResult<Vec<PathBuf>> {
         warn!("list_files_git {}", pkg.package_id());
         let index = repo.index()?;
-        let root = repo
-            .workdir()
-            .ok_or_else(|| anyhow::format_err!("can't list files on a bare repository"))?;
+        let root = if let Some(root) = repo.workdir() {
+            root
+        } else if !repo.is_bare() {
+            // Sparse-checkouts (and possibly other git
+            // configurations) make libgit2 confused but there's still
+            // an actual non-bare repo here.
+            if let Some(r) = repo.path().parent() {
+                r
+            } else {
+                return Err(anyhow::format_err!("malformed non-bare repository root",));
+            }
+        } else {
+            return Err(anyhow::format_err!("can't list files on a bare repository",));
+        };
+
         let pkg_path = pkg.root();
 
         let mut ret = Vec::<PathBuf>::new();
-- 
2.32.0.554.ge1b32706d8-goog

