package sbt /** * Represents a logical time point for dependency resolution. * This is used to cache dependencies across subproject resolution which may change over time. */ trait LogicalClock { def toString: String } object LogicalClock { def apply(hashCode: Int): LogicalClock = { def intToByteArray(x: Int): Array[Byte] = Array((x >>> 24).toByte, (x >> 16 & 0xff).toByte, (x >> 8 & 0xff).toByte, (x & 0xff).toByte) apply(Hash.toHex(intToByteArray(hashCode))) } def apply(x: String): LogicalClock = new LogicalClock { override def toString: String = x } def unknown: LogicalClock = apply("unknown") }