1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <style type=
"text/css"> /* <![CDATA[ */
6 @import
"branding/css/tigris.css";
7 @import
"branding/css/inst.css";
9 <link rel=
"stylesheet" type=
"text/css" media=
"print"
10 href=
"branding/css/print.css"/>
11 <script type=
"text/javascript" src=
"branding/scripts/tigris.js"></script>
12 <title>Subversion Tools and Contrib
</title>
18 <h1>Subversion Tools and Contrib
</h1>
20 <p>The directories 'tools' and 'contrib' in the Subversion repository
21 contain code that works with Subversion but that Subversion doesn't
22 depend on for normal operations.
24 <p>The files in 'tools' are maintained collectively by the Subversion
25 project, and are under the same open source copyright as Subversion itself.
27 <p>Code in contrib/ is open source, but may have a different license or
28 copyright holder than Subversion itself. The Subversion project does
29 not maintain these programs, but merely distributes them for our
33 <p>The code is grouped into the following subdirectories:
</p>
36 <li><a href=
"#backup">backup
</a></li>
37 <li><a href=
"#bdb">bdb
</a></li>
38 <li><a href=
"#cgi">cgi
</a></li>
39 <li><a href=
"#client_side">client-side
</a></li>
40 <li><a href=
"#dev">dev
</a></li>
41 <li><a href=
"#diff">diff
</a></li>
42 <li><a href=
"#hook_scripts">hook-scripts
</a></li>
43 <li><a href=
"#po">po
</a></li>
44 <li><a href=
"#server_side">server-side
</a></li>
45 <li><a href=
"#xslt">xslt
</a></li>
49 <h2>Index by keyword
</h2>
52 <li><strong>apache
</strong><ul>
53 <li><a href=
"#mod_dontdothat_c">mod_dontdothat.c
</a></li>
55 <li><strong>authz
</strong><ul>
56 <li><a href=
"#authz_svn_group_py">authz_svn_group.py
</a></li>
57 <li><a href=
"#svnauthz_validate_c">svnauthz-validate.c
</a></li>
59 <li><strong>backup
</strong><ul>
60 <li><a href=
"#backup_recipe_sh">backup-recipe.sh
</a></li>
61 <li><a href=
"#hot_backup_py">hot-backup.py
</a></li>
62 <li><a href=
"#svn_backup_dumps_py">svn-backup-dumps.py
</a></li>
63 <li><a href=
"#svn_fast_backup">svn-fast-backup
</a></li>
65 <li><strong>bash
</strong><ul>
66 <li><a href=
"#bash_completion">bash_completion
</a></li>
68 <li><strong>bdb
</strong><ul>
69 <li><a href=
"#backup_recipe_sh">backup-recipe.sh
</a></li>
70 <li><a href=
"#erase_all_text_data_py">erase-all-text-data.py
</a></li>
71 <li><a href=
"#hot_backup_py">hot-backup.py
</a></li>
72 <li><a href=
"#svn_bdb_view_py">svn-bdb-view.py
</a></li>
73 <li><a href=
"#svn_obliterate_py">svn-obliterate.py
</a></li>
74 <li><a href=
"#whatis_rep_py">whatis-rep.py
</a></li>
76 <li><strong>branch / tag
</strong><ul>
77 <li><a href=
"#svncopy_pl">svncopy.pl
</a></li>
79 <li><strong>cgi
</strong><ul>
80 <li><a href=
"#mirror_dir_through_svn_cgi">mirror_dir_through_svn.cgi
</a></li>
81 <li><a href=
"#tweak_log_cgi">tweak-log.cgi
</a></li>
83 <li><strong>commandline tools
</strong><ul>
84 <li><a href=
"#asvn">asvn
</a></li>
85 <li><a href=
"#svnmucc_c">svnmucc.c
</a></li>
86 <li><a href=
"#server_version_py">server-version.py
</a></li>
87 <li><a href=
"#server_vsn_py">server-vsn.py
</a></li>
88 <li><a href=
"#svn_update_pl">svn_update.pl
</a></li>
90 <li><strong>diff
</strong><ul>
91 <li><a href=
"#diff_c">diff.c
</a></li>
92 <li><a href=
"#diff3_c">diff3.c
</a></li>
93 <li><a href=
"#diff4_c">diff4.c
</a></li>
94 <li><a href=
"#diff_to_logmsg_vim">diff-to-logmsg.vim
</a></li>
95 <li><a href=
"#diffwrap_bat">diffwrap.bat
</a></li>
96 <li><a href=
"#diff3wrap_bat">diff3wrap.bat
</a></li>
97 <li><a href=
"#showchange_pl">showchange.pl
</a></li>
98 <li><a href=
"#svn2cl_sh">svn2cl.sh
</a></li>
99 <li><a href=
"#svn_all_diffs_pl">svn_all_diffs.pl
</a></li>
101 <li><strong>emacs
</strong><ul>
102 <li><a href=
"#dsvn_el">dsvn.el
</a></li>
103 <li><a href=
"#psvn_el">psvn.el
</a></li>
104 <li><a href=
"#vc_svn_el">vc-svn.el
</a></li>
106 <li><strong>fsfs
</strong><ul>
107 <li><a href=
"#svn_fast_backup">svn-fast-backup
</a></li>
108 <li><a href=
"#fsfs_reshard_py">fsfs-reshard.py
</a></li>
110 <li><strong>graph
</strong><ul>
111 <li><a href=
"#svn_graph_pl">svn-graph.pl
</a></li>
113 <li><strong>import
</strong><ul>
114 <li><a href=
"#svn_load_dirs_pl">svn_load_dirs.pl
</a></li>
116 <li><strong>log message
</strong><ul>
117 <li><a href=
"#diff_to_logmsg_vim">diff-to-logmsg.vim
</a></li>
118 <li><a href=
"#showchange_pl">showchange.pl
</a></li>
119 <li><a href=
"#svn_log_pl">svn-log.pl
</a></li>
120 <li><a href=
"#svn2cl_sh">svn2cl.sh
</a></li>
121 <li><a href=
"#svn2feed_py">svn2feed.py
</a></li>
122 <li><a href=
"#svn2rss_py">svn2rss.py
</a></li>
124 <li><strong>merge
</strong><ul>
125 <li><a href=
"#svnmerge_py">svnmerge.py
</a></li>
126 <li><a href=
"#svnmerge_sh">svnmerge.sh
</a></li>
128 <li><strong>mirror
</strong><ul>
129 <li><a href=
"#mirror_dir_through_svn_cgi">mirror_dir_through_svn.cgi
</a></li>
130 <li><a href=
"#svn_push_c">svn-push.c
</a></li>
131 <li><a href=
"#svnmirror_sh">svnmirror.sh
</a></li>
133 <li><strong>.po files
</strong><ul>
134 <li><a href=
"#l10n_report">l10n-report.py
</a></li>
135 <li><a href=
"#verify_po_py">verify-po.py
</a></li>
136 <li><a href=
"#po_update_sh">po-update.sh
</a></li>
138 <li><strong>post-commit - email
</strong><ul>
139 <li><a href=
"#commit_email_pl">commit-email.pl
</a></li>
140 <li><a href=
"#commit_email_rb">commit-email.rb
</a></li>
141 <li><a href=
"#mailer_py">mailer.py
</a></li>
143 <li><strong>pre-commit - check
</strong><ul>
144 <li><a href=
"#case_insensitive_py">case-insensitive.py
</a></li>
145 <li><a href=
"#check_case_insensitive_py">check-case-insensitive.py
</a></li>
146 <li><a href=
"#check_mime_type_pl">check-mime-type.pl
</a></li>
147 <li><a href=
"#commit_access_control_pl">commit-access-control.pl
</a></li>
148 <li><a href=
"#commit_block_joke_py">commit-block-joke.py
</a></li>
149 <li><a href=
"#detect_merge_conflicts_sh">detect-merge-conflicts.sh
</a></li>
150 <li><a href=
"#enforcer">enforcer
</a></li>
151 <li><a href=
"#log_police_py">log-police.py
</a></li>
152 <li><a href=
"#pre_commit_check_py">pre-commit-check.py
</a></li>
153 <li><a href=
"#svnperms_py">svnperms.py
</a></li>
154 <li><a href=
"#verify_po_py">verify-po.py
</a></li>
156 <li><strong>pre-lock - check
</strong><ul>
157 <li><a href=
"#pre_lock_require_needs_lock_py">pre-lock-require-needs-lock.py
</a></li>
159 <li><strong>property
</strong><ul>
160 <li><a href=
"#svn_apply_autoprops_py">svn_apply_autoprops.py
</a></li>
162 <li><strong>searching
</strong><ul>
163 <li><a href=
"#svn_export_empty_files_py">svn_export_empty_files.py
</a></li>
164 <li><a href=
"#wcgrep">wcgrep
</a></li>
166 <li><strong>vim
</strong><ul>
167 <li><a href=
"#diff_to_logmsg_vim">diff-to-logmsg.vim
</a></li>
168 <li><a href=
"#svn_vim">svn.vim
</a></li>
170 <li><strong>working copy
</strong><ul>
171 <li><a href=
"#svn_apply_autoprops_py">svn_apply_autoprops.py
</a></li>
172 <li><a href=
"#svn_clean">svn-clean
</a></li>
173 <li><a href=
"#svn_resolve">svn-resolve
</a></li>
174 <li><a href=
"#svn_update_pl">svn_update.pl
</a></li>
175 <li><a href=
"#svn_viewdiff">svn-viewdiff
</a></li>
176 <li><a href=
"#wcgrep">wcgrep
</a></li>
178 <li><strong>xslt
</strong><ul>
179 <li><a href=
"#svnindex_xsl">svnindex.xsl
</a></li>
181 <li><strong>Subversion development tools
</strong><ul>
182 <li><a href=
"#check_license_py">check-license.py
</a></li>
183 <li><a href=
"#contribulyze_py">contribulyze.py
</a></li>
184 <li><a href=
"#datecheck_py">datecheck.py
</a></li>
185 <li><a href=
"#gcov_patch">gcov.patch
</a></li>
186 <li><a href=
"#getsigs_pl">getsigs.pl
</a></li>
187 <li><a href=
"#gnuify_changelog_pl">gnuify-changelog.pl
</a></li>
188 <li><a href=
"#graph_dav_servers_py">graph-dav-servers.py
</a></li>
189 <li><a href=
"#ff2csv_py">ff2csv.py
</a></li>
190 <li><a href=
"#find_fix_py">find-fix.py
</a></li>
191 <li><a href=
"#run_queries_sh">run-queries.sh
</a></li>
192 <li><a href=
"#lock_check_py">lock-check.py
</a></li>
193 <li><a href=
"#mlpatch_py">mlpatch.py
</a></li>
194 <li><a href=
"#normalize_dump_py">normalize-dump.py
</a></li>
195 <li><a href=
"#po_merge_py">po-merge.py
</a></li>
196 <li><a href=
"#prebuild_cleanup_sh">prebuild-cleanup.sh
</a></li>
197 <li><a href=
"#random_commits_py">random-commits.py
</a></li>
198 <li><a href=
"#scramble_tree_py">scramble-tree.py
</a></li>
199 <li><a href=
"#stress_pl">stress.pl
</a></li>
200 <li><a href=
"#svn_dev_el">svn-dev.el
</a></li>
201 <li><a href=
"#svn_dev_vim">svn-dev.vim
</a></li>
202 <li><a href=
"#svn_merge_revs_py">svn-merge-revs.py
</a></li>
203 <li><a href=
"#trails_py">trails.py
</a></li>
204 <li><a href=
"#verify_history_py">verify-history.py
</a></li>
205 <li><a href=
"#warn_ignored_err_sh">warn-ignored-err.sh
</a></li>
206 <li><a href=
"#which_error_py">which-error.py
</a></li>
211 <h2><a name=
"backup">backup
</a></h2>
214 <h3><a name=
"hot_backup_py"
215 href=
"http://svn.collab.net/repos/svn/trunk/tools/backup/hot-backup.py.in">hot-backup.py
</a>
216 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/backup">tools/backup
</a>)
</h3>
217 <p>Perform a
"hot" backup of a Berkeley DB repository.
218 (and clean old logfiles after backup completes.)
223 <h2><a name=
"bdb">bdb
</a></h2>
226 <h3><a name=
"erase_all_text_data_py"
227 href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/erase-all-text-data.py">erase-all-text-data.py
</a>
228 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb">tools/bdb
</a>)
</h3>
229 <p>Erases the text of every file in a BDB repository.
</p>
231 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/skel.py">skel.py
</a>
232 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/svnfs.py">svnfs.py
</a>
236 <h3><a name=
"svn_bdb_view_py"
237 href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/svn-bdb-view.py">svn-bdb-view.py
</a>
238 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb">tools/bdb
</a>)
</h3>
239 <p>A pretty-printer for Subversion BDB repository databases.
</p>
241 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/skel.py">skel.py
</a>
242 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/svnfs.py">svnfs.py
</a>
246 <h3><a name=
"whatis_rep_py"
247 href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/whatis-rep.py">whatis-rep.py
</a>
248 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb">tools/bdb
</a>)
</h3>
249 <p>Print a description (including data, path, and revision) of the
250 specified node reps in a Subversion filesystem. Walks as much of
251 the reps table as necessary to locate the data (e.g. does a table
255 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/skel.py">skel.py
</a>
256 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/bdb/svnfs.py">svnfs.py
</a>
262 <h2><a name=
"cgi">cgi
</a></h2>
265 <h3><a name=
"mirror_dir_through_svn_cgi"
266 href=
"http://svn.collab.net/repos/svn/trunk/contrib/cgi/mirror_dir_through_svn.cgi">mirror_dir_through_svn.cgi
</a>
267 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/cgi">contrib/cgi
</a>)
</h3>
268 <p>This CGI script mirrors a source directory to a target directory using
269 a Subversion repository as an intermediary. It's written as a CGI
270 script so that remote users making changes to a WebDAV folder can tell
271 the server to mirror the WebDAV folder contents to another directory
272 on the system. See the example usage story below.
274 <p>See also
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/cgi/mirror_dir_through_svn.README">mirror_dir_through_svn.README
</a></p>
277 <h3><a name=
"tweak_log_cgi"
278 href=
"http://svn.collab.net/repos/svn/trunk/contrib/cgi/tweak-log.cgi">tweak-log.cgi
</a>
279 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/cgi">contrib/cgi
</a>)
</h3>
280 <p>It sure would be nice to be able to change the log messages on
281 committed revisions of the Subversion repository via the web. This
282 is a quick attempt at making that happen.
288 <h2><a name=
"client_side">client-side
</a></h2>
292 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/asvn">asvn
</a>
293 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
294 <p>Archive SVN (asvn) will allow the recording of file types not
295 normally handled by svn. Currently this includes devices,
296 symlinks and file ownership/permissions.
300 <h3><a name=
"bash_completion"
301 href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side/bash_completion">bash_completion
</a>
302 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side">tools/client-side
</a>)
</h3>
303 <p>Programmable completion for the Subversion svn command under bash.
</p>
305 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side/bash_completion_test">bash_completion_test
</a>
309 <h3><a name=
"diff_to_logmsg_vim"
310 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/vim/diff-to-logmsg.vim">diff-to-logmsg.vim
</a>
311 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/vim">contrib/client-side/vim
</a>)
</h3>
312 <p>Converts a 'diff -urp' to a log message skeleton.
</p>
315 <h3><a name=
"diff3wrap_bat"
316 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/diff3wrap.bat">diff3wrap.bat
</a>
317 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
318 <p>Wrapper for running a diff3/merge program.
</p>
321 <h3><a name=
"diffwrap_bat"
322 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/diffwrap.bat">diffwrap.bat
</a>
323 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
324 <p>Wrapper for running a diff program.
</p>
327 <h3><a name=
"dsvn_el"
328 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/emacs/dsvn.el">dsvn.el
</a>
329 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/emacs/dsvn.el">contrib/client-side/emacs/dsvn.el
</a>)
</h3>
330 <p>A Subversion interface for Emacs, providing a similar interface as
333 <p>See also
<a href=
"#psvn_el">psvn.el
</a>.
</p>
336 <h3><a name=
"svnmucc_c"
337 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmucc/svnmucc.c">svnmucc.c
</a>
338 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmucc">contrib/client-side/svnmucc
</a>)
</h3>
339 <p>Multiple URL Command Client: Combine a list of mv, cp and rm commands
340 on URLs into a single commit.
343 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmucc/svnmucc-test.py">svnmucc-test.py
</a>
347 <h3><a name=
"psvn_el"
348 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/emacs/psvn.el">psvn.el
</a>
349 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/emacs/psvn.el">contrib/client-side/emacs/psvn.el
</a>)
</h3>
350 <p>A Subversion interface for Emacs, providing a similar interface as
353 <p>See also
<a href=
"#dsvn_el">dsvn.el
</a>.
</p>
356 <h3><a name=
"search_svnlog_pl"
357 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/search-svnlog.pl">search-svnlog.pl
</a>
358 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
359 <p>Show log messages matching a certain pattern.
</p>
362 <h3><a name=
"server_version_py"
363 href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side/server-version.py">server-version.py
</a>
364 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side">tools/client-side
</a>)
</h3>
365 <p>Print a Subversion server's version number.
</p>
367 <p><a name=
"server_vsn_py">server-version.py was formerly known as server-vsn.py
</a></p>
369 <h3><a name=
"showchange_pl"
370 href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side/showchange.pl">showchange.pl
</a>
371 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side">tools/client-side
</a>)
</h3>
372 <p>Show the log message and diff for a revision.
</p>
375 <h3><a name=
"svn_clean"
376 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn-clean">svn-clean
</a>
377 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
378 <p>Wipes out unversioned files from SVN working copy.
</p>
381 <h3><a name=
"svn_graph_pl"
382 href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side/svn-graph.pl">svn-graph.pl
</a>
383 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/client-side">tools/client-side
</a>)
</h3>
384 <p>Produce a GraphViz .dot graph for the branch history of a node.
</p>
387 <h3><a name=
"svn_log_pl"
388 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn-log.pl">svn-log.pl
</a>
389 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
390 <p>Generate a nice log format for the Subversion repository.
</p>
393 <h3><a name=
"svn_push_c"
394 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn-push/svn-push.c">svn-push.c
</a>
395 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn-push">contrib/client-side/svn-push
</a>)
</h3>
396 <p>Propagate changesets from one (networked) repository to a different
397 (networked) repository.
401 <h3><a name=
"svn_resolve"
402 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn-resolve">svn-resolve
</a>
403 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
404 <p>Resolve Subversion conflicts using FileMerge.
406 <p>(FileMerge is a graphical diff tool in the Mac OS X
411 <h3><a name=
"svn_viewdiff"
412 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn-viewdiff">svn-viewdiff
</a>
413 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
414 <p>GNU diff wrapper for FileMerge.
416 <p>(FileMerge is a graphical diff tool in the Mac OS X
421 <h3><a name=
"svn_vim"
422 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/vim/svn.vim">svn.vim
</a>
423 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/vim">contrib/client-side/vim
</a>)
</h3>
424 <p>Vim syntax hilighting for SVN commit log message template.
</p>
427 <h3><a name=
"svn2cl_sh"
428 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl/svn2cl.sh">svn2cl.sh
</a>
429 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl">contrib/client-side/svn2cl
</a>)
</h3>
430 <p>Front end shell script for svn2cl.xsl, calls xsltproc with the
433 <p>See also
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl/README">README
</a>.
</p>
435 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl/svn2cl.1">svn2cl
.1</a>
436 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl/svn2cl.xsl">svn2cl.xsl
</a>
437 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl/svn2html.css">svn2html.css
</a>
438 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn2cl/svn2html.xsl">svn2html.xsl
</a>
442 <h3><a name=
"svn_all_diffs_pl"
443 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_all_diffs.pl">svn_all_diffs.pl
</a>
444 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
445 <p>Perl script that gets the revisions that modified a specified
446 file or directory and prints the output of `svn diff' on between
447 all revisions that modified the file or directory. Good for
448 seeing what changed over time and for tracking down when a
449 particular line in a file changed.
453 <h3><a name=
"svn_apply_autoprops_py"
454 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_apply_autoprops.py">svn_apply_autoprops.py
</a>
455 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
456 <p>This script reads the auto-properties defined in the
457 $HOME/.subversion/config file and applies them recursively to all
458 the files and directories in the current working copy.
462 <h3><a name=
"svn_export_empty_files_py"
463 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_export_empty_files.py">svn_export_empty_files.py
</a>
464 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
465 <p>Script to
"export" from a Subversion repository a clean directory
466 tree of empty files instead of the content contained in those
467 files in the repository. The directory tree will also omit the
468 .svn directories. This script was written to create a non-working
469 working copy that can be crawled with find or find's locate utility
470 to make it easier to find files.
474 <h3><a name=
"svn_load_dirs_pl"
475 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_load_dirs/svn_load_dirs.pl.in">svn_load_dirs.pl
</a>
476 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_load_dirs">contrib/client-side/svn_load_dirs
</a>)
</h3>
477 <p>This Perl script is designed to load a number of directories into
478 Subversion. This is useful if you have a number of .zip's or
479 tar.{Z,gz,bz2}'s for a particular package and want to load them into
482 <p>See also
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_load_dirs/svn_load_dirs.README">svn_load_dirs.README
</a>.
</p>
484 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_load_dirs/svn_load_dirs_property_table.example">svn_load_dirs_property_table.example
</a>
488 <h3><a name=
"svn_update_pl"
489 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_update.pl">svn_update.pl
</a>
490 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
491 <p>Run svn update and force it to produce conflicts for all
492 files which would be merged using diff3.
494 <p>This is a workaround for
<a
495 href=
"http://subversion.tigris.org/issues/show_bug.cgi?id=2048"
496 >issue
2048</a> which was fixed in r13383 and released in
501 <h3><a name=
"svncopy_pl"
502 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svncopy/svncopy.pl.in">svncopy.pl
</a>
503 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svncopy">contrib/client-side/svncopy
</a>)
</h3>
504 <p>Utility script for copying with branching/tagging.
</p>
505 <p>See also
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svncopy/svncopy.README">svncopy.README
</a>.
</p>
507 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svncopy/testsvncopy.pl.in">testsvncopy.pl
</a>
511 <h3><a name=
"svnmerge_py"
512 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge/svnmerge.py">svnmerge.py
</a>
513 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge">contrib/client-side/svnmerge
</a>)
</h3>
514 <p>Merge tracking script.
</p>
515 <p>See also
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge/svnmerge.README">svnmerge.README
</a>.
</p>
518 <h3><a name=
"svnmerge_sh"
519 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge/svnmerge.sh">svnmerge.sh
</a>
520 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge">contrib/client-side/svnmerge
</a>)
</h3>
521 <p>Merge tracking script, predecessor of svnmerge.py.
</p>
524 <h3><a name=
"vc_svn_el"
525 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/emacs/vc-svn.el">vc-svn.el
</a>
526 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side/emacs
</a>)
</h3>
527 <p>A VC backend for Subversion.
529 <p>Note that this one included in the Subversion tree is not the master
530 version. The canonical vc-svn.el now lives in the FSF Emacs tree, at
531 <a href=
"http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/vc-svn.el">http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/vc-svn.el
</a>.
532 The version here is maintained only because it is compatible with
533 older releases of Emacs, since the one in the FSF tree hasn't made it
534 into an official release of Emacs yet.
539 href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side/wcgrep">wcgrep
</a>
540 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/client-side">contrib/client-side
</a>)
</h3>
541 <p>Useful for greping in a Subversion working copy.
542 Essentially it behaves the same way your grep command does.
548 <h2><a name=
"dev">dev
</a></h2>
551 <h3><a name=
"check_license_py"
552 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/check-license.py">check-license.py
</a>
553 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
554 <p>Check if a file has the proper license in it.
</p>
557 <h3><a name=
"contribulyze_py"
558 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/contribulyze.py">contribulyze.py
</a>
559 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
560 <p>Some Subversion project log messages include parseable data to help
561 track who's contributing what. This script collects that data.
565 <h3><a name=
"datecheck_py"
566 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/datecheck.py">datecheck.py
</a>
567 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
568 <p>This is a debugging script to test date-ordering in an SVN repository.
</p>
571 <h3><a name=
"gcov_patch"
572 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/gcov.patch">gcov.patch
</a>
573 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
574 <p>This patch can be used to generate a report showing what C source
575 lines are executed when the testsuite is run.
579 <h3><a name=
"getsigs_pl"
580 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/getsigs.pl">getsigs.pl
</a>
581 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
582 <p>Terribly ugly hack of a script to verify the signatures on the release
583 tarballs and produce the list of who signed them in the format we use for
588 <h3><a name=
"gnuify_changelog_pl"
589 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/gnuify-changelog.pl">gnuify-changelog.pl
</a>
590 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
591 <p>A script to munge the output of 'svn log' into something approaching the
592 style of a GNU ChangeLog.
596 <h3><a name=
"graph_dav_servers_py"
597 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/graph-dav-servers.py">graph-dav-servers.py
</a>
598 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
599 <p>This was originally a quick hack to make a pretty picture of svn
604 <h3><a name=
"ff2csv_py"
605 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/iz/ff2csv.py">ff2csv.py
</a>
606 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/iz">tools/dev/iz
</a>)
</h3>
607 <p>Transform find-fix.py output into Excellable csv.
</p>
610 <h3><a name=
"find_fix_py"
611 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/iz/find-fix.py">find-fix.py
</a>
612 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/iz">tools/dev/iz
</a>)
</h3>
613 <p>Produce a find/fix report for Subversion's IZ database.
</p>
616 <h3><a name=
"run_queries_sh"
617 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/iz/run-queries.sh">run-queries.sh
</a>
618 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/iz">tools/dev/iz
</a>)
</h3>
619 <p>Run some IssueZilla queries.
</p>
622 <h3><a name=
"lock_check_py"
623 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/lock-check.py">lock-check.py
</a>
624 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
625 <p>Repository lock checker. Gets an exclusive lock on the provided
626 repository, then runs db_stat to see if the lock counts have been
627 reset to
0. If not, prints the timestamp of the run and a message
632 <h3><a name=
"mlpatch_py"
633 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/mlpatch.py">mlpatch.py
</a>
634 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
635 <p>Very annoyingly, the http://svn.haxx.se/ Subversion mailing list archives
636 mangle inline patches, and provide no raw message download facility
637 (other than for an entire month's email as an mbox).
638 So, I wrote this script, to demangle them. It's not perfect, as it has to
639 guess about whitespace, but it does an acceptable job.
643 <h3><a name=
"normalize_dump_py"
644 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/normalize-dump.py">normalize-dump.py
</a>
645 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
646 <p>Reads a Subversion dumpfile from DUMPFILE (or, if not provided,
647 from stdin) and normalizes the metadata contained therein,
648 printing summarized and sorted information. This is useful for
649 generating data about dumpfiles in a diffable fashion.
653 <h3><a name=
"po_merge_py"
654 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/po-merge.py">po-merge.py
</a>
655 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
656 <p>This script will replace the translations and flags in a po file with
657 the translations and flags in the source po file read from standard
658 input. Strings that are not found in the source file are left untouched.
662 <h3><a name=
"prebuild_cleanup_sh"
663 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/prebuild-cleanup.sh">prebuild-cleanup.sh
</a>
664 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
665 <p>Purify a system, to simulate building Subversion on a
"clean" box.
</p>
668 <h3><a name=
"random_commits_py"
669 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/random-commits.py">random-commits.py
</a>
670 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
671 <p>Using the FILELIST (see config below), a series of COUNT commits will be
672 constructed, each changing up to MAXFILES files per commit. The commands
673 will be sent to stdout (formatted as a shell script).
677 <h3><a name=
"scramble_tree_py"
678 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/scramble-tree.py">scramble-tree.py
</a>
679 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
680 <p>Makes multiple random file changes to a directory tree, for testing.
</p>
683 <h3><a name=
"stress_pl"
684 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/stress.pl">stress.pl
</a>
685 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
686 <p>A script that allows some simple testing of Subversion, in
687 particular concurrent read, write and read-write access by the 'svn'
688 client. It can also create working copy trees containing a large
689 number of files and directories. All repository access is via the
690 'svnadmin' and 'svn' commands.
694 <h3><a name=
"svn_dev_el"
695 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/svn-dev.el">svn-dev.el
</a>
696 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
697 <p>Emacs Lisp help for writing Subversion code. This file contains
698 some elisp functions which could be helpful to employ while working
703 <h3><a name=
"svn_dev_vim"
704 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/svn-dev.vim">svn-dev.vim
</a>
705 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
706 <p>This file sets vim up to use subversion's coding style. It can be
707 applied on a per buffer basis with :source svn-dev.vim, or can be
708 source from ~/.vimrc to apply settings to all files vim uses. For
709 other variation try :help autocmd.
713 <h3><a name=
"svn_merge_revs_py"
714 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/svn-merge-revs.py">svn-merge-revs.py
</a>
715 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
716 <p>This script is meant to ease the pain of merging and
717 reviewing revision(s) on a release branch (although it can be used to
718 merge and review revisions from any line of development to another).
722 <h3><a name=
"trails_py"
723 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/trails.py">trails.py
</a>
724 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
725 <p>A program for analyzing Subversion trail usage statistics.
</p>
728 <h3><a name=
"verify_history_py"
729 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/verify-history.py">verify-history.py
</a>
730 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
731 <p>This program is used to verify the FS history code.
</p>
734 <h3><a name=
"warn_ignored_err_sh"
735 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/warn-ignored-err.sh">warn-ignored-err.sh
</a>
736 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
737 <p>Insert or remove the GCC attribute
"warn_unused_result" on each function
738 that returns a Subversion error, in the specified files or, by default,
739 *.h and *.c in the ./subversion and ./tools trees.
743 <h3><a name=
"which_error_py"
744 href=
"http://svn.collab.net/repos/svn/trunk/tools/dev/which-error.py">which-error.py
</a>
745 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/dev">tools/dev
</a>)
</h3>
746 <p>Print semantic Subversion error code names mapped from their numeric
753 <h2><a name=
"diff">diff
</a></h2>
757 href=
"http://svn.collab.net/repos/svn/trunk/tools/diff/diff.c">diff.c
</a>
758 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/diff">tools/diff
</a>)
</h3>
759 <p>A diff program using Subversion's diff functions.
</p>
762 <h3><a name=
"diff3_c"
763 href=
"http://svn.collab.net/repos/svn/trunk/tools/diff/diff3.c">diff3.c
</a>
764 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/diff">tools/diff
</a>)
</h3>
765 <p>A diff3 program using Subversion's diff functions.
</p>
768 <h3><a name=
"diff4_c"
769 href=
"http://svn.collab.net/repos/svn/trunk/tools/diff/diff4.c">diff4.c
</a>
770 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/diff">tools/diff
</a>)
</h3>
771 <p>A diff4 program using Subversion's diff functions.
</p>
776 <h2><a name=
"hook_scripts">hook-scripts
</a></h2>
779 <h3><a name=
"case_insensitive_py"
780 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/case-insensitive.py">case-insensitive.py
</a>
781 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts">contrib/hook-scripts
</a>)
</h3>
782 <p>A pre-commit hook to detect case-insensitive filename clashes.
784 <p>This is *much* more efficient than
785 <a href=
"#check_case_insensitive_py">check-case-insensitive.py
</a>
786 but it does require Subversion
1.3.0 or later.
790 <h3><a name=
"check_case_insensitive_py"
791 href=
"http://svn.collab.net/repos/svn/tags/1.2.3/contrib/hook-scripts/check-case-insensitive.py">check-case-insensitive.py
</a>
792 (
<a href=
"http://svn.collab.net/repos/svn/tags/1.2.3/contrib/hook-scripts">contrib/hook-scripts
</a> for
1.2.3)
</h3>
793 <p>This script can be called from a pre-commit hook on either Windows
794 or a Unix like operating system. It implements the checks required
795 to ensure that the repository acts in a way which is compatible with
796 a case preserving but case insensitive file system. This script has
797 been removed from the Subversion trunk.
799 <p>Superceded by
<a href=
"#case_insensitive_py">case-insensitive.py
</a>
800 for Subversion
1.3.0 and later.
804 <h3><a name=
"check_mime_type_pl"
805 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/check-mime-type.pl">check-mime-type.pl
</a>
806 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts">contrib/hook-scripts
</a>)
</h3>
807 <p>Check that every added file has the svn:mime-type property set
808 and every added file with a mime-type matching text/* also has
809 svn:eol-style set. If any file fails this test the user is sent
810 a verbose error message suggesting solutions and the commit is
815 <h3><a name=
"commit_access_control_pl"
816 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-access-control.pl.in">commit-access-control.pl
</a>
817 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
818 <p>Uses the `svnlook' program to check if the user who submitted
819 the commit has appropriate rights to perform the commit on all
820 the modified files and directories using the permissions
821 specified in the configuration file.
824 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-access-control.cfg.example">commit-access-control.cfg.example
</a>
828 <h3><a name=
"commit_block_joke_py"
829 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/commit-block-joke.py">commit-block-joke.py
</a>
830 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts">contrib/hook-scripts
</a>)
</h3>
831 <p>A funny pre-commit hook example.
</p>
834 <h3><a name=
"commit_email_pl"
835 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-email.pl.in">commit-email.pl
</a>
836 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
837 <p>Send a notification email describing either a commit or a
838 revprop-change action on a Subversion repository.
840 <p>Uses the `svnlook' program to send commit emails. Invoke it
841 from `repository/hooks/post-commit'. Run the script with no
846 <h3><a name=
"commit_email_rb"
847 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-email.rb">commit-email.rb
</a>
848 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
849 <p>Uses the Ruby/SWIG client bindings to query the repository about
850 the changes made by a particular revision, and send
851 corresponding change emails. The program takes command-line
852 options for basic setup and to fine-tune its behavior.
856 <h3><a name=
"detect_merge_conflicts_sh"
857 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/detect-merge-conflicts.sh">detect-merge-conflicts.sh
</a>
858 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts">contrib/hook-scripts
</a>)
</h3>
859 <p>A pre-commit hook to detect changes that look like forgotten
864 <h3><a name=
"enforcer"
865 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/enforcer/enforcer">enforcer
</a>
866 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/enforcer">contrib/hook-scripts/enforcer
</a>)
</h3>
867 <p>This is a pre-commit hook that allows you to more easily specify
868 a variety of rules that govern what may be committed to your
872 <a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/enforcer/enforcer.conf">enforcer.conf
</a>
876 <h3><a name=
"log_police_py"
877 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/log-police.py">log-police.py
</a>
878 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
879 <p>Ensures that log messages end with exactly one newline. Can
880 also be run as a standalone script to fix up old revisions.
884 <h3><a name=
"mailer_py"
885 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/mailer/mailer.py">mailer.py
</a>
886 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/mailer">tools/hook-scripts/mailer
</a>)
</h3>
887 <p>Uses the Python/SWIG bindings to directly query the repository
888 about the changes made by a particular revision. The program
889 uses a configuration file for basic setup and to fine-tune where
890 changes are delivered. Compared to
891 <a href=
"#commit_email_pl">commit-email.pl
</a>, the output
892 contains a bit more information about property changes, is
893 smarter with binary files, and it streams its output into the
894 mailer (to avoid in-memory buffering).
897 <a href=
"http://svn.collab.net/repos/svn/trunk/tools//hook-scripts/mailer/mailer.conf.example">mailer.conf.example
</a>
898 <a href=
"http://svn.collab.net/repos/svn/trunk/tools//hook-scripts/mailer/tests">tests/
</a>
902 <h3><a name=
"pre_commit_check_py"
903 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/pre-commit-check.py">pre-commit-check.py
</a>
904 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts">contrib/hook-scripts
</a>)
</h3>
905 <p>A template for checks in a pre-commit hook.
</p>
908 <h3><a name=
"pre_lock_require_needs_lock_py"
909 href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/pre-lock-require-needs-lock.py">pre-lock-require-needs-lock.py
</a>
910 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts">contrib/hook-scripts
</a>)
</h3>
911 <p>This script, intended for use as a Subversion pre-lock hook, verifies that
912 the PATH that USER is attempting to lock has the svn:needs-lock property
913 set on it, returning success iff it does.
917 <h3><a name=
"svn2feed_py"
918 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/svn2feed.py">svn2feed.py
</a>
919 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
921 <p>Generates an RSS
2.0 or Atom
1.0 file containing commit information.
</p>
922 <p><a name=
"svn2rss_py">svn2feed.py was formerly known as svn2rss.py
</a></p>
925 <h3><a name=
"svnperms_py"
926 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/svnperms.py">svnperms.py
</a>
927 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
928 <p>Pre-commit hook that checks write permissions, similar to
929 <a href=
"#commit_access_control_pl">commit-access-control.pl
</a>,
930 but uses a different syntax. Run 'svnperms.py -h' for usage.
933 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/svnperms.conf.example">svnperms.conf.example
</a>
937 <h3><a name=
"verify_po_py"
938 href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/verify-po.py">verify-po.py
</a>
939 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/hook-scripts">tools/hook-scripts
</a>)
</h3>
940 <p>This is a pre-commit hook that checks whether the contents of PO files
941 committed to the repository are encoded in UTF-
8.
947 <h2><a name=
"po">po
</a></h2>
949 <h3><a name=
"l10n_report"
950 href=
"http://svn.collab.net/repos/svn/trunk/tools/po/l10n-report.py">l10n-report.py
</a>
951 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/po">tools/po
</a>)
</h3>
952 <p>Script for generating a report on po file translation status and
953 mail them to an email id. By default, the report is displayed in the
956 <h3><a name=
"po_update_sh"
957 href=
"http://svn.collab.net/repos/svn/trunk/tools/po/po-update.sh">po-update.sh
</a>
958 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/po">tools/po
</a>)
</h3>
959 <p>Script to generate Subversion pot files and update locales.
</p>
964 <h2><a name=
"server_side">server-side
</a></h2>
967 <h3><a name=
"authz_svn_group_py"
968 href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/authz_svn_group.py">authz_svn_group.py
</a>
969 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side">contrib/server-side
</a>)
</h3>
970 <p>mod_python authorization handler for mod_authz_svn groups.
</p>
973 <h3><a name=
"backup_recipe_sh"
974 href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/backup-recipe.sh">backup-recipe.sh
</a>
975 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side">contrib/server-side
</a>)
</h3>
976 <p>This shell script demonstrates a backup/restore recipe for live
977 Subversion repositories, using a standard full+incrementals process.
981 <h3><a name=
"fsfs_reshard_py"
982 href=
"http://svn.collab.net/repos/svn/trunk/tools/server-side/fsfs-reshard.py">fsfs-reshard.py
</a>
983 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/server-side">tools/server-side
</a>)
</h3>
984 <p>This script performs an offline conversion of an FSFS repository between
985 the linear format compatible with Subversion
1.4 or later and the sharded
986 format expected to be included with Subversion
1.5.
990 <h3><a name=
"mod_dontdothat_c"
991 href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/mod_dontdothat/mod_dontdothat.c">mod_dontdothat.c
</a>
992 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/mod_dontdothat">contrib/server-side/mod_dontdothat
</a>)
</h3>
993 <p>An Apache module that allows you to block expensive Subversion requests,
994 like checkouts of the root of a large repository.
996 <p>See also
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/mod_dontdothat/README">README
</a>.
</p>
999 <h3><a name=
"svn_backup_dumps_py"
1000 href=
"http://svn.collab.net/repos/svn/trunk/tools/server-side/svn-backup-dumps.py">svn-backup-dumps.py
</a>
1001 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/server-side">tools/server-side
</a>)
</h3>
1002 <p>This script creates (incremental) dump files from a subversion
1003 repository on *IX and Windows. It is intended for use in cron jobs and
1008 <h3><a name=
"svn_fast_backup"
1009 href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/svn-fast-backup">svn-fast-backup
</a>
1010 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side">contrib/server-side
</a>)
</h3>
1011 <p>Use rsync snapshots for very fast FSFS repository backup.
</p>
1014 <h3><a name=
"svn_obliterate_py"
1015 href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/svn-obliterate.py">svn-obliterate.py
</a>
1016 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side">contrib/server-side
</a>)
</h3>
1017 <p>Whitewash the contents of a Subversion file and its successors.
</p>
1020 <h3><a name=
"svnauthz_validate_c"
1021 href=
"http://svn.collab.net/repos/svn/trunk/tools/server-side/svnauthz-validate.c">svnauthz-validate.c
</a>
1022 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/server-side">tools/server-side
</a>)
</h3>
1023 <p>Load and validate an authz file.
</p>
1026 <h3><a name=
"svnmirror_sh"
1027 href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side/svnmirror.sh">svnmirror.sh
</a>
1028 (
<a href=
"http://svn.collab.net/repos/svn/trunk/contrib/server-side">contrib/server-side
</a>)
</h3>
1029 <p>Mirror Subversion repositories. This script supports pushing or
1030 pulling the changes via ssh and svn tools.
1036 <h2><a name=
"xslt">xslt
</a></h2>
1039 <h3><a name=
"svnindex_xsl"
1040 href=
"http://svn.collab.net/repos/svn/trunk/tools/xslt/svnindex.xsl">svnindex.xsl
</a>
1041 (
<a href=
"http://svn.collab.net/repos/svn/trunk/tools/xslt">tools/xslt
</a>)
</h3>
1042 <p>A sample XML transformation style sheet for displaying the Subversion
1043 directory listing that is generated by mod_dav_svn when the
1044 "SVNIndexXSLT" directive is used.
1047 <a href=
"http://svn.collab.net/repos/svn/trunk/tools/xslt/svnindex.css">svnindex.css
</a>