changeset 7784:84407cb523b6 draft

(svn r11334) -Codechange: add hg detection to MSVC
author glx <glx@openttd.org>
date Sun, 21 Oct 2007 17:09:44 +0000
parents ea876c197cb2
children 00e4d7f8a9ce
files projects/determineversion.vbs
diffstat 1 files changed, 42 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/projects/determineversion.vbs
+++ b/projects/determineversion.vbs
@@ -22,27 +22,33 @@
 End Sub
 
 Sub UpdateFiles(version)
-	Dim cur_date
+	Dim WshShell, cur_date, revision, oExec
+	Set WshShell = CreateObject("WScript.Shell")
 	cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
-	Dim revision
-	If version = "norev000" Then
-		revision = 0
-	Else
-		revision = Mid(version, 2)
-		If InStr(revision, "M") Then
-			revision = Mid(revision, 1, InStr(revision, "M") - 1)
-		End If
-		If InStr(revision, "-") Then
-			revision = Mid(revision, 1, InStr(revision, "-") - 1)
-		End If
-	End If
+	revision = 0
+	Select Case Mid(version, 1, 1)
+		Case "r" ' svn
+			revision = Mid(version, 2)
+			If InStr(revision, "M") Then
+				revision = Mid(revision, 1, InStr(revision, "M") - 1)
+			End If
+			If InStr(revision, "-") Then
+				revision = Mid(revision, 1, InStr(revision, "-") - 1)
+			End If
+		Case "h" ' mercurial (hg)
+			Set oExec = WshShell.Exec("hg log -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
+			If Err.Number = 0 Then
+				revision = Mid(OExec.StdOut.ReadLine(), 7)
+				revision = Mid(revision, 1, InStr(revision, ")") - 1)
+			End If
+	End Select
 
 	UpdateFile revision, version, cur_date, "../src/rev.cpp"
 	UpdateFile revision, version, cur_date, "../src/ottdres.rc"
 End Sub
 
 Function DetermineSVNVersion()
-	Dim WshShell, version, url, oExec
+	Dim WshShell, version, url, oExec, line
 	Set WshShell = CreateObject("WScript.Shell")
 	On Error Resume Next
 
@@ -92,7 +98,6 @@
 			' And use svn info to get the correct revision and branch information.
 			Set oExec = WshShell.Exec("svn info ../src")
 			If Err.Number = 0 Then
-				Dim line
 				Do
 					line = OExec.StdOut.ReadLine()
 					If InStr(line, "URL") Then
@@ -112,6 +117,28 @@
 			url = Mid(url, 1, InStr(2, url, "/") - 1)
 			version = version & Replace(url, "/", "-")
 		End If
+	Else
+		' svn detection failed, reset error and try mercurial (hg)
+		Err.Clear
+		Set oExec = WshShell.Exec("hg tip")
+		If Err.Number = 0 Then
+			version = "h" & Mid(OExec.StdOut.ReadLine(), 19, 8)
+			Set oExec = WshShell.Exec("hg status ../src")
+			If Err.Number = 0 Then
+				Do
+					line = OExec.StdOut.ReadLine()
+					If Mid(line, 1, 1) <> "?" Then
+						version = version & "M"
+						Exit Do
+					End If
+				Loop While Not OExec.StdOut.atEndOfStream
+			End If
+			Set oExec = WshShell.Exec("hg branch")
+			If Err.Number = 0 Then
+					line = OExec.StdOut.ReadLine()
+					If line <> "default" Then version = version & "-" & line
+			End If
+		End If
 	End If
 
 	DetermineSVNVersion = version