Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Utilities
Kate
Commits
73b34c0d
Commit
73b34c0d
authored
Feb 02, 2021
by
Christoph Cullmann
🐮
Browse files
we need to filter git, too, because of symlinks
parent
79ca7e0d
Changes
1
Hide whitespace changes
Inline
Side-by-side
addons/project/kateprojectworker.cpp
View file @
73b34c0d
...
...
@@ -151,8 +151,22 @@ void KateProjectWorker::loadFilesEntry(QStandardItem *parent, const QVariantMap
return
;
}
/**
* get list of files for this directory, might query the VCS
*/
QStringList
files
=
findFiles
(
dir
,
filesEntry
);
/**
* sort out non-files
* even for git, that just reports non-directories, we need to filter out e.g. sym-links to directories
*/
files
.
erase
(
std
::
remove_if
(
files
.
begin
(),
files
.
end
(),
[](
const
QString
&
item
)
{
return
!
QFileInfo
(
item
).
isFile
();
}),
files
.
end
());
if
(
files
.
isEmpty
())
{
return
;
}
...
...
@@ -201,23 +215,6 @@ void KateProjectWorker::loadFilesEntry(QStandardItem *parent, const QVariantMap
}
}
/**
* Filter all non-files from the given list.
* e.g. needed for version control system unlike git that version directories, too, or user given lists
* @param listOfStuff list with files/directories/...
* @return only the elements that are files
*/
static
QStringList
removeNonFiles
(
QStringList
listOfStuff
)
{
listOfStuff
.
erase
(
std
::
remove_if
(
listOfStuff
.
begin
(),
listOfStuff
.
end
(),
[](
const
QString
&
item
)
{
return
!
QFileInfo
(
item
).
isFile
();
}),
listOfStuff
.
end
());
return
listOfStuff
;
}
QStringList
KateProjectWorker
::
findFiles
(
const
QDir
&
dir
,
const
QVariantMap
&
filesEntry
)
{
/**
...
...
@@ -234,15 +231,15 @@ QStringList KateProjectWorker::findFiles(const QDir &dir, const QVariantMap &fil
}
if
(
filesEntry
[
QStringLiteral
(
"svn"
)].
toBool
())
{
return
removeNonFiles
(
filesFromSubversion
(
dir
,
recursive
)
)
;
return
filesFromSubversion
(
dir
,
recursive
);
}
if
(
filesEntry
[
QStringLiteral
(
"hg"
)].
toBool
())
{
return
removeNonFiles
(
filesFromMercurial
(
dir
,
recursive
)
)
;
return
filesFromMercurial
(
dir
,
recursive
);
}
if
(
filesEntry
[
QStringLiteral
(
"darcs"
)].
toBool
())
{
return
removeNonFiles
(
filesFromDarcs
(
dir
,
recursive
)
)
;
return
filesFromDarcs
(
dir
,
recursive
);
}
/**
...
...
@@ -250,9 +247,9 @@ QStringList KateProjectWorker::findFiles(const QDir &dir, const QVariantMap &fil
*/
/**
* try explicit list of stuff
, we need to kill the non-files here ourself
* try explicit list of stuff
*/
QStringList
userGivenFilesList
=
removeNonFiles
(
filesEntry
[
QStringLiteral
(
"list"
)].
toStringList
()
)
;
QStringList
userGivenFilesList
=
filesEntry
[
QStringLiteral
(
"list"
)].
toStringList
();
if
(
!
userGivenFilesList
.
empty
())
{
/**
* users might have specified duplicates, this can't happen for the other ways
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment