我正在尝试构建一个查询来列出作者更改的所有文件(以便稍后根据基于构造型的其他信息来过滤它们)。
当前查询返回许多文件 - 可能是由于合并(?)
我对Git / Graph Model的理解是这样的:
我当前使用的查询:
MATCH (author:Git:Author)-[:COMMITTED]->(commit:Git:Commit)-[cc:CONTAINS_CHANGE]->(change:Git:Change)-[]->(file:Git:File)
WHERE author.email="[email protected]"
RETURN file.relativePath
ORDER BY file.relativePath ASC
这会返回太多文件。我查看的一些随机样本并未在该文件的 git 历史记录中显示该开发人员。我认为这是由于一些合并而发生的?
但是使用 IDE 查看该文件的 git 历史记录并没有显示作者。
使用 git 命令返回的列表更接近我的预期结果:
git log --no-merges --author="developer-of-interest" --name-only --pretty=format:"" | sort -u
我很确定 Neo4j 查询有问题?
如何忽略那些由合并引起的提交? (如果这是问题所在)
也许您只需要返回不同的文件:
MATCH (author:Git:Author)-[:COMMITTED]->(:Git:Commit)-[:CONTAINS_CHANGE]->(:Git:Change)-->(file:Git:File)
WHERE author.email="[email protected]"
WITH DISTINCT file
RETURN file.relativePath
ORDER BY file.relativePath ASC
此外,如果返回相同的结果,请从查询中省略
:Git
标签。通过较少的过滤,查询将运行得更快。