mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Force use of posixpath when joining salt fileserver paths in gitfs
This commit is contained in:
parent
cafa08d8e0
commit
a8bcaa73d7
1 changed files with 47 additions and 20 deletions
|
@ -770,7 +770,8 @@ class GitPython(GitProvider):
|
|||
relpath = lambda path: os.path.relpath(path, self.root)
|
||||
else:
|
||||
relpath = lambda path: path
|
||||
add_mountpoint = lambda path: salt.utils.path_join(self.mountpoint, path)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(
|
||||
self.mountpoint, path, use_posixpath=True)
|
||||
for blob in tree.traverse():
|
||||
if isinstance(blob, git.Tree):
|
||||
ret.add(add_mountpoint(relpath(blob.path)))
|
||||
|
@ -846,7 +847,8 @@ class GitPython(GitProvider):
|
|||
relpath = lambda path: os.path.relpath(path, self.root)
|
||||
else:
|
||||
relpath = lambda path: path
|
||||
add_mountpoint = lambda path: salt.utils.path_join(self.mountpoint, path)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(
|
||||
self.mountpoint, path, use_posixpath=True)
|
||||
for file_blob in tree.traverse():
|
||||
if not isinstance(file_blob, git.Blob):
|
||||
continue
|
||||
|
@ -888,7 +890,8 @@ class GitPython(GitProvider):
|
|||
stream.seek(0)
|
||||
link_tgt = stream.read()
|
||||
stream.close()
|
||||
path = salt.utils.path_join(os.path.dirname(path), link_tgt)
|
||||
path = salt.utils.path_join(
|
||||
os.path.dirname(path), link_tgt, use_posixpath=True)
|
||||
else:
|
||||
blob = file_blob
|
||||
if isinstance(blob, git.Tree):
|
||||
|
@ -1263,9 +1266,14 @@ class Pygit2(GitProvider):
|
|||
blob = self.repo[entry.oid]
|
||||
if not isinstance(blob, pygit2.Tree):
|
||||
continue
|
||||
blobs.append(salt.utils.path_join(prefix, entry.name))
|
||||
blobs.append(
|
||||
salt.utils.path_join(prefix, entry.name, use_posixpath=True)
|
||||
)
|
||||
if len(blob):
|
||||
_traverse(blob, blobs, salt.utils.path_join(prefix, entry.name))
|
||||
_traverse(
|
||||
blob, blobs, salt.utils.path_join(
|
||||
prefix, entry.name, use_posixpath=True)
|
||||
)
|
||||
|
||||
ret = set()
|
||||
tree = self.get_tree(tgt_env)
|
||||
|
@ -1285,7 +1293,8 @@ class Pygit2(GitProvider):
|
|||
blobs = []
|
||||
if len(tree):
|
||||
_traverse(tree, blobs, self.root)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(self.mountpoint, path)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(
|
||||
self.mountpoint, path, use_posixpath=True)
|
||||
for blob in blobs:
|
||||
ret.add(add_mountpoint(relpath(blob)))
|
||||
if self.mountpoint:
|
||||
|
@ -1375,13 +1384,17 @@ class Pygit2(GitProvider):
|
|||
continue
|
||||
obj = self.repo[entry.oid]
|
||||
if isinstance(obj, pygit2.Blob):
|
||||
repo_path = salt.utils.path_join(prefix, entry.name)
|
||||
repo_path = salt.utils.path_join(
|
||||
prefix, entry.name, use_posixpath=True)
|
||||
blobs.setdefault('files', []).append(repo_path)
|
||||
if stat.S_ISLNK(tree[entry.name].filemode):
|
||||
link_tgt = self.repo[tree[entry.name].oid].data
|
||||
blobs.setdefault('symlinks', {})[repo_path] = link_tgt
|
||||
elif isinstance(obj, pygit2.Tree):
|
||||
_traverse(obj, blobs, salt.utils.path_join(prefix, entry.name))
|
||||
_traverse(
|
||||
obj, blobs, salt.utils.path_join(
|
||||
prefix, entry.name, use_posixpath=True)
|
||||
)
|
||||
|
||||
files = set()
|
||||
symlinks = {}
|
||||
|
@ -1405,7 +1418,8 @@ class Pygit2(GitProvider):
|
|||
blobs = {}
|
||||
if len(tree):
|
||||
_traverse(tree, blobs, self.root)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(self.mountpoint, path)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(
|
||||
self.mountpoint, path, use_posixpath=True)
|
||||
for repo_path in blobs.get('files', []):
|
||||
files.add(add_mountpoint(relpath(repo_path)))
|
||||
for repo_path, link_tgt in six.iteritems(blobs.get('symlinks', {})):
|
||||
|
@ -1434,7 +1448,8 @@ class Pygit2(GitProvider):
|
|||
# the symlink and set path to the location indicated
|
||||
# in the blob data.
|
||||
link_tgt = self.repo[tree[path].oid].data
|
||||
path = salt.utils.path_join(os.path.dirname(path), link_tgt)
|
||||
path = salt.utils.path_join(
|
||||
os.path.dirname(path), link_tgt, use_posixpath=True)
|
||||
else:
|
||||
oid = tree[path].oid
|
||||
blob = self.repo[oid]
|
||||
|
@ -1645,9 +1660,14 @@ class Dulwich(GitProvider): # pylint: disable=abstract-method
|
|||
continue
|
||||
if not isinstance(obj, dulwich.objects.Tree):
|
||||
continue
|
||||
blobs.append(salt.utils.path_join(prefix, item.path))
|
||||
blobs.append(
|
||||
salt.utils.path_join(prefix, item.path, use_posixpath=True)
|
||||
)
|
||||
if len(self.repo.get_object(item.sha)):
|
||||
_traverse(obj, blobs, salt.utils.path_join(prefix, item.path))
|
||||
_traverse(
|
||||
obj, blobs, salt.utils.path_join(
|
||||
prefix, item.path, use_posixpath=True)
|
||||
)
|
||||
|
||||
ret = set()
|
||||
tree = self.get_tree(tgt_env)
|
||||
|
@ -1661,7 +1681,8 @@ class Dulwich(GitProvider): # pylint: disable=abstract-method
|
|||
relpath = lambda path: os.path.relpath(path, self.root)
|
||||
else:
|
||||
relpath = lambda path: path
|
||||
add_mountpoint = lambda path: salt.utils.path_join(self.mountpoint, path)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(
|
||||
self.mountpoint, path, use_posixpath=True)
|
||||
for blob in blobs:
|
||||
ret.add(add_mountpoint(relpath(blob)))
|
||||
if self.mountpoint:
|
||||
|
@ -1761,14 +1782,18 @@ class Dulwich(GitProvider): # pylint: disable=abstract-method
|
|||
# Entry is a submodule, skip it
|
||||
continue
|
||||
if isinstance(obj, dulwich.objects.Blob):
|
||||
repo_path = salt.utils.path_join(prefix, item.path)
|
||||
repo_path = salt.utils.path_join(
|
||||
prefix, item.path, use_posixpath=True)
|
||||
blobs.setdefault('files', []).append(repo_path)
|
||||
mode, oid = tree[item.path]
|
||||
if stat.S_ISLNK(mode):
|
||||
link_tgt = self.repo.get_object(oid).as_raw_string()
|
||||
blobs.setdefault('symlinks', {})[repo_path] = link_tgt
|
||||
elif isinstance(obj, dulwich.objects.Tree):
|
||||
_traverse(obj, blobs, salt.utils.path_join(prefix, item.path))
|
||||
_traverse(
|
||||
obj, blobs, salt.utils.path_join(
|
||||
prefix, item.path, use_posixpath=True)
|
||||
)
|
||||
|
||||
files = set()
|
||||
symlinks = {}
|
||||
|
@ -1783,7 +1808,8 @@ class Dulwich(GitProvider): # pylint: disable=abstract-method
|
|||
relpath = lambda path: os.path.relpath(path, self.root)
|
||||
else:
|
||||
relpath = lambda path: path
|
||||
add_mountpoint = lambda path: salt.utils.path_join(self.mountpoint, path)
|
||||
add_mountpoint = lambda path: salt.utils.path_join(
|
||||
self.mountpoint, path, use_posixpath=True)
|
||||
for repo_path in blobs.get('files', []):
|
||||
files.add(add_mountpoint(relpath(repo_path)))
|
||||
for repo_path, link_tgt in six.iteritems(blobs.get('symlinks', {})):
|
||||
|
@ -1818,7 +1844,8 @@ class Dulwich(GitProvider): # pylint: disable=abstract-method
|
|||
# symlink. Follow the symlink and set path to the
|
||||
# location indicated in the blob data.
|
||||
link_tgt = self.repo.get_object(oid).as_raw_string()
|
||||
path = salt.utils.path_join(os.path.dirname(path), link_tgt)
|
||||
path = salt.utils.path_join(
|
||||
os.path.dirname(path), link_tgt, use_posixpath=True)
|
||||
else:
|
||||
blob = self.repo.get_object(oid)
|
||||
if isinstance(blob, dulwich.objects.Tree):
|
||||
|
@ -2017,10 +2044,10 @@ class GitBase(object):
|
|||
if cache_root is not None:
|
||||
self.cache_root = cache_root
|
||||
else:
|
||||
self.cache_root = salt.utils.path_join(self.opts['cachedir'], self.role)
|
||||
self.cache_root = salt.utils.path_join(
|
||||
self.opts['cachedir'], self.role)
|
||||
self.env_cache = salt.utils.path_join(self.cache_root, 'envs.p')
|
||||
self.hash_cachedir = salt.utils.path_join(
|
||||
self.cache_root, 'hash')
|
||||
self.hash_cachedir = salt.utils.path_join(self.cache_root, 'hash')
|
||||
self.file_list_cachedir = salt.utils.path_join(
|
||||
self.opts['cachedir'], 'file_lists', self.role)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue