projects/determineversion.vbs
changeset 7917 e6b7897c5a00
parent 7784 94d15bc396ce
child 7975 d8f22e2ece0c
equal deleted inserted replaced
7916:d2664b2b633f 7917:e6b7897c5a00
    37 			End If
    37 			End If
    38 		Case "h" ' mercurial (hg)
    38 		Case "h" ' mercurial (hg)
    39 			Set oExec = WshShell.Exec("hg log -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
    39 			Set oExec = WshShell.Exec("hg log -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
    40 			If Err.Number = 0 Then
    40 			If Err.Number = 0 Then
    41 				revision = Mid(OExec.StdOut.ReadLine(), 7)
    41 				revision = Mid(OExec.StdOut.ReadLine(), 7)
       
    42 				revision = Mid(revision, 1, InStr(revision, ")") - 1)
       
    43 			End If
       
    44 		Case "g" ' git
       
    45 			Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
       
    46 			if Err.Number = 0 Then
       
    47 				revision = Mid(oExec.StdOut.ReadLine(), 7)
    42 				revision = Mid(revision, 1, InStr(revision, ")") - 1)
    48 				revision = Mid(revision, 1, InStr(revision, ")") - 1)
    43 			End If
    49 			End If
    44 	End Select
    50 	End Select
    45 
    51 
    46 	UpdateFile revision, version, cur_date, "../src/rev.cpp"
    52 	UpdateFile revision, version, cur_date, "../src/rev.cpp"
   116 			url = Mid(url, InStr(url, "branches") + 8)
   122 			url = Mid(url, InStr(url, "branches") + 8)
   117 			url = Mid(url, 1, InStr(2, url, "/") - 1)
   123 			url = Mid(url, 1, InStr(2, url, "/") - 1)
   118 			version = version & Replace(url, "/", "-")
   124 			version = version & Replace(url, "/", "-")
   119 		End If
   125 		End If
   120 	Else
   126 	Else
   121 		' svn detection failed, reset error and try mercurial (hg)
   127 		' svn detection failed, reset error and try git
   122 		Err.Clear
   128 		Err.Clear
   123 		Set oExec = WshShell.Exec("hg tip")
   129 		Set oExec = WshShell.Exec("git rev-parse --verify --short=8 HEAD")
   124 		If Err.Number = 0 Then
   130 		Do While oExec.Status = 0 And Err.Number = 0
   125 			version = "h" & Mid(OExec.StdOut.ReadLine(), 19, 8)
   131 			' Wait till command has finished
   126 			Set oExec = WshShell.Exec("hg status ../src")
   132 		Loop
   127 			If Err.Number = 0 Then
   133 		If Err.Number = 0 And oExec.ExitCode = 0 Then
   128 				Do
   134 			version = "g" & oExec.StdOut.ReadLine()
   129 					line = OExec.StdOut.ReadLine()
   135 			Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src")
   130 					If Mid(line, 1, 1) <> "?" Then
   136 			Do While oExec.Status = 0 And Err.Number = 0
   131 						version = version & "M"
   137 			Loop
   132 						Exit Do
   138 			If Err.Number = 0 And oExec.ExitCode = 1 Then
   133 					End If
   139 				version = version & "M"
   134 				Loop While Not OExec.StdOut.atEndOfStream
   140 			End If
   135 			End If
   141 
   136 			Set oExec = WshShell.Exec("hg branch")
   142 			Set oExec = WshShell.Exec("git symbolic-ref HEAD")
   137 			If Err.Number = 0 Then
   143 			If Err.Number = 0 Then
   138 					line = OExec.StdOut.ReadLine()
   144 				line = oExec.StdOut.ReadLine()
   139 					If line <> "default" Then version = version & "-" & line
   145 				line = Mid(line, InStrRev(line, "/")+1)
       
   146 				If line <> "master" Then
       
   147 					version = version & "-" & line
       
   148 				End If
       
   149 			End If
       
   150 		Else
       
   151 			' try mercurial (hg)
       
   152 			Err.Clear
       
   153 			Set oExec = WshShell.Exec("hg tip")
       
   154 			If Err.Number = 0 Then
       
   155 				version = "h" & Mid(OExec.StdOut.ReadLine(), 19, 8)
       
   156 				Set oExec = WshShell.Exec("hg status ../src")
       
   157 				If Err.Number = 0 Then
       
   158 					Do
       
   159 						line = OExec.StdOut.ReadLine()
       
   160 						If Mid(line, 1, 1) <> "?" Then
       
   161 							version = version & "M"
       
   162 							Exit Do
       
   163 						End If
       
   164 					Loop While Not OExec.StdOut.atEndOfStream
       
   165 				End If
       
   166 				Set oExec = WshShell.Exec("hg branch")
       
   167 				If Err.Number = 0 Then
       
   168 						line = OExec.StdOut.ReadLine()
       
   169 						If line <> "default" Then
       
   170 							version = version & "-" & line
       
   171 						End If
       
   172 				End If
   140 			End If
   173 			End If
   141 		End If
   174 		End If
   142 	End If
   175 	End If
   143 
   176 
   144 	DetermineSVNVersion = version
   177 	DetermineSVNVersion = version