Sophie

Sophie

distrib > Mageia > 6 > x86_64 > media > core-updates > by-pkgid > e8fe8188cee5592550f08a19b470186d > files > 74

subversion-doc-1.9.7-1.mga6.x86_64.rpm

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Directory Versions</title>
    <link rel="stylesheet" type="text/css" href="styles.css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.76.1" />
    <style type="text/css">
body { background-image: url('images/draft.png');
       background-repeat: no-repeat;
       background-position: top left;
       /* The following properties make the watermark "fixed" on the page. */
       /* I think that's just a bit too distracting for the reader... */
       /* background-attachment: fixed; */
       /* background-position: center center; */
     }</style>
    <link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
    <link rel="up" href="svn.forcvs.html" title="Appendix B. Subversion for CVS Users" />
    <link rel="prev" href="svn.forcvs.revnums.html" title="Revision Numbers Are Different Now" />
    <link rel="next" href="svn.forcvs.disconnected.html" title="More Disconnected Operations" />
  </head>
  <body>
    <div xmlns="" id="vcws-version-notice">
      <p>This text is a work in progress—highly subject to
       change—and may not accurately describe any released
       version of the Apache™ Subversion® software.
       Bookmarking or otherwise referring others to this page is
       probably not such a smart idea.  Please visit
       <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>
       for stable versions of this book.</p>
    </div>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Directory Versions</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="svn.forcvs.revnums.html">Prev</a> </td>
          <th width="60%" align="center">Appendix B. Subversion for CVS Users</th>
          <td width="20%" align="right"> <a accesskey="n" href="svn.forcvs.disconnected.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" title="Directory Versions">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="svn.forcvs.directories"></a>Directory Versions</h2>
          </div>
        </div>
      </div>
      <p>Subversion tracks tree structures, not just file contents.
      It's one of the biggest reasons Subversion was written to
      replace CVS.</p>
      <p>Here's what this means to you, as a former CVS user:</p>
      <div class="itemizedlist">
        <ul class="itemizedlist" type="disc">
          <li class="listitem">
            <p>The <span class="command"><strong>svn add</strong></span> and <span class="command"><strong>svn
          delete</strong></span> commands work on directories now, just as
          they work on files.  So do <span class="command"><strong>svn copy</strong></span> and
          <span class="command"><strong>svn move</strong></span>.  However, these commands do
          <span class="emphasis"><em>not</em></span> cause any kind of immediate change
          in the repository.  Instead, the working items are simply
          <span class="quote">“<span class="quote">scheduled</span>”</span> for addition or deletion.  No
          repository changes happen until you run <strong class="userinput"><code>svn
          commit</code></strong>.</p>
          </li>
          <li class="listitem">
            <p>Directories aren't dumb containers anymore; they have
          revision numbers like files.  (Or more properly, it's
          correct to talk about <span class="quote">“<span class="quote">directory
          <code class="filename">foo/</code> in revision 5.</span>”</span>)</p>
          </li>
        </ul>
      </div>
      <p>Let's talk more about that last point.  Directory versioning
      is a hard problem; because we want to allow mixed-revision
      working copies, there are some limitations on how far we can
      abuse this model.</p>
      <p>From a theoretical point of view, we define <span class="quote">“<span class="quote">revision
      5 of directory <code class="filename">foo</code></span>”</span> to mean a
      specific collection of directory entries and properties.  Now
      suppose we start adding and removing files from
      <code class="filename">foo</code>, and then commit.  It would be a lie
      to say that we still have revision 5 of
      <code class="filename">foo</code>.  However, if we bumped
      <code class="filename">foo</code>'s revision number after the commit,
      that would be a lie too; there may be other changes to
      <code class="filename">foo</code> we haven't yet received, because we
      haven't updated yet.</p>
      <p>Subversion deals with this problem by quietly tracking
      committed adds and deletes in the <code class="filename">.svn</code>
      area.  When you eventually run <strong class="userinput"><code>svn update</code></strong>,
      all accounts are settled with the repository, and the
      directory's new revision number is set correctly.
      <span class="emphasis"><em>Therefore, only after an update is it truly safe to
      say that you have a <span class="quote">“<span class="quote">perfect</span>”</span> revision of a
      directory.</em></span> Most of the time, your working copy will
      contain <span class="quote">“<span class="quote">imperfect</span>”</span> directory revisions.</p>
      <p>Similarly, a problem arises if you attempt to commit
      property changes on a directory.  Normally, the commit would
      bump the working directory's local revision number.  But again,
      that would be a lie, as there may be adds or deletes that
      the directory doesn't yet have, because no update has happened.
      <span class="emphasis"><em>Therefore, you are not allowed to commit
      property changes on a directory unless the directory is
      up to date.</em></span></p>
      <p>For more discussion about the limitations of directory
      versioning, see <a class="xref" href="svn.basic.in-action.html#svn.basic.in-action.mixedrevs" title="Mixed-revision working copies">the section called “Mixed-revision working copies”</a>.</p>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="svn.forcvs.revnums.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="svn.forcvs.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="svn.forcvs.disconnected.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Revision Numbers Are Different Now </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> More Disconnected Operations</td>
        </tr>
      </table>
    </div>
    <div xmlns="" id="vcws-footer">
      <hr />
      <img src="images/cc-by.png" style="float: right;" />
      <p>You are reading <em>Version Control with Subversion</em> (for
       Subversion 1.8), by Ben Collins-Sussman, Brian W. Fitzpatrick,
       and C. Michael Pilato.</p>
      <p>This work is licensed under
       the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.</p>
      <p>To submit comments, corrections, or other contributions to the
       text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
    </div>
  </body>
</html>