Skip to content

Commit 976fb57

Browse files
author
Sebastian McKenzie
committed
check mtime when checking whether to skip copying of files - fixes #114
1 parent 7a4cc9d commit 976fb57

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/util/fs.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ export async function copy(src: string, dest: string): Promise<void> {
3838
if (await exists(dest)) {
3939
let destStat = await lstat(dest);
4040

41-
if (srcStat.isFile() && destStat.isFile() && srcStat.size === destStat.size) {
41+
if (srcStat.isFile() && destStat.isFile() &&
42+
srcStat.size === destStat.size && +srcStat.mtime === +destStat.mtime) {
4243
// we can safely assume this is the same file
4344
return;
4445
}
@@ -82,12 +83,18 @@ export async function copy(src: string, dest: string): Promise<void> {
8283
readStream.on("error", reject);
8384
writeStream.on("error", reject);
8485

85-
writeStream.on("open", function() {
86+
writeStream.on("open", function () {
8687
readStream.pipe(writeStream);
8788
});
8889

89-
writeStream.once("finish", function() {
90-
resolve();
90+
writeStream.once("finish", function () {
91+
fs.utimes(dest, +srcStat.atime, +srcStat.mtime, function (err) {
92+
if (err) {
93+
reject(err);
94+
} else {
95+
resolve();
96+
}
97+
});
9198
});
9299
});
93100
} else {

0 commit comments

Comments
 (0)