<!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

         https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<html lang="en" prefix="og: https://ogp.me/ns#">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Subversion Basics</title>
    <!-- Below Meta Tags Generated via https://www.opengraph.xyz -->
    <!-- If you don't care about social media then remove this section -->
    <!-- Values are set in pelicanconf.py -->
    <!-- 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="OpenOffice, Open Office, Apache OpenOffice, Apache Open Office, OpenOffice.org, Developer, Project, Website, Official, Writer, Calc, Impress, Draw, Base, ODF, Open Document Format">
    <!-- Facebook Meta Tags -->
    <meta property="og:url" content="https://openoffice.apache.org">
    <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="https://openoffice.apache.org/images/AOO4_website_logo.png">
    <!-- Twitter Meta Tags -->
    <meta name="twitter:card" content="summary_large_image">
    <meta property="twitter:domain" content="openoffice.apache.org">
    <meta property="twitter:url" content="https://openoffice.apache.org">
    <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="https://openoffice.apache.org/images/AOO4_website_logo.png">
    <!-- Above Meta Tags Generated via https://www.opengraph.xyz -->
<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">
</head>

<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>
  <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>
</button>
<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="/trademarks.html">Trademarks</a></li>
	<li><a class="dropdown-item" href="/press.html">Press</a></li>
	<li><a class="dropdown-item" href="https://www.openoffice.org/">OpenOffice.org</a></li>
      </ul>
    </li>
    <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="https://www.openoffice.org/support/">Support</a></li>
	<li><a class="dropdown-item" href="/native-lang.html">Native Language</a></li>
	<li><a class="dropdown-item" href="https://cwiki.apache.org/confluence/display/OOOUSERS/">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>
      </ul>
    </li>
    <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>
      </ul>
    </li>
    <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="https://blogs.apache.org/OOo/">Project Blog</a></li>
	<li><a class="dropdown-item" href="/pmc-faqs.html">PMC FAQs</a></li>
      </ul>
    </li>
  </ul>
  <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="https://www.apache.org/foundation/press/kit/feather.svg"
				    width="32" height="32" class="d-inline-block align-top"
				    alt="Apache Feather">The ASF</a>
      <div class="dropdown-menu dropdown-menu-right">
	<a class="dropdown-item" href="https://www.apache.org/">Website</a>
	<a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
	<a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
	<a class="dropdown-item" href="https://www.apache.org/events/current-event">Events</a>
	<a class="dropdown-item" href="https://www.openoffice.org/donations.html">Donations</a>
	<a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
	<a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
      </div>
    </div>
  </div>
</div>  </nav>
  <div id="contenta">
    <br/>
    <p>We use <a href="http://subversion.apache.org">Apache Subversion</a> for version control. For a complete reference on Subversion see the <a href="http://svnbook.red-bean.com">Subversion Book</a>. You can <a href="http://svn.apache.org/viewvc/openoffice/trunk">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>
<ul>
<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>
</ul>
<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
</code></pre>
<p>Run a sub-command</p>
<pre><code>$ svn &lt;subcommand&gt; [options] [args]
</code></pre>
<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="http://svnbook.red-bean.com">Subversion Book</a>, or use <code>svn help</code>.</p>
<ul>
<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>
</ul>
<h2 id="client_configuration">Client Configuration<a class="headerlink" href="#client_configuration" title="Permalink">&para;</a></h2>
<p>Committers need to <a href="http://www.apache.org/dev/version-control.html#https-svn-config">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
</code></pre>
<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>
<ul>
<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="http://www.apache.org/dev/contributors.html#svnbasics">Contributors Tech Guide</a>.</li>
</ul>
<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 https://svn.apache.org/repos/asf/openoffice/trunk aoo-trunk
A    aoo-trunk/tools
A    aoo-trunk/tools/dev
A    aoo-trunk/tools/dev/fetch-all-cws.sh
A    aoo-trunk/tools/dev/cws-list.txt
A    aoo-trunk/tools/dev/fetch-all-web.sh
A    aoo-trunk/tools/dev/web-list.txt
A    aoo-trunk/tools/dev/single-hg.sh
Checked out revision 1145818.
</code></pre>
<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>
<ul>
<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>
</ul>
<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
</code></pre>
<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
</code></pre>
<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
</code></pre>
<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.
</code></pre>
<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.
</code></pre>
<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
</code></pre>
<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
</code></pre>
<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.
</code></pre>
<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: 
</code></pre>
<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:
</code></pre>
<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.
</code></pre>
<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.
</code></pre>
<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="http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html">Basic Work Cycle</a> page from <a href="http://svnbook.red-bean.com">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="http://subversion.apache.org/docs/community-guide/conventions.html#crediting">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.
</code></pre>
<p>Use of the special fields will enable processing by scripts like the
<a href="http://www.red-bean.com/svnproject/contribulyzer/">contribulyzer</a> to help quickly identify
contributors.</p>
<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="http://www.apache.org/dev/committers.html#applying-patches">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;john.doe.at.null.org&gt;
Suggested by: Jane Brown &lt;janeb.at.notnull.org&gt;
</code></pre>
<!-- 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;john.doe.at.null.org&gt;\nSubmitted by: John Doe /
  &lt;john.doe.at.null.org&gt;' test-file.txt
