diff --git a/setuptools_git/__init__.py b/setuptools_git/__init__.py
index 24c9b8c..5a31b04 100644
--- a/setuptools_git/__init__.py
+++ b/setuptools_git/__init__.py
@@ -64,13 +64,17 @@ def gitlsfiles(dirname=''):
 
     try:
         topdir = check_output(
-            ['git', 'rev-parse', '--show-toplevel'], cwd=dirname or None,
+            ['git', 'rev-parse', '--show-prefix'], cwd=dirname or None,
             stderr=PIPE).strip()
 
         if sys.platform == 'win32':
             cwd = ntfsdecode(topdir)
         else:
             cwd = topdir
+        dirname = os.path.abspath(dirname)
+        cwd = cwd.strip()[:-1] # remove the trailing pathsep
+        assert dirname.replace("\\", "/").endswith(cwd)
+        cwd = dirname[: -len(cwd)]
 
         filenames = check_output(
             ['git', 'ls-files', '-z'], cwd=cwd, stderr=PIPE)
