HowTo setup automatic refresh of repositories in Redmine on commit » History » Version 5

Etienne Massip, 2010-07-07 09:52

1 1 Etienne Massip
h1. HowTo setup automatic refresh of repositories in Redmine on commit
2 4 Mischa The Evil
3 4 Mischa The Evil
{{>toc}}
4 1 Etienne Massip
5 3 Etienne Massip
Since of version 0.9.0, you can use an HTTP submission, either GET or POST, to automatically refresh Redmine after you committed your modification in your repository.
6 1 Etienne Massip
7 1 Etienne Massip
Exemples:
8 1 Etienne Massip
9 1 Etienne Massip
* _/sys/fetch_changesets?key=<your service key>_ fetches changesets for all active projects
10 5 Etienne Massip
* _/sys/fetch_changesets?id=<project id>&key=<your service key>_ fetches changesets from the repository of a specific project
11 1 Etienne Massip
12 1 Etienne Massip
See #2925 for original feature request.
13 1 Etienne Massip
14 1 Etienne Massip
h2. Step 1 : configure Redmine to accept the request
15 1 Etienne Massip
16 1 Etienne Massip
Web service for repositories must by activated in the Administration menu and the generated key will have to be used by the caller in Step 2.
17 1 Etienne Massip
18 1 Etienne Massip
h2. Step 2 : setup a post-commit script on the SCM server
19 1 Etienne Massip
20 1 Etienne Massip
You have to setup a post-commit script which will call the previous URL.
21 1 Etienne Massip
22 1 Etienne Massip
h3. Subversion
23 1 Etienne Massip
24 1 Etienne Massip
Simply add a post-commit (or post-commit.cmd on a Windows system) script file in the hooks sub-directory which contains the HTTP request call :
25 1 Etienne Massip
26 1 Etienne Massip
<pre>
27 1 Etienne Massip
#!/bin/sh
28 1 Etienne Massip
29 1 Etienne Massip
curl http://<redmine url>/sys/fetch_changesets?key=<your service key>
30 1 Etienne Massip
</pre>
31 1 Etienne Massip
32 1 Etienne Massip
Or, on a Windows system (2 files) :
33 1 Etienne Massip
34 1 Etienne Massip
* post-commit.cmd :
35 1 Etienne Massip
<pre>
36 2 Etienne Massip
cscript "%~dp0refresh_redmine.vbs" //Nologo >> "%~dp0refresh_redmine.log" 2>&1
37 1 Etienne Massip
</pre>
38 1 Etienne Massip
39 1 Etienne Massip
* refresh_redmine.vbs :
40 1 Etienne Massip
<pre>
41 1 Etienne Massip
private const REDMINE_SERVICE_KEY = "<your service key>"
42 1 Etienne Massip
43 1 Etienne Massip
Call HTTPPost("http://<redmine url>/sys/fetch_changesets", "key=" & REDMINE_SERVICE_KEY)
44 1 Etienne Massip
45 1 Etienne Massip
Private Function HTTPPost(sUrl, sRequest)
46 1 Etienne Massip
  set oHTTP = CreateObject("Microsoft.XMLHTTP")
47 1 Etienne Massip
  oHTTP.open "POST", sUrl,false
48 1 Etienne Massip
  oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
49 1 Etienne Massip
  oHTTP.setRequestHeader "Content-Length", Len(sRequest)
50 1 Etienne Massip
  oHTTP.send sRequest
51 1 Etienne Massip
  HTTPPost = oHTTP.responseText
52 1 Etienne Massip
End Function
53 1 Etienne Massip
</pre>