1919from dfetch .project .git import GitSubProject
2020from dfetch .project .subproject import SubProject
2121from dfetch .project .svn import SvnSubProject
22+ from dfetch .util .util import resolve_absolute_path
2223from dfetch .vcs .git import GitLocalRepo
2324from dfetch .vcs .svn import SvnRepo
2425
@@ -40,7 +41,9 @@ def __init__(self) -> None:
4041
4142 logger .debug (f"Using manifest { manifest_path } " )
4243 self ._manifest = parse (manifest_path )
43- self ._root_directory = os .path .dirname (self ._manifest .path )
44+ self ._root_directory = str (
45+ resolve_absolute_path (os .path .dirname (self ._manifest .path ))
46+ )
4447
4548 @property
4649 def root_directory (self ) -> str :
@@ -63,11 +66,13 @@ def get_sub_project(self, project: ProjectEntry) -> SubProject | None:
6366
6467 def ignored_files (self , path : str ) -> Sequence [str ]:
6568 """Return a list of files that can be ignored in a given path."""
66- if (
67- os .path .commonprefix ((pathlib .Path (path ).resolve (), self .root_directory ))
68- != self .root_directory
69- ):
70- raise RuntimeError (f"{ path } not in superproject { self .root_directory } !" )
69+ resolved_path = resolve_absolute_path (path )
70+ root_path = pathlib .Path (self .root_directory )
71+
72+ if not resolved_path .is_relative_to (root_path ):
73+ raise RuntimeError (
74+ f"{ resolved_path } not in superproject { self .root_directory } ! "
75+ )
7176
7277 if GitLocalRepo (self .root_directory ).is_git ():
7378 return GitLocalRepo .ignored_files (path )
0 commit comments