<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?action=history&amp;feed=atom&amp;title=ElaborateDiff</id>
	<title>ElaborateDiff - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?action=history&amp;feed=atom&amp;title=ElaborateDiff"/>
	<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;action=history"/>
	<updated>2026-04-06T16:13:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1680&amp;oldid=prev</id>
		<title>import&gt;Cen1001 at 17:12, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1680&amp;oldid=prev"/>
		<updated>2006-12-05T17:12:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:12, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 698:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 698:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:jss43|james]] 14:36, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:jss43|james]] 14:36, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;wow, I just installed this on the SuSE 10.1 image. Talk about coincidence --[[User:cen1001|Catherine]] 17:11, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;wow, I just installed&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; something a bit like&lt;/ins&gt; this on the SuSE 10.1 image. Talk about coincidence --[[User:cen1001|Catherine]] 17:11, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>import&gt;Cen1001</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1679&amp;oldid=prev</id>
		<title>import&gt;Cen1001 at 17:11, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1679&amp;oldid=prev"/>
		<updated>2006-12-05T17:11:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:11, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 697:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 697:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pah&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pah&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:jss43|james]] 14:36, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:jss43|james]] 14:36, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;wow, I just installed this on the SuSE 10.1 image. Talk about coincidence --[[User:cen1001|Catherine]] 17:11, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>import&gt;Cen1001</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1678&amp;oldid=prev</id>
		<title>import&gt;Jss43 at 14:36, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1678&amp;oldid=prev"/>
		<updated>2006-12-05T14:36:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:36, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 693:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 693:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;pah&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:jss43|james]] 14:36, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>import&gt;Jss43</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1677&amp;oldid=prev</id>
		<title>import&gt;Jss43: Here moved to ElaborateDiff</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1677&amp;oldid=prev"/>
		<updated>2006-12-05T14:32:51Z</updated>

		<summary type="html">&lt;p&gt;Here moved to ElaborateDiff&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:32, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>import&gt;Jss43</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1676&amp;oldid=prev</id>
		<title>import&gt;Am592 at 14:18, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1676&amp;oldid=prev"/>
		<updated>2006-12-05T14:18:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:18, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SVNDIFF taken from http://svn.sunbase.org/repos/svnutils/trunk/src/svndiff&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Put this in your ./bin/ directory. Make it executable. And you are set.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;svndiff --help&#039;&#039; will give you the usage syntax.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>import&gt;Am592</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1675&amp;oldid=prev</id>
		<title>import&gt;Am592 at 14:17, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1675&amp;oldid=prev"/>
		<updated>2006-12-05T14:17:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:17, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl -w&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl -w&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 26:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Default value, can be overridden in ~/.svndiffrc&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Default value, can be overridden in ~/.svndiffrc&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;my $Cmd = &quot;vimdiff -o&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&lt;/del&gt;&quot;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;my $Cmd = &quot;vimdiff -o&quot;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Change this if the svn executable is non-standard and you don’t want &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Change this if the svn executable is non-standard and you don’t want &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 685:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 686:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# vim: set fenc=UTF-8 ft=perl fdm=marker ts=4 sw=4 sts=4 et fo+=w :&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# vim: set fenc=UTF-8 ft=perl fdm=marker ts=4 sw=4 sts=4 et fo+=w :&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# End of file $Id$&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# End of file $Id$&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&lt;/del&gt;--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>import&gt;Am592</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1674&amp;oldid=prev</id>
		<title>import&gt;Am592 at 14:16, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1674&amp;oldid=prev"/>
		<updated>2006-12-05T14:16:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:16, 5 December 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl -w&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl -w&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 686:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 685:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# vim: set fenc=UTF-8 ft=perl fdm=marker ts=4 sw=4 sts=4 et fo+=w :&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# vim: set fenc=UTF-8 ft=perl fdm=marker ts=4 sw=4 sts=4 et fo+=w :&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# End of file $Id$&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# End of file $Id$&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>import&gt;Am592</name></author>
	</entry>
	<entry>
		<id>https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1673&amp;oldid=prev</id>
		<title>import&gt;Am592 at 14:16, 5 December 2006</title>
		<link rel="alternate" type="text/html" href="https://wikis.ch.cam.ac.uk/cuc3/wiki/index.php?title=ElaborateDiff&amp;diff=1673&amp;oldid=prev"/>
		<updated>2006-12-05T14:16:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
&lt;br /&gt;
#=======================================================================&lt;br /&gt;
# $Id$&lt;br /&gt;
# Uses a specified diff program for viewing differences in a Subversion &lt;br /&gt;
# versioned directory tree.&lt;br /&gt;
#&lt;br /&gt;
# Character set: UTF-8&lt;br /&gt;
# License: GNU General Public License, see end of file for legal stuff.&lt;br /&gt;
# ©opyleft 2004– Øyvind A. Holm &amp;lt;sunny@sunbase.org&amp;gt;&lt;br /&gt;
# This file is part of the svnutils project — http://svnutils.tigris.org&lt;br /&gt;
#=======================================================================&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
$| = 1;&lt;br /&gt;
&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
our ($opt_conflict, $opt_create_rc, $opt_diffcmd, $opt_svncmd, $opt_help) =&lt;br /&gt;
    (            0,              0,           &amp;quot;&amp;quot;,          &amp;quot;&amp;quot;,         0);&lt;br /&gt;
