From 6e3a7083e2371441d49cd0d614acb56990d61a87 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 12 Apr 2011 20:24:42 -0400 Subject: [PATCH] only look at .class file modified times in Eval previously, for a directory on the classpath, all files and directories under it would be checked this caused unnecessary setting recompilation when non-classfiles changed in the directory One example was the sbt.plugins file, which doesn't affect compilation, and caused projects with plugins to take longer than necessary to start up --- compile/Eval.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compile/Eval.scala b/compile/Eval.scala index 0b14a02a0..82a6691a8 100644 --- a/compile/Eval.scala +++ b/compile/Eval.scala @@ -199,8 +199,7 @@ private object Eval def bytes(b: Boolean): Array[Byte] = Array[Byte](if(b) 1 else 0) def filesModifiedBytes(fs: Array[File]): Array[Byte] = if(fs eq null) filesModifiedBytes(Array[File]()) else seqBytes(fs)(fileModifiedBytes) def fileModifiedBytes(f: File): Array[Byte] = - bytes(f.lastModified) ++ - (if(f.isDirectory) filesModifiedBytes(f.listFiles) else bytes(-1 : Int)) ++ + (if(f.isDirectory) filesModifiedBytes(f listFiles classDirFilter) else bytes(f.lastModified)) ++ bytes(f.getAbsolutePath) def fileExistsBytes(f: File): Array[Byte] = bytes(f.exists) ++ @@ -219,4 +218,6 @@ private object Eval buffer.putInt(i) buffer.array } + + private val classDirFilter: FileFilter = DirectoryFilter || GlobFilter("*.class") } \ No newline at end of file