(svn r14522) -Fix: apply r14519 to determineversion.vbs. Also properly set 'modified' for hg and git (was always 1).

This commit is contained in:
glx 2008-10-23 02:52:11 +00:00
parent eb0464071d
commit f9221778cc
1 changed files with 61 additions and 47 deletions

View File

@ -23,36 +23,18 @@ Sub UpdateFile(modified, revision, version, cur_date, filename)
End Sub End Sub
Sub UpdateFiles(version) Sub UpdateFiles(version)
Dim WshShell, cur_date, modified, revision, oExec Dim modified, revision, cur_date
Set WshShell = CreateObject("WScript.Shell")
cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date) cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
revision = 0
modified = 1 If InStr(version, Chr(9)) Then
Select Case Mid(version, 1, 1) revision = Mid(version, InStr(version, Chr(9)) + 1)
Case "r" ' svn revision = Mid(revision, 1, InStr(revision, Chr(9)) - 1)
revision = Mid(version, 2) modified = Mid(version, InStrRev(version, Chr(9)) + 1)
If InStr(revision, "M") Then version = Mid(version, 1, InStr(version, Chr(9)) - 1)
revision = Mid(revision, 1, InStr(revision, "M") - 1) Else
modified = 2 revision = 0
Else modified = 1
modified = 0 End If
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 -r " & Mid(version, 2, 8) & ":0 -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
Case "g" ' git
Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
if Err.Number = 0 Then
revision = Mid(oExec.StdOut.ReadLine(), 7)
revision = Mid(revision, 1, InStr(revision, ")") - 1)
End If
End Select
UpdateFile modified, revision, version, cur_date, "../src/rev.cpp" UpdateFile modified, revision, version, cur_date, "../src/rev.cpp"
UpdateFile modified, revision, version, cur_date, "../src/ottdres.rc" UpdateFile modified, revision, version, cur_date, "../src/ottdres.rc"
@ -96,7 +78,7 @@ Function ReadRegistryKey(shive, subkey, valuename, architecture)
End Function End Function
Function DetermineSVNVersion() Function DetermineSVNVersion()
Dim WshShell, version, url, oExec, line Dim WshShell, version, branch, modified, revision, url, oExec, line, hash
Set WshShell = CreateObject("WScript.Shell") Set WshShell = CreateObject("WScript.Shell")
On Error Resume Next On Error Resume Next
@ -117,6 +99,8 @@ Function DetermineSVNVersion()
Set file = FSO.CreateTextFile("tsvn_tmp", -1, 0) Set file = FSO.CreateTextFile("tsvn_tmp", -1, 0)
file.WriteLine "r$WCREV$$WCMODS?M:$" file.WriteLine "r$WCREV$$WCMODS?M:$"
file.WriteLine "$WCURL$" file.WriteLine "$WCURL$"
file.WriteLine "$WCMODS?2:0$"
file.WriteLine "$WCREV$"
file.Close file.Close
Set oExec = WshShell.Exec(sTortoise & "\bin\SubWCRev.exe ../src tsvn_tmp tsvn_tmp") Set oExec = WshShell.Exec(sTortoise & "\bin\SubWCRev.exe ../src tsvn_tmp tsvn_tmp")
' Wait till the application is finished ... ' Wait till the application is finished ...
@ -127,6 +111,8 @@ Function DetermineSVNVersion()
Set file = FSO.OpenTextFile("tsvn_tmp", 1, 0, 0) Set file = FSO.OpenTextFile("tsvn_tmp", 1, 0, 0)
version = file.ReadLine version = file.ReadLine
url = file.ReadLine url = file.ReadLine
modified = file.ReadLine
revision = file.ReadLine
file.Close file.Close
Set file = FSO.GetFile("tsvn_tmp") Set file = FSO.GetFile("tsvn_tmp")
@ -138,6 +124,7 @@ Function DetermineSVNVersion()
' Reset error and version ' Reset error and version
Err.Clear Err.Clear
version = "norev000" version = "norev000"
modified = 0
' Set the environment to english ' Set the environment to english
WshShell.Environment("PROCESS")("LANG") = "en" WshShell.Environment("PROCESS")("LANG") = "en"
@ -151,11 +138,8 @@ Function DetermineSVNVersion()
line = OExec.StdOut.ReadLine() line = OExec.StdOut.ReadLine()
If line <> "exported" Then If line <> "exported" Then
Dim modified
If InStr(line, "M") Then If InStr(line, "M") Then
modified = "M" modified = 2
Else
modified = ""
End If End If
' And use svn info to get the correct revision and branch information. ' And use svn info to get the correct revision and branch information.
@ -167,7 +151,8 @@ Function DetermineSVNVersion()
url = line url = line
End If End If
If InStr(line, "Last Changed Rev") Then If InStr(line, "Last Changed Rev") Then
version = "r" & Mid(line, 19) & modified revision = Mid(line, 19)
version = "r" & revision
End If End If
Loop While Not OExec.StdOut.atEndOfStream Loop While Not OExec.StdOut.atEndOfStream
End If ' Err.Number = 0 End If ' Err.Number = 0
@ -177,21 +162,21 @@ Function DetermineSVNVersion()
If version <> "norev000" Then If version <> "norev000" Then
If InStr(url, "branches") Then If InStr(url, "branches") Then
url = Mid(url, InStr(url, "branches") + 8) url = Mid(url, InStr(url, "branches/") + 9)
url = Mid(url, 1, InStr(2, url, "/") - 1) branch = Mid(url, 1, InStr(2, url, "/") - 1)
version = version & Replace(url, "/", "-")
End If End If
Else ' version <> "norev000" Else ' version <> "norev000"
' svn detection failed, reset error and try git ' svn detection failed, reset error and try git
Err.Clear Err.Clear
Set oExec = WshShell.Exec("git rev-parse --verify --short=8 HEAD") Set oExec = WshShell.Exec("git rev-parse --verify HEAD")
If Err.Number = 0 Then If Err.Number = 0 Then
' Wait till the application is finished ... ' Wait till the application is finished ...
Do While oExec.Status = 0 Do While oExec.Status = 0
Loop Loop
If oExec.ExitCode = 0 Then If oExec.ExitCode = 0 Then
version = "g" & oExec.StdOut.ReadLine() hash = oExec.StdOut.ReadLine()
version = "g" & Mid(hash, 1, 8)
Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src") Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src")
If Err.Number = 0 Then If Err.Number = 0 Then
' Wait till the application is finished ... ' Wait till the application is finished ...
@ -199,7 +184,7 @@ Function DetermineSVNVersion()
Loop Loop
If oExec.ExitCode = 1 Then If oExec.ExitCode = 1 Then
version = version & "M" modified = 2
End If ' oExec.ExitCode = 1 End If ' oExec.ExitCode = 1
Set oExec = WshShell.Exec("git symbolic-ref HEAD") Set oExec = WshShell.Exec("git symbolic-ref HEAD")
@ -207,9 +192,15 @@ Function DetermineSVNVersion()
line = oExec.StdOut.ReadLine() line = oExec.StdOut.ReadLine()
line = Mid(line, InStrRev(line, "/") + 1) line = Mid(line, InStrRev(line, "/") + 1)
If line <> "master" Then If line <> "master" Then
version = version & "-" & line branch = line
End If ' line <> "master" End If ' line <> "master"
End If ' Err.Number = 0 End If ' Err.Number = 0
Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
if Err.Number = 0 Then
revision = Mid(oExec.StdOut.ReadLine(), 7)
revision = Mid(revision, 1, InStr(revision, ")") - 1)
End If ' Err.Number = 0
End If ' Err.Number = 0 End If ' Err.Number = 0
End If ' oExec.ExitCode = 0 End If ' oExec.ExitCode = 0
End If ' Err.Number = 0 End If ' Err.Number = 0
@ -225,13 +216,14 @@ Function DetermineSVNVersion()
If oExec.ExitCode = 0 Then If oExec.ExitCode = 0 Then
line = OExec.StdOut.ReadLine() line = OExec.StdOut.ReadLine()
version = "h" & Mid(line, InStrRev(line, ":") + 1, 8) hash = Mid(line, InStrRev(line, ":") + 1)
version = "h" & Mid(hash, 1, 8)
Set oExec = WshShell.Exec("hg status ../src") Set oExec = WshShell.Exec("hg status ../src")
If Err.Number = 0 Then If Err.Number = 0 Then
Do Do
line = OExec.StdOut.ReadLine() line = OExec.StdOut.ReadLine()
If Len(line) > 0 And Mid(line, 1, 1) <> "?" Then If Len(line) > 0 And Mid(line, 1, 1) <> "?" Then
version = version & "M" modified = 2
Exit Do Exit Do
End If ' Len(line) > 0 And Mid(line, 1, 1) <> "?" End If ' Len(line) > 0 And Mid(line, 1, 1) <> "?"
Loop While Not OExec.StdOut.atEndOfStream Loop While Not OExec.StdOut.atEndOfStream
@ -240,19 +232,37 @@ Function DetermineSVNVersion()
If Err.Number = 0 Then If Err.Number = 0 Then
line = OExec.StdOut.ReadLine() line = OExec.StdOut.ReadLine()
If line <> "default" Then If line <> "default" Then
version = version & "-" & line branch = line
End If ' line <> "default" End If ' line <> "default"
End If ' Err.Number = 0 End If ' Err.Number = 0
Set oExec = WshShell.Exec("hg log -r " & hash & ":0 -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 ' Err.Number = 0
End If ' Err.Number = 0 End If ' Err.Number = 0
End If ' oExec.ExitCode = 0 End If ' oExec.ExitCode = 0
End If ' Err.Number = 0 End If ' Err.Number = 0
End If ' version = "norev000" End If ' version = "norev000"
End If ' version <> "norev000" End If ' version <> "norev000"
DetermineSVNVersion = version If modified = 2 Then
version = version & "M"
End If
If branch <> "" Then
version = version & "-" & branch
End If
If version <> "norev000" Then
DetermineSVNVersion = version & Chr(9) & revision & Chr(9) & modified
Else
DetermineSVNVersion = version
End If
End Function End Function
Function IsCachedVersion(version) Function IsCachedVersion(ByVal version)
Dim cache_file, cached_version Dim cache_file, cached_version
cached_version = "" cached_version = ""
Set cache_file = FSO.OpenTextFile("../config.cache.version", 1, True, 0) Set cache_file = FSO.OpenTextFile("../config.cache.version", 1, True, 0)
@ -261,6 +271,10 @@ Function IsCachedVersion(version)
End If End If
cache_file.Close cache_file.Close
If InStr(version, Chr(9)) Then
version = Mid(version, 1, Instr(version, Chr(9)) - 1)
End If
If version <> cached_version Then If version <> cached_version Then
Set cache_file = fso.CreateTextFile("../config.cache.version", True) Set cache_file = fso.CreateTextFile("../config.cache.version", True)
cache_file.WriteLine(version) cache_file.WriteLine(version)