summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setuptools_scm/git.py5
-rw-r--r--testing/test_git.py9
2 files changed, 12 insertions, 2 deletions
diff --git a/setuptools_scm/git.py b/setuptools_scm/git.py
index 6ec9962..83898ec 100644
--- a/setuptools_scm/git.py
+++ b/setuptools_scm/git.py
@@ -129,8 +129,9 @@ def _list_files_in_archive():
cmd = ['git', 'archive', 'HEAD']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
tf = tarfile.open(fileobj=proc.stdout, mode='r|*')
- for name in tf.getnames():
- print(name)
+ for member in tf.getmembers():
+ if member.type != tarfile.DIRTYPE:
+ print(member.name)
if __name__ == "__main__":
diff --git a/testing/test_git.py b/testing/test_git.py
index 4f4ad53..e829fc8 100644
--- a/testing/test_git.py
+++ b/testing/test_git.py
@@ -124,3 +124,12 @@ def test_git_archive_export_ignore(wd):
wd('git add test1.txt test2.txt')
wd.commit()
assert integration.find_files(str(wd.cwd)) == ['test1.txt']
+
+
+@pytest.mark.issue(228)
+def test_git_archive_subdirectory(wd):
+ wd('mkdir foobar')
+ wd.write('foobar/test1.txt', 'test')
+ wd('git add foobar')
+ wd.commit()
+ assert integration.find_files(str(wd.cwd)) == ['foobar/test1.txt']