From 34fae706776451f4b10a9eef65cd64e640e6980b Mon Sep 17 00:00:00 2001 From: "finswimmer77@gmail.com" Date: Sat, 25 Jan 2020 20:40:07 +0100 Subject: [PATCH 1/4] fix (builder): take `self._original_path` if available to find `.git` folder --- poetry/masonry/builders/builder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/poetry/masonry/builders/builder.py b/poetry/masonry/builders/builder.py index 40e8c771e81..fea6fcd6727 100644 --- a/poetry/masonry/builders/builder.py +++ b/poetry/masonry/builders/builder.py @@ -75,7 +75,9 @@ def build(self): @lru_cache(maxsize=None) def find_excluded_files(self): # type: () -> Set[str] # Checking VCS - vcs = get_vcs(self._path) + vcs = get_vcs( + self._original_path if hasattr(self, "_original_path") else self._path + ) if not vcs: vcs_ignored_files = set() else: From be69652eea3d7e05f5aa5f2cf99ef443561dff89 Mon Sep 17 00:00:00 2001 From: "finswimmer77@gmail.com" Date: Thu, 30 Jan 2020 06:43:04 +0100 Subject: [PATCH 2/4] change (vcs): use `git rev-parse --show-toplevel` to find git root folder --- poetry/vcs/__init__.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/poetry/vcs/__init__.py b/poetry/vcs/__init__.py index d242ca6c285..dd50f6584dd 100644 --- a/poetry/vcs/__init__.py +++ b/poetry/vcs/__init__.py @@ -1,22 +1,24 @@ +import os import subprocess -import warnings from poetry.utils._compat import Path +from poetry.utils._compat import decode from .git import Git def get_vcs(directory): # type: (Path) -> Git - directory = directory.resolve() - - for p in [directory] + list(directory.parents): - if (p / ".git").is_dir(): - try: - return Git(p) - except (subprocess.CalledProcessError, OSError): - # Either git could not be found or does not exist - warnings.warn( - "git executable could not be found", category=RuntimeWarning - ) - - return + os.chdir(str(directory)) + + try: + git_dir = decode( + subprocess.check_output( + ["git", "rev-parse", "--show-toplevel"], stderr=subprocess.STDOUT + ) + ).strip() + + return Git(Path(git_dir)) + + except subprocess.CalledProcessError: + + return From ee92e80c36f3b8c1bb8b9d625efb518bff542d2e Mon Sep 17 00:00:00 2001 From: "finswimmer77@gmail.com" Date: Thu, 30 Jan 2020 06:52:22 +0100 Subject: [PATCH 3/4] fix (vcs): change back to original working dir after finding vcs --- poetry/vcs/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/poetry/vcs/__init__.py b/poetry/vcs/__init__.py index dd50f6584dd..675bcc57ad6 100644 --- a/poetry/vcs/__init__.py +++ b/poetry/vcs/__init__.py @@ -8,6 +8,7 @@ def get_vcs(directory): # type: (Path) -> Git + working_dir = Path.cwd() os.chdir(str(directory)) try: @@ -17,8 +18,11 @@ def get_vcs(directory): # type: (Path) -> Git ) ).strip() - return Git(Path(git_dir)) + vcs = Git(Path(git_dir)) except subprocess.CalledProcessError: + vcs = None + finally: + os.chdir(str(working_dir)) - return + return vcs From 96fa376949468539fb62ad07b0c93d5b9c47a2ff Mon Sep 17 00:00:00 2001 From: "finswimmer77@gmail.com" Date: Mon, 24 Feb 2020 06:12:55 +0100 Subject: [PATCH 4/4] change (builder): introduce self._original_path to keep original path if(vcs): resolve directory for `get_vcs` --- poetry/masonry/builders/builder.py | 5 ++--- poetry/vcs/__init__.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/poetry/masonry/builders/builder.py b/poetry/masonry/builders/builder.py index fea6fcd6727..f35c893866d 100644 --- a/poetry/masonry/builders/builder.py +++ b/poetry/masonry/builders/builder.py @@ -44,6 +44,7 @@ def __init__( self._io = io self._package = poetry.package self._path = poetry.file.parent + self._original_path = self._path packages = [] for p in self._package.packages: @@ -75,9 +76,7 @@ def build(self): @lru_cache(maxsize=None) def find_excluded_files(self): # type: () -> Set[str] # Checking VCS - vcs = get_vcs( - self._original_path if hasattr(self, "_original_path") else self._path - ) + vcs = get_vcs(self._original_path) if not vcs: vcs_ignored_files = set() else: diff --git a/poetry/vcs/__init__.py b/poetry/vcs/__init__.py index 675bcc57ad6..c13e4fa05ed 100644 --- a/poetry/vcs/__init__.py +++ b/poetry/vcs/__init__.py @@ -9,7 +9,7 @@ def get_vcs(directory): # type: (Path) -> Git working_dir = Path.cwd() - os.chdir(str(directory)) + os.chdir(str(directory.resolve())) try: git_dir = decode(