diff --git a/svnindex.html b/svnindex.html
new file mode 100644
index 0000000..b704c5b
--- /dev/null
+++ b/svnindex.html
@@ -0,0 +1,290 @@
+<!DOCTYPE html SYSTEM "about:legacy-compat">
+<html lang="en">
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<title>Apache JMeter
+          -
+          Source Repositories</title>
+<meta name="author" value="Apache JMeter Project">
+<meta name="email" value="dev.AT.jmeter.DOT.apache.DOT.org">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
+<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
+<link rel="stylesheet" type="text/css" href="./css/new-style.css">
+<link rel="apple-touch-icon-precomposed" href="./images/apple-touch-icon.png">
+<link rel="icon" href="./images/favicon.png">
+<meta name="msapplication-TileColor" content="#ffffff">
+<meta name="msapplication-TileImage" content="./images/mstile-144x144.png">
+<meta name="theme-color" content="#ffffff">
+</head>
+<body role="document">
+<a href="#content" class="hidden">Main content</a>
+<div class="header">
+<!--
+            APACHE LOGO
+          -->
+<div>
+<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="./images/asf-logo.svg" alt="Logo ASF"></a>
+</div>
+<!--
+              PROJECT LOGO
+            -->
+<div>
+<a href="https://jmeter.apache.org/"><img class="logo" src="./images/logo.svg" alt="Apache JMeter"></a>
+</div>
+<div class="banner">
+<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
+<div class="clear"></div>
+</div>
+</div>
+<div class="nav">
+<ul class="menu">
+<li onClick="return true">
+<div class="menu-title">About</div>
+<ul>
+<li>
+<a href="./index.html">Overview</a>
+</li>
+<li>
+<a href="https://www.apache.org/licenses/">License</a>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="menu">
+<li onClick="return true">
+<div class="menu-title">Download</div>
+<ul>
+<li>
+<a href="./download_jmeter.cgi">Download Releases</a>
+</li>
+<li>
+<a href="./changes.html">Release Notes</a>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="menu">
+<li onClick="return true">
+<div class="menu-title">Documentation</div>
+<ul>
+<li>
+<a href="./usermanual/get-started.html">Get Started</a>
+</li>
+<li>
+<a href="./usermanual/index.html">User Manual</a>
+</li>
+<li>
+<a href="./usermanual/best-practices.html">Best Practices</a>
+</li>
+<li>
+<a href="./usermanual/component_reference.html">Component Reference</a>
+</li>
+<li>
+<a href="./usermanual/functions.html">Functions Reference</a>
+</li>
+<li>
+<a href="./usermanual/properties_reference.html">Properties Reference</a>
+</li>
+<li>
+<a href="./changes_history.html">Change History</a>
+</li>
+<li>
+<a href="./api/index.html">Javadocs</a>
+</li>
+<li>
+<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
+</li>
+<li>
+<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="menu">
+<li onClick="return true">
+<div class="menu-title">Tutorials</div>
+<ul>
+<li>
+<a href="./usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
+</li>
+<li>
+<a href="./usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
+</li>
+<li>
+<a href="./usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
+</li>
+<li>
+<a href="./usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
+</li>
+<li>
+<a href="./usermanual/jmeter_tutorial.html">Extending JMeter</a>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="menu">
+<li onClick="return true">
+<div class="menu-title">Community</div>
+<ul>
+<li>
+<a href="./issues.html">Issue Tracking</a>
+</li>
+<li>
+<a href="https://www.apache.org/security/">Security</a>
+</li>
+<li>
+<a href="./mail.html">Mailing Lists</a>
+</li>
+<li>
+<a href="./svnindex.html">Source Repositories</a>
+</li>
+<li>
+<a href="./building.html">Building and Contributing</a>
+</li>
+<li>
+<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
+</li>
+<li>
+<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
+</li>
+</ul>
+</li>
+</ul>
+<ul class="menu">
+<li onClick="return true">
+<div class="menu-title">Foundation</div>
+<ul>
+<li>
+<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
+</li>
+<li>
+<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
+</li>
+<li>
+<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
+</li>
+<li>
+<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="main" id="content">
+<div class="social-media">
+<ul class="social-media-links">
+<li class="twitter">
+<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
+</li>
+<li class="github">
+<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
+</li>
+</ul>
+</div>
+<div class="section">
+<h1>Download the Source</h1>
+
+
+<p>Most users of the source code probably don't need to have day to
+day access to the source code as it changes. For these users we
+provide easy to unpack source code downloads via our <a href="download_jmeter.cgi">download page</a>.  </p>
+
+
+</div>
+<div class="section">
+<h1>Access the GIT Version Controlled Source Code</h1>
+
+
+<div class="clear"></div>
+<div class="note">With Apache JMeter 5.2 the sources have been
+<a href="https://www.apache.org/dev/writable-git">migrated to Git.</a>
+
+</div>
+<div class="clear"></div>
+
+
+<div class="subsection">
+<h2 id="git">Git<a class="sectionlink" href="#git" title="Link to here">&para;</a>
+</h2>
+
+
+<p>The sources for JMeter are accessible at the urls below.</p>
+
+
+<table>
+ 
+<tr>
+  
+<th>Project</th>
+  <th>GIT (read-only)</th>
+  <th>GITHUB (read-only)</th>
+ 
+</tr>
+ 
+<tr>
+  
+<td>Apache JMeter</td>
+  <td><a href="https://gitbox.apache.org/repos/asf/jmeter.git">https://gitbox.apache.org/repos/asf/jmeter.git</a></td>
+  <td><a href="https://github.com/apache/jmeter">https://github.com/apache/jmeter</a></td>
+ 
+</tr>
+
+</table>
+
+
+</div>
+
+
+</div>
+<div class="share-links">
+      Share this page:
+      <ul>
+<li class="fb">
+<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
+</li>
+<li class="twitter">
+<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
+</li>
+</ul>
+</div>
+<a href="#top" id="topButton">Go to top</a>
+</div>
+<div class="footer">
+<div class="copyright">
+            Copyright &copy;
+            1999 &ndash;
+            2019
+            , Apache Software Foundation
+          </div>
+<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
+            feather, and the Apache JMeter logo are
+            trademarks of the
+            Apache Software Foundation.
+          </div>
+</div>
+<script>(function(){
+            "use strict";
+            // enable 'go to top' button functionality
+            document.addEventListener('scroll', function() {
+                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
+                    document.getElementById("topButton").style.display = "block";
+                } else {
+                    document.getElementById("topButton").style.display = "none";
+                }
+            });
+            // fill in the current location into social links on this page.
+            var as = document.getElementsByTagName('a');
+            var loc = document.location.href;
+            if (!loc.toLowerCase().startsWith('http')) {
+                return;
+            }
+            for (var i=0; i<as.length; i++) {
+                var href = as[i].getAttribute('data-social-url');
+                if (href !== null) {
+                    as[i].href = href + encodeURIComponent(loc);
+                }
+            }
+        })();</script>
+</body>
+</html>