our ($opt_diffargs, $opt_revision) =&lt;br /&gt;
    (           &amp;quot;&amp;quot;,            &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
my $Debug = 0;&lt;br /&gt;
&lt;br /&gt;
# Default value, can be overridden in ~/.svndiffrc&lt;br /&gt;
my $Cmd = &amp;quot;vimdiff -o--[[User:am592|alston]] 14:16, 5 December 2006 (GMT)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Change this if the svn executable is non-standard and you don’t want &lt;br /&gt;
# to use the -e option all the time:&lt;br /&gt;
my $CMD_SVN = &amp;quot;svn&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my $ST_CONFLICT = &amp;#039;C&amp;#039;;&lt;br /&gt;
my $ST_MODIFIED = &amp;#039;M&amp;#039;;&lt;br /&gt;
my $valid_rev = &amp;#039;\d+|HEAD|{\d+[^}]*?[Z\d]}&amp;#039;; # Used in regexps&lt;br /&gt;
&lt;br /&gt;
our $progname = $0;&lt;br /&gt;
$progname =~ s#^(.*)/(.+?)$#$2#;&lt;br /&gt;
&lt;br /&gt;
my %rev_diff = ();&lt;br /&gt;
&lt;br /&gt;
my $rc_file = defined($ENV{SVNDIFFRC}) ? $ENV{SVNDIFFRC} : &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
unless (length($rc_file)) {&lt;br /&gt;
    if (defined($ENV{HOME})) {&lt;br /&gt;
        $rc_file = &amp;quot;$ENV{HOME}/.svndiffrc&amp;quot;;&lt;br /&gt;
    } else {&lt;br /&gt;
        warn(&amp;quot;Both SVNDIFFRC and HOME environment variables not defined, &amp;quot; .&lt;br /&gt;
             &amp;quot;unable to read rc file.\n&amp;quot; .&lt;br /&gt;
             &amp;quot;Using default values. To override, &amp;quot; .&lt;br /&gt;
             &amp;quot;define the SVNDIFFRC variable.\n&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
length($rc_file) &amp;amp;&amp;amp; (-e $rc_file) &amp;amp;&amp;amp; read_rcfile($rc_file);&lt;br /&gt;
&lt;br /&gt;
Getopt::Long::Configure(&amp;quot;bundling&amp;quot;);&lt;br /&gt;
GetOptions(&lt;br /&gt;
    &amp;quot;conflict|C&amp;quot;   =&amp;gt; \$opt_conflict,&lt;br /&gt;
    &amp;quot;create-rc&amp;quot;    =&amp;gt; \$opt_create_rc,&lt;br /&gt;
    &amp;quot;diffcmd|c=s&amp;quot;  =&amp;gt; \$opt_diffcmd,&lt;br /&gt;
    &amp;quot;svncmd|e=s&amp;quot;   =&amp;gt; \$opt_svncmd,&lt;br /&gt;
    &amp;quot;help|h&amp;quot;       =&amp;gt; \$opt_help,&lt;br /&gt;
    &amp;quot;diffargs|p=s&amp;quot; =&amp;gt; \$opt_diffargs,&lt;br /&gt;
    &amp;quot;revision|r=s&amp;quot; =&amp;gt; \$opt_revision&lt;br /&gt;
) || die(&amp;quot;$progname: Option error. Use -h for help.\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$opt_help &amp;amp;&amp;amp; usage(0);&lt;br /&gt;
&lt;br /&gt;
if ($opt_create_rc) {&lt;br /&gt;
    print(&amp;lt;&amp;lt;END);&lt;br /&gt;
&amp;lt;svndiffrc&amp;gt;&lt;br /&gt;
  &amp;lt;diffprog&amp;gt;vimdiff&amp;lt;/diffprog&amp;gt;&lt;br /&gt;
  &amp;lt;svnclient&amp;gt;svn&amp;lt;/svnclient&amp;gt;&lt;br /&gt;
  &amp;lt;reversediffs&amp;gt;&lt;br /&gt;
    &amp;lt;program&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;vimdiff&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;reverse&amp;gt;1&amp;lt;/reverse&amp;gt;&lt;br /&gt;
    &amp;lt;/program&amp;gt;&lt;br /&gt;
    &amp;lt;program&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;meld&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;reverse&amp;gt;1&amp;lt;/reverse&amp;gt;&lt;br /&gt;
    &amp;lt;/program&amp;gt;&lt;br /&gt;
    &amp;lt;program&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;kompare&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;reverse&amp;gt;1&amp;lt;/reverse&amp;gt;&lt;br /&gt;
    &amp;lt;/program&amp;gt;&lt;br /&gt;
    &amp;lt;program&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;xxdiff&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;reverse&amp;gt;1&amp;lt;/reverse&amp;gt;&lt;br /&gt;
    &amp;lt;/program&amp;gt;&lt;br /&gt;
  &amp;lt;/reversediffs&amp;gt;&lt;br /&gt;
&amp;lt;/svndiffrc&amp;gt;&lt;br /&gt;
END&lt;br /&gt;
    exit(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
length($opt_diffcmd)  &amp;amp;&amp;amp; ($Cmd = $opt_diffcmd);&lt;br /&gt;
length($opt_diffargs) &amp;amp;&amp;amp; ($Cmd .= &amp;quot; $opt_diffargs&amp;quot;);&lt;br /&gt;
length($opt_svncmd)   &amp;amp;&amp;amp; ($CMD_SVN = $opt_svncmd);&lt;br /&gt;
&lt;br /&gt;
my $stat_chars = &amp;quot;$ST_CONFLICT$ST_MODIFIED&amp;quot;;&lt;br /&gt;
$opt_conflict &amp;amp;&amp;amp; ($stat_chars = &amp;quot;$ST_CONFLICT&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
my @mod_array = ();&lt;br /&gt;
&lt;br /&gt;
if (scalar(@ARGV)) {&lt;br /&gt;
    # Filename(s) specified on command line. {{{&lt;br /&gt;
    @mod_array = @ARGV;&lt;br /&gt;
    for my $Curr (@mod_array) {&lt;br /&gt;
        D(&amp;quot;ARG = \&amp;quot;$Curr\&amp;quot;\n&amp;quot;);&lt;br /&gt;
        if ((-f $Curr &amp;amp;&amp;amp; !-l $Curr) || is_url($Curr)) {&lt;br /&gt;
            D(&amp;quot;$Curr is a file or URL.&amp;quot;);&lt;br /&gt;
            my $has_conflict;&lt;br /&gt;
            if (!is_url($Curr)) {&lt;br /&gt;
                D(&amp;quot;Before PipeFP 1: CMD_SVN = \&amp;quot;$CMD_SVN\&amp;quot;&amp;quot;);&lt;br /&gt;
                if (open(PipeFP, &amp;quot;$CMD_SVN stat $Curr -q |&amp;quot;)) {&lt;br /&gt;
                    $has_conflict = (&amp;lt;PipeFP&amp;gt; =~ /^$ST_CONFLICT/) ? 1 : 0;&lt;br /&gt;
                } else {&lt;br /&gt;
                    warn(&amp;quot;$progname: Error opening &amp;quot; .&lt;br /&gt;
                         &amp;quot;\&amp;quot;$CMD_SVN $Curr stat -q\&amp;quot; pipe: $!&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                if (!length($opt_revision)) {&lt;br /&gt;
                    die(&amp;quot;$progname: Need to specify the --revision option &amp;quot; .&lt;br /&gt;
                        &amp;quot;when diffing an URL\n&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                $has_conflict = 0;&lt;br /&gt;
            }&lt;br /&gt;
            diff_file($Curr, $has_conflict, $opt_revision);&lt;br /&gt;
        } else {&lt;br /&gt;
            D(&amp;quot;$Curr is NOT a file.&amp;quot;);&lt;br /&gt;
            warn(&amp;quot;$progname: \&amp;quot;$Curr\&amp;quot; is not a file or doesn&amp;#039;t exist\n&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # }}}&lt;br /&gt;
} else {&lt;br /&gt;
    # {{{&lt;br /&gt;
    length($opt_revision) &amp;amp;&amp;amp; die(&amp;quot;Need to specify one or more &amp;quot; .&lt;br /&gt;
                                 &amp;quot;files when using the -r option\n&amp;quot;);&lt;br /&gt;
    D(&amp;quot;Before PipeFP 2: CMD_SVN = \&amp;quot;$CMD_SVN\&amp;quot;&amp;quot;);&lt;br /&gt;
    if (open(PipeFP, &amp;quot;$CMD_SVN stat -q |&amp;quot;)) {&lt;br /&gt;
        my %has_conflict = ();&lt;br /&gt;
        while (&amp;lt;PipeFP&amp;gt;) {&lt;br /&gt;
            chomp();&lt;br /&gt;
            D(&amp;quot;&amp;lt;PipeFP&amp;gt; = \&amp;quot;$_\&amp;quot;\n&amp;quot;);&lt;br /&gt;
            if (/^([$stat_chars])......(.*)/) {&lt;br /&gt;
                my ($Stat, $File) =&lt;br /&gt;
                   (   $1,    $2);&lt;br /&gt;
                D(&amp;quot;\$Stat = \&amp;quot;$Stat\&amp;quot;, \$File = \&amp;quot;$File\&amp;quot;\n&amp;quot;);&lt;br /&gt;
                push(@mod_array, $File);&lt;br /&gt;
                $has_conflict{$File} = ($Stat =~ /^$ST_CONFLICT/) ? 1 : 0;&lt;br /&gt;
                D(&amp;quot;\$has_conflict{$File} = \&amp;quot;$has_conflict{$File}\&amp;quot;\n&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        close(PipeFP);&lt;br /&gt;
        for (sort @mod_array) {&lt;br /&gt;
            my $File = $_;&lt;br /&gt;
            (-f $File &amp;amp;&amp;amp; !-l $File) &amp;amp;&amp;amp; diff_file($File, $has_conflict{$File});&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        warn(&amp;quot;$progname: Error opening \&amp;quot;$CMD_SVN stat -q\&amp;quot; pipe: $!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    # }}}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub diff_file {&lt;br /&gt;
    # {{{&lt;br /&gt;
    my ($File1, $has_conflict, $Revs) = @_;&lt;br /&gt;
    my $Path = &amp;quot;&amp;quot;;&lt;br /&gt;
    my $File = $File1;&lt;br /&gt;
    defined($Revs) || ($Revs = &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    D(&amp;quot;diff_file(\&amp;quot;$File1\&amp;quot;, \&amp;quot;$has_conflict\&amp;quot;, \&amp;quot;$Revs\&amp;quot;);\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if ($File =~ m#^(.*/)(.+?)$#) {&lt;br /&gt;
        $Path = $1;&lt;br /&gt;
        $File = $2;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    my $File2 = &amp;quot;&amp;quot;;&lt;br /&gt;
    my @rm_files = ();&lt;br /&gt;
&lt;br /&gt;
    D(&amp;quot;opt_revision = \&amp;quot;$opt_revision\&amp;quot;&amp;quot;);&lt;br /&gt;
    if (length($opt_revision)) {&lt;br /&gt;
        my ($Rev1, $Rev2);&lt;br /&gt;
        my ($tmp1, $tmp2);&lt;br /&gt;
        if ($opt_revision =~ /^($valid_rev)$/) {&lt;br /&gt;
            $Rev1 = $1;&lt;br /&gt;
            $Rev2 = &amp;quot;&amp;quot;;&lt;br /&gt;
            $tmp1 = &amp;quot;$File1.r$Rev1.tmp&amp;quot;;&lt;br /&gt;
        } elsif ($opt_revision =~ /^($valid_rev):($valid_rev)$/) {&lt;br /&gt;
            $Rev1 = $1;&lt;br /&gt;
            $Rev2 = $2;&lt;br /&gt;
            $tmp1 = &amp;quot;$File1.r$Rev1.tmp&amp;quot;;&lt;br /&gt;
            $tmp2 = &amp;quot;$File1.r$Rev2.tmp&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            die(&amp;quot;$progname: Revision format error in --revision argument, &amp;quot; .&lt;br /&gt;
                &amp;quot;use -h for help\n&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if (is_url($File1)) {&lt;br /&gt;
            $tmp1 =~ s#^(\S+/)(\S+?)$#$2#;&lt;br /&gt;
            length($Rev2) || ($Rev2 = &amp;quot;HEAD&amp;quot;);&lt;br /&gt;
            $tmp2 = &amp;quot;$File1.r$Rev2.tmp&amp;quot;;&lt;br /&gt;
            $tmp2 =~ s#^(\S+/)(\S+?)$#$2#;&lt;br /&gt;
        } else {&lt;br /&gt;
            $tmp2 = &amp;quot;$File1.r$Rev2.tmp&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        D(&amp;quot;Rev1 = \&amp;quot;$Rev1\&amp;quot;, Rev2 = \&amp;quot;$Rev2\&amp;quot;\n&amp;quot;);&lt;br /&gt;
        (-e $tmp1)&lt;br /&gt;
            &amp;amp;&amp;amp; (die(&amp;quot;$progname: $tmp1: Temporary file already exists\n&amp;quot;));&lt;br /&gt;
        (length($Rev2) &amp;amp;&amp;amp; -e $tmp2)&lt;br /&gt;
            &amp;amp;&amp;amp; (die(&amp;quot;$progname: $tmp2: Temporary file already exists\n&amp;quot;));&lt;br /&gt;
        D(&amp;quot;tmp1 = \&amp;quot;$tmp1\&amp;quot;&amp;quot;);&lt;br /&gt;
        D(&amp;quot;tmp2 = \&amp;quot;$tmp2\&amp;quot;&amp;quot;);&lt;br /&gt;
        if ($tmp1 eq $tmp2) {&lt;br /&gt;
            warn(&amp;quot;$progname: $File1: Start and end revisions are the same\n&amp;quot;);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        mysyst(&amp;quot;$CMD_SVN cat -r$Rev1 $File1 &amp;gt;$tmp1&amp;quot;);&lt;br /&gt;
        mysyst(&amp;quot;$CMD_SVN cat -r$Rev2 $File1 &amp;gt;$tmp2&amp;quot;) if (length($Rev2));&lt;br /&gt;
        if (length($Rev2)) {&lt;br /&gt;
            $File2 = &amp;quot;$tmp2&amp;quot;;&lt;br /&gt;
            $File1 = &amp;quot;$tmp1&amp;quot;;&lt;br /&gt;
            push(@rm_files, $tmp1, $tmp2);&lt;br /&gt;
        } else {&lt;br /&gt;
            $File2 = &amp;quot;$tmp1&amp;quot;;&lt;br /&gt;
            push(@rm_files, $tmp1);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        $File2 = &amp;quot;$Path.svn/text-base/$File.svn-base&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    D(&amp;quot;File1 = \&amp;quot;$File1\&amp;quot;\n&amp;quot;);&lt;br /&gt;
    D(&amp;quot;File2 = \&amp;quot;$File2\&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (!is_url($File1)) {&lt;br /&gt;
        (-e $File1) || (warn(&amp;quot;$File1: File not found\n&amp;quot;), return);&lt;br /&gt;
        (-e $File2) || (warn(&amp;quot;$File2: File not found&amp;quot; .&lt;br /&gt;
                             length($opt_revision) ? &amp;quot;&amp;quot;&lt;br /&gt;
                                                   : &amp;quot;, is not under version &amp;quot; .&lt;br /&gt;
                                                     &amp;quot;control\n&amp;quot;&lt;br /&gt;
                            ),&lt;br /&gt;
                            return&lt;br /&gt;
                       );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    my $use_reverse = 0;&lt;br /&gt;
&lt;br /&gt;
    if (defined($rev_diff{$Cmd})) {&lt;br /&gt;
        ($rev_diff{$Cmd} eq &amp;quot;1&amp;quot;) &amp;amp;&amp;amp; ($use_reverse = 1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ($use_reverse) {&lt;br /&gt;
        mysyst(&amp;quot;$Cmd $File1 $File2&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        mysyst(&amp;quot;$Cmd $File2 $File1&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for my $curr_rm (@rm_files) {&lt;br /&gt;
        D(&amp;quot;Removing tempfile \&amp;quot;$curr_rm\&amp;quot;...&amp;quot;);&lt;br /&gt;
        unlink($curr_rm) || warn(&amp;quot;$progname: $curr_rm: &amp;quot; .&lt;br /&gt;
                                 &amp;quot;Can&amp;#039;t delete temporary file: $!\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (!length($opt_revision) &amp;amp;&amp;amp; $has_conflict) {&lt;br /&gt;
        print(&amp;quot;$progname: Write y and press ENTER if the conflict &amp;quot; .&lt;br /&gt;
              &amp;quot;in $File1 is resolved: &amp;quot;);&lt;br /&gt;
        if (&amp;lt;STDIN&amp;gt; =~ /^y$/i) {&lt;br /&gt;
            print(&amp;quot;$progname: OK, marking $File1 as resolved.\n&amp;quot;);&lt;br /&gt;
            mysyst(&amp;quot;$CMD_SVN resolved $File1&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # Sleep one second after $Cmd is done to make it easier to interrupt &lt;br /&gt;
    # the thing with CTRL-C if there are many files&lt;br /&gt;
    sleep(1) if (scalar(@mod_array) &amp;gt; 1);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # diff_file()&lt;br /&gt;
&lt;br /&gt;
sub D {&lt;br /&gt;
    # {{{&lt;br /&gt;
    $Debug || return;&lt;br /&gt;
    my @call_info = caller;&lt;br /&gt;
    chomp(my $Txt = shift);&lt;br /&gt;
    my $File = $call_info[1];&lt;br /&gt;
    $File =~ s#\\#/#g;&lt;br /&gt;
    $File =~ s#^.*/(.*?)$#$1#;&lt;br /&gt;
    print(STDERR &amp;quot;$File:$call_info[2] $$ $Txt\n&amp;quot;);&lt;br /&gt;
    return(&amp;quot;&amp;quot;);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # D()&lt;br /&gt;
&lt;br /&gt;
sub deb_wait {&lt;br /&gt;
    # {{{&lt;br /&gt;
    $Debug || return;&lt;br /&gt;
    print(&amp;quot;debug: Press ENTER...&amp;quot;);&lt;br /&gt;
    &amp;lt;STDIN&amp;gt;;&lt;br /&gt;
    # }}}&lt;br /&gt;
} # deb_wait()&lt;br /&gt;
&lt;br /&gt;
sub is_url {&lt;br /&gt;
    # {{{&lt;br /&gt;
    my $Url = shift;&lt;br /&gt;
&lt;br /&gt;
    my $Retval = ($Url =~ m#^\S+://\S+/#) ? 1 : 0;&lt;br /&gt;
    D(&amp;quot;is_url(\&amp;quot;$Url\&amp;quot;) returns \&amp;quot;$Retval\&amp;quot;.&amp;quot;);&lt;br /&gt;
    return($Retval);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # is_url()&lt;br /&gt;
&lt;br /&gt;
sub mysyst {&lt;br /&gt;
    # {{{&lt;br /&gt;
    my @Args = @_;&lt;br /&gt;
    my $system_txt = sprintf(&amp;quot;system(\&amp;quot;%s\&amp;quot;);&amp;quot;, join(&amp;quot;\&amp;quot;, \&amp;quot;&amp;quot;, @Args));&lt;br /&gt;
    D(&amp;quot;$system_txt&amp;quot;);&lt;br /&gt;
    deb_wait();&lt;br /&gt;
    system(@_);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # mysyst()&lt;br /&gt;
&lt;br /&gt;
sub read_rcfile {&lt;br /&gt;
    # {{{&lt;br /&gt;
    my $File = shift;&lt;br /&gt;
&lt;br /&gt;
    D(&amp;quot;read_rcfile(\&amp;quot;$File\&amp;quot;)&amp;quot;);&lt;br /&gt;
    if (open(RcFP, &amp;quot;&amp;lt;$File&amp;quot;)) {&lt;br /&gt;
        my $all_rc = join(&amp;quot;&amp;quot;, &amp;lt;RcFP&amp;gt;);&lt;br /&gt;
        close(RcFP);&lt;br /&gt;
        D(&amp;quot;\$all_rc \x7B\x7B\x7B\n$all_rc\n\x7D\x7D\x7D&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        my $el_top = $all_rc;&lt;br /&gt;
        $el_top =~ s/&amp;lt;!--.*?--&amp;gt;//gsx;&lt;br /&gt;
&lt;br /&gt;
        $el_top =~&lt;br /&gt;
        s{&lt;br /&gt;
            &amp;lt;svndiffrc\b(.*?)&amp;gt;(.*?)&amp;lt;/svndiffrc&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
        {&lt;br /&gt;
            my $el_svndiffrc = $2;&lt;br /&gt;
            D(&amp;quot;Inside &amp;lt;svndiffrc&amp;gt;&amp;lt;/svndiffrc&amp;gt;&amp;quot;);&lt;br /&gt;
            D(&amp;quot;\$el_svndiffrc \x7B\x7B\x7B\n$el_svndiffrc\n\x7D\x7D\x7D&amp;quot;);&lt;br /&gt;
            $el_svndiffrc =~&lt;br /&gt;
            s{&lt;br /&gt;
                &amp;lt;diffprog\b(.*?)&amp;gt;(.*?)&amp;lt;/diffprog&amp;gt;&lt;br /&gt;
            }&lt;br /&gt;
            {&lt;br /&gt;
                $Cmd = xml_to_txt($2);&lt;br /&gt;
                D(&amp;quot;read_rcfile(): \$Cmd = \&amp;quot;$Cmd\&amp;quot;&amp;quot;);&lt;br /&gt;
                &amp;quot;&amp;quot;;&lt;br /&gt;
            }sex;&lt;br /&gt;
&lt;br /&gt;
            $el_svndiffrc =~&lt;br /&gt;
            s{&lt;br /&gt;
                &amp;lt;svnclient\b(.*?)&amp;gt;(.*?)&amp;lt;/svnclient&amp;gt;&lt;br /&gt;
            }&lt;br /&gt;
            {&lt;br /&gt;
                $CMD_SVN = xml_to_txt($2);&lt;br /&gt;
                D(&amp;quot;read_rcfile(): \$CMD_SVN = \&amp;quot;$CMD_SVN\&amp;quot;&amp;quot;);&lt;br /&gt;
                &amp;quot;&amp;quot;;&lt;br /&gt;
            }sex;&lt;br /&gt;
&lt;br /&gt;
            $el_svndiffrc =~&lt;br /&gt;
            s{&lt;br /&gt;
                &amp;lt;reversediffs\b(.*?)&amp;gt;(.*?)&amp;lt;/reversediffs&amp;gt;&lt;br /&gt;
            }&lt;br /&gt;
            {&lt;br /&gt;
                my $el_reversediffs = $2;&lt;br /&gt;
                D(&amp;quot;Inside &amp;lt;reversediffs&amp;gt;&amp;lt;/reversediffs&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                $el_reversediffs =~&lt;br /&gt;
                s{&lt;br /&gt;
                    &amp;lt;program\b(.*?)&amp;gt;(.*?)&amp;lt;/program&amp;gt;&lt;br /&gt;
                }&lt;br /&gt;
                {&lt;br /&gt;
                    my $el_program = $2;&lt;br /&gt;
                    D(&amp;quot;Inside &amp;lt;program&amp;gt;&amp;lt;/program&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                    my ($Name, $Reverse) =&lt;br /&gt;
                       (   &amp;quot;&amp;quot;,       &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                    $el_program =~&lt;br /&gt;
                    s{&lt;br /&gt;
                        &amp;lt;name\b(.*?)&amp;gt;(.*?)&amp;lt;/name&amp;gt;&lt;br /&gt;
                    }&lt;br /&gt;
                    {&lt;br /&gt;
                        $Name = xml_to_txt($2);&lt;br /&gt;
                        D(&amp;quot;Name = \&amp;quot;$Name\&amp;quot;&amp;quot;);&lt;br /&gt;
                        &amp;quot;&amp;quot;;&lt;br /&gt;
                    }sex;&lt;br /&gt;
&lt;br /&gt;
                    $el_program =~&lt;br /&gt;
                    s{&lt;br /&gt;
                        &amp;lt;reverse\b(.*?)&amp;gt;(.*?)&amp;lt;/reverse&amp;gt;&lt;br /&gt;
                    }&lt;br /&gt;
                    {&lt;br /&gt;
                        $Reverse = xml_to_txt($2);&lt;br /&gt;
                        D(&amp;quot;Reverse = \&amp;quot;$Reverse\&amp;quot;&amp;quot;);&lt;br /&gt;
                        &amp;quot;&amp;quot;;&lt;br /&gt;
                    }sex;&lt;br /&gt;
&lt;br /&gt;
                    if (length($Name)) {&lt;br /&gt;
                        $rev_diff{$Name} = ($Reverse eq &amp;quot;1&amp;quot; ? 1 : 0);&lt;br /&gt;
                        D(&amp;quot;\$rev_diff{$Name} = \&amp;quot;$rev_diff{$Name}\&amp;quot;&amp;quot;);&lt;br /&gt;
                    } else {&lt;br /&gt;
                        warn(&amp;quot;$progname: $File: Found empty &amp;quot; .&lt;br /&gt;
                             &amp;quot;&amp;lt;name&amp;gt;&amp;lt;/name&amp;gt; element.\n&amp;quot;);&lt;br /&gt;
                    }&lt;br /&gt;
                    &amp;quot;&amp;quot;;&lt;br /&gt;
                }gsex;&lt;br /&gt;
                &amp;quot;&amp;quot;;&lt;br /&gt;
            }sex;&lt;br /&gt;
            print_leftover($el_svndiffrc, &amp;quot;svndiffrc&amp;quot;);&lt;br /&gt;
        }sex;&lt;br /&gt;
        print_leftover($el_top, &amp;quot;top&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        warn(&amp;quot;$progname: $File: Can&amp;#039;t open rc file for read: $!\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    # }}}&lt;br /&gt;
} # read_rcfile()&lt;br /&gt;
&lt;br /&gt;
sub print_leftover {&lt;br /&gt;
    # Print all non-whitespace in a string, used to spot erroneous XML. {{{&lt;br /&gt;
    $Debug || return(&amp;quot;&amp;quot;);&lt;br /&gt;
    my ($Txt, $Element) = @_;&lt;br /&gt;
    $Txt =~ s/^\s+//gs;&lt;br /&gt;
    $Txt =~ s/\s+$//gs;&lt;br /&gt;
    $Txt =~ s/\s+/ /g;&lt;br /&gt;
    defined($Element) || ($Element = &amp;quot;[unknown]&amp;quot;);&lt;br /&gt;
    if ($Txt =~ /\S/) {&lt;br /&gt;
        warn(&amp;quot;$progname: Leftover: $Element: \&amp;quot;$Txt\&amp;quot;\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    return(&amp;quot;&amp;quot;);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # print_leftover()&lt;br /&gt;
&lt;br /&gt;
sub txt_to_xml {&lt;br /&gt;
    # {{{&lt;br /&gt;
    my $Txt = shift;&lt;br /&gt;
    $Txt =~ s/&amp;amp;/&amp;amp;amp;/gs;&lt;br /&gt;
    $Txt =~ s/&amp;lt;/&amp;amp;lt;/gs;&lt;br /&gt;
    $Txt =~ s/&amp;gt;/&amp;amp;gt;/gs;&lt;br /&gt;
    return($Txt);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # txt_to_xml()&lt;br /&gt;
&lt;br /&gt;
sub xml_to_txt {&lt;br /&gt;
    # {{{&lt;br /&gt;
    my $Txt = shift;&lt;br /&gt;
    $Txt =~ s/&amp;amp;lt;/&amp;lt;/gs;&lt;br /&gt;
    $Txt =~ s/&amp;amp;gt;/&amp;gt;/gs;&lt;br /&gt;
    $Txt =~ s/&amp;amp;amp;/&amp;amp;/gs;&lt;br /&gt;
    return($Txt);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # xml_to_txt()&lt;br /&gt;
&lt;br /&gt;
sub usage {&lt;br /&gt;
    # Send the help message to stdout {{{&lt;br /&gt;
    my $Retval = shift;&lt;br /&gt;
    print(&amp;lt;&amp;lt;END);&lt;br /&gt;
&lt;br /&gt;
Usage: $progname [options] [file [...]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;file&amp;quot; can also be an URL, but then the --revision option has to be &lt;br /&gt;
specified.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
-C, --conflict    Only run diff on conflicted files.&lt;br /&gt;
    --create-rc   Send a configuration file example to stdout. To create &lt;br /&gt;
                  a new ~/.svndiffrc file, write&lt;br /&gt;
                    $progname --create-rc &amp;gt;~/.svndiffrc&lt;br /&gt;
-c, --diffcmd x   Use x as the diff command. Default: &amp;quot;$Cmd&amp;quot;.&lt;br /&gt;
-e, --svncmd x    Use x as the svn executable. Default: &amp;quot;$CMD_SVN&amp;quot;.&lt;br /&gt;
-h, --help        Show this help.&lt;br /&gt;
-p, --diffargs x  Use x as parameters to the diff program.&lt;br /&gt;
-r, --revision x  Run a $Cmd command against previous revisions:&lt;br /&gt;
                    111:222&lt;br /&gt;
                      Compare r111 and r222.&lt;br /&gt;
                    123&lt;br /&gt;
                      Compare your working file against r123. If the &lt;br /&gt;
                      file is an URL, the second revision is set to &lt;br /&gt;
                      HEAD.&lt;br /&gt;
                    {2001-05-17T18:12:16Z}:900&lt;br /&gt;
                      Compare between a specific point in time with &lt;br /&gt;
                      r900.&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
    exit($Retval);&lt;br /&gt;
    # }}}&lt;br /&gt;
} # usage()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Plain Old Documentation (POD) {{{&lt;br /&gt;
&lt;br /&gt;
=pod&lt;br /&gt;
&lt;br /&gt;
=head1 NAME&lt;br /&gt;
&lt;br /&gt;
svndiff&lt;br /&gt;
&lt;br /&gt;
=head1 REVISION&lt;br /&gt;
&lt;br /&gt;
$Id$&lt;br /&gt;
&lt;br /&gt;
=head1 SYNOPSIS&lt;br /&gt;
&lt;br /&gt;
svndiff [options] [file [...]]&lt;br /&gt;
&lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
Run the specified diff program on every modified file in current &lt;br /&gt;
directory and all subdirectories or on the files specified on the &lt;br /&gt;
command line.&lt;br /&gt;
An URL to a file can also be specified, but then the --revision option &lt;br /&gt;
has to be specified.&lt;br /&gt;
&lt;br /&gt;
The program needs the L&amp;lt;svn(1)&amp;gt; commandline client to run.&lt;br /&gt;
&lt;br /&gt;
=over 4&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;-C&amp;gt;, B&amp;lt;--conflict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only run diff on conflicted files.&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;--create-rc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Send a configuration file example to stdout. To create a new &lt;br /&gt;
F&amp;lt;~/.svndiffrc&amp;gt; file, write&lt;br /&gt;
&lt;br /&gt;
  $progname --create-rc &amp;gt;~/.svndiffrc&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;-c&amp;gt;, B&amp;lt;--diffcmd&amp;gt; x&lt;br /&gt;
&lt;br /&gt;
Use x as the diff command.&lt;br /&gt;
Default: &amp;quot;svndiff&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;-e&amp;gt;, B&amp;lt;--svncmd&amp;gt; x&lt;br /&gt;
&lt;br /&gt;
Use x as the svn executable.&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  svndiff -e /usr/local/bin/svn-1.0&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;-p&amp;gt;, B&amp;lt;--diffargs&amp;gt; x&lt;br /&gt;
&lt;br /&gt;
Use x as parameters to the diff program.&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;-h&amp;gt;, B&amp;lt;--help&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Print a brief help summary.&lt;br /&gt;
&lt;br /&gt;
=item B&amp;lt;-r&amp;gt;, B&amp;lt;--revision&amp;gt; x&lt;br /&gt;
&lt;br /&gt;
Run the external diff command against previous revisions:&lt;br /&gt;
&lt;br /&gt;
  111:222&lt;br /&gt;
    Compare r111 and r222.&lt;br /&gt;
  123&lt;br /&gt;
    Compare your working file against r123. If the file is an URL, the &lt;br /&gt;
    second revision is set to HEAD.&lt;br /&gt;
&lt;br /&gt;
=back&lt;br /&gt;
&lt;br /&gt;
=head1 FILES&lt;br /&gt;
&lt;br /&gt;
=over 4&lt;br /&gt;
&lt;br /&gt;
=item F&amp;lt;~/.svndiffrc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A configuration file where you can store your own settings.&lt;br /&gt;
It is a standard XML file with this structure:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;svndiffrc&amp;gt;&lt;br /&gt;
    &amp;lt;diffprog&amp;gt;vimdiff&amp;lt;/diffprog&amp;gt;&lt;br /&gt;
    &amp;lt;svnclient&amp;gt;svn&amp;lt;/svnclient&amp;gt;&lt;br /&gt;
    &amp;lt;reversediffs&amp;gt;&lt;br /&gt;
      &amp;lt;program&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;vimdiff&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;reverse&amp;gt;1&amp;lt;/reverse&amp;gt;&lt;br /&gt;
      &amp;lt;/program&amp;gt;&lt;br /&gt;
      &amp;lt;!-- Several &amp;quot;program&amp;quot; element groups can be specified --&amp;gt;&lt;br /&gt;
    &amp;lt;/reversediffs&amp;gt;&lt;br /&gt;
  &amp;lt;/svndiffrc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Whitespace and linebreaks are optional.)&lt;br /&gt;
&lt;br /&gt;
The string inside the C&amp;lt;diffprog&amp;gt; elements can be set to whatever your &lt;br /&gt;
diff program is called as, the default string is &amp;quot;vimdiff&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can also define an alternative svn(1) client to use inside the &lt;br /&gt;
C&amp;lt;svnclient&amp;gt; elements.&lt;br /&gt;
The default value here is of course &amp;quot;svn&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When using visual diff viewers (for example B&amp;lt;vimdiff&amp;gt;), the program &lt;br /&gt;
sometimes expects the file names to be switched on the command line so &lt;br /&gt;
your modified file appears in the correct window.&lt;br /&gt;
By creating a C&amp;lt;E&amp;lt;lt&amp;gt;programE&amp;lt;gt&amp;gt;E&amp;lt;lt&amp;gt;/programE&amp;lt;gt&amp;gt;&amp;gt; section, programs &lt;br /&gt;
can be instructed to take arguments the opposite way.&lt;br /&gt;
If you for example use the B&amp;lt;meld&amp;gt; program and you want your modified &lt;br /&gt;
file to be in the left window, add this to the file (I&amp;lt;inside&amp;gt; the &lt;br /&gt;
C&amp;lt;E&amp;lt;lt&amp;gt;reversediffsE&amp;lt;gt&amp;gt;E&amp;lt;lt&amp;gt;/reversediffsE&amp;lt;gt&amp;gt;&amp;gt; elements):&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;program&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;meld&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;reverse&amp;gt;1&amp;lt;/reverse&amp;gt;&lt;br /&gt;
  &amp;lt;/program&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value in the C&amp;lt;reverse&amp;gt; element have to be B&amp;lt;1&amp;gt;, all other values &lt;br /&gt;
will count as B&amp;lt;0&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=back&lt;br /&gt;
&lt;br /&gt;
=head1 ENVIRONMENT VARIABLES&lt;br /&gt;
&lt;br /&gt;
=over 4&lt;br /&gt;
&lt;br /&gt;
=item I&amp;lt;SVNDIFFRC&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Path to a configuration file in another location than F&amp;lt;~/.svndiffrc&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
=back&lt;br /&gt;
&lt;br /&gt;
=head1 USAGE TIPS&lt;br /&gt;
&lt;br /&gt;
=head2 vimdiff mappings&lt;br /&gt;
&lt;br /&gt;
The standard diff program used in this script is L&amp;lt;vimdiff(1)&amp;gt; which in &lt;br /&gt;
fact is the Vim editor called with another name.&lt;br /&gt;
The main reasons for this are because Vim is Free and widely available, &lt;br /&gt;
portable, console based and an effective diff tool.&lt;br /&gt;
The following macros makes moving differences between windows easier &lt;br /&gt;
(can also be put into F&amp;lt;~/.vimrc&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
  &amp;quot; F1: Move differences from the other window to the current window.&lt;br /&gt;
  map &amp;lt;f1&amp;gt; :diffget&amp;lt;cr&amp;gt;]cz.&lt;br /&gt;
  &lt;br /&gt;
  &amp;quot; F2: Move differences from the current window to the other window.&lt;br /&gt;
  map &amp;lt;f2&amp;gt; :diffput&amp;lt;cr&amp;gt;]c&lt;br /&gt;
&lt;br /&gt;
  &amp;quot; F12: Update the syntax highlighting and the diffs. Use this if your &lt;br /&gt;
  &amp;quot;      diff isn’t properly updated.&lt;br /&gt;
  noremap &amp;lt;f12&amp;gt; :syntax sync fromstart&amp;lt;cr&amp;gt;:diffu&amp;lt;cr&amp;gt;&lt;br /&gt;
  inoremap &amp;lt;f12&amp;gt; &amp;lt;esc&amp;gt;:syntax sync fromstart&amp;lt;cr&amp;gt;:diffu&amp;lt;cr&amp;gt;a&lt;br /&gt;
&lt;br /&gt;
=head1 AUTHOR&lt;br /&gt;
&lt;br /&gt;
Made by Øyvind A. Holm S&amp;lt;E&amp;lt;lt&amp;gt;sunny _AT_ sunbase.orgE&amp;lt;gt&amp;gt;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=head1 COPYRIGHT&lt;br /&gt;
&lt;br /&gt;
Copyleft © Øyvind A. Holm &amp;amp;lt;sunny@sunbase.org&amp;amp;gt;&lt;br /&gt;
This is free software; see the file F&amp;lt;COPYING&amp;gt; for legalese stuff.&lt;br /&gt;
&lt;br /&gt;
This file is part of the svnutils project — &lt;br /&gt;
L&amp;lt;http://svnutils.tigris.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=head1 LICENCE&lt;br /&gt;
&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it &lt;br /&gt;
under the terms of the GNU General Public License as published by the &lt;br /&gt;
Free Software Foundation; either version 2 of the License, or (at your &lt;br /&gt;
option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but &lt;br /&gt;
WITHOUT ANY WARRANTY; without even the implied warranty of &lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along &lt;br /&gt;
with this program; if not, write to the Free Software Foundation, Inc., &lt;br /&gt;
59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
&lt;br /&gt;
=head1 SEE ALSO&lt;br /&gt;
&lt;br /&gt;
L&amp;lt;svn(1)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
&lt;br /&gt;
# }}}&lt;br /&gt;
&lt;br /&gt;
# vim: set fenc=UTF-8 ft=perl fdm=marker ts=4 sw=4 sts=4 et fo+=w :&lt;br /&gt;
# End of file $Id$&lt;/div&gt;</summary>
		<author><name>import&gt;Am592</name></author>
	</entry>
</feed>