summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2018-08-08 07:55:48 +0200
committerRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2018-08-08 07:55:48 +0200
commit81d784aa587a67c186167db10d3a9d6a4fc4bcba (patch)
tree8aaf2278fa3f031d210a3c1fe88083d65d2f3df7 /src
parent3ae1cad231545abfeedea9aaa7405e15fb28d95c (diff)
downloadsetuptools-scm-81d784aa587a67c186167db10d3a9d6a4fc4bcba.tar.gz
turn the archive usage error into a logged exception
Diffstat (limited to 'src')
-rw-r--r--src/setuptools_scm/file_finder_git.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/setuptools_scm/file_finder_git.py b/src/setuptools_scm/file_finder_git.py
index d886d06..d001936 100644
--- a/src/setuptools_scm/file_finder_git.py
+++ b/src/setuptools_scm/file_finder_git.py
@@ -1,8 +1,11 @@
import os
import subprocess
import tarfile
-
+import logging
from .file_finder import scm_find_files
+from .utils import trace
+
+log = logging.getLogger(__name__)
def _git_toplevel(path):
@@ -14,6 +17,7 @@ def _git_toplevel(path):
universal_newlines=True,
stderr=devnull,
)
+ trace("find files toplevel", out)
return os.path.normcase(os.path.realpath(out.strip()))
except subprocess.CalledProcessError:
# git returned error, we are not in a git repo
@@ -23,12 +27,8 @@ def _git_toplevel(path):
return None
-def _git_ls_files_and_dirs(toplevel):
- # use git archive instead of git ls-file to honor
- # export-ignore git attribute
- cmd = ["git", "archive", "--prefix", toplevel + os.path.sep, "HEAD"]
- proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=toplevel)
- tf = tarfile.open(fileobj=proc.stdout, mode="r|*")
+def _git_interpret_archive(fd, toplevel):
+ tf = tarfile.open(fileobj=fd, mode="r|*")
git_files = set()
git_dirs = {toplevel}
for member in tf.getmembers():
@@ -40,6 +40,18 @@ def _git_ls_files_and_dirs(toplevel):
return git_files, git_dirs
+def _git_ls_files_and_dirs(toplevel):
+ # use git archive instead of git ls-file to honor
+ # export-ignore git attribute
+ cmd = ["git", "archive", "--prefix", toplevel + os.path.sep, "HEAD"]
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=toplevel)
+ try:
+ return _git_interpret_archive(proc.stdout, toplevel)
+ except Exception:
+ if proc.wait() != 0:
+ log.exception("listing git files failed - pretending there aren't any")
+
+
def git_find_files(path=""):
toplevel = _git_toplevel(path)
if not toplevel: