Skip to content

Commit 9715365

Browse files
committed
Brought version detection up-to-date.
* SBT's version creation is now on par with tools/get-latest-version
1 parent e596190 commit 9715365

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

project/Layers.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ trait Layers extends Build {
5757
// TODO - Allow other scalac option settings.
5858
scalacOptions in Compile <++= (scalaSource in Compile) map (src => Seq("-sourcepath", src.getAbsolutePath)),
5959
classpathOptions := ClasspathOptions.manual,
60-
resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged, gitRunner) map Release.generatePropertiesFile("library.properties"),
60+
resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged, gitRunner, streams) map Release.generatePropertiesFile("library.properties"),
6161
referenceScala
6262
)
6363

@@ -70,7 +70,7 @@ trait Layers extends Build {
7070
defaultExcludes := ("tests"),
7171
javacOptions ++= Seq("-source", "1.4"),
7272
defaultExcludes in unmanagedResources := "*.scala",
73-
resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged, gitRunner) map Release.generatePropertiesFile("compiler.properties"),
73+
resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged, gitRunner, streams) map Release.generatePropertiesFile("compiler.properties"),
7474
// Note, we might be able to use the default task, but for some reason ant was filtering files out. Not sure what's up, but we'll
7575
// stick with that for now.
7676
unmanagedResources in Compile <<= (baseDirectory) map {

project/Release.scala

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ object Release {
6666

6767
/** This generates a properties file, if it does not already exist, with the maximum lastmodified timestamp
6868
* of any source file. */
69-
def generatePropertiesFile(name: String)(baseDirectory: File, version: String, dir: File, git: GitRunner): Seq[File] = {
69+
def generatePropertiesFile(name: String)(baseDirectory: File, version: String, dir: File, git: GitRunner, s: TaskStreams): Seq[File] = {
7070
// TODO - We can probably clean this up by moving caching bits elsewhere perhaps....
7171
val target = dir / name
7272
// TODO - Regenerate on triggers, like recompilation or something...
73-
val fullVersion = makeFullVersionString(baseDirectory, version, git)
73+
val fullVersion = makeFullVersionString(baseDirectory, version, git, s)
7474
def hasSameVersion: Boolean = {
7575
val props = new java.util.Properties
7676
val in = new java.io.FileInputStream(target)
@@ -88,26 +88,28 @@ object Release {
8888
def makePropertiesFile(f: File, version: String): Unit =
8989
IO.write(f, "version.number = "+version+"\ncopyright.string = Copyright 2002-2011, LAMP/EPFL")
9090

91-
def makeFullVersionString(baseDirectory: File, baseVersion: String, git: GitRunner) = baseVersion+"."+getGitRevision(baseDirectory, git)+"."+currentDay
91+
def makeFullVersionString(baseDirectory: File, baseVersion: String, git: GitRunner, s: TaskStreams) = baseVersion+"."+getGitRevision(baseDirectory, git, currentDay, s)
9292

9393
// TODO - do we want this in the build number?
9494
def currentDay = (new java.text.SimpleDateFormat("yyyyMMdd'T'HHmmss")) format (new java.util.Date)
9595

96-
def getGitRevision(baseDirectory: File, git: GitRunner) = {
97-
object outputStealer extends sbt.Logger {
98-
private val stdout = new StringBuilder
99-
private val stderr = new StringBuilder
100-
def log (level: Level.Value, message: String): Unit = stdout append message
101-
def success (message: String): Unit = ()
102-
def trace (t: Throwable): Unit = ()
103-
def stdoutString = stdout.toString
104-
}
105-
val result = try {
106-
git("describe", "HEAD", "--abbrev=7", "--match", "dev")(baseDirectory, outputStealer)
107-
} catch {
108-
case t => git("describe", "HEAD", "--abbrev=7", "--always")(baseDirectory, outputStealer)
96+
97+
98+
def getGitRevision(baseDirectory: File, git: GitRunner, date: String, s: TaskStreams) = {
99+
100+
val mergeBase = {
101+
// TODO - Cache this value.
102+
// git("merge-base","v2.8.2","v2.9.1","master")(baseDirectory, s.log)
103+
"df13e31bbb"
109104
}
110-
result.trim
105+
// current commit sha
106+
val sha =
107+
git("rev-list", "-n", "1", "HEAD")(baseDirectory, s.log)
108+
109+
val commits =
110+
git("--no-pager", "log", "--pretty=oneline", mergeBase +"..HEAD")(baseDirectory, s.log) split "[\r\n]+" size
111+
112+
"rdev-%d-%s-g%s" format (commits, date, sha.substring(0,7))
111113
}
112114

113115
}

0 commit comments

Comments
 (0)