1 | 1 | simandl | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2 | | | <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> |
3 | | | <head> |
4 | | | <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
5 | | | <meta http-equiv="content-script-type" content="text/javascript" /> |
6 | | | <meta http-equiv="content-style-type" content="text/css" /> |
7 | | | <title>WebSVN Installation Guide</title> |
8 | | | <link rel="stylesheet" type="text/css" href="style.css" /> |
9 | | | </head> |
10 | | | |
11 | | | <body> |
12 | | | |
13 | | | <h1>WebSVN Installation Guide</h1> |
14 | | | |
15 | | | <div class="misc"> |
16 | | | <h2><a name="content"></a>Content</h2> |
17 | | | <ul> |
18 | | | <li><a href="#why">Why WebSVN?</a></li> |
19 | | | <li><a href="#installation">Installation</a></li> |
20 | | | <li><a href="#accentedchars">Accented characters</a></li> |
21 | | | <li><a href="#colourisation">Colourisation</a></li> |
22 | | | <li><a href="#multiviews">Mulitviews</a></li> |
23 | | | <li><a href="#multiviewsexample">Mulitviews example</a></li> |
24 | | | <li><a href="#authentication">Access rights and authentication</a></li> |
25 | | | <li><a href="#problems">Common problems</a></li> |
26 | | | <li><a href="#license">License</a></li> |
27 | | | </ul> |
28 | | | </div> |
29 | | | |
30 | | | <div class="content"> |
31 | | | <h2><a name="why"></a>Why WebSVN?</h2> |
32 | | | |
33 | | | <p>WebSVN offers a view onto your subversion repositories that's been designed |
34 | | | to reflect the Subversion methodology. You can view the log of any file or |
35 | | | directory and see a list of all the files changed, added or deleted in any |
36 | | | given revision. You can also view the differences between 2 versions of a |
37 | | | file so as to see exactly what was changed in a particular revision.</p> |
38 | | | |
39 | | | <p>WebSVN offers the following features:</p> |
40 | | | |
41 | | | <ul> |
42 | | | <li>Easy to use interface</li> |
43 | | | <li>Highly customisable templating system</li> |
44 | | | <li>Colourisation of file listings</li> |
45 | | | <li>Blame view</li> |
46 | | | <li>Log message searching</li> |
47 | | | <li>Apache MultiViews support</li> |
48 | | | <li>RSS feed support</li> |
49 | | | <li>Support for bugtraq: properties</li> |
50 | | | </ul> |
51 | | | |
52 | | | <p>Since it's written using PHP, WebSVN is also very portable and easy to install.</p> |
53 | | | |
54 | | | <h2><a name="installation"></a>Installation</h2> |
55 | | | |
56 | 3 | simandl | <p>Grab the source and stick it somewhere that your server can get to. |
57 | | | You need to have <strong>PHP 4.3.0</strong> or greater installed and working. |
58 | | | Additionally you need <strong>SVN 1.2.0</strong> or greater. |
59 | | | Also note that WebSVN won't currently work in safe mode, due to the need to call svn/svnlook.</p> |
60 | 1 | simandl | |
61 | 3 | simandl | <p>If it isn't already, make sure to chmod the cache directory to at least 0700, |
62 | | | and is owned by the process your webserver is running under. This is used to |
63 | | | cache RSS files. It is not recommended to set the directory to full write, |
64 | | | 0777.</p> |
65 | 1 | simandl | |
66 | | | <p>Rename distconfig.php as config.php (found in the includes directory) and then |
67 | | | edit it as directed in the file itself.</p> |
68 | | | |
69 | | | <p>If everything has gone well, you should be able to view your projects by |
70 | | | pointing your browser at the index.php file.</p> |
71 | | | |
72 | | | <p>For those of you wishing to customise the look and feel a little, you should |
73 | | | read templates.txt, which explains the highly configurable template system.</p> |
74 | | | |
75 | 3 | simandl | <p>No other external program are required.</p> |
76 | | | |
77 | | | <!-- |
78 | | | <p>You'll also need diff (preferably the GNU version; for Windows users I'd |
79 | | | recommend the Cygwin version) and svnlook available.</p> |
80 | | | |
81 | 1 | simandl | <p><b>Windows users:</b> Note that some of the features offered by WebSVN, when |
82 | | | enabled, require the use of various external programs. They can be downloaded |
83 | | | from these locations:</p> |
84 | | | |
85 | 3 | simandl | <p>Diff/Sed/Gzip/Tar: <a href="http://www.cygwin.com/">http://www.cygwin.com/</a></p> |
86 | | | --> |
87 | 1 | simandl | |
88 | | | <h2><a name="accentedchars"></a>Accented characters</h2> |
89 | | | |
90 | | | <p>WebSVN is designed to worked with accented characters. To do this, it uses |
91 | | | the iconv function. This may not be installed on your system. If you aren't |
92 | | | getting the characters that you expect, make sure that the iconv module is |
93 | | | being loaded in php.ini. Windows users will need to copy the appropriate |
94 | | | DLLs to the system directory (from the PHP installation directory).</p> |
95 | | | |
96 | | | <h2><a name="colourisation"></a>Colourisation</h2> |
97 | | | |
98 | | | <p>Per default WebSVN uses the Generic Syntax Highlighter GeSHi which is bundle with WebSVN.</p> |
99 | | | |
100 | | | <p>Alternatively, if you have Enscript 1.6 or higher installed on your system, |
101 | 3 | simandl | you can use that to view files with syntax colouring. You'll also need Sed.<br /> |
102 | | | It can be found at <a href="http://people.ssh.com/mtr/genscript/">http://people.ssh.com/mtr/genscript/</a></p> |
103 | 1 | simandl | |
104 | 3 | simandl | |
105 | 1 | simandl | <p>Simply set the paths in the config file and then uncomment the line:</p> |
106 | | | |
107 | | | <pre class="code"> |
108 | | | $config->useEnscript(); |
109 | | | </pre> |
110 | | | |
111 | | | <p>and comment the line:</p> |
112 | | | |
113 | | | <p>Alternatively you can use GeSHi which is bundle with WebSVN.</p> |
114 | | | |
115 | | | <p>Simply uncomment the line:</p> |
116 | | | |
117 | | | <pre class="code"> |
118 | | | $config->useGeshi(); |
119 | | | </pre> |
120 | | | |
121 | | | |
122 | | | <h2><a name="multiviews"></a>Multiviews</h2> |
123 | | | |
124 | | | <p>You may choose to configure access to your repository via Apache's MultiView |
125 | | | system. This will enable you to access a respositoy using a url such as:</p> |
126 | | | |
127 | | | <p>http://servername/wsvn/repname/path/in/repository</p> |
128 | | | |
129 | | | <p>To do this you must:</p> |
130 | | | |
131 | | | <ul> |
132 | | | <li>Place wsvn.php where you want to. Normally you place it such that it's accessible straight after the servername, as shown above.</li> |
133 | | | <li>Configure the parent directory of wsvn.php to use MultiViews (see Apache docs).</li> |
134 | | | <li>Change config.php to include the line $config->useMultiViews();</li> |
135 | | | <li>Change the path configured at the beginning of the wsvn.php script.</li> |
136 | | | </ul> |
137 | | | |
138 | | | <p>Now go to http://servername/wsvn/ and make sure that you get the index page.</p> |
139 | | | |
140 | | | <p>The repname part of the URL is the name given to it in the config.php file. |
141 | | | For this reason you may wish to avoid putting spaces in the name.</p> |
142 | | | |
143 | | | |
144 | | | <h2><a name="multiviewsexample"></a>Multiviews example</h2> |
145 | | | |
146 | | | <p>First, you must get the Multiviews option working. In my set up, my Apache |
147 | | | directory root is set to a location on my harddrive:</p> |
148 | | | |
149 | | | <pre class="code"> |
150 | | | DocumentRoot "D:/svnpage" |
151 | | | </pre> |
152 | | | |
153 | | | <p>In that directory, I have WebSVN installed in a directory called websvn. |
154 | | | Normally WebSVN would be accessed by http://servername/websvn</p> |
155 | | | |
156 | | | <p>wsvn.php is then copied from the WebSVN installation to the document root |
157 | | | directory and the variable at the beginning of the script configured as |
158 | | | follows (based on your own directory location, obviously):</p> |
159 | | | |
160 | | | <pre class="code"> |
161 | | | // Location of websvn directory via HTTP |
162 | | | // |
163 | | | // e.g. For http://servername/websvn use /websvn |
164 | | | // |
165 | | | // Note that wsvn.php need not be in the /websvn directory (and normally isn't). |
166 | | | $locwebsvnhttp = "/websvn"; |
167 | | | </pre> |
168 | | | |
169 | | | <p>Next, turn on Multiviews in the WebSVN config.php file:</p> |
170 | | | |
171 | | | <pre class="code"> |
172 | | | $config->useMultiViews(); |
173 | | | </pre> |
174 | | | |
175 | | | <p>Finally, Apache needs to know that you want to enable MultiViews for the root |
176 | | | directory. This can be done by including this line in the directory's |
177 | | | .htaccess file (assuming that the appropriate AllowOverrides directive is set |
178 | | | up):</p> |
179 | | | |
180 | | | <pre class="code"> |
181 | | | Options MultiViews |
182 | | | </pre> |
183 | | | |
184 | | | <p>If all has gone well, repositories should now by accessible by |
185 | | | <code>http://servername/wsvn/repname</code></p> |
186 | | | |
187 | | | <p>Note the index page can be accessed through http://servername/wsvn |
188 | | | If you want to view the index page by <code>http://servername/</code> you need to |
189 | | | add another directive to the .htaccess file:</p> |
190 | | | |
191 | | | <pre class="code"> |
192 | | | DirectoryIndex wsvn.php |
193 | | | </pre> |
194 | | | |
195 | | | |
196 | | | <h2><a name="authentication"></a>Access rights and authentication</h2> |
197 | | | |
198 | | | <p>You may wish to provide an authentication mechanism for WebSVN. One obvious |
199 | | | solution is to protect the entire WebSVN directory with some form of Apache |
200 | | | authentication mechanism, but that doesn't allow for per repository |
201 | | | authentication.</p> |
202 | | | |
203 | | | <p>WebSVN provides and access rights mechanism that uses your SVN access file to |
204 | | | control read access to the repository. This means that you only have to |
205 | | | maintain one file to define both Subversion and WebSVN access rights.</p> |
206 | | | |
207 | | | <p>For this to work, you need to configure your authentication method to the /WebSVN/ |
208 | | | (or /wsvn/) directory. This should be the same authentication as you use for |
209 | | | the svn repositories themselves. Here's an example using SSPI:</p> |
210 | | | |
211 | | | <pre class="code"> |
212 | | | <Location /WebSVN/> |
213 | | | AuthType SSPI |
214 | | | SSPIAuth On |
215 | | | SSPIAuthoritative On |
216 | | | SSPIDomain IMAJEMAIL |
217 | | | SSPIOfferBasic On |
218 | | | Require valid-user |
219 | | | </Location> |
220 | | | </pre> |
221 | | | |
222 | | | <p>Note the use of the / after <code>/WebSVN/</code> in the location directive. If you use |
223 | | | <Location /WebSVN> then you won't be able to access the index.</p> |
224 | | | |
225 | | | <p>You should change <code>/WebSVN/</code> to <code>/wsvn/</code> if you're using multiviews.</p> |
226 | | | |
227 | | | <p>Also note that you shouldn't use the AuthzSVNAccessFile command to define the |
228 | | | access file.</p> |
229 | | | |
230 | | | <p>Now that you've defined your authentication, you'll be asked for your user name |
231 | | | and password in order to access the WebSVN directory. All that's left is to |
232 | | | configure WebSVN to use your Subversion access file to control access. Add this |
233 | | | line to your config.php file:</p> |
234 | | | |
235 | | | <pre class="code"> |
236 | | | $config->useAuthenticationFile("/path/to/accessfile"); |
237 | | | </pre> |
238 | | | |
239 | | | <p>Note that if your access file gives read access to, for example, path <code>/a/b/c/</code> but |
240 | | | not to <code>/a/b/</code>, then the user will be given restricted access to <code>/a/b/</code> in order to |
241 | | | reach <code>/a/b/c/</code>. The user will not be able to see any other files or directories in |
242 | | | <code>/a</code> or <code>/a/b/</code>.</p> |
243 | | | |
244 | | | <p>You should read the <a href="http://svnbook.red-bean.com/">Subversion book</a> for information on the access file format.</p> |
245 | | | |
246 | | | |
247 | | | <h2><a name="problems"></a>Common problems</h2> |
248 | | | |
249 | | | <ol> |
250 | | | <li> |
251 | | | On a Windows machine, this error is reported:<br /> |
252 | | | Warning: shell_exec(): Unable to execute<br /> |
253 | | | If you experience this problem, you need to give IUSR_<machinename> execute |
254 | | | permissions on %systemroot%\system32\cmd.exe. Under most systems, the file will |
255 | | | be C:\WINDOWS\system32\cmd.exe.<br /> |
256 | | | |
257 | | | Right-click on the file, choose properties, and on the security tab click |
258 | | | the "Add" button. Add the IUSR_<machinename> user, and then select the |
259 | | | "read" and "read & execute" boxes. |
260 | | | </li> |
261 | | | </ol> |
262 | | | |
263 | | | |
264 | | | <h2><a name="license"></a>License</h2> |
265 | | | |
266 | | | <p><a href="http://www.fsf.org/licensing/licenses/gpl.html">GNU Public licence</a>.</p> |
267 | | | |
268 | | | </div> |
269 | | | |
270 | | | </body> |
271 | | | </html> |