Alien-SVN
view release on metacpan or search on metacpan
src/subversion/doc/user/cvs-crossover-guide.html view on Meta::CPAN
<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>
<p>Assuming you've been following a consistent policy for creating
tag-copies, then this is just a matter of running <tt>svn ls</tt> on a
directory containing your tags. Typically you would run it on the
<tt>/tags</tt> directory in your repository, although you're certainly
free to organize this directory in a more complex way, or invent a
different convention altogether.</p>
<p>As an example, you can see all of Subversion's tags by running:</p>
<pre>
$ svn ls --verbose http://svn.apache.org/repos/asf/subversion/tags
…
7739 kfogel Nov 13 22:05 0.33.0/
7796 josander Nov 18 12:15 0.33.1/
7932 josander Dec 03 17:54 0.34.0/
8045 josander Dec 19 15:13 0.35.0/
8063 josander Dec 20 11:20 0.35.1/
8282 josander Jan 13 14:15 0.36.0/
8512 josander Jan 24 17:31 0.37.0/
8810 kfogel Feb 23 03:44 1.0.0/
…
</pre>
</div>
<!-- ==================================================================== -->
<div class="h2">
<h2>Seeing the differences between two tags</h2>
<p>Just use <tt>svn diff</tt> in its fully expanded form, which
compares any two URLs:</p>
<pre>
$ svn diff tagURL1 tagURL2
…
</pre>
</div>
<!-- ==================================================================== -->
<div class="h2">
<h2>Seeing logs between two tags</h2>
<p>This is a somewhat common practice in CVS, and is doable in Subversion,
but requires a little bit more work. Assuming that you've made two
tags of <tt>/trunk</tt> at different points in time, the ultimate goal
here is to run </p>
<pre>
$ svn log -rX:Y trunkURL
</pre>
<p>…where X and Y are the revisions from which the two tags were
copied. To discover X and Y, you can use the same technique
described in the previous section ("finding the beginning of a
branch".) Just use the <tt>--stop-on-copy</tt> option when logging the
history of each tag. No commits happen on tag directories, so the
following commands should each produce exactly <em>one</em> log
entry:</p>
<pre>
$ svn log -v --stop-on-copy tag1-URL
r3520 | joe | 2004-03-12 15:28:43 -0600 (Fri, 12 Mar 2004) | 1 line
…
$ svn log -v --stop-on-copy tag2-URL
a
r4177 | joe | 2004-03-12 15:28:43 -0600 (Fri, 12 Mar 2004) | 1 line
…
</pre>
<p>So in this example, the values of X and Y are 3520 and 4177. Now
you can view all <tt>/trunk</tt> changes between those two points in time:</p>
<pre>
$ svn log -r3520:4177 trunkURL
…
</pre>
</div>
<!-- ==================================================================== -->
<div class="h2">
<h2>Fixing an incorrect tag</h2>
<p>If your tag is a bit off, you can "adjust" it just as people often
do in CVS. Simply check out a working copy of the tag directory, make
any changes you wish, and commit.</p>
( run in 0.658 second using v1.01-cache-2.11-cpan-5b529ec07f3 )