Alien-SVN
view release on metacpan or search on metacpan
src/subversion/doc/user/cvs-crossover-guide.html view on Meta::CPAN
<dd><a href="http://svnbook.red-bean.com/svnbook/re01.html">svn add</a></dd>
<dd><a href="http://svnbook.red-bean.com/svnbook/re08.html">svn delete</a></dd>
</dl>
</div>
<!-- ==================================================================== -->
<div class="h2">
<h2 id="copying">Copying and moving</h2>
<p>Copy or move/rename a file or directory.</p>
<table class="sidebyside">
<tr>
<th>CVS</th>
<th>Subversion</th>
</tr>
<tr>
<td>
<dl>
<dt>Commands:</dt>
<dd>(not possible.)</dd>
<dt>Explanation:</dt>
<dd>Not possible, unless an administrator directly mucks with
RCS files in the repository. (And in that case, no history
records the act of copying or renaming.)</dd>
</dl>
</td>
<td>
<dl>
<dt>Commands:</dt>
<dd><tt>$ svn copy foo.c foo2.c</tt></dd>
<dd><tt>A foo2.c</tt></dd>
<dd><tt> </tt></dd>
<dd><tt>$ svn copy dir dir2</tt></dd>
<dd><tt>A dir2</tt></dd>
<dd><tt> </tt></dd>
<dd><tt>$ svn move bar.c baz.c</tt></dd>
<dd><tt>A baz.c</tt></dd>
<dd><tt>D bar.c</tt></dd>
<dd><tt> </tt></dd>
<dd><tt>$ svn move dirA dirB</tt></dd>
<dd><tt>A dirB</tt></dd>
<dd><tt>D dirA/file1</tt></dd>
<dd><tt>D dirA/file2</tt></dd>
<dd><tt>…</tt></dd>
<dt>Explanation:</dt>
<dd>The <tt>svn copy</tt> command schedules a file or directory
for addition to the repository, recording the "source" of the
copy. After committing, <tt>svn log</tt> on the copied item
will trace history back through the original copy-source. The
<tt>svn move</tt> command is exactly equivalent to running
<tt>svn copy</tt>, followed by an <tt>svn delete</tt> on the
copy-source: the result is a new item scheduled for addition
(with copy-history attached) and the original item scheduled for
deletion.</dd>
</dl>
</td>
</tr>
</table>
<dl class="bookref">
<dt>Book References:</dt>
<dd><a href="http://svnbook.red-bean.com/svnbook/ch03s05.html#svn-ch-3-sect-4.2">Make Changes to Your Working Copy</a></dd>
<dd><a href="http://svnbook.red-bean.com/svnbook/re07.html">svn copy</a></dd>
<dd><a href="http://svnbook.red-bean.com/svnbook/re18.html">svn move</a></dd>
</dl>
</div>
<!-- ==================================================================== -->
<div class="h2">
<h2>Finding the beginning of a branch</h2>
<p>If you're attempting to merge an entire branch into another, you
need to compare the "root" and "tip" of the source branch, and then
merge those differences into a working copy of the target branch.
Obviously the "tip" of the branch can be represented by using the
<tt>HEAD</tt> keyword. But how do you find the "birth" revision of
the source branch?</p>
<p>The easiest solution is to run</p>
<pre>
$ svn log -v --stop-on-copy source-branch-URL
…
</pre>
<p>This command will display every change ever made to the branch, but
<tt>--stop-on-copy</tt> option will cause the output to stop as soon
as detects a copy operation in the branch's history. By definition,
then, the very last log entry printed will show the copy being made.
It will look something like:</p>
<pre>
r9189 | joe | 2004-03-22 10:10:47 -0600 (Mon, 22 Mar 2004) | 1 line
Changed paths:
A /branches/mybranch (from /trunk:9188)
</pre>
<p>In this case, you would then know to compare revisions 9189 and
HEAD of the branch in order to perform the merge:</p>
<pre>
$ svn merge -r9189:HEAD source-branch-URL target-branch-WC
…
</pre>
</div>
<!-- ==================================================================== -->
<div class="h2">
<h2>Seeing all of a project's tags</h2>
( run in 0.546 second using v1.01-cache-2.11-cpan-e1769b4cff6 )