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 |