如何在 Gradle 中区分 files/folders?
How to diff files/folders in Gradle?
我需要在 Gradle 中编写一个脚本,将 2 个文件夹作为输入。
这两个文件夹都包含 <1000 个结构相当相似的文件(主要是图像)。
输出应该是更改的文件列表以及它有什么样的差异(添加 file/deleted file/changed 文件)。
编辑:这是一个示例脚本 https://gist.github.com/igormukhin/71d780c4274336eeb297。唯一的问题是它按时间戳进行比较。
我很想使用 diff
:
def process = 'diff x y'.execute()
然后您可以以文本形式访问命令的输出:
println process.err.text
println process.in.text
并通过以下方式获取退出状态:
int status = process.waitFor()
许多常见的操作系统都会安装 diff
,但 Windows 可能不会。
我最近编写了与您要求的内容类似的代码:DirectoryDifferenceCollector;但是,它实际上比较文件的内容(作为哈希)而不是时间戳。如果适合您的需要,我愿意更新它以接受可配置的策略,或者您可以只使用所涉及的概念。
基本上它会扫描两个目录并确定 A 和 B 中丢失的文件,然后它还会确定两个目录共有但内容不同的文件。
结果收集在 DirectoryDifference 对象中,每个类别都有各自的文件路径。
我需要在 Gradle 中编写一个脚本,将 2 个文件夹作为输入。 这两个文件夹都包含 <1000 个结构相当相似的文件(主要是图像)。 输出应该是更改的文件列表以及它有什么样的差异(添加 file/deleted file/changed 文件)。
编辑:这是一个示例脚本 https://gist.github.com/igormukhin/71d780c4274336eeb297。唯一的问题是它按时间戳进行比较。
我很想使用 diff
:
def process = 'diff x y'.execute()
然后您可以以文本形式访问命令的输出:
println process.err.text
println process.in.text
并通过以下方式获取退出状态:
int status = process.waitFor()
许多常见的操作系统都会安装 diff
,但 Windows 可能不会。
我最近编写了与您要求的内容类似的代码:DirectoryDifferenceCollector;但是,它实际上比较文件的内容(作为哈希)而不是时间戳。如果适合您的需要,我愿意更新它以接受可配置的策略,或者您可以只使用所涉及的概念。
基本上它会扫描两个目录并确定 A 和 B 中丢失的文件,然后它还会确定两个目录共有但内容不同的文件。
结果收集在 DirectoryDifference 对象中,每个类别都有各自的文件路径。