</code></pre>
<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="http://www.apache.org/dev/contributors.html#patches">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
</code></pre>
<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="http://svn.apache.org/viewvc/openoffice/branches/">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 https://svn.apache.org/repos/asf/openoffice/branches/AOO34 aoo-stable
 U   aoo-stable
 Checked out revision 1347362.
</code></pre>
<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.
</code></pre>
<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)
</code></pre>
<p>Now merge the specific revision(s) you want (in this case r1333165):</p>
<pre><code> svn merge -c1333165 https://svn.apache.org/repos/asf/openoffice/trunk/main/jvmfwk .
 --- Merging r1333165 into '.':
 U    distributions/OpenOfficeorg/javavendors_unx.xml
</code></pre>
<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.
</code></pre>
<h2 id="further_information">Further Information<a class="headerlink" href="#further_information" title="Permalink">&para;</a></h2>
<p>For more information see:</p>
<ul>
<li><a href="http://subversion.apache.org">Apache Subversion Project</a></li>
<li><a href="http://svnbook.red-bean.com">Subversion Book</a></li>
<li><a href="http://www.apache.org/dev/">Apache Developer Information</a></li>
</ul>

  </div>

  <footer class="navbar-expand-lg navbar-light bg-light">
    <div class="footer" id="footer">
        <div class="container-fluid">
          Copyright &copy; 2011-2021 The Apache Software Foundation,
          Licensed under the
          <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0.</a> | <a href="/contact.html">Contact Us</a> | <a href="/terms.html">Terms of Use</a> | <a href="/privacy.html">Privacy</a>
          <br/>
          Apache, OpenOffice, OpenOffice.org 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="https://www.apache.org/">
              <img src="https://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" style="border: 0; margin-top: 2px" width="200" height="82">
            </a>
          </div>
          <div class="col-sm center-align">
            <a href="https://www.apache.org/foundation/contributing.html">
              <img src="https://www.apache.org/images/SupportApache-small.png" alt="Support The ASF" height="80" width="80">
            </a>
          </div>
          <div class="col-sm right-align">
            <a class="acevent" data-format="wide" data-mode="light" data-event="random"></a>
          </div>
        </div>
    </div>
  </footer>
  <!-- Start load of stylesheets (will need to upgrade periodically) -->
  <link rel="stylesheet"
	href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
	integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
	crossorigin="anonymous">
  <link rel="stylesheet"
	href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/3.0.1/github-markdown.min.css"
	crossorigin="anonymous">
  <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="https://www.apachecon.com/event-images/snippet.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min.js"
	  integrity="sha512-6ORWJX/LrnSjBzwefdNUyLCMTIsGoNP6NftMy2UAm1JBm6PRZCO1d7OHBStWpVFZLO+RerTvqX/Z9mBFfCJZ4A=="
	  crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
	  integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
	  crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
	  integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
	  crossorigin="anonymous"></script>
  <!-- End the loading of javascript frameworks -->

  <!-- Source: svn-basics.md; Template: page; Url: svn-basics.html -->
</body>
</html>