blob: da24be84609bb0b1e39f8f7464af646328855359 [file] [log] [blame]
<!doctype html>
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
<html lang="en" prefix="og:">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Subversion Basics</title> <!-- Below Meta Tags Generated via -->
<!-- If you don't care about social media then remove this section -->
<!-- Values are set in -->
<!-- HTML Meta Tags -->
<meta name="description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta name="keywords" content="">
<!-- Facebook Meta Tags -->
<meta property="og:url" content="">
<meta property="og:type" content="website">
<meta property="og:title" content="Apache OpenOffice">
<meta property="og:description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta property="og:image" content="">
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="">
<meta property="twitter:url" content="">
<meta name="twitter:title" content="Apache OpenOffice">
<meta name="twitter:description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta name="twitter:image" content="">
<!-- Above Meta Tags Generated via -->
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body id="index" class="home">
<div id="banner">
<div id="bannerleft"><a alt="Apache OpenOffice" href="/">
<img id="logo" alt="Apache OpenOffice" src="/images/AOO4_website_logo.png" height="60" width="161"/></a></div>
<div id="bannercenter">The Free and Open Productivity Suite</div>
<div id="clear"></div>
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
<button class="navbar-toggler" type="button"
data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<!-- General menu -->
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="generalDropdown" role="button" data-toggle="dropdown" aria-expanded="false">General</a>
<ul class="dropdown-menu" aria-labelledby="generalDropdown">
<li><a class="dropdown-item" href="/index.html">About</a></li>
<li><a class="dropdown-item" href="/downloads.html">Downloads</a></li>
<li><a class="dropdown-item" href="/license.html">License</a></li>
<li><a class="dropdown-item" href="/mission.html">Mission</a></li>
<li><a class="dropdown-item" href="/trademarks.html">Trademarks</a></li>
<li><a class="dropdown-item" href="/press.html">Press</a></li>
<li><a class="dropdown-item" href=""></a></li>
<!-- Community menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="communityDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Community</a>
<ul class="dropdown-menu" aria-labelledby="communityDropdown">
<li><a class="dropdown-item" href="/get-involved.html">Get Involved</a></li>
<li><a class="dropdown-item" href="/orientation/index.html">Orientation</a></li>
<li><a class="dropdown-item" href="/mailing-lists.html">Mailing Lists</a></li>
<li><a class="dropdown-item" href="/social.html">Social Networking</a></li>
<li><a class="dropdown-item" href="/events.html">Events</a></li>
<li><a class="dropdown-item" href="">Support</a></li>
<li><a class="dropdown-item" href="/native-lang.html">Native Language</a></li>
<li><a class="dropdown-item" href="">Planning Wiki</a></li>
<li><a class="dropdown-item" href="/people.html">People</a></li>
<li><a class="dropdown-item" href="/community-faqs.html">Community FAQs</a></li>
<!-- Development menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="developmentDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Development</a>
<ul class="dropdown-menu" aria-labelledby="developmentDropdown">
<li><a class="dropdown-item" href="/source.html">Source Code</a></li>
<li><a class="dropdown-item" href="/bug-tracking.html">Bug Tracking</a></li>
<li><a class="dropdown-item" href="/qa.html">Quality Assurance</a></li>
<li><a class="dropdown-item" href="/translate.html">Translation</a></li>
<li><a class="dropdown-item" href="/website-local.html">Website</a></li>
<li><a class="dropdown-item" href="/security.html">Security Reports</a></li>
<li><a class="dropdown-item" href="/contributing-code.html">Contributing Code</a></li>
<li><a class="dropdown-item" href="/developer-faqs.html">Developer FAQs</a></li>
<!-- Project menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="projectDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Project</a>
<ul class="dropdown-menu" aria-labelledby="projectDropdown">
<li><a class="dropdown-item" href="/blogpage.html">Project Blog</a></li>
<li><a class="dropdown-item" href="/pmc-faqs.html">PMC FAQs</a></li>
<!-- The ASF menu -->
<div class="navbar-nav" style="padding-top: 0.5rem;">
<div class="nav-item dropdown dropdown-menu-right active">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src=""
width="32" height="32" class="d-inline-block align-top"
alt="Apache Feather">
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="">Website</a>
<a class="dropdown-item" href="">License</a>
<a class="dropdown-item" href="">Security</a>
<a class="dropdown-item" href="">Events</a>
<a class="dropdown-item" href="">Donations</a>
<a class="dropdown-item" href="">Sponsorship</a>
<a class="dropdown-item" href="">Thanks</a>
</div> </nav>
<div id="contenta">
<p>We use <a href="">Apache Subversion</a> for version control. For a complete reference on Subversion see the <a href="">Subversion Book</a>. You can <a href="">browse our repository</a> in your web browser.</p>
<p>This page gives instructions on performing basic development tasks using the Subversion Command-Line Client. This instruction assumes you have Apache Subversion installed.</p>
<li><a href="#overview">Overview</a></li>
<li><a href="#sub-commands_and_abbreviations">Sub-commands and Abbreviations</a></li>
<li><a href="#client_configuration">Client Configuration</a></li>
<li><a href="#repository-layout">Repository Layout</a></li>
<li><a href="#getting-the-source-code">Getting the source code</a></li>
<li><a href="#basic_work_cycle">Basic Work Cycle</a></li>
<li><a href="#committing_changes">Committing Changes</a></li>
<li><a href="#commit_message">Commit Message</a></li>
<li><a href="#committing_changes_by_others">Committing Changes By Others</a></li>
<li><a href="#creating_and_submitting_patches">Creating and Submitting Patches</a></li>
<li><a href="#merging_changes">Merging changes to a branch</a></li>
<li><a href="#further_information">Further Information</a></li>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permalink">&para;</a></h2>
<p>You begin using Subversion by copying a directory from a remote repository to a local directory on your file system. This is known as a checkout of a working copy.</p>
<p>Subversion uses a copy-modify-merge model meaning that you can add and edit files and directories in your working copy like any other files on your system, but you should use subversion commands for everything else such as <code>svn copy</code> and <code>svn move</code> instead of the operating system commands.</p>
<h2 id="sub-commands_and_abbreviations">Sub-commands and Abbreviations<a class="headerlink" href="#sub-commands_and_abbreviations" title="Permalink">&para;</a></h2>
<p>Subversion commands can be run from a command shell such as Bash on Linux. The subversion client command is <code>svn</code> followed by optional sub-commands, options, and arguments.</p>
<p>Show the program version and modules</p>
<pre><code>$ svn --version
<p>Run a sub-command</p>
<pre><code>$ svn &lt;subcommand&gt; [options] [args]
<p>Most sub-commands take file and/or directory arguments, recursing on the directories. If no arguments are supplied to such a command, it recurses on the current directory (inclusive) by default. (from <code>svn help</code>)</p>
<p>The following is only a partial list of sub-commands relating to this instruction. For a complete list, see the <a href="">Subversion Book</a>, or use <code>svn help</code>.</p>
<li><code>add</code> - Schedule a new file or directory (including contained files) for inclusion in the repository</li>
<li><code>checkout</code>, <code>co</code> - Create a local working copy of a remote repository</li>
<li><code>commit</code>, <code>ci</code> - Commit (check in) local changes to the repository</li>
<li><code>copy</code>, <code>cp</code> - Copy one or more files in a working copy or in the repository</li>
<li><code>delete</code>, <code>del</code>, <code>remove</code>, <code>rm</code> - Items specified are scheduled for deletion upon the next commit. Working copy files not yet committed are deleted immediately.</li>
<li><code>diff</code>, <code>di</code> - Displays differences in files from the directory</li>
<li><code>help</code>, <code>?</code>, <code>h</code> - Subversion help and help on sub-commands</li>
<li><code>move</code>, <code>mv</code>, <code>rename</code>, <code>ren</code> - Moves files or directories in your working copy or repository</li>
<li><code>resolve</code> - Resolve conflicts on working copy files or directories</li>
<li><code>revert</code> - Undo all local edits or optionally a file or directory</li>
<li><code>status</code> - Print the status of working copy files and directories</li>
<li><code>update</code> - Bring changes from the repository into your working copy</li>
<h2 id="client_configuration">Client Configuration<a class="headerlink" href="#client_configuration" title="Permalink">&para;</a></h2>
<p>Committers need to <a href="">configure their Subversion client</a> to handle the differences in line endings of text files on different operating systems.</p>
<p>There are instances where Subversion may need to open an editor. You need to have the environment variable EDITOR set to the editor you would like to use. To set it for the current terminal session in Bash (your path may differ):</p>
<pre><code>$ export EDITOR=/usr/bin/vim
<h2 id="repository_layout">Repository Layout<a class="headerlink" href="#repository_layout" title="Permalink">&para;</a></h2>
<p>The AOO repository layout uses the following top-level directories <code>branches</code>, <code>site</code>, <code>tags</code>, and <code>trunk</code>.</p>
<li><code>branches</code> - Contains branches used for continued development of a specific version, experimental versions, or for developing features to be merged into the trunk or a branch later. (needs examples)</li>
<li><code>site</code> - Contains the web site source code. Also contains it's own trunk directory.</li>
<li><code>tags</code> - Contains specific versions of the project. These tags are not to be revised. (needs examples)</li>
<li><code>trunk</code> - Contains the current source code.
For more information see the <a href="">Contributors Tech Guide</a>.</li>
<h2 id="getting-the-source-code">Getting the source code<a class="headerlink" href="#getting-the-source-code" title="Permalink">&para;</a></h2>
<p>From the parent directory of where you want the working copy. In this example the <code>aoo-trunk</code> directory will be created if it does not exist.</p>
<pre><code>$ svn co aoo-trunk
A aoo-trunk/tools
A aoo-trunk/tools/dev
A aoo-trunk/tools/dev/
A aoo-trunk/tools/dev/cws-list.txt
A aoo-trunk/tools/dev/
A aoo-trunk/tools/dev/web-list.txt
A aoo-trunk/tools/dev/
Checked out revision 1145818.
<p>"A" indicates file or directory is "Added" to working copy</p>
<h2 id="basic_work_cycle">Basic Work Cycle<a class="headerlink" href="#basic_work_cycle" title="Permalink">&para;</a></h2>
<li>Update your working copy - For this you use the <code>svn update</code> command</li>
<li>Make changes - For this you may edit files in an editor, or use the <code>svn add</code>, <code>svn delete</code>, <code>svn copy</code>, <code>svn-move</code> commands</li>
<li>Review Changes - For this you use the <code>svn status</code> and <code>svn diff</code></li>
<li>Fix Mistakes - Make additional edits to files or you can use the <code>svn revert</code> to restore files or directories to an unmodified state</li>
<li>Resolve Conflicts - There is a chance others have committed changes while you have been changing your working copy. You should run the <code>svn update</code> command to bring your copy up to date. This may create a local conflict where someone may have added a file with a name that you also want to add, or may have made changes to the same line of a file as you. For this use the <code>svn resolve</code> command.</li>
<li>Publish Changes - For this you use the <code>svn commit</code> command</li>
<h3 id="adding-a-file">Adding a File<a class="headerlink" href="#adding-a-file" title="Permalink">&para;</a></h3>
<p>After creating the file "test-file.txt" in the working copy.</p>
<pre><code>$ svn status
? test-file.txt
<p>? indicates test-file.txt is not under version control</p>
<h3 id="scheduling-a-file-for-addition-to-repository">Scheduling a file for addition to repository<a class="headerlink" href="#scheduling-a-file-for-addition-to-repository" title="Permalink">&para;</a></h3>
<pre><code>$ svn add test-file.txt
A test-file.txt
$ svn status
A test-file.txt
<p>"A" indicates file is scheduled for addition</p>
<h3 id="running-a-diff">Running a diff<a class="headerlink" href="#running-a-diff" title="Permalink">&para;</a></h3>
<pre><code>$ svn diff
Index: test-file.txt
--- test-file.txt (revision 0)
+++ test-file.txt (revision 0)
@@ -0,0 +1 @@
+This is a test file for svn-basics.
Property changes on: test-file.txt
Added: svn:eol-style
+ native
<h3 id="committing-a-file">Committing a file<a class="headerlink" href="#committing-a-file" title="Permalink">&para;</a></h3>
<pre><code>$ svn commit test-file.txt -m "added test-file.txt"
Adding test-file.txt
Transmitting file data .
Committed revision 2.
<h3 id="update-the-working-copy">Update the working copy<a class="headerlink" href="#update-the-working-copy" title="Permalink">&para;</a></h3>
<pre><code>$ svn update
U test-file.txt
Updated to revision 3.
<p>"U" indicates an "Update" to a file or directory</p>
<p>Modify the file (this example uses the vim editor)</p>
<pre><code>$ vim test-file.txt
<h3 id="check-the-status">Check the Status<a class="headerlink" href="#check-the-status" title="Permalink">&para;</a></h3>
<pre><code>$ svn status
M test-file.txt
<p>"M" indicates the file has been "Modified"</p>
<pre><code>$ svn diff
Index: test-file.txt
--- test-file.txt (revision 3)
+++ test-file.txt (working copy)
@@ -1,2 +1,3 @@
This is a test file for svn-basics.
This is a new line added by someone else.
+This line added by me.
<h3 id="resolving-conflicts">Resolving Conflicts<a class="headerlink" href="#resolving-conflicts" title="Permalink">&para;</a></h3>
<p>Suppose someone edits the same line as you before you commit</p>
<pre><code>$ svn update
Conflict discovered in 'test-file.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
<p>This is just like if you had ran the <code>svn resolve</code> command</p>
<p>Selecting <code>df</code> displays this:</p>
<pre><code>--- .svn/text-base/test-file.txt.svn-base Sun Jul 17 17:38:52 2011
+++ .svn/tmp/test-file.txt.tmp Sun Jul 17 21:35:09 2011
@@ -1,2 +1,7 @@
This is a test file for svn-basics.
This is a new line added by someone else.
+&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine
+This line added by me.
+This line is added by someone else also.
+&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r4
Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
<p>If you choose <code>e</code>, Subversion will launch an editor with both sets of changes included for you to edit. You can save your changes in the editor and then select <code>r</code> (for resolved).</p>
<pre><code>G test-file.txt
Updated to revision 4.
<p>"G" indicates "merGed"</p>
<h2 id="committing_changes">Committing Changes<a class="headerlink" href="#committing_changes" title="Permalink">&para;</a></h2>
<p>Only Committers can commit directly to the repository. The following example shows using your Apache ID and password.</p>
<pre><code>$ svn commit test-file.c --username your-name --password your-password \
-m "added new C file"
Sending test-file.txt
Transmitting file data .
Committed revision 5.
<p>In general, you may not have to include always your username or password if you do a proper setup of your ssh key or have subversion store the password.</p>
<p>Always check your changes with "svn diff" and "svn status". Also be careful to specify the files and/or directories you want to change, if
you don't specify, SVN will commit <strong>all</strong> your changes.</p>
<p>For further information see the <a href="">Basic Work Cycle</a> page from <a href="">Subversion Book</a>.</p>
<h2 id="commit_message">Commit Message<a class="headerlink" href="#commit_message" title="Permalink">&para;</a></h2>
<p>The examples in the previous sections use a simple commit message with the "-m" option.</p>
<p>This is fine for some quick testing or for large bulk commits of code that you wrote.</p>
<p>We ask that your commits include special tagging to appropriately credit the patch.
See the <a href="">crediting section</a> of the Coding and Commit
Conventions of the Apache Subversion project.</p>
<p>Log comments are important.
Information like author, where the change start/ends, the date, the bugzilla issue, and the author don't really belong
in the code as SVN can keep it much more effectively without altering the coding style.
Always try to use a log file for your commits. The previous commit when done by an experienced committer
should actually look like this:</p>
<pre><code>$ svn ci -F test-log.txt test-file.c
Sending test-file.c
Transmitting file data .
Committed revision 5.
<p>Use of the special fields will enable processing by scripts like the
<a href="">contribulyzer</a> to help quickly identify
<h2 id="committing_changes_by_others">Committing Changes By Others<a class="headerlink" href="#committing_changes_by_others" title="Permalink">&para;</a></h2>
<p>See the <a href="">Applying Patches</a> section of the Committer FAQ page. Please use the special fields
described in the previous Commit Message section to commit changes supplied by others.</p>
<p>Example similar to one on Committer FAQ:</p>
<pre><code>#i999999# Added some cool new feature.
Patch by: John Doe &lt;;
Suggested by: Jane Brown &lt;;
<!-- Using the `-m (--message)` option only allows a single line log message. To commit a multi-line message use the `-F (--file)` option (with a previously created file) or use neither -m or -F and an editor will be started. -->
<p>An alternative way is the following command. It adds a new line with "\n":</p>
<pre><code>$ svn commit -m $'#i999999# Added some cool new feature.\nPatch by: /
John Doe &lt;;\nSubmitted by: John Doe /
&lt;;' test-file.txt
<h2 id="creating_and_submitting_patches">Creating and Submitting Patches<a class="headerlink" href="#creating_and_submitting_patches" title="Permalink">&para;</a></h2>
<p>See the <a href="">Sending in Patches</a> section on the Contributors Tech Guide page.</p>
<p>Create the patch file from <code>svn diff</code> where <code>your-patch-name.patch</code> is the full path to the patch file to create.</p>
<pre><code>svn diff &gt; your-patch-name.patch
<h2 id="merging_changes">Merging changes to a branch<a class="headerlink" href="#merging_changes" title="Permalink">&para;</a></h2>
<p>New development is done in the "trunk", development area, of the tree. Stable, release branches, are specifically named and can be found
in the <a href="">branches</a> area of the openoffice svn tree. With few exceptions you do <strong>NOT</strong> do direct commits to the stable, release,
branches. Changes, commits, to stable branch are typically only done during a formal release cycle and must be discussed on the "dev" list.</p>
<p>When a new release is in preparation, bug fixes are reviewed, and fixes that have been made to "trunk" get applied to the stable, release, branch. This is done using the "svn merge" command which finds previous changes and replays them. SVN also keeps a record
of the specific commits that have been merged so the changes are much easier to track down.</p>
<p>The first step is to do a check out of the stable, release, branch. The following examples use the AOO34 release branch, and assume
you want to apply changes from trunk for a new release, maybe AOO341.</p>
<p>You can do a complete checkout of the release branch or you can save some space by using the "--depth=empty" option:</p>
<pre><code> % svn co --depth=empty aoo-stable
U aoo-stable
Checked out revision 1347362.
<p>This will put a placeholder branch for the AOO34 in directory "aoo-stable".</p>
<p>In the aoo-stable directory, you can keep saving space (rather convenient) until you reach the directory where you want to make changes:</p>
<pre><code> % svn up --depth=empty main
Updating 'main':
A main
Updated to revision 1347363.
% svn up --depth=empty jvmfwk
Updating 'jvmfwk':
A jvmfwk
Updated to revision 1347366.
<p>At this point, there are svn placeholder entries for /main/jvmfwk.</p>
<p>To do a complete checkout from there:</p>
<pre><code> svn up --set-depth=infinity
Updating '.':
A source
A source/elements.hxx
A source/fwkbase.cxx
... (and so on)
<p>Now merge the specific revision(s) you want (in this case r1333165):</p>
<pre><code> svn merge -c1333165 .
--- Merging r1333165 into '.':
U distributions/OpenOfficeorg/javavendors_unx.xml
<p>At this point, you have merged r1333165 into r1347366. (For release from trunk to a new release, it's likely you would be merging a higher revision to a lower existing release revision.)</p>
<p>After you finish merging, check your changes with "svn status" and "svn diff"
and commit from the aoo-update directory:</p>
<pre><code> svn commit -m "Merge r1329539, r1329547, 1333165 - Add Oracle as a Java vendor on unix." distributions/OpenOfficeorg/javavendors_unx.xml distributions/OpenOfficeorg/javavendors_freebsd.xml
Sending distributions/OpenOfficeorg/javavendors_freebsd.xml
Sending distributions/OpenOfficeorg/javavendors_unx.xml
Transmitting file data ..
Committed revision 1347377.
<h2 id="further_information">Further Information<a class="headerlink" href="#further_information" title="Permalink">&para;</a></h2>
<p>For more information see:</p>
<li><a href="">Apache Subversion Project</a></li>
<li><a href="">Subversion Book</a></li>
<li><a href="">Apache Developer Information</a></li>
<footer class="navbar-expand-lg navbar-light bg-light">
<div class="footer" id="footer">
<div class="container-fluid">
Copyright &copy; 2011-2024 The Apache Software Foundation,
Licensed under the
<a href="">Apache License, Version 2.0.</a> | <a href="/contact.html">Contact Us</a> | <a href="/terms.html">Terms of Use</a> | <a href="">Privacy</a>
Apache, OpenOffice, and the seagull logo are registered trademarks of The Apache Software Foundation.
The Apache feather logo is a trademark of The Apache Software Foundation.
Other names appearing on the site may be trademarks of their respective owners.
</div><!-- #container-fluid -->
<div class="row container-fluid">
<div class="col-sm">
<a href="">
<img src="" alt="The Apache Software Foundation" style="border: 0; margin-top: 2px" width="200" height="82">
<div class="col-sm center-align">
<a href="">
<img src="" alt="Support The ASF" height="80" width="80">
<div class="col-sm right-align">
<a class="acevent" data-format="wide" data-mode="light" data-event="random"></a>
<!-- Start load of stylesheets (will need to upgrade periodically) -->
<link href="/theme/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/theme/css/github-markdown.min.css" rel="stylesheet" type="text/css">
<link href="/theme/css/openoffice.css" rel="stylesheet" type="text/css">
<!-- End stylesheets -->
<!-- Start the loading of javascript frameworks (will need to upgrade periodically) -->
<script src=""></script>
<script src="/theme/js/jquery.slim.min.js"></script>
<script src="/theme/js/popper.min.js"></script>
<script src="/theme/js/bootstrap.min.js"></script>
<!-- End the loading of javascript frameworks -->
<!-- Source: pages/; Template: page; Url: pages/svn-basics.html --></body>